houghlines

语法

lines = houghlines(BW,theta,rho,peaks)
lines = houghlines(___,Name,Value)

说明

lines = houghlines(BW,theta,rho,peaks) 提取图像 BW 中与霍夫变换中的特定 bin 相关联的线段。theta 和 rho 是函数 hough 返回的向量。peaks 是由 houghpeaks 函数返回的矩阵，其中包含霍夫变换 bin 的行和列坐标，用于搜索线段。返回值 lines 包含有关提取的线段的信息。

lines = houghlines(___,Name,Value) 使用名称-值对组参量来控制线条提取的各个方面。

示例

I = imread('circuit.tif');

rotI = imrotate(I,33,'crop');

BW = edge(rotI,'canny');

[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,5,'threshold',ceil(0.3*max(H(:)))); x = T(P(:,2)); y = R(P(:,1)); plot(x,y,'s','color','white');

lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7); figure, imshow(rotI), hold on max_len = 0; 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'); % Determine the endpoints of the longest line segment len = norm(lines(k).point1 - lines(k).point2); if ( len > max_len) max_len = len; xy_long = xy; end end

plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');

输出参量

point1

point2

theta

rho