主要内容

houghpeaks

识别霍夫变换中的峰值

说明

peaks = houghpeaks(H,numpeaks) 在霍夫变换矩阵 H 中定位峰值,并返回峰值的 (row, column) 坐标。该函数返回最多 numpeaks 个峰值。

示例

peaks = houghpeaks(H,numpeaks,Name=Value) 使用名称-值参量控制运算的各个方面。例如,指定 Threshold=15 以仅考虑值为 15 或更大的峰值。

示例

全部折叠

将一个图像读入工作区,然后显示该图像。

I  = imread("circuit.tif");
imageshow(I)

将图像绕其中心逆时针旋转 50 度。然后,找到图像中的边缘。

Irot = imrotate(I,50,"crop");
BW = edge(Irot,"canny");
imageshow(BW)

计算旋转后的图像的霍夫变换。

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

找到并绘制图像的霍夫变换中最强的两个峰值。

P  = houghpeaks(H,2);
imshow(H,[],XData=T,YData=R);
xlabel("\theta")
ylabel("\rho")
axis on
axis normal
hold on
plot(T(P(:,2)),R(P(:,1)),"s",Color="red")

Figure contains an axes object. The axes object with xlabel theta, ylabel rho contains 2 objects of type image, line. One or more of the lines displays its values using only markers

输入参数

全部折叠

霍夫变换矩阵,指定为数值矩阵。行和列对应于 rhotheta 值。通过使用 hough 函数创建一个霍夫变换矩阵。

数据类型: double

要识别的最大峰值个数,指定为正整数。

数据类型: double

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: P = houghpeaks(H,2,Threshold=15) 指定被视为峰值的最小值为 15

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: P = houghpeaks(H,2,"Threshold",15);

被视为峰值的最小值,指定为非负数。

数据类型: double

隐藏邻域的大小,指定为由正奇数组成的二元素向量。隐藏邻域是每个峰值周围的邻域,在识别出峰值后,该值设置为零。NHoodSize 的默认值为大于或等于 size(H)/50 的最小奇数值。NHoodSize 的维数必须小于霍夫变换矩阵 H 的大小。

数据类型: double

相对于线条的垂直投影的角度(以度为单位),指定为元素在 [-90, 90) 范围内的数值向量。角度是从 x 轴顺时针方向测量的。向量的每个元素指定霍夫变换矩阵 H 对应列的 theta 值。houghpeaks 函数使用 Theta 值进行峰值隐藏。

注意

如果您调用了 hough 函数并指定了 Theta 名称-值参量,则将此值设置为 hough 函数返回的 theta 输出参量。否则,houghpeaks 函数可能会为峰值隐藏返回意外结果。

数据类型: double

输出参量

全部折叠

定位的峰值的行和列坐标,以 q×2 矩阵形式返回,其中 q 是检测到的峰值数目。值 q 的范围可以从 0numpeaks

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出