OpenCV圖像處理之直方圖比較方法詳解_第1頁(yè)
OpenCV圖像處理之直方圖比較方法詳解_第2頁(yè)
OpenCV圖像處理之直方圖比較方法詳解_第3頁(yè)
OpenCV圖像處理之直方圖比較方法詳解_第4頁(yè)
OpenCV圖像處理之直方圖比較方法詳解_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論