OpenCV : 图像轮廓的矩 Image Moments

矩特征(Moments Features) :

  矩特征是图像分析和模式识别的一种特征表示方法,用于描述图像的形状、几何特征和统计信息。可用于识别图像中的对象、检测形状及进行图像分类等。

常见的矩特征:

1. 零阶矩(Zeroth-Order Moments):用于描述图像的总体亮度或面积。

2. 一阶矩(First-Order Moments):描述图像的质心、平均位置和分布,通常用于计算图像的中心位置。

3. 中心距(Central Moments):描述图像区域想读与质心的分布,中心距能够捕获图像的旋转和平移特性。

4. 标准化矩(Normalized Moments):将矩标准化以获得尺度和旋转不变性,标准化矩可用于图像匹配和模式识别。

5. Hu不变矩(Hu Moments):基于基本矩构建,具有旋转、平移和尺度不变性,可用于图像匹配和模式识别。

图像的质心就是图像全部像素的平均位置,也是图像的重心和几何中心。

 

OpenCV 图像矩的计算 :

OpenCV使用moments函数来获取图像的矩特征

 

moments_dict = cv2.moments(array, binaryImage)
- array : 输入的轮廓点集,也可以是火毒图像或二值图像
- binaryImage : 该参数为True时,array内所有非零值被设为1,仅在输入array为图像时有效

 

函数的返回值为存储图像矩特征的字典,包括

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

如果两个轮廓的矩一致,那么这两个轮廓就是一致的。

 

零阶矩m00表示的是轮廓的面积,与cv2.contourArea()的计算结果一致。

计算轮廓的质心可以通过如下公式计算

x = int( M['m10'] / M['m00'] )

y =  int( M['m01'] / M['m00'] )

 

posted @ 2024-04-02 11:20  Liang-ml  阅读(218)  评论(0编辑  收藏  举报