Main Content

houghpeaks

识别霍夫变换中的峰值

说明

示例

peaks = houghpeaks(H,numpeaks) 定位由 hough 函数生成的霍夫变换矩阵 H 中的峰值。numpeaks 指定要识别的最大峰值个数。该函数返回 peaks,即一个保留峰值的行和列坐标的矩阵。

peaks = houghpeaks(H,numpeaks,Name,Value) 使用名称-值对组参量控制运算的各个方面。

示例

全部折叠

将图像读入工作区。

I  = imread('circuit.tif');

创建二值图像。

BW = edge(imrotate(I,50,'crop'),'canny');

创建图像的霍夫变换。

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

查找图像的霍夫变换中的峰值并绘制它们。

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

输入参数

全部折叠

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

数据类型: double

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

数据类型: double

名称-值参数

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

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

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

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

数据类型: double

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

数据类型: double

霍夫变换 theta 值,指定为由 hough 函数返回的数值向量。向量的每个元素指定输出矩阵 H 的对应列的 theta 值。houghpeaks 使用为峰值隐藏指定的 theta 值。使用 hough 函数创建一个霍夫变换矩阵。

注意

如果指定 'Theta' 参数作为 hough 函数的输入,则必须使用 houghpeaks 函数指定 theta 参数。使用 hough 函数的 theta 输出值作为 houghpeakstheta 输入值。否则,峰值隐藏会导致意外的结果。

数据类型: double

输出参量

全部折叠

找到的峰值的行和列坐标,以 Q×2 矩阵形式返回。值 Q 的范围可以从 0numpeaks

扩展功能

版本历史记录

在 R2006a 之前推出

另请参阅

|