[EmguCV|WinForm] 使用EmguCV內建直方圖工具繪製直方圖(Histogram)-直方圖(Histogram)系列 (1)

  • 10407
  • 0
  • C#
  • 2013-12-22

直方圖(Histogram)是一種統計圖資料,在影像處理中最常被用來統計一張圖像或是感興趣(ROI)區域的色彩分布,在這邊本人使用的EmguCV 2.4.0版的內建直方圖工具只有被包含在WinForm應用程式中

至於要如何在WPF繪製直方圖,那就要花比較多的步驟了,我們得自己畫,這部分後續文章會在介紹

所以接下來介紹的繪製環境是在C#的WinForm專案,

前言

 


 

直方圖(Histogram)是一種統計圖資料,在影像處理中最常被用來統計一張圖像或是感興趣(ROI)區域的色彩分布,在這邊本人使用的EmguCV 2.4.0版的內建直方圖工具只有被包含在WinForm應用程式中

 

至於要如何在WPF繪製直方圖,那就要花比較多的步驟了,我們得自己畫,這部分後續文章會在介紹

所以接下來介紹的繪製環境是在C#的WinForm專案,

 

步驟

 


 

1.加入HistogramBox元件到WinForm

點選上排工具 –> 選擇工具箱 –> .Net Framework 元件中點選選擇,找到EmguCV專案下的Emgu.CV.UI.dll

並把dll加入後再次看一下.Net Framework 元件便會發現:

histogrambox

詳細的加入方式可以參考小歐ou | 菜鳥自救會的[C#] OpenCV 初體驗文章

 

2.在Form的設計工具箱中便會找到HistogramBox

tool

 

3.繪製直方圖

在EmguCV中有三種繪製直方圖的方式:使用HistogramBox、HistogramViewer這兩個元件或是自己繪製出來(自己繪製出來我會在之後的文章中介紹如何完成)

 

那麼HistogramBox與HistogramViewer又是差在哪兒呢?

HistogramViewer不需要事先拉到設計視窗中,他是彈出視窗,你只需要直接使用便可以

HistogramBox則需要事先拉視窗中設定在視窗畫面

 

繪製的方式我們可以直接透過把圖像放到EmguCV的儲存圖片資料結構-Image<TColor,TDepth>並把此結構給予上述兩個元件即可

 


imgPath = loadImgFile(); //圖片路徑的字串值
loadImg = new Image< bgr, byte >(imgPath);
//顯示圖片
ImageViewer viewer = new ImageViewer(loadImg, "Loaded Image");
viewer.Show(this);

//1.使用HistogramViewer
HistogramViewer.Show(loadImg[0], 32); //image[0] 顯示Blue,bin = 32
 HistogramViewer.Show(loadImg, 32); //顯示所有通道

//2.使用HistogramBox
imgHistogramBox.GenerateHistograms(loadImg, 32);
imgHistogramBox.Refresh(); //更新資料
imgHistogramBox.Show(); 

 

但是以上的步驟,我們無法取得直方圖的資料結構,其實最重要的就是拿到值記錄著圖像色彩分布的直方圖資料了,有了他,我們後續的影像處理才能實際利用到! 至於要怎麼拿到,本人會在下一篇介紹

 

最後顯示的畫面

 


 

Channel也就是影像的通道,一般彩色影像分為三通道Blue,Green,Red,直方圖可以用來取得特通道的彩色分布狀況,水平軸的座標值代表的是像素值(0-255),縱軸則是各像素值在圖上的像速點總累積數

 

所以便可以透過這個方式得知這張影像顏色的分布情況

emgucv_histogram_tool

 

HelloHistogramForm_drawhist_by_histogrambox.zip

 

結論

 


 

不過雖然可以得知三個通道分布色彩,但是並不是很好意識到,如果想要看到有各種顏色的顏色高低分布

變就要自己畫了,而且我們還需要換成另一種色彩通道會比較容易觀看,至於怎麼繪製還請各位稍等等

 

下一篇-計算直方圖

 

參考資料

顏色直方圖的計算、顯示、處理、對比及反向投影(How to Use Histogram? Calculate, Show, Process, Compare and BackProject)

 


 

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝 =)

另外要轉載請附上出處 感謝