日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

直方图与匹配

發布時間:2025/5/22 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 直方图与匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

灰度直方圖是灰度級的函數,描述的是圖像中具有該灰度級的像素的個數:其橫坐標是灰度級,縱坐標是該灰度出現的頻率(像素的個數)。

在opencv中可以通過cvCreateHist()來生成直方圖

?

CvHistogram* cvCreateHist(int dims,????? ?int* sizes,? ?int type,?? ?float** ranges=NULL, int uniform=1 ?)dims? ?//直方圖包含的維數sizes //數組的長度等于dims,數組中每個整數表示分配給對應維數的的bin的個數type ?//表示存儲類型,CV_HIST_ARRAy表示用密集多維矩陣結構存儲直方圖,CV_HIST_SPARSE表示數據已稀疏矩陣方式存儲ranges=NULL, //浮點數對的構成的數組,每個浮點數對表示對應維數的bin的區間的上下界uniform=1 ?//非0表示均勻直方圖,為NULL表示未知,即在后面可以設置。CvHistogram* cvCreateHist(

使用cvCalcHist()函數來計算直方圖

?

?

void cvCalcHist(IplImage** image,CvHistogram* hist,int accmulate=0,const CvArr* mask=NULL)image //是一個指向數組的IplImage*類型的指針,著允許利用多個圖像通道hist //要計算的直方圖accmulate //非0時,表示直方圖hist在讀入圖像之前沒有被清零mask //如果為非NULL,則只有與mask非零元素對應的像素點會被包含在計算直方圖中。

?

?

1.單通道圖像的直方圖

?

#include "stdafx.h" #include <highgui.h> #include <math.h> #include <cv.h> int main() {IplImage* sourceImage=0;//以單通道讀入圖像if(!(sourceImage=cvLoadImage("YAYA.jpg",0)))return -1;int hdims=51; //分配給對應維數的bin的個數float rangesArray[]={0,255};float* ranges[]={rangesArray};float maxValue;CvHistogram* histogram=0;histogram=cvCreateHist(1,&hdims,CV_HIST_ARRAY,ranges,1);IplImage* histImage; //用來顯示直方圖histImage=cvCreateImage(cvGetSize(sourceImage),8,3);cvZero(histImage);//計算直方圖cvCalcHist(&sourceImage,histogram,0,0);//獲取最大值cvGetMinMaxHistValue(histogram,0,&maxValue,0,0);cvConvertScale(histogram->bins,histogram->bins,maxValue?255./maxValue:0,0);float binsWidth;binsWidth=histImage->width/hdims;CvScalar color=CV_RGB(255,255,255);for(int i=0;i<hdims;i++){double value=(cvGetReal1D(histogram->bins,i)*histImage->height/255);cvRectangle(histImage,cvPoint(i*binsWidth,histImage->height),cvPoint((i+1)*binsWidth,(int)(histImage->height-value)),color,1,8,0);}//顯示 cvNamedWindow("sourceImage",0);cvNamedWindow("histImage",0);cvShowImage("sourceImage",sourceImage);cvShowImage("histImage",histImage);//釋放資源cvDestroyAllWindows();cvReleaseImage(&sourceImage);cvReleaseImage(&histImage);cvReleaseHist(&histogram);cvWaitKey(-1);return 0; }

運行結果:

?


多通道圖像的直方圖

因為ccCalHist()只接受單通道圖像,所以在調用cvCalcHist()之前,首先用cvSplit()將多通道圖像分解為單通道圖像。

?

#include "stdafx.h" #include <highgui.h> #include <math.h> #include <cv.h> int main() {IplImage* sourceImage=0;if(!(sourceImage=cvLoadImage("YAYA.jpg",1)))return -1;IplImage* hsvImage=cvCreateImage(cvGetSize(sourceImage),8,3);cvCvtColor(sourceImage,hsvImage,CV_BGR2HSV);IplImage* h_plane=cvCreateImage(cvGetSize(sourceImage),8,1);IplImage* s_plane=cvCreateImage(cvGetSize(sourceImage),8,1);IplImage* v_plane=cvCreateImage(cvGetSize(sourceImage),8,1);cvSplit(hsvImage,h_plane,s_plane,v_plane,0);int h_bins=30,s_bins=32;CvHistogram* histogram;{int hist_size[]={h_bins,s_bins};float h_ranges[]={0,180};float s_ranges[]={0,255};float* ranges[]={h_ranges,s_ranges};histogram=cvCreateHist(2,hist_size,CV_HIST_ARRAY,ranges,1);}IplImage* planes[]={h_plane,s_plane};cvCalcHist(planes,histogram,0,0);cvNormalizeHist(histogram,1.0);int scale=10;IplImage* histImage=cvCreateImage(cvSize(h_bins*scale,s_bins*scale),8,3);cvZero(histImage);float maxValue;cvGetMinMaxHistValue(histogram,0,&maxValue,0,0);for(int h=0;h<h_bins;h++)for(int s=0;s<s_bins;s++){float binValue=cvQueryHistValue_2D(histogram,h,s);int intensity=cvRound(binValue*255./maxValue);cvRectangle(histImage,cvPoint(h*scale,s*scale),cvPoint((h+1)*scale-1,(s+1)*scale-1),CV_RGB(intensity,intensity,intensity),CV_FILLED);}cvNamedWindow("hsvImage",1);cvNamedWindow("histImage",1);cvShowImage("hsvImage",hsvImage);cvShowImage("histImage",histImage);cvWaitKey(-1);cvDestroyAllWindows();cvReleaseImage(&sourceImage);cvReleaseImage(&histImage);cvReleaseHist(&histogram);return 0; }

