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

 Accepted Answer

Indunie Florence
Indunie Florence on 18 Apr 2016
Edited: Indunie Florence on 18 Apr 2016
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

More Answers (2)

Image Analyst
Image Analyst on 1 Jun 2014
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 Comments

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 on 3 Jun 2014
Edited: Indunie Florence on 18 Apr 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,
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.

Sign in to comment.

if true
% code
end
if true
% code
end

1 Comment

What is this for? Why don't you start your own new question?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!