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

 Respuesta aceptada

Indunie Florence
Indunie Florence el 18 de Abr. de 2016
Editada: Indunie Florence el 18 de Abr. de 2016

0 votos

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

Más respuestas (2)

Image Analyst
Image Analyst el 1 de Jun. de 2014

1 voto

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 comentarios

Indunie Florence
Indunie Florence el 2 de Jun. de 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);
>>
Image Analyst
Image Analyst el 2 de Jun. de 2014
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 el 3 de Jun. de 2014
Editada: Indunie Florence el 18 de Abr. de 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 el 3 de Jun. de 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.

Iniciar sesión para comentar.

dhiaa almalki
dhiaa almalki el 17 de Abr. de 2016

0 votos

if true
% code
end
if true
% code
end

1 comentario

Image Analyst
Image Analyst el 17 de Abr. de 2016
What is this for? Why don't you start your own new question?

Iniciar sesión para comentar.

Categorías

Community Treasure Hunt

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

Start Hunting!

Translated by