detect square in image
75 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Abdul
el 29 de Dic. de 2011
Comentada: Dmitry Surov
el 16 de Sept. de 2020
i want to detect square shape only in image. how can i do this using matlab?
0 comentarios
Respuesta aceptada
Chandra Kurniawan
el 29 de Dic. de 2011
Hello,
Is your goal only to detect square in this picture?
If so, you don't need to do shape recognition, etc.
You just need to perform some morphologichal operations only.
I = imread('3617ca70.png');
Ibw = ~im2bw(I,graythresh(I));
Ifill = imfill(Ibw,'holes');
Iarea = bwareaopen(Ifill,100);
Ifinal = bwlabel(Iarea);
stat = regionprops(Ifinal,'boundingbox');
imshow(I); hold on;
for cnt = 1 : numel(stat)
bb = stat(cnt).BoundingBox;
rectangle('position',bb,'edgecolor','r','linewidth',2);
end
And the result :
Is this what you need?
3 comentarios
Dmitry Surov
el 16 de Sept. de 2020
Can you please explain what do we get in stat variable ? It's something related to border line of each square, but i misunderstand what that means
Thanks
Más respuestas (2)
Sean de Wolski
el 29 de Dic. de 2011
Those squares are very well defined.
- Set a less than threshold to make the dark colors true and everything else false. ( BW = I<thresh )
- Perform a connected components analysis ( doc bwconncomp)
- Then regionprops with EulerNumber specified.
- Apply a threshold to the regions matching the EulerNumber ( idx = [stats(:).EulerNumber] == x ) of a sample square.
- Build a new matrix of false. ( BWnew = false(CC.ImageSize))
- Set the indices in the connected components analysis corresponding to the matching EulerNumber to true. ( BWnew(vertcat(CC.PixelIdxList{idx})) = true)
In theory you'll have a mask of the boxes.
0 comentarios
Naz
el 29 de Dic. de 2011
Editada: John Kelly
el 14 de Nov. de 2013
I just thought of an alternative idea. Instead of detecting a square, you should register the image (filled form) of interest with the raw image. Then, since you know the coordinates of each square, you can just check the pixels at those coordinates for the white/black values.
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!