How to select boundary box of 221.jpg and crop it like 222.jpg ?
221.jpg
222.jpg

 Réponse acceptée

Indunie Florence
Indunie Florence le 18 Avr 2016
Modifié(e) : Indunie Florence le 18 Avr 2016

0 votes

Thanks for everyone who tried to help me. Finally I found the simple way to do it. this is a really awesome method. bwconvhull(Iout)
This is the code segment;
if true
LB = 100;
UB = 100000;
IL = bwlabel(Ifill);
R = regionprops(Ifill,'Area');
ind = find([R.Area] >= LB & [R.Area] <= UB);
Iout = ismember(IL,ind);
%Ibw1=imcomplement(Iout);
CH = bwconvhull(Iout);
%Ibw3=imcomplement(CH);
[Ilabel num] = bwlabel(CH);
Iprops = regionprops(Ilabel);
Ibox = [Iprops.BoundingBox];
Icrop = imcrop(I,Ibox);
resized=imresize(Icrop,[100 100]);
end

Plus de réponses (2)

Image Analyst
Image Analyst le 1 Juin 2014

1 vote

This can also be solved using the algorithm I laid out in your previous question http://www.mathworks.com/matlabcentral/answers/132000#answer_139060

4 commentaires

Indunie Florence
Indunie Florence le 2 Juin 2014
No it doesn't work for this input. This is a binary image. It gave an error,
rows = 3264
columns = 2448
numberOfColorBands = 1
Index exceeds matrix dimensions.
Error in test (line 38)
greenChannel = rgbImage(:, :, 2);
>>
Do you know what the line
greenChannel = rgbImage(:, :, 2);
does? It takes the second plane of the 3D image variable. So the image must be 3D. If it's 2D, like yours which has only 1 color channel in a single 2D image, you can't take the second plane and must just use the image itself. So you have to check for that.
if numberOfColorBands > 1
% It's color, take just one color channel
greenChannel = rgbImage(:, :, 2);
else
% It's monochrome, take the original image.
greenChannel = rgbImage; % It's not really RGB
end
Indunie Florence
Indunie Florence le 3 Juin 2014
Modifié(e) : Indunie Florence le 18 Avr 2016
Thank you very much for helping me.I didn't know it.I have done all other things and I am stuck in cropping. It seems very simple. But I couldn't do yet.
I changed it as you said for 3 channels. Then there are no errors. But cropping is still not happened.Output is below,
Image Analyst
Image Analyst le 3 Juin 2014
You need to invert your binary image since it's darker than the background. You can either flip the > sign when doing thresholding (which is the easiest) or you can do it in a separate steps (more time consuming) binaryImage = ~binaryImage.

Connectez-vous pour commenter.

dhiaa almalki
dhiaa almalki le 17 Avr 2016

0 votes

if true
% code
end
if true
% code
end

1 commentaire

Image Analyst
Image Analyst le 17 Avr 2016
What is this for? Why don't you start your own new question?

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by