How do I understand the following code?

Hello,
I found this code online and I am trying to understand it for my study. I am unable to understand the following lines of code and I was wondering if someone will assist me in understanding. Specifically, I don't understand the part "%set the image size to suitable value" where it is giving scale and resizing the image and "%% image Resize"
%% Uploading input image
[filename,pathname] = uigetfile('*.*','Choose the input image');
im = imread([pathname,filename]);
% set the image size to suitable value
scale = 600/(max(size(im(:,:,1))));
im = imresize(im,scale*size(im(:,:,1)));
% % Image resize
[m,n,~] = size(im);
I would appreciate the assistance.
Thank you in advance.

 Respuesta aceptada

Adam Danz
Adam Danz el 19 de Oct. de 2020
Editada: Adam Danz el 19 de Oct. de 2020
The best way to understand it is by using the help or doc commands to look up each function name. At the top of each page you'll see a brief description of the function, inputs and outputs.
Here's a very general description of each line
% CHOOSE A FILE
[filename,pathname] = uigetfile('*.*','Choose the input image');
% READ THE IMAGE FILE IN AS IMAGE DATA
im = imread([pathname,filename]);
% DETERMINE THE SCALE OF THE IMAGE DATA
% (max(size(...)) returns the images maximum dimension
% THE IMAGE DATA (im) IS AN nXmX3 ARRAY OF R-G-B- COLOR VALUES
% BUT THIS LINE ONLY REFERENCES THE "R" VALUES
scale = 600/(max(size(im(:,:,1))));
% SCALE THE IMAGE
im = imresize(im,scale*size(im(:,:,1)));
% GET THE NEW IMAGE SIZE
[m,n,~] = size(im);
You can use imshow(im) to see the image.

6 comentarios

Vinay Chawla
Vinay Chawla el 19 de Oct. de 2020
Thank you. I tried using the help or doc commands for functions and got some of them but not the othres.
The line " scale = 600/(max(size(im(:,:,1)))); " is still very unclear to me.
What is it doing?
Is it creating a scale for the image? or setting it to the actual scale of the image.
as for the " im = imresize(im,scale*size(im(:,:,1)));" Is this resizing the image based on actual scale (Ground Distance).
These lines are part of the code for determining crack dimensions. So I was wondering if the scale and resizing is given based on the actual field dimensions.
I am very new to MATLAB and Image Processing and I would really appreciate if you can provide an easier and detailed explanation on this.
Thank you for your help.
"Is it creating a scale for the image?"
Yes.
This section gets the size of the first two dimensions of the image (width & height)
size(im(:,:,1))
This returns the max (width or height)
(max(size(im(:,:,1)))
This computes the scaling factor. So, if you're working with a tall image (height>width), then this will divide 600 by the height of the image. If height is smaller than 600, the scaling factor will be larger than 1 so the size of the image will increase. I don't know where 600 comes from.
600/(max(size(im(:,:,1))))
Image Analyst
Image Analyst el 20 de Oct. de 2020
It's possible that they want the algorithm to work for any size image but some of the parameters, for example filter window sizes, are built assuming a certain size of the image in pixels. If the image is not that size (say they're 10 times bigger), then the filters might not work as intended - as they did for the smaller images.
Vinay Chawla
Vinay Chawla el 16 de Dic. de 2020
Thank you so much for your responses. I really appreciate.
About the line "((max(size(im(:,:,1)))", only referencing the R-Values. After analyzing the image, I realized all the three color channerl values are similar. It is possible that that is the reason why only R value is considered? And is it possible that an image will have all the same RGB values? Please refer to th image below:
II would really appreciate any assistance in this regard.
Thank you.
Adam Danz
Adam Danz el 16 de Dic. de 2020
Editada: Adam Danz el 16 de Dic. de 2020
> It is possible that that is the reason why only R value is considered?
Possibly. I advise reading about the array returned by imread so you can you can understand what im is
> is it possible that an image will have all the same RGB values
Yes, when all 3 RGB values are the same, it's a shade of gray/black.white
rgb = repmat(0:.1:1, 3,1)'
rgb = 11×3
0 0 0 0.1000 0.1000 0.1000 0.2000 0.2000 0.2000 0.3000 0.3000 0.3000 0.4000 0.4000 0.4000 0.5000 0.5000 0.5000 0.6000 0.6000 0.6000 0.7000 0.7000 0.7000 0.8000 0.8000 0.8000 0.9000 0.9000 0.9000
scatter(1:11,.5.*ones(1,11),250,rgb,'filled','MarkerEdgeColor','k')
Vinay Chawla
Vinay Chawla el 16 de Dic. de 2020
Thank you.

Iniciar sesión para comentar.

Más respuestas (0)

Productos

Versión

R2020a

Preguntada:

el 19 de Oct. de 2020

Comentada:

el 16 de Dic. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by