opencv图像处理学习(五十)——轮廓矩

1.图像的矩

  参考链接:https://blog.csdn.net/qq_37207090/article/details/83986950

  图像矩是通过对轮廓上所有点进行积分运算而得到的一个粗略特征,对于图像函数 f ( x , y ) f(x,y) f(x,y),图像的 p + q p+q p+q几何矩定义如下:
m p q = ∫ − ∞ ∞ ∫ − ∞ ∞ x p y q f ( x , y ) d x d y m_{pq}=\int_{-\infty}^\infty\int_{-\infty}^\infty x^py^qf(x,y)dxdy mpq=xpyqf(x,y)dxdy
   其中 p p p q q q的取值范围为 [ 0 , + ∞ ) [0,+\infty) [0,+),图像的 p + q p+q p+q阶中心矩定义如下:
μ p q = ∫ − ∞ ∞ ∫ − ∞ ∞ ( x − x − ) p ( y − y − ) q f ( x , y ) d x d y \mu_{pq}=\int_{-\infty}^\infty\int_{-\infty}^\infty (x-x^-)^p(y-y^-)^qf(x,y)dxdy μpq=(xx)p(yy)qf(x,y)dxdy
   其中 p p p q q q的取值范围为 [ 0 , + ∞ ) [0,+\infty) [0,+), x − x^- x y − y^- y代表图像的质心。对于离散的数字图像,积分变换转换为求和变换后,几何矩和中心矩公式如下:
m p q = ∑ y = 1 N ∑ x = 1 M x p y q f ( x , y ) m_{pq}=\sum_{y=1}^{N} \sum_{x=1}^{M}x^py^qf(x,y) mpq=y=1Nx=1Mxpyqf(x,y)
μ p q = ∑ y = 1 N ∑ x = 1 M ( x − x − ) p ( y − y − ) q f ( x , y ) \mu_{pq}=\sum_{y=1}^{N} \sum_{x=1}^{M}(x-x^-)^p(y-y^-)^qf(x,y) μpq=y=1Nx=1M(xx)p(yy)qf(x,y)
   其中 p p p q q q的取值范围为 [ 0 , + ∞ ) [0,+\infty) [0,+), M M M N N N分别代表图像的宽度和高度。归一化的中心矩定位为:
η p q = μ p q ( μ 00 ) ρ \eta_{pq}=\frac{\mu_{pq}}{(\mu_{00})^\rho} ηpq=(μ00)ρμpq,其中 ρ = p + q 2 + 1 \rho=\frac{p+q}{2}+1 ρ=2p+q+1,其中 p p p x x x的维度,其中 q q q y y y的维度,阶段表示参数的指数关系

  利用二阶和三阶规格中心矩可以导出下面7个不变矩组(Φ1 Φ7),它们在图像平移、旋转和比例变化时保持不变。
在这里插入图片描述

2.Opencv相关函数

  Opencv提供了函数moments()用来计算图像中所有的矩(最高到三阶),contourArea()用来计算轮廓面积,arcLength()用来计算轮廓或曲线长度。

Moments moments(InputArray array,bool binaryImage=false); 

  该函数用来计算所有三阶多边形或栅格形状的矩,参数array表示输入光栅图像(单通道,8位或32位浮点二维数组)或二维点集。binaryImage设为true时,所有的非零图像像素被认为是1。

  点多边形测试用于判断点集是否在被测多边形的内部,是轮廓点集判断的重要技术之一。Opencv专门提供了专门用于点多边形测试的函数pointPolygonTest(),用来检测点是否在多边形内部:

double pointPolygonTest(InputArray contour,Point2f pt,bool measureDist); 

  参数contour是输入轮廓,pt表示对轮廓点进行测试,measureDist是标志位,如果设置为true,则函数会返回该点到轮廓最近点的有符号的欧式距离,即点在曲线内时,距离为正,点在曲线外为负,点在轮廓上的距离返回为零。如果设置成false,函数会返回相应的距离(1,-1,0)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值