图像的hu矩具有平移不变、尺度不变和旋转不变性。
(1)中心矩:构造平移不变性。利用质心坐标构造图像的中心矩。
(2)归一化中心矩:构造尺度不变性。
(3)hu矩:构造旋转不变性。
opencv的实现计算hu矩:
(1)普通矩和中心矩的计算
void cvMoments(const CvArr* arr,cvMoments* moments,int binary=0);
void cvGetHuMoments(cvMoments* moment,cvHuMoments* hu_moments);
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
#include "cvaux.h"
int main(int argc, char* argv[])
{
//产生一幅图像
IplImage* src;
src = cvCreateImage(cvSize(10,10),8,1);
//图像初始值清零
cvZero(src);
//图像的前面5行5列赋值为255
for(int yy=0;yy<5;yy++)
{
for(int xx=0;xx<5;xx++)
{
cvSetReal2D(src,yy,xx,255);
}
}
double m00,m10,m01;
//定义矩变量
CvMoments moment;
//计算原始矩和中心矩
cvMoments(src,&moment,2);
m00 = cvGetSpatialMoment(&moment,0,0);
m10 = cvGetSpatialMoment(&moment,1,0);
m01 = cvGetSpatialMoment(&a