【OpenCV】不变矩

图像矩

在计算图像矩是需要将图像转化为单通道的灰度图,或者进行二值化处理,即目标对象设为1,背景设为0。

图像的矩是将图像像素灰度值进行加权平均,从而反映图像中像素值分布的一种算子。

零阶矩

最简单的图像矩是以1的权重计算的像素灰度值之和,即:
m 00 = ∑ x ∑ y f ( x , y ) \begin{equation} m_{00}=\sum_x \sum_y f(x,y) \end{equation} m00=xyf(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=xyxpyqf(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=xyxf(x,y) m 01 = ∑ x ∑ y y f ( x , y ) m_{01}=\sum_x \sum_yyf(x,y) m01=xyyf(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=xx(xxˉ)p(yyˉ)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值