前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >轮廓的矩

轮廓的矩

作者头像
裴来凡
发布2022-05-28 16:17:50
4320
发布2022-05-28 16:17:50
举报
文章被收录于专栏:图像处理与模式识别研究所
代码语言:javascript
复制
import cv2
import numpy as np
o=cv2.imread('C:/Users/xpp/Desktop/coins.png')#原始图像
cv2.imshow("original",o)
gray=cv2.cvtColor(o,cv2.COLOR_BGR2GRAY)#将彩色图片转换为灰度图片
ret,binary=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)#将灰度图片转换为二值图片
contours,hierarchy=cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)#计算图像轮廓
n=len(contours)
contoursImg=[]
for i in range(n):
    temp=np.zeros(o.shape,np.uint8)
    contoursImg.append(temp)
contoursImg[i]=cv2.drawContours(contoursImg[i],contours,i,255,3)#绘制图像轮廓
cv2.imshow("contours["+str(i)+"]",contoursImg[i])
print("轮廓"+str(i)+"的矩:\n",cv2.moments(contours[i]))#提取轮廓特征
print("轮廓"+str(i)+"的面积:%d"%cv2.moments(contours[i])['m00'])
cv2.waitKey()
cv2.destroyAllWindows()

轮廓19的矩: {'m00': 8974.5, 'm10': 2036635.8333333333, 'm01': 558017.8333333333, 'm20': 468955543.4166666, 'm11': 126497297.95833333, 'm02': 40771439.75, 'm30': 109496918136.75, 'm21': 29099721634.316666, 'm12': 9233994661.75, 'm03': 3287867639.9500003, 'mu20': 6769848.65736407, 'mu11': -136956.318305403, 'mu02': 6074921.579848155, 'mu30': 1448006.2300262451, 'mu21': 3092744.005244732, 'mu12': -1475507.6674439907, 'mu03': -2679981.253308296, 'nu20': 0.08405400977445295, 'nu11': -0.0017004409256613537, 'nu02': 0.0754258394382496, 'nu30': 0.00018977752378493878, 'nu21': 0.00040533893214355905, 'nu12': -0.0001933818968777062, 'nu03': -0.0003512417249984393} 轮廓19的面积:8974

算法:图像轮廓的矩是一个轮廓、一幅图像、一组点集的全局特征,包括几何特征,例如大小、位置、角度、形状等。如果两个图像轮廓的矩一致,那么两个图像轮廓一致。在图像位置发生变化时,虽然图像轮廓的面积、周长等特征不变,但是更高阶的特征会随着位置的变化而发生变化。中心矩通过减去均值获取平移不变性,忽略两个图像的位置关系,比较不同位置的两个图像的一致性。中心矩不具有缩放不变性,例如,两个形状一致、大小不一的图像,中心矩不同。通过提取图像的归一化中心矩属性值,该属性值不仅具有平移不变性,还具有缩放不变性。

retval=cv2.moments(array[, binaryImage])

  • array表示输入点集、灰度图像或二值图像
  • binaryImage表示如果为True,则array所有的非零值为1

对一幅f(x,y)图像,f(x,y)的p+q阶空间矩:

  • 零阶矩:m00
  • 一阶矩:m10, m01
  • 二阶矩:m20, m11, m02
  • 三阶矩:m30, m21, m12, m03

f(x,y)的p+q阶中心矩:

  • 二阶中心矩:mu20, mu11, mu02
  • 三阶中心矩:mu30, mu21, mu12, mu03

f(x,y)的p+q阶归一化中心矩:

  • 二阶Hu矩:nu20, nu11, nu02
  • 三阶Hu矩:nu30, nu21, mu12, mu03

注意:参数binaryImage仅在参数array为图像时有效。零阶矩“m00”的含义最为直观表示图像轮廓的面积。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档