反向投影图
在Camshift算法應用跟蹤中原理是應用根據目標顏色特征與背景顏色特征差異大,形成跟蹤。所以我們需要統計目標顏色特征,以及背景顏色特征,利用顏色直方圖統計顏色特征,再通過反向投影圖得到顏色概率分布圖。我們在實驗中會看到反向投影圖是一個灰度圖,當目標的顏色與背景不一樣時候,跟蹤效果最好(目標是白色,背景是黑色)。其中在Cvinrange函數中Vmax,vmin,smin中作用就是調整數值,使目標顏色特征與背景特征不一樣,不同情況,值是不一樣。當你設置的數值比較合適時候,跟蹤效果特別好
圖像的反向投影圖是用輸入圖像的某一位置上像素值(多維或灰度)對應在直方圖的一個bin上的值來代替該像素值,所以得到的反向投影圖是單通的。用統計學術語,輸出圖像象素點的值是觀測數組在某個分布(直方圖)下的概率。
其中b(xi)表示在位置xi上像素對應的直方圖第b(xi)個bin,直方圖共m個bin,qu表示第u個bin的值。還是以例子說明 (1)例如灰度圖像如下
Image=
??0????1????2????3
??4????5????6????7
??8????9???10???11
??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?中儲存的數值代表了測試圖像中該像素屬于皮膚區域的?概率?。比如以上圖為例, 亮起的區域是皮膚區域的概率更大(事實確實如此),而更暗的區域則表示更低的概率(注意手掌內部和邊緣的陰影影響了檢測的精度)。
轉載于:https://www.cnblogs.com/polly333/archive/2013/06/07/4498420.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: Android WebView获取网页中
- 下一篇: sync - 清空文件系统缓冲区