图形学笔记(四)
Harris 角点检测器延申——在图像间寻找对应点
原理
Harris角点检测器可以检测出来图像中的兴趣点,但是没有给出比较图像间兴趣点来寻找匹配角点的方法。我们需要在每个点上加上描述子信息,并给出比较这些描述子的方法。
兴趣点描述子是分配给兴趣点的一个向量,描述该点附近的图像的表观信息,描述子越好,寻找到的对应点也越好。我们用对应点或点的对应来描述相同物体和场景点在不同图像上形成的像素点.
Harris角点的描述子通常是由周围图像像素块的灰度值,以及用于比较的归一化互相关矩阵构成的.图像的像素块由以该像素点为中心的周围矩阵部分图像构成.(其实我们可以把这个矩阵,看成一个窗口,因为我们很难从全局去考虑这个点的位置,所以我们需要在这个点附近开一个窗口,然后通过对应点之间的窗口进行比较,来达到描述两个角点的相似性的目的)
我们可以定义一个函数: \[ c(I_1,I_2) = \Sigma_x f(I_1(x),I_2(x)) \] 其中,函数f随着相关方法的变化而变化,上式取像素块中所有像素位置x的和,对于互相关矩阵,函数\(f(I_1,I_2) = I_1I_2\),因此\(c(I_1,I_2) = I_1\cdot I_2\),其中\(\cdot\)代表向量乘法。\(c(I_1,I_2)\)的值越高,像素块\(I_1,I_2\)的相似度也越高。(另一个常用的是\(f(I_1,I_2)= (I_1-I_2)^2\))
上面说的其实就是用余弦法来度量两个向量的相似度,余弦的值越大,两个向量就越接近。
归一化的互相关矩阵是互相关矩阵的一种变形,可以被定义为: \[ ncc(I_1,I_2) = \frac{1}{n-1} \Sigma_{x} \frac{I_1(x)-\mu_1}{\sigma_1}\cdot \frac{I_2(x)-\mu_2}{\sigma_2} \] 学过高斯的都知道,这里的\(\mu\)代表的是平均值,\(\sigma\)代表的是标准差,而这里的统计范围是以某个点为中心的窗口中的所有像素点。这里实际上在干的事情是:求每张图片的相对亮度,所构成的向量的余弦,这样可以有效地消除由于左右目相机接收到的光照条件不同而引起的差异。
我们使用非常有名的tsukuba来进行测试,这个数据集是一个用于立体匹配的数据集:
代码
1 | from PIL import Image |
结果
可以看到,这个匹配结果还凑活,但是说实话,不咋地。我准备以后开个专题来讲一下几个传统的立体匹配方法,因为最近也有可能要做相关的东西,正好复习一下。所以这一次,这方面的就先带过去了。
我们可以看出来,匹配的核心是相似性的度量,也就是描述子,在下一节我们会学习最好的一种描述子之一。