Matlab Image Cropping problem

7 views (last 30 days)
Sandip Paul
Sandip Paul on 18 Jan 2020
Commented: Sandip Paul on 19 Jan 2020
Hello Everyone,
I have some issue when I'm trying to crop an image.
I have chosen a RGB Image(256x256) and converted it into grayscale image, then I check out the image pixel values. I have attached here only 8x8 dimension pixel values (shown in fig.1)
from the entire 256x256 pixel workspace values.
But when I crop that image using imcrop() command, then I get also that 8x8 pixel but with different values (shown in fig.2).
fig2.png
This creates the problem I get the different pixel values from same image when trying to crop that image with a specified dimension and also get differnt pixel values when stored it into a hex file for furthur processing.
Below is my Matlab code:
a =imread('cameraman.tif');
a1=rgb2gray(a);
rect=[1 7 7 7];
i_c = imcrop(a1,rect);
pixel = cell(8,8);
ctr = 1;
ctc = 1;
for R=1:8
for C=1:8
pixel{ctr,ctc}=dec2hex(i_c(R,C));
ctc = ctc+1;
end
ctr = ctr+1;
ctc=1;
end
fid = fopen('cam_data_tif_8.hex', 'wt');
fprintf(fid, '%x\n', i_c);
disp('Text file write done');disp(' ');
fclose(fid);
celldisp(pixel)
disp ([pixel{:}]);
Please reply to me.Thank you.

Accepted Answer

Image Analyst
Image Analyst on 19 Jan 2020
Attach your cameraman.tif. Evidently you changed the one that ships with MATLAB because that one is not a color image and your code throws an error.
This is what I did to make it work with the official cameraman photo, and it works fine:
a = imread('cameraman.tif');
if ndims(a) >= 3
a1=rgb2gray(a);
else
a1 = a;
end
rect=[1 7 7 7];
i_c = imcrop(a1,rect)
pixel = cell(8,8);
ctr = 1;
ctc = 1;
for R=1:8
for C=1:8
pixel{ctr,ctc}=dec2hex(i_c(R,C));
ctc = ctc+1;
end
ctr = ctr+1;
ctc=1;
end
fid = fopen('cam_data_tif_8.hex', 'wt');
fprintf(fid, '%x\n', i_c);
disp('Text file write done');disp(' ');
fclose(fid);
celldisp(pixel)
disp ([pixel{:}]);
Keep in mind that you are cropping starting at row 7.
  4 Comments
Image Analyst
Image Analyst on 19 Jan 2020
The format for rectangles in MATLAB is [x, y, width, height], or using row and column its [column, row, width, height]. Sometimes I just go super explicit and combine them to say [xLeftColumn, yTopRow, width, height].
Sandip Paul
Sandip Paul on 19 Jan 2020
thank you very much

Sign in to comment.

More Answers (1)

Sandip Paul
Sandip Paul on 19 Jan 2020
ok.I understand it.Actually I cann't find the actual syntax of this rect=[1 7 7 7]. I put the values arbitarily.means I want to know that which position defines xleft/yTop etc. of rect.can you please define the actual syntax behind this rect [ ].
thank you for your previous suggestions.Reply me with the solution which I mentioned above.
  1 Comment
Sandip Paul
Sandip Paul on 19 Jan 2020
Problem Solved.I change rect =[1 1 7 7].Now I get the value which I want. Thank you very much.
But you please send me the syntax of " rect= [ ] " command.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!