zoukankan      html  css  js  c++  java
  • 亚像素角点

        Harris 角点定义为一个邻域内存在两个正交方向上梯度变化较大的点。

        作 xy 平面上的二维函数,使用自相关函数可描述图像上一固定点在任意方向上的灰度变化;然后利用泰勒级数展开自相关函数,即可将其转换为矩阵特征值问题(参考博文 "光流跟踪")。

        在某些应用中(如视觉测量),想获得更加精确的角点定位,可使用角点亚像素算法实现。

        在提取亚像素边缘时,可以通过数学建模(最小二乘法)来描述边缘方向上一阶导数曲线,该曲线为一个二次函数;然后找到数学模型的最值点即为亚像素边缘位置。

        对于 Harris 角点,考察 角点邻域内点 p 的梯度向量,p点与初始角点 q 构成的向量 ,在理想情况下,发现两向量点积均为 0。具体来说:

        1)当 p 点位于平坦区域内,p 的梯度向量为 0,两向量点积为 0;

        2)当 p 点位于边缘上,p 的梯度向量于向量 qp 正交,两向量点积仍然为 0。

             

        如上图所示,将 q 点坐标当作未知量,通过解方程组即可求得更加精确的角点坐标。一旦求解到新的角点坐标,可以使用新的角点坐标位起点,按同样方法建立方程组,迭代求解,直到精度满足要求。

        在实际应用中,当考察点离参考角点 q 较近时,角点附近点存在两个方向梯度,故合成梯度方向与 qp 边缘基本不能正交;

        当考察点离参考角点 q 较远时,考察点多半位于边缘上,故考察点梯度方向与 qp 边缘基本正交;

        所以,实际应用中会排除离 p 点较近的部分点,以提升线性方程组可解性。

        另一方面,在平坦区域内点的梯度一般不等于 0,这会提升方程组真实解。可以设定一个梯度门限,方程组仅接收梯度门限较大值,从而提升可解性。

        参考资料 Learning OpenCV 3

  • 相关阅读:
    2.谈谈算法
    1.数据结构和算法笔记
    初次使用博客
    Unity中关于在一个场景中使用多个摄像机
    基于unity的单例设计模式写法
    unity3D读取Txt文件中信息
    转载雨松的unity中使用ITween插件和ITweenPath
    Unity3D游戏开发之数据持久化PlayerPrefs的使用
    [转载]Unity3d更改3d Text的字体的材质球的shader,使字体不显示
    C#写的Socket Server端在unity运行时和关闭时没事,但是在打开直接unity崩溃问题
  • 原文地址:https://www.cnblogs.com/luofeiju/p/12667625.html
Copyright © 2011-2022 走看看