【计算机视觉】MOPS特征描述的邻域点为啥是偶数行/列的矩阵?

什么是MOPS

MOPS是一种特征描述的手段,即为每个特征点提供一个描述符,此描述符将用于比较不同图像中的要素以查看它们是否匹配。优秀的描述不会随图像的变化而改变(尽可能具有尺度不变性、旋转不变性等特征不变性),并且对于每一点描述是唯一的。

MOPS描述(Multiscale Oriented PatcheS descriptor)
步骤:
1、 以检测点为中心取40*40的窗口
2、缩小到原来的1/5
3、旋转至水平(为了实现旋转不变性)
4、 亮度归一化

图像块的主方向由H矩阵(Harris角点特征)较大特征值对应的特征向量确定,可以根据特征向量来旋转至水平,使得特征描述具有旋转不变性

亮度归一化是经过处理使得像素点均值为0,标准差为1,这样可以减少亮度差异造成的影响。

(此处参照:原文链接 https://blog.csdn.net/h763247747/article/details/100538827)

为啥它关心的关键点邻域范围是偶数行?

对于关键点而言,一般会选取奇数行/列mn的邻域矩阵,来研究关键点周边(mn-1)个相邻点的像素值对它的影响,因为奇数才有中心点嘛。MOPS特征描述取偶数行/列,不能把关键点作为邻域矩阵的中心点,岂不是很难理解?
其实这不是提出MOPS算法时故意为之的,而是它对关键点描述的处理过程决定的。所以,让我们先来仔细研究一下它的处理过程。

关键点的原始位置和待提取的特征

关键点 因为只是特征描述,所以在此之前应该已经通过特征检测得到了图片的一组特征点~,也就是上图标红的部分(当整张脸都很关键,就像是撒上了红色的椒盐噪声……)

假设现在要提取的是狮子眼部某个特征点K(蓝色标出)邻域范围内的点像素值,以此作为特征点K的“特征描述符”。
K特征点

仿射变换

先放一张直观的处理过程图:
MOPS首先要做一次平移,使得K点成为第二步的旋转中心点;
接着把图像转到水平位置(这样无论带比较的图片旋转了怎样的角度,可以相互匹配的点的特征描述符都是同一方向的);
然后将图像降采样(毕竟MOPS要求多尺度),也就是4040变成88的步骤,注意这里只是一个缩放,并没有什么中心点,所以也就不存在为什么不是奇数行/列,而是偶数行/列的问题;
最后一次平移只是为了取出8*8个点

基于opencv-python具体实现

== 待更新…… ==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值