在二进制图像中查找线条和圆圈

时间:2013-12-13 23:08:20

标签: matlab image-processing

如何使用Hough Transform查找二进制图像中的所有行(下面的示例)? 图像包含圆圈,对角线和垂直线

Sample image

figure, imshow(imadjust(mat2gray(H)),[],'XData',theta,'YData',rho,'InitialMagnification','fit');
xlabel('\theta (degrees)'), ylabel('\rho');
axis on, axis normal, hold on;
colormap(hot);
P = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));
x = theta(P(:,2));
y = rho(P(:,1));
plot(x,y,'s','color','black');
lines = houghlines(closeBW,theta,rho,P,'FillGap',5,'MinLength',7);

线条会给我们什么?

1 个答案:

答案 0 :(得分:0)

   BW=im2bw(H);
   [H,T,R] = hough(BW);

   imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');
   xlabel('\theta'), ylabel('\rho');
   axis on, axis normal, hold on;
   P  = houghpeaks(H,10);
   x = T(P(:,2)); y = R(P(:,1));
   plot(x,y,'s','color','white');

   % Find lines and plot them
   lines = houghlines(BW,T,R,P,'FillGap',15,'MinLength',15);
   figure, imshow(BW1), hold on

   for k = 1:length(lines)
       xy = [lines(k).point1; lines(k).point2];
       plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');

       %     plot beginnings and ends of lines
       plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
       plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
   end