Main Content

corner

(不推荐)查找图像中的边角点

不建议使用 corner。请改用 Computer Vision Toolbox™ 中的 detectHarrisFeatures (Computer Vision Toolbox)detectMinEigenFeatures (Computer Vision Toolbox)

说明

C = corner(I) 检测图像 I 中的边角,并以矩阵 C 形式返回其坐标。

C = corner(I,method) 使用指定的 method 检测图像 I 中的边角。

C = corner(I,N) 检测图像 I 中的边角,并最多返回 N 个边角。

C = corner(I,method,N) 使用指定的方法和最大边角数检测边角。

示例

C = corner(___,Name,Value) 指定控制边角检测算法各个方面的参数和对应值。

示例

全部折叠

此示例说明如何使用 corner 函数定位边角,并通过细化所需边角的最大数量来调整结果。

创建一个棋盘图像。

I = checkerboard(40,2,2);

查找图像中的边角。

C = corner(I);

当最大边角数设置为默认值 200 时,所显示的边角。

subplot(1,2,1);
imshow(I);
hold on
plot(C(:,1), C(:,2), '*', 'Color', 'c')
title('Maximum Corners = 200')
hold off

当最大边角数设置为 3 时,所显示的边角。

corners_max_specified = corner(I,3);
subplot(1,2,2);
imshow(I);
hold on
plot(corners_max_specified(:,1), corners_max_specified(:,2), ...
   '*', 'Color', 'm')
title('Maximum Corners = 3')
hold off

输入参数

全部折叠

灰度或二值图像,指定为 m×n 数值矩阵。

边角检测方法,指定为 'Harris'(对于哈里斯边角检测器),或 'MinimumEigenvalue'(对于 Shi & Tomasi 最小特征值方法)。

corner 函数可以返回的最大边角数,指定为正整数。

名称-值参数

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

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

示例: corner(I,'QualityLevel',0.2) 将图像 I 中的边角的最低质量级别指定为 0.2

可分离平滑滤波器的滤波器系数,以逗号分隔的对组形式指定,其中包含 'FilterCoefficients' 和一个数值向量。向量 V 的长度必须为奇数且最小长度为 3。外积 V*V' 提供完整的滤波器核。默认滤波器系数由 fspecial('gaussian',[5 1],1.5) 给出。

边角的最低可接受质量,以逗号分隔的对组形式指定,其中包含 'QualityLevel' 和一个 (0,1) 范围内的数值标量。对于质量级别 Q,工具箱拒绝边角度量值小于 Q * max(corner metric) 的候选边角。使用较大的 Q 值可删除错误的边角。

哈里斯检测算法中使用的敏感度因子,以逗号分隔的对组形式指定,其中包含 'SensitivityFactor' 和一个 (0, 0.25) 范围内的数值标量。敏感度因子越小,算法越可能检测到锐边角。请仅将此参数与 'Harris' method 结合使用。

输出参量

全部折叠

在图像 I 中检测到的边角点的 x 和 y 坐标,以 p×2 矩阵形式返回。

数据类型: double

提示

cornercornermetric 函数都可用于检测图像中的边角。对于大多数应用,使用简化的 corner 函数只需一步即可找到边角。如果您要更好地控制边角选择,请使用 cornermetric 函数计算边角度量矩阵,然后编写自己的算法来查找峰值。

算法

corner 函数对候选边角执行非极大值抑制,边角至少相隔两个像素。

版本历史记录

在 R2010b 中推出

另请参阅

| (Computer Vision Toolbox) | (Computer Vision Toolbox)