美文网首页
图像轮廓之矩特征

图像轮廓之矩特征

作者: 大龙10 | 来源:发表于2021-11-06 06:45 被阅读0次

《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05

第12章 图像轮廓

12.2 矩特征

  • 比较两个轮廓最简单的方法是比较二者的轮廓矩。
  • 轮廓矩代表了一个轮廓、一幅图像、一组点集的全局特征。矩信息包含了对应对象不同类型的几何特征,例如大小、位置、角度、形状等。
  • 矩特征被广泛地应用在模式识别、图像识别等方面。

1) 矩的计算:moments函数

  OpenCV提供了函数cv2.moments()来获取图像的moments特征。通常情况下,我们将使用函数cv2.moments()获取的轮廓特征称为“轮廓矩”。轮廓矩描述了一个轮廓的重要特征,使用轮廓矩可以方便地比较两个轮廓。
函数cv2.moments()的语法格式为:

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

式中有两个参数:

  • array:可以是点集,也可以是灰度图像或者二值图像。当array是点集时,函数会把这些点集当成轮廓中的顶点,把整个点集作为一条轮廓,而不是把它们当成独立的点来看待。
  • binaryImage:该参数为True时,array内所有的非零值都被处理为1。该参数仅在参数array为图像时有效。

该函数的返回值retval是矩特征,主要包括:
(1)空间矩

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

(2)中心矩

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

(3)归一化中心矩

  • 二阶Hu矩:nu20, nu11, nu02
  • 三阶Hu矩:nu30, nu21, nu12, nu03

在OpenCV中,函数cv2.moments()会同时计算上述空间矩、中心矩和归一化中心距。

2) 计算轮廓的面积:contourArea函数

函数cv2.contourArea()用于计算轮廓的面积。该函数的语法格式为:

retval=cv2.contourArea(contour[, oriented])

式中的返回值retval是面积值。
式中有两个参数:

  • contour是轮廓。
  • oriented是布尔型值。当它为True 时,返回的值包含正/负号,用来表示轮廓是顺时针还是逆时针的。该参数的默认值是False,表示返回的retval是一个绝对值。

【例12.6】使用函数cv2.contourArea()计算各个轮廓的面积,将面积大于15000的轮廓筛选出来。

#筛选出大于特定大小的轮廓
import cv2
import numpy as np
o = cv2.imread('contours.bmp')  
cv2.imshow("original",o)
gray = cv2.cvtColor(o,cv2.COLOR_BGR2GRAY)  
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)  
image,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,255,255),3)
    if cv2.contourArea(contours[i])>15000:
        cv2.imshow("contours[" + str(i)+"]",contoursImg[i])    
cv2.waitKey()
cv2.destroyAllWindows()

3) 计算轮廓的长度:arcLength函数

函数cv2.arcLength()用于计算轮廓的长度,其语法格式为:

retval=cv2.arcLength(curve, closed)

式中返回值retval是轮廓的长度(周长)。
上式中有两个参数:

  • curve是轮廓。
  • closed是布尔型值,用来表示轮廓是否是封闭的。该值为True时,表示轮廓是封闭的。

相关文章

  • 图像轮廓之矩特征

    《OpenCV轻松入门:面向Python》读书笔记作者:李立宗出版社:电子工业出版社出版时间:2019-05 第1...

  • 轮廓特征之矩、面积、周长

    轮廓特征 查找轮廓的不同特征,例如矩、面积、周长等。 图像矩原始矩对于二维连续函数阶的矩被定义为图像矩对于=0,1...

  • 矩特征---OpenCV-Python开发指南(25)

    什么是矩特征 通过前篇博文的学习,我们知道如何从图像中分解轮廓。而矩特征是比较两个轮廓最简单的方法,通过它们的轮廓...

  • OpenCV 之ios 轮廓矩

    OpenCV 之ios 轮廓矩 目标 在这节教程中您将学到: 使用OpenCV函数 moments 计算图像所有的...

  • 矩特征

    矩特征被广泛应用于图像识别、模式识别等方面。矩信息包含了对应图像不同类型的几何特征,如大小、形状、角度、位置等,一...

  • 轮廓的特征值---OpenCV-Python开发指南(29)

    前言 轮廓自身的一些属性特征及轮廓所包围对象的特征对于描述图像具有重要意义。本篇博文将介绍几个轮廓自身的属性特征及...

  • 图像轮廓之轮廓拟合

    《OpenCV轻松入门:面向Python》读书笔记作者:李立宗出版社:电子工业出版社出版时间:2019-05 第1...

  • Hu矩---OpenCV-Python开发指南(26)

    什么是Hu矩 Hu矩是归一化中心矩的线性组合。Hu矩在图像的旋转,缩放,平移等操作后,仍然保持矩的特征不变,所以经...

  • LabVIEW角点检测(基础篇—10)

    图像的特征是图像的原始特性或属性,它包含图像中的关键信息,是机器视觉算法工作的基础。 图像的灰度、边缘、轮廓、纹理...

  • LabVIEW图像特征与机器视觉概念(理论篇—4)

    图像的特征是指图像的原始特性或属性,其中部分属于自然特征,如像素灰度、边缘和轮廓、纹理及色彩等。有些则是需要通过计...

网友评论

      本文标题:图像轮廓之矩特征

      本文链接:https://www.haomeiwen.com/subject/xlngaltx.html