ÏÖÔÚÓÐÒ»·ùͼÏñ£¬ÎÒҪͨ¹ýhough±ä»»£¬Ïȼì²âÖ±Ïߣ¬È»ºóͨ¹ý¼ì²âÖ±ÏßµÄÁ¬ÐøÐÔ£¬·Ö¸î³öÌõÂëÉϵÄȱÏÝͼÏñ¡£Ð§¹ûÈçÏ£º
µ«ÊÇÓÐÒÔϼ¸¸öÎÊÌ⣺
µÚÒ»£ºÎªÊ²Ã´ÔÚÓï¾ä[H,theta,rho]=hough(BW,'RhoResolution',0.1);¸Ä±ä"0.1¡°µÄÊýÖµ,¶ÔÖ±Ïß¼ì²âûʲôЧ¹û£¿
µÚ¶þ£ºP = houghpeaks(H,10,'threshold',ceil(0.1*max(H( )));¸Ä±ä¡°10¡±µÄ´óС¼ì²âЧ¹ûÒ²²»ÀíÏ룬ceil(0.1*max(H( )Ò²ÊÇÈç´Ë¡£
µÚÈý£ºÎªÊ²Ã´Í¨¹ýhough±ä»»ºó£¬×îºó¼ì²âµÄÖ±Ïߣ¨ºìÉ«Ïߣ©Ö»Óж϶ÏÐøÐøµÄ¼¸Ìõ£¬¶øÇÒ¶¼ÊÇһЩСµÄ¶ÌÏߣ¬¸ù±¾Ã»Óн«ËùÓÐÌõÂëµÄ±ßÔµÏß¼ì²â³öÀ´¡£
µÚËÄ£ºËã·¨ÐèÒªÔõÑùµÄ¸Ä½ø£¬²ÅÄܽ«¡°ÔͼÏñ¡±ÖкÚÉ«ÂëµÀÉϵġ°°×ɫСȱÏÝ¡±·Ö¸î³öÀ´£¿
лл£¡
¸½´úÂ룺
RGB=imread('X3.0.bmp');
figure,imshow(RGB,[]);
I=rgb2gray(RGB);
figure,imshow(I,[]);
[BW,t]=edge(I,'sobel','both');
% figure,imshow(BW);
% BW=double(BW);
% [H,theta,rho]=hough(BW);
[H,theta,rho]=hough(BW,'RhoResolution',0.1);
figure,imshow(H,[],'XData',theta,'YData',rho,...
'InitialMagnification','fit');
xlabel('\theta'),ylabel('\rho');
axis on,axis normal,hold on;
colormap(hot);
P = houghpeaks(H,10,'threshold',ceil(0.1*max(H( )));
x = theta(P(:,2)); y = rho(P(:,1));
plot(x,y,'linestyle','none',...
'marker','s','color','y');
% Find lines and plot them
lines = houghlines(BW,theta,rho,P,'FillGap',5,'MinLength',1);
figure,imshow(BW),hold on
for k = 1:length(lines)
xy = [lines(k).point1;lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','r');
end
![Matlab »ô·ò±ä»»¼ì²âÖ±ÏßÀ´·Ö¸îͼÏñÎÊÌ⣨¸½´úÂ룩]()
ÔͼÏñ.jpg
![Matlab »ô·ò±ä»»¼ì²âÖ±ÏßÀ´·Ö¸îͼÏñÎÊÌ⣨¸½´úÂ룩-1]()
hough±ä»»Í¼Ïñ.jpg
![Matlab »ô·ò±ä»»¼ì²âÖ±ÏßÀ´·Ö¸îͼÏñÎÊÌ⣨¸½´úÂ룩-2]()
Ö±Ïß¼ì²âͼÏñ.jpg |