由于网上关于Hu矩的定义的内容较多,代码实现部分又多为matlab、C++或者opencv等,因此本文将主要介绍如何用python实现Hu矩的提取。后续可能会利用Hu矩进行图片分类以及平移、旋转不变性的实验,有时间做的话到时候会放上来结果。
本篇博客内容参考图像的七个不变矩 可用于图像的匹配中的matlab代码,在其基础上进行修改而成。
#-*-coding:utf-8-*-
import cv2
from datetime import datetime
import numpy as np
np.set_printoptions(suppress=True)
def humoments(img_gray):
''''''
# 标准矩定义为m_pq = sumsum(x^p * y^q * f(x, y))
row, col = img_gray.shape
#计算图像的0阶几何矩
m00 = img_gray.sum()
m10 = m01 = 0
# 计算图像的二阶、三阶几何矩
m11 = m20 = m02 = m12 = m21 = m30 = m03 = 0
for i in range(row):
m10 += (i * img_gray[i]).sum()
m20 += (i ** 2 * img_gray[i]).sum()
m30 += (i ** 3 * img_gray[i]).sum()
for j in range(col):
m1