(penCV+Python)轮廓特征初阶与中阶.docx
《(penCV+Python)轮廓特征初阶与中阶.docx》由会员分享,可在线阅读,更多相关《(penCV+Python)轮廓特征初阶与中阶.docx(12页珍藏版)》请在第一文库网上搜索。
1、图像的矩图像识别的一个核心问题是图像的特征提取,简单描述即为用一组简单的数 据(数据描述量)来描述整个图像,这组数据越简单越有代表性越好。良好的特征 不受光线、噪点、几何形变的干扰,图像识别技术的发展中,不断有新的描述图 像特征提出,而图像不变矩就是其中一个。从图像中计算出来的矩通常描述了图像不同种类的几何特征如:大小、灰度、 方向、形状等,图像矩广泛应用于模式识别、目标分类、目标识别与防伪估计、 图像编码与重构等领域。严格来讲矩是概率与统计中的一个概念,是随机变量的一种数字特征。设 XX为随机变量,C为常数,则量E(x-C)八k称为X关于C点的k阶矩。比较重 要的两种情况如下:c=0,这时a
2、_k=E(XAk)称为X的k阶原点矩。C=E(X),这时.k=E(X-EX)Ak称为X的k阶中心矩。一阶原点矩就是期望,一阶中心矩J=0,二阶中心矩-2就是X的方差 Var(X)o在统计学上,高于4阶的矩极少使出,,3可以去衡量分布是否有偏,-4 可以衡量分布(密度)在均值附近的陡峭程度。针对一幅图像,我们把像素的坐标看成是一个二维随机变量(X,Y),那么一 副灰度图可以用二维灰度图密度函数来表示,因此可以用矩来描述灰度图像的特 征。OpenCV中提供的API用来计算中心矩和Hu矩,下面主要介绍Hu的原理。一幅MN的数字图像f(i,j),其p+q阶几何矩m_pq和中心矩-pq为:M NZn内=
3、EE巧W)iljlM NMpg = 一 OPu-t 1 J 1i = hooo, j = rQ1m其中f(i,j)为图像在坐标点(i,j)处的灰度值。若将m_00看做图像的灰度质量,贝加-)为图像的质心坐标,那么中心矩 jq反应的是图像灰度相对于其灰度质心的分布情况,可以用几何矩来表示中 心矩03阶中心矩与几何矩的关系如下:00 = ETI l(i- i)0(j - j)0(i,j) = mool = l %( i)1(j - j)o(ij) = OMl = P %(一 )0(j - I)V(W = OMil = 1 fl(i- i)1(j - j)7(i) = mil - tm1020 =i
4、)2(j-j)0(J)=m20 yn0102 = Efi , l(i i)0(j - 3)2f(iJ) = tq2- ym0130 =l(i-i)3(j-D(VRJ)=m30 - 2xm2o + 2i2m10l2 = 7l(i- i)1(j 一 j)2(i) = m12 - 2jn11 - xm02 + 22m10 ,21 = 1(i- i)2(j - j)lf(ij) = m21 2xm11 - 9m20 + c2mm 3 = ETl j t(i- i)0(j J)3f(iJ) = m03- 2ym02 + 2y2m01为了消除图像比例变化带来的影响,定义规格化中心矩如下:p + q2,P
5、+ g = 2,3,.)利用二阶和三阶规格中心矩可以导出下面7个不变矩组(17),它们在图 像平移、旋转和比例变化时保持不变:42 = (%O-%2产+ 4喑13 = (7te 一 SlJi2)2 + 3(l _ 加3产4 = Oho + )2 + (%1 + )25 = (TbO + 372)(小O + 7h2)(rho + 7Zia)2 3( + )2 (3物)( )3(%o + V12)2 (rh + )2,=Ofeo rto2)(%0 + 7Zn)2 (rfe + )2J + 4小1(小O + )(te + )小7 = (3%1 %3)(%0 + 力2)(如 + 小2)2 - 3(%1
6、 + )2 (3小2 %o)( + )3(%o + rh2)2 ( + )2OpenCV中提供了 cv2.moments()来计算图像中的中心矩(最高到三阶)。同时 配合函数ContourArea函数计算轮廓面积和arcLength来计算轮廓或曲线长度。我们来看函数原型:cv2.moments (InputArray array, bool binary Image = false)array:输入数组,可以是光栅图像(单通道,8-bit或浮点型二维数组),或者 是一个二维数组,二维数组类型为Point或Point2fobinary Image:默认值是false,如果为true,则所有非零的
7、像素都会按值1 对待,也就是说相当于对图像进行了二值化处理,阈值为1,此参数仅对图像有 效。来看代码:import cv2import numpy as npimg = cv2.imread(pie.png)gray =cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)contour =cv2.findContours(gray,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)0cv2.drawContours(img,contour,-1,(0,0,255),2)cv2.imshow(res,img)cnt = contour 0 M =cv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- penCV Python 轮廓 特征
