




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第OpenCV圖像處理之直方圖比較方法詳解目錄一、直方圖比較二、圖像直方圖比較方法三、代碼實現(xiàn)四、圖像處理效果
一、直方圖比較
直方圖比較是對輸入的兩張圖像進行計算得到直方圖H1與H2,歸一化到相同的尺度空間,然后可以通過計算H1與H2的之間的距離得到兩個直方圖的相似程度(每張圖像都有唯一的直方圖與之對應),進而比較圖像本身的相似程度。Opencv提供的比較方法有四種:
Correlation相關性比較
Chi-Square卡方比較
Intersection十字交叉性
Bhattacharyyadistance巴氏距離。
(1)直方圖比較方法-相關性計算(CV_COMP_CORREL)
其中:
其中N是直方圖的BIN個數(shù),是均值。
(2)直方圖比較方法-相關性計算(CV_COMP_CORREL)
H1,H2分別表示兩個圖像的直方圖數(shù)據(jù)
(3)直方圖比較方法-十字交叉性計算(CV_COMP_INTERSECT)
H1,H2分別表示兩個圖像的直方圖數(shù)據(jù)
(4)直方圖比較方法-巴氏距離計算(CV_COMP_BHATTACHARYYA)
H1,H2分別表示兩個圖像的直方圖數(shù)據(jù),
二、圖像直方圖比較方法
加載原圖像
將圖像色彩空間由BGR三通道轉換為HSV空間(由于直方圖對亮度和灰度比較敏感,色彩空間轉換就是突出這兩個因素盡量去除其他因素)
計算直方圖進行歸一化處理,歸一化到0到1之間,調用calcHist和normalize
直方圖比較,使用上述四種方法之一,調用compareHist
直方圖比較API函數(shù)接口
API接口
doublecompareHist(InputArrayh1,InputArrayH2,intmethod)
參數(shù)說明:
第一個參數(shù)InputArray類型h1,直方圖數(shù)據(jù)
第二個參數(shù)InputArray類型h2,直方圖數(shù)據(jù)
第三個參數(shù)int類型method比較方法,上述四種方法之一
返回值:采用上述四中方法之一計算后的兩個直方圖相關系數(shù)
關于intmethod的取值:
enumHistCompMethods{
HISTCMP_CORREL=0,//相關性比較
HISTCMP_CHISQR=1,//卡方比較
HISTCMP_INTERSECT=2,//十字交叉性
HISTCMP_BHATTACHARYYA=3,//巴氏距離
HISTCMP_HELLINGER=HISTCMP_BHATTACHARYYA,
HISTCMP_CHISQR_ALT=4,//替代卡方:通常用于紋理比較。
HISTCMP_KL_DIV=5//KL散度
不同直方圖相關性比較方法的特點:
Correlation相關性比較(CV_COMP_CORREL)值越大,相關度越高,最大值為1,最小值為0,越接近1越相似
Chi-Square卡方比較(CV_COMP_CHISQR)值越小,相關度越高,最大值無上界,最小值0,越接近0越相似
Intersection十字交叉性(CV_COMP_INTERSECT)對于相似度比較,值越大,表明相關度越高,最大值無上界;完美匹配為1,完全不匹配為0;
Bhattacharyyadistance巴氏距離(CV_COMP_BHATTACHARYYA)值越小,相關度越高,最大值為1,最小值為0,越接近1越相似
三、代碼實現(xiàn)
#include"stdafx.h"
#includeopencv2/opencv.hpp
#includeiostream
#includemath.h
usingnamespacestd;
usingnamespacecv;
stringconvertToString(doubled);
intmain(intargc,char**argv){
Matbase,test1,test2;//RGB圖像
Mathsvbase,hsvtest1,hsvtest2;//HSV圖像
base=imread("F:/photo/zx.jpg");
if(!base.data){
printf("couldnotloadimage...\n");
return-1;
test1=imread("F:/photo/a.jpg");
test2=imread("F:/photo/c.jpg");
//轉化為HSV圖像
cvtColor(base,hsvbase,COLOR_BGR2HSV);
cvtColor(test1,hsvtest1,COLOR_BGR2HSV);
cvtColor(test2,hsvtest2,COLOR_BGR2HSV);
inth_bins=50;ints_bins=60;
inthistSize[]={h_bins,s_bins};
//huevariesfrom0to179,saturationfrom0to255
floath_ranges[]={0,180};
floats_ranges[]={0,256};
constfloat*ranges[]={h_ranges,s_ranges};
//Usetheo-thand1-stchannels
intchannels[]={0,1};
MatNDhist_base;
MatNDhist_test1;
MatNDhist_test2;
calcHist(hsvbase,1,channels,Mat(),hist_base,2,histSize,ranges,true,false);
normalize(hist_base,hist_base,0,1,NORM_MINMAX,-1,Mat());
calcHist(hsvtest1,1,channels,Mat(),hist_test1,2,histSize,ranges,true,false);
normalize(hist_test1,hist_test1,0,1,NORM_MINMAX,-1,Mat());
calcHist(hsvtest2,1,channels,Mat(),hist_test2,2,histSize,ranges,true,false);
normalize(hist_test2,hist_test2,0,1,NORM_MINMAX,-1,Mat());
doublebasebase=compareHist(hist_base,hist_base,2);//zx
doublebasetest1=compareHist(hist_base,hist_test1,2);//zxanda
doublebasetest2=compareHist(hist_base,hist_test2,2);//zxandc
doubletes1test2=compareHist(hist_test1,hist_test2,2);//aandc
printf("test1comparewithtest2correlationvalue:%f",tes1test2);
Mattest12;
test2.copyTo(test12);
putText(base,convertToString(basebase),Point(50,50),FONT_HERSHEY_COMPLEX,1,Scalar(0,0,255),2,LINE_AA);//zx
putText(test1,convertToString(basetest1),Point(50,50),FONT_HERSHEY_COMPLEX,1,Scalar(0,0,255),2,LINE_AA);//zxanda
putText(test2,convertToString(basetest2),Point(50,50),FONT_HERSHEY_COMPLEX,1,Scalar(0,0,255),2,LINE_AA);//zxandc
putText(test12,convertToString(tes1test2),Point(50,50),FONT_HERSHEY_COMPLEX,1,Scalar(0,0,255),2,LINE_AA);//aandc
namedWindow("base",0);
resizeWindow("base",base.cols/2,base.rows/2);
namedWindow("test1",0);
resizeWindow("test1",test1.cols/2,test1.rows/2);
namedWindow("test2",0);
resizeWindow("test2",test2.cols/2,test2.rows/2);
imshow("base",base);
imshow("test1",test1);
imshow("test2",test2);
imshow("test12",test12);
waitKey(0);
return0;
stringconvertToString(doubled){
ostringstreamos;
if(osd)
returnos.str();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代打包發(fā)貨合同范例
- 保本投資分紅合同范例
- QS授權使用合同范例
- 公司治理類合同范例
- 保潔用工合同范例
- 不合規(guī)物業(yè)合同范例
- 會計勞動聘用合同范例
- 借款和利息合同范例
- 供貨方為個人合同范例
- 代辦資質合同范例
- (四調)武漢市2025屆高中畢業(yè)生四月調研考試 地理試卷(含答案)
- GB/T 13025.7-2012制鹽工業(yè)通用試驗方法碘的測定
- 高中地理人教版高中必修1第二章 地球上的大氣大氣的受熱過程教學設計
- 封條模板A4直接打印版
- 肛腸科 肛門濕瘍病中醫(yī)診療方案
- 毒理基因組學與系統(tǒng)毒理學
- 單線鐵路隧道畢業(yè)設計計算書(72頁)
- 山東省安全生產條例題庫200題含答案
- 《畢業(yè)設計--年產4000噸甲胺精餾工段的工藝初步設計 》
- 關門梁引水電站壓力管道設計說明
- 關于建立涉農貸款專項統(tǒng)計制的通知銀發(fā)號
評論
0/150
提交評論