Harris角点检测算法中阈值的选择

问题描述 投票:0回答:2

Harris 上面是使用 Harris 角点检测算法计算图像角点的表示。我已经实现了第 5 步,但是,在第 6 步中,我无法决定如何为计算

R = det(H) - k(trace(H))^2
时获得的值设置阈值。 此屏幕截图取自 Robert Collins 幻灯片 http://www.cse.psu.edu/~rcollins/CSE486/lecture06.pdf ,他在其中提到采取角落 并设置
-1000 for edges and 10000 for corners
的阈值。介于两者之间的值没有任何意义。

我的问题是他对他的实验和样本图像的选择是主观的,对于特定图像,

-10000 and 10000
的值有效。在现实生活中,没有办法知道期望什么样的图像,然后如何选择阈值。

P.S:我已经尝试过 Matlab 的

rice.png
,阈值偏离了。

编辑:我看过这个关于哈里斯角的问题实现哈里斯角检测器 上面写着“只收集所有像素值高于周围 5x5 邻域中所有其他像素值的像素”。我想要一些更数学的东西来实现。

谢谢。

matlab computer-vision edge-detection
2个回答
4
投票

更数学?好的,“找到过滤图像的所有局部最大值,然后选择最高的 N”怎么样,这是该问题中的响应者所推荐的。至于 N,请使用您拥有的关于场景的任何先验信息。例如,您对有 100 个角的棋盘感兴趣吗?然后设置 N=200 以确保你得到其中的大部分。

顺便说一句,一个方便的方法是在过滤后的图像和它的扩张版本中寻找不变的值,扩张是用 5x5 平面结构元素完成的。


0
投票

随着Harris R值的增加O(n²),滑动窗口的面积得到了n。我使用了这个小“技巧”:

thresh = n² * 0.5; % the value 0.5 is experimental

当然总是需要一个非极大值抑制,eg:

dilateR = imdilate(R, ones[3 3]);
res = dilateR == R & R > thresh;
© www.soinside.com 2019 - 2024. All rights reserved.