(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),这时g_k=E(XEX)八k称为X的k阶中心矩。一阶原点矩就是期望,一阶中心矩,l=0,二阶中心矩p_2就是X的方差 Var(X)。在统计学上,高于4阶的矩极少使出,j可以去衡量分布是否有偏,,4 可以衡量分布(密度)在均值附近的陡峭程度。针对一幅图像,我们把像素的坐标看成是一个二维随机变量(X,Y),那么一 副灰度图可以用二维灰度图密度函数来表示,因此可以用矩来描述灰度图像的特 征。OpenCV中提供的API用来计算中心矩和Hu矩,下面主要介绍Hu的原理。一幅MXN的数字图像f(i,j),其p+q阶几何矩m_pq和中心矩-pq为:M Nmp
3、g = EE巧W)i 1 3 1M NMw = OpU- j)VG,J)i 1 J 1i = mom00,1 = m0m00其中f(i,j)为图像在坐标点(i,j)处的灰度值。若将m_00看做图像的灰度质量,贝加一丁)为图像的质心坐标,那么中心矩 ,pq反应的是图像灰度相对于其灰度质心的分布情况,可以用几何矩来表示中 心矩03阶中心矩与几何矩的关系如下:00 = ETIEF 1(i- i)0(j - 5)0(iJ) = m00同0 = TE,率 )。)(VGM = OMOl = 3 f1(i- i)0(j - j)lf(ij) = Oll = T1 , W )(,j)if(ij) g 5四02
4、0 = ET1 : l(i- i)2(j-j)of(ij) = m20- ym0i02 = Eyl ,(t - i)0(j j)2( j) = m02- OmOl30 = ETl 串i)3(j - j)of(ij) = m30 - 2xm20 + 2i2m10“12 =j, l(i - i)l(j - j)2f(ij) ml2 2tmll xm02 + 2j2m1021 = Jf1f 1(i- i)2(j - j)lf(ij) = m2 - 2xm11 一 ym2Q + 2z2n003 = EF ,串- i)0(j j)3f(ij) m03 23m02 + 292mol为了消除图像比例变化带来
5、的影响,定义规格化中心矩如下:1Ipq =(7 = ,p + q = 2,3)利用二阶和三阶规格中心矩可以导出下面7个不变矩组(17),它们在图 像平移、旋转和比例变化时保持不变:%=小O +布2小2 =(mO 小2产+ 4呢 = ( - 3%2- + 3(ffol - )2小4 =(小O + 曲 2 + (2i + Tto3)2中5 = ( 3)( + )( + /2产 - 3(仍 )2;+ (3仍I )( + )3( + 712)2 一 ( + )21露 (k )( 412)2 (他 1 + )2) + 4小1(小O + /2)(出 + 小3)小7 = (3% 1 )( + )( + ri
6、2)2 3俄1 + )2+ (3力2 7o)(7h + )3( + rh2)2 ( )21OpenCV中提供了 cv2.moments。来计算图像中的中心矩(最高到三阶)。同时 配合函数ContourArea函数计算轮廓面积和arcLength来计算轮廓或曲线长度。我们来看函数原型:cv2.moments (InputArray array, bool binaryimage = false)array:输入数组,可以是光栅图像(单通道,8-bit或浮点型二维数组),或者 是一个二维数组,二维数组类型为Point或Point2fobinaryimage:默认值是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_S!MPLE)|0cv2.drawContours(img,contour,-1 ,(0,0,255),2)cv2.imshow(,res,img)cnt =contour0M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- penCV Python 轮廓 特征
