OPENCV3編程入門--第九章(直方圖,反向投影,模板匹配)學習筆記

1.直方圖概念:常見的是灰度直方圖,其實可以統計任何的圖像特徵,比如梯度,方向,色彩等
在這裏插入圖片描述
在這裏插入圖片描述
(1)計算直方圖:calcHist()函數

在這裏插入圖片描述
在這裏插入圖片描述

 注:這裏參數解釋更透徹一點:

arrays  輸入圖像的指針,可以是多幅圖像,所有的圖像都必須有相同的深度( CV_8U or CV_32F),同時一幅圖像可以有多個 channels

narrays  輸入圖像的個數

channels 計算直方圖的 channels 的數組,當輸入圖像爲多通道圖像時, channels[0] = {0}, 表示的是取其第一個通道, channels[0] = {1}表示取其第二個通道,以此類推, channels[2] = {1, 2}表示的是取其第2個和第3個通道的圖像 進行直方圖統計

mask 掩碼,如果 mask 不爲空,那麼它必須是一個8位(CV_8U)的數組,並且它的大小和 arrays[i] 的大小相同,值爲1的點將用來計算直方圖

hist 計算出來的直方圖

dims 需要統計的特徵的數目,計算出來的直方圖的維數,直方圖的維數就是圖像的通道數,每一維的長度是灰度級數,一維直方圖就是灰度圖的直方圖,直方圖的尺寸是 256; 高維直方圖可以理解爲圖像在每個維度上灰度級分佈的直方圖,常見的是二維 直方圖,如紅-藍直方圖的兩個分量分別表示紅光圖像的灰度值和藍光圖像的灰度值的函數,其圖像座標(Dr,Db)處對應在紅光圖像中具有灰度級 Dr 同時在藍光圖像中具有灰度級 Db 的像素個數。

histSize 在每一維上直方圖的個數,把直方圖看作一個一個的豎條的話,就是每一維豎條的個數–就是後面提到的bin

ranges 用來統計的灰度值的範圍

(2)尋找最大/小值:minMaxLoc()函數
在這裏插入圖片描述

注:三色RGB直方圖的橫座標應該也是顏色等級(比如紅色0-255個等級),縱座標是個數

(3)對比直方圖:compareHist() 函數
在這裏插入圖片描述
在這裏插入圖片描述
2.反向投影
概念解釋:https://blog.csdn.net/viewcode/article/details/8209067
深入淺出的解釋:https://blog.csdn.net/chenjiazhou12/article/details/22150421
在這裏插入圖片描述

(1)反向投影工作原理/概念

     假設你已經通過下圖得到一個膚色直方圖(Hue-Saturation), 旁邊的直方圖就是 模型直方圖 ( 代表手掌的皮膚色調).你可以通過掩碼操作來抓取手掌所在區域的直方圖:

在這裏插入圖片描述
(3)進一步說明反向投影是什麼:根據模板圖像尋找匹配區域!
在這裏插入圖片描述
(4)計算反向投影:calcBackProject() 函數
在這裏插入圖片描述
例子中bin這個單位其實就是橫座標方向的條數(如下圖)–直方圖組距
在這裏插入圖片描述

(5)通道複製:mixChannels() 函數
在這裏插入圖片描述
<1.>關於參數fromTo的解釋:https://www.cnblogs.com/ruic/p/4926254.html
在這裏插入圖片描述
一個輸入矩陣的通道標記後面必須跟着個輸出矩陣的通道標記,所以比如例子中from_to前兩個元素{0,2}表示輸入rgba[0]對於輸出bgr[2] (其實就是紅色對紅色,一一對應啦)

<2>輸出矩陣的向量。所有的矩陣必須事先分配空間(如用create),大小和深度須與輸入矩陣等同。

3.模板匹配
(1)概念:通過在輸入圖像上滑動圖像塊(模板圖像),對實際的圖像塊和輸入圖像進行匹配
在這裏插入圖片描述
(2)模板匹配函數:matchTemplate()
在這裏插入圖片描述
在這裏插入圖片描述

總結:

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章