Is it possible to resize image without changing its total number of pixels?

I want to reduce each pixel size upto 0.5 but I want the total number of pixels to be the same. Is this possible ?. Kindly Advise.

4 Comments

It sounds like you misunderstood the concept of a pixel. A pixel has a unit size. You can resize the image to half the size, but not a pixel. What do you envision the result to be?
If the goal is to show the image in MATLAB, you can specify the x and y values and use the same intensity/RGB data. This way you can scale the image and maintain the number of image pixels.
@Rik thank you for response. I really took the concept of pixel in a wrong way. I realized that now. My aim was to relate 1 pixel = 1 Unit (cm or m) and use "imdistline" as distance measure tool on the image. I was wrong though.
Thank you for correcting me.
@Adam Danz Thank you for advise. I am working on grayscale images. I will follow ur guideline to see the outcomes. Thanks again for your time. I dont have a programming background and sometimes it is lil difficult to understand such basic concepts.

Sign in to comment.

 Accepted Answer

@Abdul Hannan Qureshi if you resize the image matrix variable, it will have a different number of elements, not the same.
You can display the tick marks in real world units, such as cm or m, if you use the 'XData' and 'YData' options for imshow().
However regionprops() always measures in pixels so to get from pixels into cm you'd have to multiply by a cmPerPixel scaling/calibration factor that you computer. The attached demo walks you through that process.

1 Comment

Thank you, I have checked the attached file and it seems like to be helpful for me to understand this concept.

Sign in to comment.

More Answers (1)

Maybe something like:
A = imread('cameraman.tif');
[h w] = size(A); % [256 256]
imshow(A,'xdata',[1 w]/2,'ydata',[1 h]/2)
hold on
plot(64,64,'yo','linewidth',2) % just for demonstration
Note that while the image is still 256x256, the image is plotted on a half-size grid. The NW pixel is now at [0.5 0.5] instead of [1 1], and the center of the image is now at [64 64]. The same can be done with image()/imagesc(). I can't really demonstrate imdistline() in the forum editor, but you should be able to use it just fine.

Products

Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!