Azzera filtri
Azzera filtri

Matlab Image Cropping problem

2 visualizzazioni (ultimi 30 giorni)
Sandip Paul
Sandip Paul il 18 Gen 2020
Commentato: Sandip Paul il 19 Gen 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.

Risposta accettata

Image Analyst
Image Analyst il 19 Gen 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 Commenti
Image Analyst
Image Analyst il 19 Gen 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 il 19 Gen 2020
thank you very much

Accedi per commentare.

Più risposte (1)

Sandip Paul
Sandip Paul il 19 Gen 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 Commento
Sandip Paul
Sandip Paul il 19 Gen 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.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by