当前位置:   article > 正文

CV中的特征检测--feature detection_cv::featuredetector

cv::featuredetector

Feature points

特征点就是将两张不同的图片中相同的元素之间进行一个对应的关系。
例如我们要查找两张图片中相同的元素“TO"
一般这种特征是不会因为外观和几何的变化而变化
Variation(变化)

  • appearance:brightness,illumination
  • geometric: translation, rotation, scale(比例)

在图像的局部识别过程中通常会出现以下三种主要的组成部分

检测(Detection):找到一组容易区分的特征点
描述 (Description): 找到兴趣点周围的向量,用vector去描述一个特征。
匹配(Matching): 通过计算特征空间中特征向量的之间的距离,来找到向量之间的关联。

本文主要讲解Detection

corner detection

这一过程的主要目标是寻找合适的特征点让我们进行检测。
角检测
一般拐角处的区域内(例如最后一个图),图像梯度有两个或两个以上的主导方向
基本的逻辑:因为不知道该特征最终会与哪些图像位置匹配,所以我们通过一个位置与其周围的位置在外观上的稳定性来判断。( image patch against local neighbors)

我们通过一个滑动的窗口来实现coener detection
卷积,互相关和自相关
卷积的自变量是时间反应的是之前的状态对现在的影响。
互相关的是两个不同时间两个事物的相关度。
自相关是自身的相似度
(这里我解释的有点不好,建议去看大佬的解释)
Autocorrelation
自相关通过平方差异的和来计算,w(x,y)是window [u,v]是移动的步长,I(x,y)是我们的图像中的点
在这里插入图片描述
所以我们就可以得出在窗口产生移动的时候我们的图像产生的外观变化:
在这里插入图片描述
但是这种平方的计算方法会产生巨大的计算量。所以我们放弃计算E(u,v)的值,可以通过对它的估计值来完成目标。

泰勒展开式

泰勒展开式对结果简化
由于中心在最初是0,并且因为它是一个二次函数,所以一阶导数也是零。
只要看看二阶导数的形状即可
求导可得
在这里插入图片描述
所以就得到了衡量E[u,v]中最重要的量Second Moment Matrix在这里插入图片描述

更多的情况下,我们会采用椭圆形的形状来圈出目标中的特征点:
因为E[u,v]是一个horizontal "slice"所以我们也可以用椭圆的方程来描述
椭圆描述
椭圆的长度由特征值进行决定,方向由旋转矩阵决定。
在这里插入图片描述
如果其中一个λ接近于0,那么这就不是一个拐角,所以要寻找两者都很大的位置。因此解释二阶矩矩阵M也被称为“结构矩阵”、“结构张量”和“二阶动量矩阵。
Harris Corner Detector
在这里插入图片描述
在这里插入图片描述
只有当C>0的情况下我们认为是一个corner,|C|=0是平面,C<0是边。
更简单的 Corner Response Function:
在这里插入图片描述
Harris Corner Detector 流程:

  1. 首先对于给定的输入图像,我们想在每个像素上计算M。
  2. 计算图像导数或者先进性模糊运算
  3. 在这里插入图片描述
  4. 高斯卷积进行模糊(使用sigmod函数)
  5. 计算C
  6. 选取C的顶点(或者是选取C的值非常大的点)
  7. 通过非最大值的抑制来选择峰值
    为什么要选用Harris Corners如此发杂的计算的原因是有很多并不是corner的情况也会满足M
    例如:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

BLOB detection

首先我们需要确定图像的不变性 (Invariance) 即无论图像本身如何变化特征是不变的。
因此
在这里插入图片描述
Affine强度变化具有部分的不变性。
在这里插入图片描述
二阶矩椭圆会旋转,但它的形状(即特征值)保持不变。
在这里插入图片描述
导数和窗口函数是移位不变的
在这里插入图片描述
缩放过后所有的角点都会变成边。
所以我们可以得出:可以在xy中进行定位,但不能进行缩放。
因此在同一张图像中实现尺度协方差的目的就是在同一图像的不同的比例版本中独立的检测对应区域的比例机制,因此可以寻找出和图像变换一同变换的特征区域的大小。(个人理解,就是首先找到合适的圆心,当图像尺度变大的情况下半径的尺度就会变小)
在这里插入图片描述
因此我们在BLOB方法中采用平方拉普拉斯行列式
在这里插入图片描述
用拉普拉斯核进行卷积,高斯的拉普拉斯算子:二维点检测的圆对称算子。
在这里插入图片描述
从边缘的检测到斑点的检测
在这里边缘就是波纹,两个边缘的叠加就是blob.
如果拉普拉斯响应的尺度与斑点的尺度“匹配”,那么拉普拉斯响应的大小将在斑点的中心达到最大值(我理解的是这里的放大/缩小的尺度正合适)。
由二阶导我们可以得出当二阶导为0的时候达到顶点所以要保证:
在这里插入图片描述
在这里插入图片描述
拉普拉斯响应进行卷积并寻找最大响应来找到斑点的特征尺度,然而,拉普拉斯响应随尺度得到增加而衰减。
因此我们将对尺度进行归一化。
LoG
因此在大的圆形检测中我们就会将尺度(scale)进行放大。
拉普拉斯响应是不随着旋转和blob的缩放来改变的,但是blob的位置和缩放是随着图片的翻转和缩放而改变的。
在这里插入图片描述
这两种高斯方程对于归一化的效果是几乎相同的。

根据自己的一点点理解,如果有问题可以帮我及时指正,非常欢迎。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/898865
推荐阅读
相关标签
  

闽ICP备14008679号