图像处理工具箱™支持使您可以使用Hough变换来检测图像中的金宝app线路。
这霍夫
功能实现标准Hough变换(SHT)。霍夫变换旨在使用线路的参数表示来检测线路:
rho = x * cos(theta)+ y * sin(θ)
变量rho.
沿着垂直于线的矢量距原点到线的距离。θ.
是x轴和这个向量的夹角。这霍夫
函数生成参数空间矩阵,其行和列对应于这些rho.
和θ.
值分别。
计算Hough变换后,可以使用Houghpeaks.
在参数空间中找到峰值的函数。这些峰值表示输入图像中的潜在线。
在展示Hough变换中的峰值后,您可以使用Houghlines.
函数找到与Hough变换中的峰值相对应的线段的端点。此功能会自动填充线段中的小空隙。
此示例显示如何使用H检测图像中的线路ough.
转变。
将图像读入工作区,并旋转图像,使本示例更具说明性。显示图像。
我= imread(“circuit.tif”);roti = imrootate(i,33,“作物”);imshow(roti)
查找图像中的边缘使用边缘
功能。
bw =边缘(roti,'Canny');imshow(bw);
计算返回的二进制图像的Hough变换边缘
。
[h,theta,rho] = hough(bw);
显示变换,H
,返回霍夫
功能。
图imshow(imadjust(Rescale(H)),[],......'xdata',θ,......'ydata',rho,......'InitialMagnification'那'合身');Xlabel('\ theta(deacte)') ylabel ('\ rho')轴在轴普通的抓住在Colormap(GCA,Hot)
找到Hough变换矩阵中的峰值,H
, 使用Houghpeaks.
功能。
p = houghpeaks(h,5,'临界点',CEIL(0.3 * MAX(H(:)))));
叠加在识别峰值的变换图像上的绘图。
x =θ(p(:,2));y = rho(p(:,1));绘图(x,y,'那'颜色'那'黑色的');
使用图像在图像中查找行Houghlines.
功能。
线= Houghlines(BW,Theta,Rho,P,'fillgap',5,'minlength'7);
创建一个绘图,显示原始图像,其中线叠加在其中。
图,imshow(Roti),保持在max_len = 0;为了k = 1:长度(线)xy = [行(k).point1;线(k).point2];绘图(XY(:,1),XY(:,2),'行宽'2,'颜色'那'绿色');%绘图开始和行的结尾情节(XY(1,1),XY(1,2),'X'那'行宽'2,'颜色'那'黄色');情节(XY(2,1),XY(2,2),'X'那'行宽'2,'颜色'那'红色的');%确定最长线段的终点len =常规(线条(k).point1 - 线(k).point2);如果(len> max_len)max_len = len;xy_long = xy;结尾结尾%突出显示最长的线段情节(XY_Long(:1),XY_Long(:,2),'行宽'2,'颜色'那'红色的');