网上说直方图可以用来给图片进行细节增强和进行模式识别(图片匹配),今天我试了试图片的相似性分析,结果如下:
相似值越小,则认为越类似:
1.0表示图片完全不同
----------------------------------------------------------------------------------------------------------------
0.0表示两张图完全相同
----------------------------------------------------------------------------------------------------------------
对比前并未对图片进行任何处理,感觉直方图进行图片匹配对图片的色彩总量很敏感,对形状轮廓不敏感;但是处理速度快,适合图片快速粗分类。
可以做的前处理包括 直方图匹配变化,图像颜色降维,反向映射等。
代码来自 【OpenCV】直方图应用:直方图均衡化,直方图匹配,对比直方图
//根据当前图片 不做处理直接对比
- (IBAction)compareAction:(id)sender {
IplImage *image = [self CreateIplImageFromUIImage:_imgview1.image];
IplImage *image2 = [self CreateIplImageFromUIImage:_imageView2.image];
int hist_size=256;
float range[] = {0,255};
float* ranges[]={range};
IplImage* gray_plane = cvCreateImage(cvGetSize(image),8,1);
cvCvtColor(image,gray_plane,CV_BGR2GRAY);
CvHistogram* gray_hist = cvCreateHist(1,&hist_size,CV_HIST_ARRAY,ranges,1);
cvCalcHist(&gray_plane,gray_hist,0,0);
IplImage* gray_plane2 = cvCreateImage(cvGetSize(image2),8,1);
cvCvtColor(image2,gray_plane2,CV_BGR2GRAY);
CvHistogram* gray_hist2 = cvCreateHist(1,&hist_size,CV_HIST_ARRAY,ranges,1);
cvCalcHist(&gray_plane2,gray_hist2,0,0);
//相关:CV_COMP_CORREL
//卡方:CV_COMP_CHISQR
//直方图相交:CV_COMP_INTERSECT
//Bhattacharyya距离:CV_COMP_BHATTACHARYYA
double com=cvCompareHist(gray_hist,gray_hist2,CV_COMP_BHATTACHARYYA);
_resultLabel.text= [NSString stringWithFormat:@"相似程度:%.2f",com];
}