欢迎访问个人网络日志🌹🌹知行空间🌹🌹 这是使用 GFTTDetector功能
最常用的角点检测算法有梯度直方图 这些方法都是使用了图像中的局部信息提取了局部特征。 如同在
如下图: 对于给定图像
I
(
x
,
y
)
I(x, y)
I(x,y)上一个宽高为
w
×
h
w \times h
w×h的 E ( μ , v ) = ∑ x w ∑ y h ω ( x , y ) [ I ( x + μ , y + v ) − I ( x , y ) ] 2 E(\mu,v)=\sum_x^w\sum_y^h\omega(x,y)[I(x+\mu, y+v)-I(x,y)]^2 E(μ,v)=x∑wy∑hω(x,y)[I(x+μ,y+v)−I(x,y)]2
根据泰勒公式展开上式: I ( x + μ , y + v ) ≈ I ( x , y ) + I x ( x , y ) μ + I y ( x , y ) v I(x+\mu, y+v)\approx I(x,y)+I_x(x,y)\mu+I_y(x,y)v I(x+μ,y+v)≈I(x,y)+Ix(x,y)μ+Iy(x,y)v 故, E ( μ , v ) ≈ [ u , v ] M ( x , y ) [ μ v ] E(\mu,v)\approx[u,v]M(x, y)\begin{bmatrix} \mu\\ v \end{bmatrix} E(μ,v)≈[u,v]M(x,y)[μv] 其中, M ( x , y ) = [ I x 2 I x I y I x I y I y 2 ] = [ A C C B ] M(x, y)=\begin{bmatrix} I_x^2 & I_xI_y\\ I_xI_y &I_y^2 \end{bmatrix} = \begin{bmatrix} A & C\\ C & B \end{bmatrix} M(x,y)=[Ix2IxIyIxIyIy2]=[ACCB] 从 M ( x , y ) M(x, y) M(x,y)的定义可以看到,对于角点有左右边沿或上下边沿组成, I x I_x Ix或 I y I_y Iy总有一个近似于0,因此对于角点有, M ( x , y ) = [ I x 2 0 0 I y 2 ] M(x, y)=\begin{bmatrix} I_x^2 & 0\\ 0 &I_y^2 \end{bmatrix} M(x,y)=[Ix200Iy2] 这里考虑的是左右上下边沿与图像高宽平行组成的角点,对于旋转和缩放的角点需要单独讨论。 在判断是否为角点时,为了减少运算量,通常并不会计算 R = d e t ( M ) − α ( t r a c e ( M ) ) 2 R = det(M) - \alpha(trace(M))^2 R=det(M)−α(trace(M))2 α \alpha α是一个经验常数,用来控制检测到角点的数量, α \alpha α值越小检测到的角点越多,相应的质量也会下降。
OpenCV中GFTTDetector类调用
代码示例:
检测结果如下: 可以看到检测的结果还是很好的,不过中间大六边形上面的两个角点还是没有检测到,感兴趣可以改小 k k k的值试一下。 使用的图片在 |
原文地址:https://blog.csdn.net/lx_ros/article/details/131611065
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://www.msipo.com/article-677.html 如若内容造成侵权/违法违规/事实不符,请联系MSIPO邮箱:3448751423@qq.com进行投诉反馈,一经查实,立即删除!
Copyright © 2024, msipo.com