Matlab Image Cropping problem

조회 수: 6 (최근 30일)
Sandip Paul
Sandip Paul 2020년 1월 18일
댓글: Sandip Paul 2020년 1월 19일
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.

채택된 답변

Image Analyst
Image Analyst 2020년 1월 19일
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
Image Analyst
Image Analyst 2020년 1월 19일
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 2020년 1월 19일
thank you very much

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Sandip Paul
Sandip Paul 2020년 1월 19일
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
Sandip Paul
Sandip Paul 2020년 1월 19일
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.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Big Data Processing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by