本發明屬于雙目立體視覺技術領域,涉及一種基于多編碼的Census自適應變換算法。
背景技術:
立體匹配一直是雙目立體視覺中的重要技術環節,立體匹配是尋找兩幅圖像中的共軛點,也就是空間同一點投影在左右兩幅圖像中的不同像素點的位置,最終產生視差圖。但是立體匹配一直存在著精度與效率的問題。由于近些年計算機的并行能力越來越高,因此科研人員一直致力于尋找一種可并行高精度的立體匹配方法。
通常立體匹配過程可分為四個部分:匹配代價計算、匹配代價聚合、初始視差計算、視差優化。現在對于立體匹配的研究也一直圍繞著這四個步驟進行,Census變換是立體匹配過程中匹配代價計算步驟常用的一種操作。
Census變換充分考慮了中心像素在支持窗口內的局部信息并且減弱圖像亮度信息。具有算法簡單、可并行、魯棒性高與效果好等特點。Census變換的具體操作如下所述:
對于一個大小為wp(m×n)的窗口,中心像素為p,Census變換可以將窗口內圖像的亮度值相關性映射到一個長度為m×n-1長度的二進制串中。假設q為窗口內的非中心點的像素。那么對于q點位置的變換為:
其中i(x)為像素點x的灰度。對于p點最終的特征二進制串:
表示按位連接。使用這種計算方式的窗口遍歷圖像中的每一個像素點。這樣一來就減弱了圖像亮度信息,單保留了窗口內的局部信息。最后對于原始圖像中的p點視差為d,對應參考圖像中的像素點p′計算所得的成本為:
表示Hamming距離計算。
傳統的Census變換雖然減弱了亮度信息,但是其對亮度信息的減弱處理過為粗糙,并沒有充分的利用圖像中的亮度信息。參照附圖1可以看出由于亮度信息丟失過多導致它對相似區域區別不明顯,并且還將導致它對噪聲敏感。
技術實現要素:
本發明是在傳統的Census變換的基礎上使用新的編碼策略。在考慮到窗內局部信息的同時更充分的利用亮度信息,并對噪聲進行減弱處理,使本發明更具魯棒性。
一種基于多編碼的Census自適應變換算法,包括如下內容:
1)編碼
傳統的Census變換將亮度信息按照中心像素亮度值分為大、小兩個組。本發明在傳統Census變換大、小兩個組的基礎上,對大組與小組分別進行更進一步的劃分,大組與小組分別劃分出k個子組,k為正整數,則一共劃分出2k個組。
本發明使用一種多編碼策略,每個組使用多位二進制位進行編碼表示。共劃分出2k個組,則每個組對應的編碼長度為2k-1個位。對于一個大小為wp(m×n)的窗口;窗口的中心像素為p,窗口內非中心點像素為q;窗口內亮度值的映射到一個(2×k-1)×(m×n-1)位長度的二進制串上。
q點位置的變換為:
其中,bin(x)是x的二進制表示形式;前k個分組中的非中心點像素灰度i(q)全部比中心灰度i(p)大,屬于大組,后k個分組中的非中心點像素灰度i(q)全部比中心灰度i(p)小,屬于小組;εi是用于分檔的閾值,其中i∈[1,2…2k-2];閾值存在大小關系為ε1>ε2>ε3…>εk-1,ε2k-2>ε2k-3….>εk。
利用以上策略將圖像亮度映射到2k個組,并且相鄰檔位之間進行異或操作后相差為1,相隔為1的檔位異或操作之后相差為2,最遠的兩個檔位異或操作后相差為2k-1;通過這種方式本發明將圖像亮度的相關性更加有效的運用。
上述閾值選擇采用一種自適應閾值選擇方式;即對大組與小組分別做如下操作:
a)將窗體內像素按照亮度大于i(p)與小于等于i(p)分為兩組queue1和queue2。
b)對queue1與queue2進行升序排序產生序列queue_asc1與queue_asc2并計算queue1長度l1,queue2長度l1。
c)計算第閾值εi其中i∈[1,2…k-1]的公式如下:
d)計算第閾值εj其中j∈[k,k+1,…2k-2]的公式如下:
本發明采用這種閾值策略來實現自適應的閾值選擇,采用該策略能更好的選擇閾值,將像亮度信息盡可能的均勻的分到每個檔位,并且該自適應策略能使得編碼魯棒性更高,并消除一些噪聲的干擾。
優選方案為將窗口內亮度信息分為k=2組,共劃分出4個組。使用三位的編碼來表示這四組。對于一個大小為wp(m×n)的窗口,中心像素為p,本發明將窗口內亮度值的相關性映射到一個3×(m×n-1)長度的二進制串上,q為窗口內非中心點的像素。q點位置的變換為:
在分四個組的情況下存在ε1與ε2兩個閾值,取值過程如下:
1)將窗體內像素按照亮度值大于i(p)與小于等于i(p)分為兩組queue1與queue2。
2)對queue1與queue2進行升序排列產生升序序列queue_asc1與queue_asc2,計算queue1長度為l1、queue2長度為l2。
3)計算
4)計算
將窗體內非中心點像素映射到自己所在的組,將非中心點像素編碼按位相連產生中心點p編碼。
2)處理噪聲
本發明采用一種冗余編碼方式來減弱噪聲的影響,在每個像素編碼的最后加上n位冗余編碼。原圖像的冗余碼全部都置為0,參考圖像的冗余碼全部都置為1,當窗體中存在某點亮度|i(p)-i(q)|>σ我們認為存在一處噪聲。σ為人工輸入用于判斷噪聲的閾值。每當發現一處噪聲時,將噪聲所在圖像的冗余碼其中一位取反。n位冗余碼最多可檢測n個噪聲點。
原始圖像像素p與參考圖像像素p′編碼相同且不存在噪聲的情況下其Hamming距離為n,當某一像素受到噪聲影響,其冗余編碼發生變化,使得原圖像與參考圖像的冗余碼Hamming距縮小,本發明就是通過減少冗余碼的Hamming距離來減弱噪聲對其產生的影響。
優選采用一位冗余編碼,在原始圖像像素特征編碼后加入0,在參考圖像特征編碼后面加入1。當檢測到噪聲時將噪聲所在圖像后的冗余編碼取反,使用一位冗余編碼只能檢測到噪聲是否存在不能檢測存在的噪聲數量。
3)計算距離
本發明繼續采用傳統的Census的距離計算方式,如公式(3)所示,使用Hamming距離來衡量相似度。
本發明是在傳統的Census變換的基礎上使用新的編碼策略,在考慮到窗內局部信息的同時更充分的利用亮度信息,并對噪聲進行減弱處理,使本發明更具魯棒性。
附圖說明
附圖1對于相似性區域本發明與Census變換對比圖。
附圖2編碼方式具體流程圖。
附圖3本發明與傳統Census變換最終效果對比圖。
具體實施方式
實施例1
參考發明內容與附圖2。本發明在選擇分四組,添加一位冗余編碼的情況下具體操作過程如下:
1)人工輸入窗口大小5×5,輸入σ=100用于噪聲判斷。
2)按照本發明的變換策略對每個像素進行編碼。
參照附圖2.對于圖像某點的編碼方式:
3)對原始圖像p點與參考圖像p′點分別讀取大小為5×5的亮度數據。設讀取出的矩陣為wp與wp′
4)對讀取出的數據按照與p點亮度值i(p)與p′點亮度值i(p′)進行分組,設每個窗體都有兩個分組:分組1與分組2。
5)對分組后的數據求出閾值ε1與ε2。參考本發明的閾值計算小節可求得對于wp窗體第一組8個數據,我們選擇第4到6個數據進行閾值計算。
(112-103+115-103+123-103)÷3=13.7。如操作wp窗體的第二組數據閾值為17.3。wp′的第一組數據的閾值為9.5,wp′的第二組數據的閾值為19。
6)參照本發明的編碼方式章節,分別對兩個窗體內像素進行分檔操作。分檔后的窗體為wcp和wcp′。然后對wcp和wcp′進行按位連接產出cen(p)和cen(p′)。
7)參照本發明的噪聲處理章節在比特串cen(p)和cen(p′)后面加入冗余校驗位,由于沒有噪聲我們在cen(p)添加0,在cen(p′)后添加1。形成最后編碼。
cen(p)=0011110000011110000000010110110110110011110110010111111111111110111111110
cen(p′)=0001110000011110000000111111110110110010110110110010111111111110111111111
在編碼操作后使用Hamming距離來求出原圖點p與參考圖像點p′的Hamming距離。如圖的Hamming為9。
參照附圖3,本發明在不使用成本聚合與視差提純的情況下明顯優于傳統方式,在使用垂直正交聚合法的情況下,產生的視差圖也要明顯優于傳統的Census變換。