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 Center および File ExchangeAnnotations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by