Machine Vision Technology:Lecture6 Blob detection斑点检测
- Blob detection
- Achieving scale covariance
- Recall:Edge detection
- Scale selection
- Blob detection in 2D
- Characteristic scale特征尺度
- Scale-space blob detector
- Efficient implementation:SIFT
- 视角差异
- 纠正角度
- 光照问题
- Invariance vs. covariance
计算机视觉(本科) 北京邮电大学 鲁鹏
Blob detection
针对Harris角点检测不具有尺度缩放Scaling不变性提出。
斑点检测:一种计算机视觉技术,用于检测图像中的区域,这些区域具有与周围像素不同的属性,如颜色或亮度。
例子:检测圆形
Achieving scale covariance
- Goal: independently detect corresponding regions in scaled versions of the same image目标:在相同图像的缩放版本中独立检测相应区域。
- Need scale selection mechanism for finding characteristic region size that is covariant with the image transformation需要尺度选择机制来寻找与图像变换协变的特征区域大小
左图中的中心点当半径达到10.1时,响应值达到最大,而右图中圆的半径达到3.89时响应值达到最大。
这里的响应函数:给定一个点,以这个点为圆心做圆,当随着圆越来越大时,能够得到上面这条响应曲线。
为此,我们的目标变为找到该响应函数。
Recall:Edge detection
使用高斯一阶导的极值来提取边缘:
也可以使用高斯二阶导过零点来提取边缘:
Scale selection
From edges to blobs:
- Edge:ripple波纹
- Blob:superposition of two ripples两个波纹的叠加
上图中上面是输入图像信号,下面是使用 σ = 1 \sigma = 1 σ=1 的拉普拉斯卷积的结果,可以发现输入信号的两个边缘对应卷积后的结果是两个零点。而最后一个比较特殊,由于尺度太小两个边缘导致的拉普拉斯卷积结果也是两个零点,但两个峰值叠加为了一个更大的峰值,这边是极值点。
当Original signal信号和输入的Laplacian滤波核匹配时,就能在边缘处产生一个极大值,正好符合我们的响应函数特性。如上图中右下角的图像,上面这里的极大值是最后一个信号的Laplacian滤波之后,对比与前面三个两个极小值的峰值的叠加。
- Spatial selection:the magnitude of the Laplacian response will achieve a maximum at the center of the blob, provided the scale of the Laplacian is “matched” to the scale of the blob空间选择:如果拉普拉斯响应的尺度与blob的尺度“匹配”,则拉普拉斯响应的大小将在blob的中心达到最大值
也就是说,对于不同的信号,会存在一个 σ \sigma σ 使得Laplacian滤波器达到极值。
而对于一个具体的信号,我们需要增大 σ \sigma σ 来测试其何时达到极值,这便建模出了Laplacian滤波器的峰值随着 σ \sigma σ 变化的函数,这就是我们上面提出的响应函数。
- We want to find the characteristic scale of the blob by convolving it with Laplacians at several scales and looking for the maximum response我们希望通过将blob与若干尺度的拉普拉斯函数进行卷积,并在中寻找最大响应,从而找到blob的特征尺度
However, Laplacian response decays as scale increases然而,拉普拉斯响应随着尺度的增加而衰减:
随着 σ \sigma σ 的逐渐增大,信号会逐渐衰减,对应图像越来越暗。
Why does this happen?
- The response of a derivative of Gaussian filter to a perfect step edge decreases as σ increases高斯滤波器的导数对完美阶跃边缘的响应随着σ的增大而减小
考虑高斯导数滤波器的和不是1,而是 1 σ 2 π \frac{1}{\sigma \sqrt{2 \pi}} σ2π1 ,所以随着 σ \sigma σ 增大,滤波器的和会越来越小,进而造成信号衰减。有了信号衰减,需要乘以 σ \sigma σ 进行补偿。
- To keep response the same (scale-invariant), must multiply Gaussian derivative by σ为了保持响应相同(比例不变),必须高斯导数乘以σ
而对于Laplacian,是高斯的二阶导,需要乘以 σ 2 \sigma^2 σ2 进行补偿。
- Laplacian is the second Gaussian derivative, so it must be multiplied by σ 2 \sigma^2 σ2 拉普拉斯函数是二阶高斯导数,所以它必须乘以 σ 2 \sigma^2 σ2
补偿以后,归一化的拉普拉斯响应函数与 σ \sigma σ 的关系如下图:
Original signal & Unnormalized Laplacian response: 信号衰减。
Scale-normalized Laplacian response: 可以看到在 σ = 8.00 \sigma = 8.00 σ=8.00 处达到极值
Blob detection in 2D
Laplacian of Gaussian: Circularly symmetric operator for blob detection in 2D高斯拉普拉斯算子:二维blob检测的圆对称算子。
∇
2
g
=
∂
2
g
∂
x
2
+
∂
2
g
∂
y
2
\nabla^2g = \frac{\partial^2 g}{\partial x^2} + \frac{\partial^2 g}{\partial y^2}
∇2g=∂x2∂2g+∂y2∂2g
Scale-normalized:
∇
n
o
r
m
2
g
=
σ
2
(
∂
2
g
∂
x
2
+
∂
2
g
∂
y
2
)
\nabla_{norm}^2g = \sigma^2 (\frac{\partial^2 g}{\partial x^2} + \frac{\partial^2 g}{\partial y^2})
∇norm2g=σ2(∂x2∂2g+∂y2∂2g)
At what scale does the Laplacian achieve a maximum response to a binary circle of radius r?拉普拉斯函数在多大的尺度上对半径为r的 二进制圆的最大响应?
- To get maximum response, the zeros of the Laplacian have to be aligned with the circle为了获得最大的响应,拉普拉斯函数的零点必须与圆对齐。
高斯的拉普拉斯算子的零平面的底面圆对应我们的圆。信号所在圆的左端点跟高斯拉普拉斯零平面的左端点对齐,信号相应达到最大值。
- The Laplacian is given by (up to scale):
( x 2 + y 2 − 2 σ 2 ) e − x 2 + y 2 2 σ 2 (x^2 + y^2 - 2\sigma^2) e^{-\frac{x^2 + y^2}{2\sigma^2}} (x2+y2−2σ2)e−2σ2x2+y2
然后令其等于0,得到零平面方程:
x
2
+
y
2
−
2
σ
2
=
0
x^2 + y^2 - 2\sigma^2 = 0
x2+y2−2σ2=0
解得:
r
=
2
σ
r = \sqrt{2} \sigma
r=2σ ,
σ
=
r
2
\sigma = \frac{r}{\sqrt{2}}
σ=2r。
Characteristic scale特征尺度
We define the characteristic scale of a blob as the scale that produces peak of Laplacian response in the blob center我们将斑点的特征尺度定义为在斑点中心产生拉普拉斯响应峰值的尺度
Scale-space blob detector
1.Convolve image with scale-normalized Laplacian at several scales使用不同 σ \sigma σ 参数的高斯拉普拉斯滤波器对图像进行滤波,得到几个不同的图像,这便构成了尺度空间scale-space。
2.Find maxima of squared Laplacian response in scale-space在尺度空间中对某一点,找到极大值对应的 σ \sigma σ ,即可得到该点的圆的半径。
可以得到同一个点的不同尺寸的圆:在尺度空间某一点比较连续三个图层、或者连续5个图层的响应值,可得到2个不同半径的圆。
使用非极大值抑制,不让圆高于密集:非最大化抑制,三个图层共27个点,当前点比其余26个点都大时,才作为极大值。
Efficient implementation:SIFT
-
Harris-Laplacian
Find local maximum of:
- Harris corner detector in space (image coordinates)
- Laplacian in scale
-
SIFT(Lowe) Scale Invariant Feature Transform尺度不变特征转换
Find local maximum of:
- Difference of Gaussians in space and scale
- Approximating the Laplacian with a difference of Gaussians用高斯函数的差异近似拉普拉斯函数:
Laplacian: L = σ 2 ( G x x ( x , y , σ ) + G y y ( x , y , σ ) ) L = \sigma^2(G_{xx}(x,y,\sigma) + G_{yy}(x,y,\sigma)) L=σ2(Gxx(x,y,σ)+Gyy(x,y,σ))
Difference of Gaussians(DoG): D o G = G x x ( x , y , k σ ) − G y y ( x , y , σ ) DoG = G_{xx}(x,y,k \sigma) - G_{yy}(x,y,\sigma) DoG=Gxx(x,y,kσ)−Gyy(x,y,σ)
大高斯核可以用小高斯核来做,进行替代。
G ( x , y , k σ ) − G ( x , y , σ ) ≈ ( k − 1 ) σ 2 ∇ 2 G G(x,y,k\sigma) - G(x,y,\sigma) \approx (k-1) \sigma^2 \nabla^2G G(x,y,kσ)−G(x,y,σ)≈(k−1)σ2∇2G
便有:
G
(
x
,
y
,
k
σ
)
−
G
(
x
,
y
,
σ
)
≈
(
k
−
1
)
σ
2
∇
2
G
=
(
k
−
1
)
L
σ
G
(
x
,
y
,
k
2
σ
)
−
G
(
x
,
y
,
k
σ
)
≈
(
k
−
1
)
L
k
σ
G
(
x
,
y
,
k
3
σ
)
−
G
(
x
,
y
,
k
2
σ
)
≈
(
k
−
1
)
L
k
2
σ
\begin{align} G(x,y,k\sigma) - G(x,y,\sigma) &\approx (k-1) \sigma^2 \nabla^2G = (k-1)L_{\sigma} \\ G(x,y,k^2\sigma) - G(x,y,k\sigma) &\approx (k-1)L_{k\sigma} \\ G(x,y,k^3\sigma) - G(x,y,k^2\sigma) &\approx (k-1)L_{k^2 \sigma} \\ \end{align}
G(x,y,kσ)−G(x,y,σ)G(x,y,k2σ)−G(x,y,kσ)G(x,y,k3σ)−G(x,y,k2σ)≈(k−1)σ2∇2G=(k−1)Lσ≈(k−1)Lkσ≈(k−1)Lk2σ
SIFT:
其中 k = 2 1 s = 2 s k = 2^{\frac{1}{s}} = \sqrt[s]{2} k=2s1=s2。
由上面可知,使用DoG可以替代Laplacian进行卷积,上面得到DOG对应的Laplacian参数为 σ \sigma σ、 k σ k\sigma kσ、 k 2 σ k^2\sigma k2σ、 k 3 σ k^3\sigma k3σ,在这个尺度空间中,每3层进行一次27个点比较,判断该点是不是极大值(非极大值抑制),如果是极大值进而可以得到圆的半径。所以这里的4层可以得到2个半径不同的圆,分别对应在 σ \sigma σ、 k σ k\sigma kσ、 k 2 σ k^2\sigma k2σ 3层中进行比较参数为 k σ k \sigma kσ 和在 k σ k\sigma kσ、 k 2 σ k^2\sigma k2σ、 k 3 σ k^3\sigma k3σ 3层中进行比较参数为 k 2 σ k^2 \sigma k2σ 的圆。这里的2便对应上面 k k k 的取值中的 s s s 。
所以有了参数 s s s ,需要对应 s + 2 s+2 s+2 个DOG,继而需要对应 s + 3 s+3 s+3 个 Gaussian卷积。上图中便是 σ \sigma σ、 k σ k\sigma kσ、 k 2 σ k^2\sigma k2σ、 k 3 σ k^3\sigma k3σ、 k 4 σ k^4\sigma k4σ 共5个Gaussian卷积。其中要得到 k σ k\sigma kσ 对应的Gaussian卷积结果,可以利用卷积“勾股定理”:对 σ \sigma σ Gaussian卷积结果继续使用 ( k σ ) 2 − σ 2 = k 2 − 1 σ \sqrt{(k\sigma)^2 - \sigma^2} = \sqrt{k^2 - 1}\sigma (kσ)2−σ2=k2−1σ 高斯卷积得到。
此外,对于大图中特征对应的圆应该比小图中特征对应的圆要大。如果大图进行一次下采样得到小图,则大图中的圆的半径应该是小图中圆的半径的2倍( r 大圆 = 2 × r 小圆 r_{大圆} = 2 \times r_{小圆} r大圆=2×r小圆),再由 σ = r 2 \sigma = \frac{r}{\sqrt{2}} σ=2r也就是 r 大圆 = 2 × σ 大圆 r_{大圆} = \sqrt{2} \times \sigma_{大圆} r大圆=2×σ大圆 和 r 小圆 = 2 × σ 小圆 r_{小圆} = \sqrt{2} \times \sigma_{小圆} r小圆=2×σ小圆。所以有 σ 大圆 = 2 × σ 小圆 \sigma_{大圆} = 2 \times \sigma_{小圆} σ大圆=2×σ小圆。
上图中,我们将参数为 k 2 σ k^2\sigma k2σ 也就是 2 σ 2\sigma 2σ 的第三层高斯卷积进行一次下采样,得到参数为 σ \sigma σ 的小图对应的高斯卷积结果。小图中对应的高斯卷积生成小图中对应的 DOG,可以得到参数为 2 k σ 2 k \sigma 2kσ 和 2 k 2 σ 2 k^2 \sigma 2k2σ 。
将大图和小图中DOG结果采用非极大值抑制,可以得到的圆有4个,其对应的参数为 k σ k\sigma kσ、 k 2 σ k^2\sigma k2σ、 2 k σ 2k\sigma 2kσ、 2 k 2 σ 2k^2\sigma 2k2σ。要想使之连续,可以得到 k = 2 k = \sqrt{2} k=2 ,也就是 2 σ 、 2 σ 、 2 2 σ 、 4 σ \sqrt{2}\sigma、2 \sigma、2 \sqrt{2} \sigma 、4 \sigma 2σ、2σ、22σ、4σ。
Invariance and covariance properties:
- Laplacian (blob) response is invariant w.r.t. rotation and scaling
- Blob location and scale is covariant w.r.t. rotation and scaling
视角差异
SIFT拓展让其对视角变换也具有鲁棒性。
Achieving affine covariance:实现仿射的协变性。
Consider the second moment matrix of the window containing the blob:
M
=
∑
x
,
y
w
(
x
,
y
)
[
I
x
2
I
x
I
y
I
x
I
y
I
y
2
]
=
R
−
1
[
λ
1
0
0
λ
2
]
R
M = \sum_{x,y}w(x,y) \begin{bmatrix} I_x^2 & I_x I_y \\ I_x I_y & I_y^2 \\ \end{bmatrix} = R^{-1} \begin{bmatrix} \lambda_1 & 0 \\ 0 & \lambda_2 \\ \end{bmatrix} R
M=x,y∑w(x,y)[Ix2IxIyIxIyIy2]=R−1[λ100λ2]R
将椭圆的长边收缩,即增大该方向的梯度,使梯度成为一个圆,那么在图像上的响应就会成为一个椭圆。
有些特征点在x轴与y轴的变换速度不一致,我们就以调整长度来表示变换速度的改变,速度快的我们就缩短,最后就会变成一个椭圆了。这里圆形只是blob,圈住了一块图像。再去算这块图像的M矩阵,得到一个椭圆。
根据SIFT得到的圆,计算这个区域内的M矩阵,得到两个特征值。如果两个特征值不同,则表示两个方向变化不一致。我们将特征值小的,即变化缓慢方向进行压扁。然后继续计算这个新的区域的M矩阵。直到迭代到两个特征值相同(相差不大)。达到这个区域内的各向同性。
Scale-invariant regions (blobs):
Affine-Adapted blobs:
纠正角度
From covariant detection to invariant description:
视角差异可以将圆画成椭圆,同样大小的椭圆放在原图中的位置,内容相同可能会有不同的角度差异:
所以需要自适应角度差异:消除旋转歧义。
求区域每一点的梯度,做梯度方向的直方图,然后找到直方图中最大的一个角度,将其转这个角度到水平位置,这样两个图像对应的区域的角度差异就可以得到纠正。即把两个图都旋转到梯度变化最大的方向来实现角度归一化。
To assign a unique orientation to circular image windows为圆形图像窗口指定唯一的方向:
- Create histogram of local gradient directions in the patch在patch中创建局部梯度方向直方图。
- Assign canonical orientation at peak of smoothed histogram在平滑直方图的峰值处指定规范化方向。
光照问题
From covariant regions to invariant features:
首先将区域划分为几个小区域方格,在每个小方格内计算梯度直方图:直方图中有8个方向的角度作为横轴,纵轴是该角度方向灰度大小,这样便构成了直方图,每个小格使用该直方图进行描述。
下面图中每个小方格的8方向的直方图表示为八个方向的线段,线段的长度表示该方向的灰度强度。16个小方格,共16x8个数值,变为包含128个数的向量,这就构成了该区域的描述符。该描述符与梯度有关,与灰度强度无关。便可以通过该描述符,计算l2距离来比较两幅光照不同的该区域图像。
比较我爱中国和爱我中国,使用局部直方图比较,提高准确率。
Invariance vs. covariance
Invariance:
- features(transform(image)) = features(image)
Covariance:
- features(transform(image)) = transform(features(image))
Covariant detection => invariant description