圖像的反向投影圖是用輸入圖像的某一位置上像素值(多維或灰度)對應在直方圖的一個bin上的值來代替該像素值,因此獲得的反向投影圖是單通的。用統計學術語,輸出圖像象素點的值是觀測數組在某個分佈(直方圖)下的機率。數組
其中b(xi)表示在位置xi上像素對應的直方圖第b(xi)個bin,直方圖共m個bin,qu表示第u個bin的值。測試
仍是以例子說明.net
(1)例如灰度圖像以下get
Image=io
0 1 2 3模板
4 5 6 7原理
8 9 10 11im
8 9 14 15統計
(2)該灰度圖的直方圖爲(bin指定的區間爲[0,3),[4,7),[8,11),[12,16))數據
Histogram=
4 4 6 2
(3)反向投影圖
Back_Projection=
4 4 4 4
4 4 4 4
6 6 6 6
6 6 2 2
例如位置(0,0)上的像素值爲0,對應的bin爲[0,3),因此反向直方圖在該位置上的值這個bin的值4。
1.反向投影的做用是什麼?
反向投影用於在輸入圖像(一般較大)中查找特定圖像(一般較小或者僅1個像素,如下將其稱爲模板圖像)最匹配的點或者區域,也就是定位模板圖像出如今輸入圖像的位置。
2.反向投影如何查找(工做)?
查找的方式就是不斷的在輸入圖像中切割跟模板圖像大小一致的圖像塊,並用直方圖對比的方式與模板圖像進行比較。
假設咱們有一張100x100的輸入圖像,有一張10x10的模板圖像,查找的過程是這樣的:
(1)從輸入圖像的左上角(0,0)開始,切割一塊(0,0)至(10,10)的臨時圖像;
(2)生成臨時圖像的直方圖;
(3)用臨時圖像的直方圖和模板圖像的直方圖對比,對比結果記爲c;
(4)直方圖對比結果c,就是結果圖像(0,0)處的像素值;
(5)切割輸入圖像從(0,1)至(10,11)的臨時圖像,對比直方圖,並記錄到結果圖像;
(6)重複(1)~(5)步直到輸入圖像的右下角。
3.反向投影的結果是什麼?
反向投影的結果包含了:以每一個輸入圖像像素點爲起點的直方圖對比結果。能夠把它當作是一個二維的浮點型數組,二維矩陣,或者單通道的浮點型圖像。
4.特殊狀況怎麼樣?
若是輸入圖像和模板圖像同樣大,那麼反向投影至關於直方圖對比。若是輸入圖像比模板圖像還小,直接罷工~~。
原理:反向投影是一種記錄給定圖像中的像素點如何適應直方圖模型像素分佈的方式。
所謂反向投影就是首先計算某一特徵的直方圖模型,而後使用模型去尋找圖像中存在的該特徵。
假設你已經經過下圖獲得一個膚色直方圖(Hue-Saturation), 旁邊的直方圖就是 模型直方圖 ( 表明手掌的皮膚色調).你能夠經過掩碼操做來抓取手掌所在區域的直方圖:
咱們要作的就是使用 模型直方圖 (表明手掌的皮膚色調) 來檢測測試圖像中的皮膚區域。如下是檢測的步驟
對測試圖像中的每一個像素 ( ),獲取色調數據並找到該色調( )在直方圖中的bin的位置。
查詢 模型直方圖 中對應的bin - - 並讀取該bin的數值。
將此數值儲存在新的圖像中(BackProjection)。 你也能夠先歸一化 模型直方圖 ,這樣測試圖像的輸出就能夠在屏幕顯示了。
經過對測試圖像中的每一個像素採用以上步驟, 咱們獲得了下面的 BackProjection 結果圖:
使用統計學的語言, BackProjection 中儲存的數值表明了測試圖像中該像素屬於皮膚區域的 機率 。好比以上圖爲例, 亮起的區域是皮膚區域的機率更大(事實確實如此),而更暗的區域則表示更低的機率(注意手掌內部和邊緣的陰影影響了檢測的精度)。