detecting rectangle in real images
Mostrar comentarios más antiguos
Hey all,
I want to detect and track rectangle pattern . these pattern I want to set on object which moving and captured using webcam.
So, the image will include real-world scene also - not only the pattern.
example of pattern:

I want to be able to detect the 4 corners of the white rectangle.
what about if I have black rectangle?
Thanks in advance
5 comentarios
Image Analyst
el 17 de Jun. de 2014
This does not look like a real world image. It looks like a computer graphics image. Please attach the real world images.
Image Analyst
el 17 de Jun. de 2014
Okay, so....after that explanation . . . my comment remains the same.
shdrone
el 17 de Jun. de 2014
shdrone
el 18 de Jun. de 2014
Respuestas (4)
Image Analyst
el 18 de Jun. de 2014
1 voto
Does the clutter have to be in the background? It requires a more time consuming and complicated algorithm. I'd take the green channel, threshold for dark things. Find objects in a certain size range with a certain Euler number. Then call bwboundaries() and take the inner boundary.
2 comentarios
shdrone
el 18 de Jun. de 2014
Image Analyst
el 21 de Mayo de 2016
No it can't (and that's my code so I should know). But I have an updated demo, attached, that can.
Spandan Tiwari
el 19 de Jun. de 2014
0 votos
If your rectangle does not change orientation, you can try using normxcorr2 (in Image Processing Toolbox) with the rectangle as the template. If changes in orientation are possible you may have to use more than one templates.
Elizabeth Rocha
el 21 de Mayo de 2016
Editada: DGM
el 14 de Feb. de 2023
my code for this is :
imagen=imread('img18.jpg');
recorte=imagen(112:221,218:274);
recorte2=imagen(261:309,233:317);
recorte=im2bw(recorte);
recorte2=im2bw(recorte2);
subplot(1,3,1),imshow(imagen)
rectangle('position',[218,112,56,109]);
% ---this is for captured using webcam
rectangle('position',[233,261,84,48]);
subplot(1,3,2),imshow(recorte)
subplot(1,3,3),imshow(recorte2)
if recorte==true
x=1
else
x=0
end
if recorte2==true
y=1
else
y=0
end
3 comentarios
Ayush singhal
el 20 de Abr. de 2021
Can you tell how to generate rectangular stripes with fixed period and width of the stripes should be half of period.
Image Analyst
el 20 de Abr. de 2021
@Ayush singhal, try rectpuls() if you have the Signal Processing Toolbox. Otherwise create one pulse using ones() and zeros() and then replicate it as many times as you want with repmat.
Ayush singhal
el 21 de Abr. de 2021
But I need stripes as a image not like pulses. stripes like black white black white black white.....
I think this needs image processing tool.
This works for the one given image. I would need more examples to see if it's a reliable solution. It uses the FEX contribution pgonCorners which must be Downloaded.
load Image
C=bwpropfilt(all(Image<50,3),'ConvexArea',1);
D=bwareafilt( bwconvhull(C)-C>0.5 ,1);
xy=fliplr(pgonCorners(D,4)); %corner coordinates
imshow(Image);
hold on
scatter(xy(:,1), xy(:,2),30,'r','filled')
hold off
Categorías
Más información sobre Speech Recognition en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

