




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第OpenCV圖像處理之直方圖比較方法詳解目錄一、直方圖比較二、圖像直方圖比較方法三、代碼實(shí)現(xiàn)四、圖像處理效果
一、直方圖比較
直方圖比較是對(duì)輸入的兩張圖像進(jìn)行計(jì)算得到直方圖H1與H2,歸一化到相同的尺度空間,然后可以通過(guò)計(jì)算H1與H2的之間的距離得到兩個(gè)直方圖的相似程度(每張圖像都有唯一的直方圖與之對(duì)應(yīng)),進(jìn)而比較圖像本身的相似程度。Opencv提供的比較方法有四種:
Correlation相關(guān)性比較
Chi-Square卡方比較
Intersection十字交叉性
Bhattacharyyadistance巴氏距離。
(1)直方圖比較方法-相關(guān)性計(jì)算(CV_COMP_CORREL)
其中:
其中N是直方圖的BIN個(gè)數(shù),是均值。
(2)直方圖比較方法-相關(guān)性計(jì)算(CV_COMP_CORREL)
H1,H2分別表示兩個(gè)圖像的直方圖數(shù)據(jù)
(3)直方圖比較方法-十字交叉性計(jì)算(CV_COMP_INTERSECT)
H1,H2分別表示兩個(gè)圖像的直方圖數(shù)據(jù)
(4)直方圖比較方法-巴氏距離計(jì)算(CV_COMP_BHATTACHARYYA)
H1,H2分別表示兩個(gè)圖像的直方圖數(shù)據(jù),
二、圖像直方圖比較方法
加載原圖像
將圖像色彩空間由BGR三通道轉(zhuǎn)換為HSV空間(由于直方圖對(duì)亮度和灰度比較敏感,色彩空間轉(zhuǎn)換就是突出這兩個(gè)因素盡量去除其他因素)
計(jì)算直方圖進(jìn)行歸一化處理,歸一化到0到1之間,調(diào)用calcHist和normalize
直方圖比較,使用上述四種方法之一,調(diào)用compareHist
直方圖比較API函數(shù)接口
API接口
doublecompareHist(InputArrayh1,InputArrayH2,intmethod)
參數(shù)說(shuō)明:
第一個(gè)參數(shù)InputArray類型h1,直方圖數(shù)據(jù)
第二個(gè)參數(shù)InputArray類型h2,直方圖數(shù)據(jù)
第三個(gè)參數(shù)int類型method比較方法,上述四種方法之一
返回值:采用上述四中方法之一計(jì)算后的兩個(gè)直方圖相關(guān)系數(shù)
關(guān)于intmethod的取值:
enumHistCompMethods{
HISTCMP_CORREL=0,//相關(guān)性比較
HISTCMP_CHISQR=1,//卡方比較
HISTCMP_INTERSECT=2,//十字交叉性
HISTCMP_BHATTACHARYYA=3,//巴氏距離
HISTCMP_HELLINGER=HISTCMP_BHATTACHARYYA,
HISTCMP_CHISQR_ALT=4,//替代卡方:通常用于紋理比較。
HISTCMP_KL_DIV=5//KL散度
不同直方圖相關(guān)性比較方法的特點(diǎn):
Correlation相關(guān)性比較(CV_COMP_CORREL)值越大,相關(guān)度越高,最大值為1,最小值為0,越接近1越相似
Chi-Square卡方比較(CV_COMP_CHISQR)值越小,相關(guān)度越高,最大值無(wú)上界,最小值0,越接近0越相似
Intersection十字交叉性(CV_COMP_INTERSECT)對(duì)于相似度比較,值越大,表明相關(guān)度越高,最大值無(wú)上界;完美匹配為1,完全不匹配為0;
Bhattacharyyadistance巴氏距離(CV_COMP_BHATTACHARYYA)值越小,相關(guān)度越高,最大值為1,最小值為0,越接近1越相似
三、代碼實(shí)現(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");
//轉(zhuǎn)化為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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年雪梨膏項(xiàng)目市場(chǎng)調(diào)查研究報(bào)告
- 智能游泳監(jiān)測(cè)手環(huán)企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 燈光藝術(shù)節(jié)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 智能溫控?zé)崴髽I(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 智能呼吸頻率監(jiān)測(cè)口罩行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 智能垃圾分類識(shí)別攝像頭行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 復(fù)方泛影葡胺企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 智能溫度控制系統(tǒng)企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 智能溫控離子夾發(fā)器行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 健身房產(chǎn)品代理合同范例
- 2024年09月北京北京銀行北京地區(qū)社會(huì)招考(919)筆試歷年參考題庫(kù)附帶答案詳解
- 學(xué)校心理健康教育與家校合作的實(shí)踐研究
- 國(guó)旗班指揮刀訓(xùn)練動(dòng)作要領(lǐng)
- 足浴技師押金合同范例
- 水工環(huán)高工答辯復(fù)習(xí)題
- 《賭博的危害》課件
- 【MOOC】動(dòng)物學(xué)-華中農(nóng)業(yè)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- FOCUS-PDCA改善案例-提高術(shù)前手術(shù)部位皮膚準(zhǔn)備合格率醫(yī)院品質(zhì)管理成果匯報(bào)
- 足球鞋相關(guān)項(xiàng)目實(shí)施方案
- DB52T 1421-2019 工業(yè)鍋爐用生物質(zhì)固體成型燃料
- 保密法實(shí)施條例培訓(xùn)
評(píng)論
0/150
提交評(píng)論