主要内容

霍夫变换

图像处理工具箱™支持使您可以使用Hough变换来检测图像中的金宝app线路。

霍夫功能实现标准Hough变换(SHT)。霍夫变换旨在使用线路的参数表示来检测线路:

rho = x * cos(theta)+ y * sin(θ)

变量rho.沿着垂直于线的矢量距原点到线的距离。θ.是x轴和这个向量的夹角。这霍夫函数生成参数空间矩阵,其行和列对应于这些rho.θ.值分别。

计算Hough变换后,可以使用Houghpeaks.在参数空间中找到峰值的函数。这些峰值表示输入图像中的潜在线。

在展示Hough变换中的峰值后,您可以使用Houghlines.函数找到与Hough变换中的峰值相对应的线段的端点。此功能会自动填充线段中的小空隙。

使用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,''颜色''黑色的');

图中包含一个坐标轴。轴包含两个类型为image, line的对象。

使用图像在图像中查找行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,'颜色''红色的');

图中包含一个坐标轴。轴包含38个类型图像的物体,线。