图像矩
在计算图像矩是需要将图像转化为单通道的灰度图,或者进行二值化处理,即目标对象设为1,背景设为0。
图像的矩是将图像像素灰度值进行加权平均,从而反映图像中像素值分布的一种算子。
零阶矩
最简单的图像矩是以1的权重计算的像素灰度值之和,即:
m 00 = ∑ x ∑ y f ( x , y ) \begin{equation} m_{00}=\sum_x \sum_y f(x,y) \end{equation} m00=x∑y∑f(x,y)
如果要计算的是二值化图片中的一个白色对象,比如下图中的字母“S”:
通过公式可以知道,零阶矩计算的就是这个字母的像素点的个数和。因此可以推出,零阶矩只能反映图像中对象的面积信息。
至于为什么这个图像矩称为零阶矩,看完下面的空间矩就可知。
空间矩
如果在零阶矩的基础上再加上像素点的位置信息,即行数和列数,则可得到图像的空间矩:
m p q = ∑ x ∑ y x p y q f ( x , y ) \begin{equation} m_{pq}=\sum_x \sum_y x^py^qf(x,y) \end{equation} mpq=x∑y∑xpyqf(x,y)
- 其中 ( p + q ) (p+q) (p+q)称为矩的阶;
- 当 p , q = 0 p,q=0 p,q=0时,就可得到 ( 1 ) (1) (1)式中的零阶矩,这也是它为什么被称为零阶矩的原因。
空间矩又称原始矩。由于加入了行数和列数,所以相比于零阶矩,它除了可以反映对象的面积信息,还可以反映图像相对于原点(0行,0列)的位置信息,即离原点越远的灰度值,权重越高。
质心
通过 ( 2 ) (2) (2)式可以计算对象的两个一阶矩:
m 10 = ∑ x ∑ y x f ( x , y ) m_{10}=\sum_x \sum_yxf(x,y) m10=x∑y∑xf(x,y) m 01 = ∑ x ∑ y y f ( x , y ) m_{01}=\sum_x \sum_yyf(x,y) m01=x∑y∑yf(x,y)
这两个一阶矩分别代表了对象中的灰度值在行和列上的分布情况,将它们分别除以零阶矩,就可以得到行和列上的中心位置:
x ˉ = m 10 m 00 , y ˉ = m 01 m 00 \={x}=\frac{m_{10}}{m_{00}}, \={y}=\frac{m_{01}}{m_{00}} xˉ=m00m10,yˉ=m00m01
上式就是对象的质心坐标,代表了对象的中心位置。
中心矩
空间矩包含了对象相对于图像原点的位置信息;如果换成对象相对于其质心的位置信息就变成了中心矩:
μ p q = ∑ x ∑ x ( x − x ˉ ) p ( y − y ˉ ) q f ( x , y ) \begin{equation} \mu_{pq}=\sum_x \sum_x (x-\={x})^p(y-\={y})^qf(x,y) \end{equation} μpq=x∑x∑(x−xˉ)p(y−yˉ)