運行結果:


直方圖的相似度

計算直方圖相似度的函數如下:

?

double cvCompareHist(const CvHistogram* hist1,const CvHistogram* hist2,int method; //距離標準 )

method的取值有:

?

CV_COMP_CORREL???? 完全匹配為1,完全不匹配為-1,數值越大越匹配

CV_COMP_CHISQR????? 低分比高分匹配的程度高,完全匹配的值為0,完全不匹配為無限值

CV_COMP_INTERSECT?? 高分表示好匹配,低分表示壞匹配

CV_COMP_BHATTACHARYYA???? 低分表示好匹配,高分表示換匹配。完全匹配為0,完全不匹配為0.

?

?

#include "stdafx.h" #include <highgui.h> #include <math.h> #include <cv.h> using namespace std; //對比兩個直方圖的相似度 int main() {IplImage* templateImage=cvLoadImage("YAYA.jpg");if(!templateImage)return -1;IplImage* grayImage=cvCreateImage(cvGetSize(templateImage),8,1);cvCvtColor(templateImage,grayImage,CV_BGR2GRAY);//首先加載圖片,然后將圖片變為灰度圖int hist_size=51;float range[]={0,255};float* ranges[]={range};CvHistogram* histogram;histogram=cvCreateHist(1,&hist_size, //size 元素為對應bin的個數CV_HIST_ARRAY,ranges,1);cvCalcHist(&grayImage,histogram,0,0);IplImage* compareImage=cvLoadImage("YAYA2.jpg");if(!compareImage)return -1;IplImage* compareGrayImage=cvCreateImage(cvGetSize(compareImage),8,1);cvCvtColor(compareImage,compareGrayImage,CV_BGR2GRAY);//首先加載圖片,然后將圖片變為灰度圖CvHistogram* compareHistogram;compareHistogram=cvCreateHist(1,&hist_size,CV_HIST_ARRAY,ranges,1);cvCalcHist(&compareGrayImage,compareHistogram,0,0);//對直方圖進行歸一化操作cvNormalizeHist(histogram,1);cvNormalizeHist(compareHistogram,1);//計算匹配系數double degree=cvCompareHist(histogram,compareHistogram,CV_COMP_CHISQR);cout<<degree<<endl;cvWaitKey(10000000);cvDestroyAllWindows();cvReleaseImage(&templateImage);cvReleaseImage(&grayImage);cvReleaseImage(&compareImage);cvReleaseImage(&compareGrayImage);cvReleaseHist(&compareHistogram);cvReleaseHist(&histogram);return 0; }

?

Reference

《學習opencv》

?

?

轉載于:https://www.cnblogs.com/jiangu66/p/3162971.html

總結

以上是生活随笔為你收集整理的直方图与匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 草草久久久 | 不卡免费视频 | 久伊人| 国产视频手机在线 | 婷婷六月网 | 国产精久久久久 | 亚洲在线天堂 | 精品乱子伦 | 狠狠躁夜夜躁 | 69网址| 欧美色欧美色 | 娇小6一8小毛片 | 自拍21区 | 美女无遮挡免费网站 | 亚洲国产成人在线视频 | 黄频视频在线观看 | 精品国产18久久久久久 | 熟女视频一区 | 日本成人一级片 | 国产一级二级av | 亚洲黄色在线免费观看 | 神马午夜精品 | 日韩插 | 三级黄色图片 | 精品无码三级在线观看视频 | 超碰1000| 国产真实交换夫妇视频 | av天天射 | 久久密桃 | 国产又黄又 | 夜夜骑av | 在线观看国产一区 | 少妇精品导航 | 性视频免费看 | 欧美午夜精品久久久久久浪潮 | 色哟哟一区二区三区 | 精品不卡在线 | 青青草超碰 | 久久99热久久99精品 | 欧美日韩精选 | 美女伊人网 | 日本三级黄在线观看 | 午夜一区二区三区四区 | 欧美高清性xxxx | xxxxx69| 久久久免费高清视频 | 久久精品欧美日韩 | 午夜日韩视频 | 国产校园春色 | 日批黄色 | jul023被夫上司连续侵犯 | 50度灰在线 | 岛国一区二区 | 亚洲精品av中文字幕在线在线 | www激情 | 欧美日韩成人一区二区 | 久久久久亚洲av成人人电影 | 中文字幕无码人妻少妇免费 | 中文欧美日韩 | 伊人久久精品一区二区三区 | 亚洲一区二区三区在线免费观看 | 国产wwwwww | 日本伊人网 | 激情av在线| 欧美一级爽aaaaa大片 | 四虎福利视频 | 亚洲精品中文字幕在线播放 | 法国极品成人h版 | 久久成人在线观看 | 国产一区啪啪 | 国产成人精品久久二区二区91 | 日本高清网站 | 成人香蕉视频在线观看 | 日本黄色美女视频 | 成人无码久久久久毛片 | 欧美一级片网址 | 精品久久人妻av中文字幕 | 久久99一区 | 久久精品一区二区三区黑人印度 | 激情一区| 老司机在线免费视频 | 日本久久精品视频 | 蜜臀av粉嫩av懂色av | 色鬼久久 | 午夜肉体高潮免费毛片 | 欧美日韩精品在线视频 | 午夜伦理av| 欧美一区二区二区 | 91久久国产视频 | 男女啪动最猛动态图 | 国产欧美日韩视频在线观看 | 男人的天堂成人 | 麻豆国产尤物av尤物在线观看 | 97视频在线免费观看 | 毛片aa| 亚洲三区视频 | 欧美一级大片 | 精品无码久久久久 | 欧美一二三级 |