图像匹配
目的:找到同一场景点在不同图像之间像素对应关系。
用局部特征检测比较稳定应对尺度、光照、几何变化;
所以需要几个步骤:
- 特征检测
- 特征匹配
- 运动估计
特征检测
特征点:稳定检测;易于匹配;
同时我们还需要特征点是本地特征,不随着环境而改变;要有大量特征点进行匹配;要有独特性,包含明显的区域,并且方法适合实时检测;
角点检测
角点检测公式理解:详细推导椭圆,特征值
为什么要检测角点?
希望稳定的特征,不随着变换而改变,表现为各个方向的梯度较大。
*我们衡量是感兴趣的特征点,假设有一个区域,而且这个区域移动一点,像素就变化较大,那么大体符合我们想要的独特的点,就可以是特征点,然后我们想量化找到这种点。*也就是:在角点处,沿着任意方向移动都会引起像素颜色明显变化,等价于–在角点附近,图像梯度至少具有两个主方向。
用来量化公式:
E
(
u
,
v
)
=
∑
x
,
y
w
(
x
,
y
)
[
I
(
x
+
u
,
y
+
v
)
−
I
(
x
,
y
)
]
2
E(u,v)=\sum_{x,y}w(x,y)[I(x+u,y+v)-I(x,y)]^2
E(u,v)=x,y∑w(x,y)[I(x+u,y+v)−I(x,y)]2
I
I
I为图像强度,一般用灰度表示;
I
(
x
+
u
,
y
+
v
)
I(x+u,y+v)
I(x+u,y+v)表示像素移动后,和原本做差表示改变,
w
w
w表示窗口内权重函数,可以取1(没有旋转不变性,高斯函数分布有旋转不变性);
然后通过二维的泰勒展开,可以写成:
将平方项展开并写成矩阵形式,有:
综合起来:
最后得到的就是椭圆的
也就得到:
这里的E对于一个小区域进行求和;
椭圆的矩阵表达:
椭圆半轴与系数矩阵的关系
一个nxn的矩阵,可以求解其特征值,我们对上述系数矩阵(含a、b)进行求解,则可得到特征值与椭圆半轴(a、b)的关系:
M是对称矩阵可以写成:
其中对应椭圆;对应情况:
;如果一个很小,对应的椭圆情况,是边界直线,两个都很大,变换都很快,是角点;都很小说明变化都很慢,是flat region;
方便直接得出对应情况的快捷运算:
;
w w w 的选择
这里虽然原理上是对一个小区域进行操作,实际计算梯度使用sobel算子已经采用了小区域计算梯度的方法,之际计算 I x 2 , I y 2 , I x I y I_x^2,I_y^2,I_xI_y Ix2,Iy2,IxIy,然后对每个像素点取这些值计算得到R判断是不是角点,然后使用非极大值抑制,减少过于密集的角点;最后使用阈值显示;
角点检测步骤:
- 对一整张图像计算梯度;
- 计算梯度的平方
- 对梯度平方做高斯平滑
- 计算R值响应
- 非极大值抑制
Harris对光照变化和几何变换的稳定性?
使用梯度计算,对于加性变化稳定,光照对图像强度进行加性变化,因此对光照稳定;使用高斯算子计算局部区域,因此对于几何变化稳定;旋转不会改变角点的形状有旋转不变性。不具有尺度不变性;
斑点与hessian矩阵
斑点通常是指与周围有着颜色和灰度差别的区域,如草原上的一棵树或一栋房子。它是一个区域,所以它比角点的噪能力要强,稳定性要好。而角点则是图像中一边物体的拐角或者线条之间的交叉部分。
卷积运算找卷积区域和卷积核的相似性?
把整个图像看做二维函数,海塞函数是函数对于两个自变量的偏导,hessian矩阵为:
那么斑点应该对应极值位置:
这时候将整个图像看做整体,通过hessian矩阵形式中的两个偏导,猜想hessian detector检测在两个正交方向上都有大偏导的位置:
右边上 三幅图对应不同二阶导的相应图片
通过行列式计算得到响应的极值点(白点);
发现响应点:Responses mainly****on corners and strongly textured areas;
使用hessian检测前先进行高斯滤波;
Hessian对光照变化和几何变换的稳定性?
surf检测显示hessian都比较稳定,后序考虑;
尺度不变实现?
尺度
尺度描述图像 的模糊程度,表示相机从远到近,的表示,越模糊尺度越大;
尺度稳定性就是对于不同模糊程度的相片,特征仍然能被准确的识别出来,为了做到这一点可以采用金字塔方式进行解决。
降采样之前采用高斯平滑,不能用于重建原图像,可以用来消除降采样后的马赛克;
采用金字塔的方式实现图像的多尺度表达。
金字塔的构建:每个层级都是上一层 通过高斯模糊和降采样得到的。
为什么能单独的通过对上一层的模糊后的图片进行进一步模糊就能得到相当于对原图的不糊模糊程度的图片呢?
;详细推导****;
低通滤波器包括均值滤波器,高斯滤波器等是对周围像素内容的综合,因为高斯是低通滤波器,所以和原图大小相同的图表示是信息冗余的,没有必要存储和原图相同大小的图;
但是存在的问题为,模糊后的图片重建原图片信息已经丢失了,不能重建会原图。
解决方式为图像平滑->下采样,然后上采样,这样是一种双边滤波器,得到的DOG(difference of gassian),是对图像细节增强的很好的图;
DOG金字塔
这里是用DOG近似替代LOG的,原因如下图,两个高斯相减 近似于一个LOG(Laplacian of gassian)的效果:
而LOG是锐化滤波器,提取图像的边缘信息,进一步印证了这种方式可以提取图像的边缘特征等信息。
https://blog.csdn.net/qq_37385726/article/details/89109154
Laplacian 图像分解与重建
Laplacian金字塔最顶端是图像最模糊分辨率最小的图片,将两者混合,同时每一层构造混合的LOG金字塔,通过LOG金字塔最顶层上采样就能近似得到上一层的高斯模糊图片,每一层构造得到融合比较好的图片,构造过程中有高斯模糊,会模糊两个图片的分界线,又有LOG边缘信息得到较好保存。
这里的高斯金字塔只有掩膜信息,对应的图像尺寸上左全部为1或者右全部为1;
实现“尺度不变”?
尺度常常对应着窗口大小;
尺度相关
某个尺度上 不是特征点位置,其他尺度wi特征点。
就要在不同尺度进行检测匹配;
直观的匹配为,对于某个特征,在图像上采用不同大小的窗口比对特征;
但这样做计算量大,寻求一种解决方式:
有一个关于尺度的函数,函数的某一个特征(极值、零点)与尺度相关,这样就可以直接找到对应的尺度、窗口大小
发现斑点检测器LOG有一种特性,对着斑点大小不同,需要的窗口大小也不同,在特征合适的尺度上,LOG响应最大
拉普拉斯与高斯模糊(尺度)关系:关系
所以对于图像建立一个拉普拉斯关于尺度的函数,在不同尺度上进行匹配和检测时,对于已经检测出来的特征点计算拉普拉斯函数,最值对应的就是在这个特征点需要的尺度、窗口大小。
接下来是如何计算不同不同尺度的拉普拉斯响应?
通过上面公式已经得出拉普拉斯与高斯模糊是有关系的,也就是不同尺度对应的拉普拉斯是不同的:
这样纵向来看就能得到一个点在不同尺度上的值;
同时拉普拉斯可以通过DOG近似计算来方便运算;
特征点定位,在不同尺度上相应的最大的对应的是特征点的尺度,并通过阈值筛选特征点。
实现仿射不变?
使用投影矩阵。