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'] )