本专题介绍的技术应用已不广,但是这些有利于理解SIFT算法的原理,也有助于感悟CV传统技术的发展变迁,以及解决问题的思路。
速记要点:
blob是什么:blob是描述图像中局部区域的平均像素强度的特征。而图像中局部的平均像素强度具有尺度不变性。blob特征画在图像上就是个圆。
blob特征有什么性质:具备光强强度、旋转不变性,但是不具备尺度和仿射不变性。
blob检测的大概流程:用不同尺度的拉普拉斯核(需要归一化),对原图上每个像素点做卷积,如果某个结果有邻域内最大值,则这个像素点位置,就有个根号2乘以该拉普拉斯核σ尺寸的blob圆。
如果忘记原理细节,可看下面的详细版(语言和章节没有过仔细整理)
目录
2.2 高斯二阶导(拉普拉斯核:Laplacian of Gaussian)也能求边缘
2.3 高斯二阶导(拉普拉斯核:LoG)和信号进行卷积的特性
2.9 Blob检测的缺点和改进(Harris角点+拉普拉斯)
1 问题的引发
上次介绍了Harris 角点检测,虽然对于光照强度、旋转改变具有较好的检测不变性,但是却不具有尺度不变性和仿射不变性。
本专题介绍拥有对光照强度、旋转、尺度有较好检测不变性的特征:Blob
下图是使用不同焦长拍摄的两张图片,我们希望找到某种特征提取器,能够实现下面这种两张不同尺度图片中找到相同的内容:
2 Blob块检测
blob块是描述图像中局部区域的平均像素强度的特征。而图像中局部的平均像素强度具有尺度不变性。下面讲解Blob检测的整个来龙去脉和原理。
2.1 高斯一阶导能求边缘图
前面专题我们讲过图像边缘检测原理,如下图:
忘了的可看下面解释:
- 通常边缘检测流程是:高斯核对图像进行平滑去噪,然后对去噪后图像进行求导,从而得到原图的边缘图。
- 但是为了减少计算量,根据卷积性质,可以先对高斯求一阶导,然后把它和图像进行卷积,也能得到整个图像的边缘图。上图中第3行图像中波峰位置就是边缘。
高斯核的一阶导(x方向偏导、y方向偏导)模样可视化如下:
2.2 高斯二阶导(拉普拉斯核:Laplacian of Gaussian)也能求边缘
高斯二阶导同样也能用来求边缘,下图第3行图中上下两个波峰的中间位置即为边缘位置。
高斯二阶导(拉普拉斯核:LoG)可视化如下图所示:
σ=1.4时的离散拉普拉斯核如下:
2.3 高斯二阶导(拉普拉斯核:LoG)和信号进行卷积的特性
如上图所示,第一列是信号,它们有不同的宽度(也就是不同尺度),第2列是用σ=1的拉普拉斯核和信号进行卷积的结果。
分析4种情况会发现,当信号尺度和拉普拉斯核尺度一致时,结果会出现一个绝对值最大的波谷。(要记住:高斯核或拉普拉斯核只要确定了σ值,那么核宽度其实也就确定了。)
真实情况是我们不知道信号(图像)情况,所以需要用不同σ值拉普拉斯核去试。
但直接用不同σ值的拉普拉斯核去和信号做卷积,随着σ值逐渐变大,卷积的结果会逐渐衰减,如下是取不同σ值时的卷积结果:
为什么信号会被衰减?原因如下:
下图是高斯核一阶导和红粗线信号的卷积示意图,卷积结果卷积结果就是高斯核一阶导函数曲线小的面积。当σ变大,面积即能量会变小。
所以,要确保随着σ变大后,信号不被衰减,如果是高斯核一阶导,就要乘以一个σ值,做个尺度归一化,使得能量不被衰减;如果是高斯核二阶导(拉普拉斯核),就要乘以σ^2。
这么做后,使用拉普拉斯核卷积结果变成如下:
如上图,会发现σ=8时,信号和拉普拉斯核会有一个绝对值极大值点。
2.4 拉普拉斯核与圆做卷积的情况
如上图,假设有个上图左边这样的图像,中心区有个黑色的圆(像素值为0),四周是白色(像素值为255),如果用拉普拉斯核在该图像的中心位置对该图像做卷积,根据拉普拉斯核尺度与圆的直径尺度关系不同,会有3种情况,如下:
- 上图红色线条是拉普拉斯核的一个切面曲线,根据拉普拉斯核定义,它中心区的元素值是小于0的,中心区外围一段区域的元素值是大于0的。
- 黑色线条是上面那个image图像的切面表示,把那张图像想象成3D,黑色的圆区域内像素值全为0,圆之外区域像素都为255。
如上图,只有圆的直径刚好和拉普拉斯核的零值区间宽度一致时,卷积结果(累加求和)才会是最大的。
所以,只要拉普拉斯核的零值区间宽度刚好和图像中圆的宽度一致,也即拉普拉斯核的零值区间宽度所形成的圆和图像中圆刚好重合,那么这个尺度的拉普拉斯核就能和图像中这个圆有最大值响应。
拉普拉斯核的简化常量参数后的公式如下:
上述拉普拉斯核公式=0时,刚好就是拉普拉斯核的零值元素所形成的那个圆。上述公式=0也即e前面的计算结果要为0,如果要让拉普拉斯核零值元素所形成的圆刚好和图像中圆重合,那么只要σ取下面这个值就行:
2.5 Blob块的特征尺度是什么
我们将Blob的特征尺度定义为在Blob中心产生拉普拉斯响应峰值的尺度。
2.6 实际上怎么判定一个Blob
预设一批待取的σ值,遍历图像中每一个像素点,在每个像素点上用不同σ的拉普拉斯核进行卷积,每3个临近的σ值的拉普拉斯核卷积结果作为1个判定组,如下图示例:
假设对图像中某像素点位置做3个不同σ值的拉普拉斯核卷积,结果如上,如果上图中黑色'x'位置处的像素点,即σ=1.5时的拉普拉斯卷积,如果这个位置响应结果值比图中其他26个位置或情况下的响应结果都大,那么这个像素点位置,就有一个Blob特征,尺度可以根据此处σ=1.5的拉普拉斯核求得。
简单说就上述归纳为两句话:
- 找到不同σ尺度下最大响应。
- 要做非极大值抑制。(不然只满足第一条,有时候临近像素点位置都会判定为有Blob)
注意:即便满足上述两条规则,同一个像素点位置,可能会有、也可以有不同尺度的Blob,这是合理的。
2.7 Blob检测效果
2.8 Blob检测流程
1)使用不同尺度Gassian函数的归一化二阶梯度分别于图像卷积;
2)合并不同尺度下卷积图像形成三维图像;
3)在三维图像中寻找局部极大值,该极大值即为检测到的Blob块 。
2.9 Blob检测的缺点和改进(Harris角点+拉普拉斯)
很显然,运算量非常大!需要用不同尺度的拉普拉斯核对图像做卷积,σ越大,计算量也越大,计算很慢。
一个改进的方法是:先检测图像中的Harris角点,然后去判定这些角点附近在不同尺度空间是否有拉普拉斯特性。这种方法源自:K.Mikolajczyk, C.Schmid. “Indexing Based on Scale Invariant Interest Points”. ICCV 2001
比较好的参考: