版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第OpenCV圖像處理之直方圖比較方法詳解目錄一、直方圖比較二、圖像直方圖比較方法三、代碼實現(xiàn)四、圖像處理效果
一、直方圖比較
直方圖比較是對輸入的兩張圖像進(jìn)行計算得到直方圖H1與H2,歸一化到相同的尺度空間,然后可以通過計算H1與H2的之間的距離得到兩個直方圖的相似程度(每張圖像都有唯一的直方圖與之對應(yīng)),進(jìn)而比較圖像本身的相似程度。Opencv提供的比較方法有四種:
Correlation相關(guān)性比較
Chi-Square卡方比較
Intersection十字交叉性
Bhattacharyyadistance巴氏距離。
(1)直方圖比較方法-相關(guān)性計算(CV_COMP_CORREL)
其中:
其中N是直方圖的BIN個數(shù),是均值。
(2)直方圖比較方法-相關(guān)性計算(CV_COMP_CORREL)
H1,H2分別表示兩個圖像的直方圖數(shù)據(jù)
(3)直方圖比較方法-十字交叉性計算(CV_COMP_INTERSECT)
H1,H2分別表示兩個圖像的直方圖數(shù)據(jù)
(4)直方圖比較方法-巴氏距離計算(CV_COMP_BHATTACHARYYA)
H1,H2分別表示兩個圖像的直方圖數(shù)據(jù),
二、圖像直方圖比較方法
加載原圖像
將圖像色彩空間由BGR三通道轉(zhuǎn)換為HSV空間(由于直方圖對亮度和灰度比較敏感,色彩空間轉(zhuǎn)換就是突出這兩個因素盡量去除其他因素)
計算直方圖進(jìn)行歸一化處理,歸一化到0到1之間,調(diào)用calcHist和normalize
直方圖比較,使用上述四種方法之一,調(diào)用compareHist
直方圖比較API函數(shù)接口
API接口
doublecompareHist(InputArrayh1,InputArrayH2,intmethod)
參數(shù)說明:
第一個參數(shù)InputArray類型h1,直方圖數(shù)據(jù)
第二個參數(shù)InputArray類型h2,直方圖數(shù)據(jù)
第三個參數(shù)int類型method比較方法,上述四種方法之一
返回值:采用上述四中方法之一計算后的兩個直方圖相關(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)性比較方法的特點:
Correlation相關(guān)性比較(CV_COMP_CORREL)值越大,相關(guān)度越高,最大值為1,最小值為0,越接近1越相似
Chi-Square卡方比較(CV_COMP_CHISQR)值越小,相關(guān)度越高,最大值無上界,最小值0,越接近0越相似
Intersection十字交叉性(CV_COMP_INTERSECT)對于相似度比較,值越大,表明相關(guān)度越高,最大值無上界;完美匹配為1,完全不匹配為0;
Bhattacharyyadistance巴氏距離(CV_COMP_BHATTACHARYYA)值越小,相關(guān)度越高,最大值為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");
//轉(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江省哈爾濱市德強(qiáng)高級中學(xué)2025-2026學(xué)年高二(上)期末物理試卷(Ⅱ卷)(含答案)
- 甘肅省武威市2025-2026學(xué)年高三(上)期末物理試卷(含答案)
- 2025~2026學(xué)年山東濟(jì)南市天橋區(qū)八年級語文第一學(xué)期期末考試試題(含答案)
- 危險化學(xué)品試題及答案
- 部編人教版六年級數(shù)學(xué)上冊期末考試題含答案
- 2022~2023民政行業(yè)職業(yè)鑒定考試題庫及答案第256期
- 2023年房屋建筑學(xué)考試復(fù)習(xí)題及參考答案
- 2022~2023糧油食品檢驗人員考試題庫及答案解析第101期
- 變頻器應(yīng)用技術(shù)要點
- 三峽新能源考試題及答案
- 數(shù)字孿生方案
- 金融領(lǐng)域人工智能算法應(yīng)用倫理與安全評規(guī)范
- 機(jī)動車駕校安全培訓(xùn)課件
- 2025年役前訓(xùn)練考試題庫及答案
- 2024VADOD臨床實踐指南:耳鳴的管理課件
- 2025廣東潮州府城文化旅游投資集團(tuán)有限公司下屬企業(yè)副總經(jīng)理崗位招聘1人筆試歷年備考題庫附帶答案詳解2套試卷
- 城市軌道交通服務(wù)與管理崗位面試技巧
- 2025年公務(wù)員多省聯(lián)考《申論》題(陜西A卷)及參考答案
- 《允許一切發(fā)生》讀書感悟
- 續(xù)保團(tuán)購會活動方案
- 產(chǎn)品設(shè)計需求與評審表
評論
0/150
提交評論