文/李曉禹 陳杰
視頻拼接技術(shù)將多路具有重疊區(qū)域的小視野視頻拼接為一路完整大視野場(chǎng)景,有效地解決了單個(gè)攝像頭視野局限性的問題,在虛擬現(xiàn)實(shí)、智能監(jiān)控等領(lǐng)域有著廣泛的應(yīng)用。
視頻圖像是由每秒若干幀的靜態(tài)圖像組成的,所以視頻拼接的本質(zhì)是圖像拼接,而圖像配準(zhǔn)又是圖像拼接最核心的一步,通常使用的方法是基于圖像特征的配準(zhǔn)。David G.Lowe 提出的尺度不變特征算子SIFT[1,2]在圖像拼接中被經(jīng)常使用,但是SIFT 算法的計(jì)算速度較慢,無法滿足視頻實(shí)時(shí)性的要求,不適合應(yīng)用于實(shí)時(shí)視頻的拼接。文獻(xiàn)[3]在SIFT 算法基礎(chǔ)上,提出了一種改進(jìn)的尺度不變特征—SURF( Speeded Up Robust Features)。文獻(xiàn)[4]研究表明:SURF算法提高了特征檢測(cè)的速度,同時(shí)與SIFT 算法性能基本相同。但是視頻拼接與圖像拼接又有著很大的不同,最大的不同是視頻拼接需要有良好的實(shí)時(shí)性。文獻(xiàn)[5]和[6]雖然對(duì)SURF算法進(jìn)行了改進(jìn),但是拼接速度仍然達(dá)不到實(shí)時(shí)性的要求。因此,SURF 雖然速度較快,但是為了能將其應(yīng)用在實(shí)時(shí)視頻拼接中仍需要改進(jìn),文中采用一種改進(jìn)的SURF 算法來進(jìn)行圖像配準(zhǔn)。
文中采用的視頻拼接流程是:實(shí)時(shí)地采集視頻圖像幀,以30幀/s 的速率提取視頻幀,提取模板幀,對(duì)模板幀多路視頻圖像利用改進(jìn)的SURF進(jìn)行配準(zhǔn)以確定變換矩陣,利用這個(gè)變換矩陣對(duì)后續(xù)的每一幀圖像進(jìn)行融合,形成一個(gè)大視角的圖像,最后將這些圖像以視頻的形式輸出。
圖像拼接算法在圖像正畸之后的下一個(gè)步驟是圖像配準(zhǔn)。圖像配準(zhǔn)是為了使圖像間相互重疊部分對(duì)齊,將待拼接圖像轉(zhuǎn)換到參考圖像的坐標(biāo)系,構(gòu)成完整的圖像,它是整個(gè)圖像拼接中的核心部分。圖像配準(zhǔn)包括三個(gè)方面,即特征提取、特征匹配和確定變換矩陣。
本文首先要提取模板幀圖像的特征并進(jìn)行匹配。為了加快匹配過程,SURF 在特征矢量中增加了一個(gè)新的變量,即特征點(diǎn)的拉普拉斯屬性,這兩類特征點(diǎn)具有不同的屬性,在匹配時(shí)只需對(duì)同類的特征點(diǎn)進(jìn)行匹配,這樣會(huì)大大地提高匹配速度和精度。圖像中兩個(gè)特征點(diǎn)之間相似性的度量一般采用歐氏距離等距離函數(shù)進(jìn)行度量,通過相似性的度量就可以得到待配準(zhǔn)圖像間的潛在匹配點(diǎn)對(duì)。這其實(shí)是一個(gè)距離檢索問題,如果用窮舉法則浪費(fèi)太多時(shí)間。由于用標(biāo)準(zhǔn)的K-d 樹時(shí),數(shù)據(jù)集的維數(shù)不應(yīng)該超過20[7],而改進(jìn)的SURF的維數(shù)為16,所以采用K-d 樹進(jìn)行特征匹配。
通常使用比值匹配法,即將其中的一幅圖像作為樣本,在樣本的特征點(diǎn)中尋找在另外一幅圖像中與它距離最近的特征點(diǎn)和次近特征點(diǎn),然后計(jì)算這兩個(gè)特征點(diǎn)與樣本點(diǎn)之間歐氏距離的比值。對(duì)于比值小于某一閾值范圍內(nèi)的特征點(diǎn),則認(rèn)為是正確匹配的特征點(diǎn)。
原有的SURF 算法是對(duì)整個(gè)圖像區(qū)域提取特征點(diǎn),然后在整個(gè)圖像范圍內(nèi)進(jìn)行特征匹配,由于實(shí)際環(huán)境中兩個(gè)攝像頭拍攝的畫面必然會(huì)有重疊區(qū)域的存在,所以只需在重疊部分進(jìn)行特征點(diǎn)提取就可以,這樣的好處是可以減少特征提取的時(shí)間,進(jìn)而減少匹配的時(shí)間并能減少誤匹配。
由于提取的特征點(diǎn)存在誤匹配,本文根據(jù)相鄰兩個(gè)攝像頭之間重疊區(qū)域的大小對(duì)匹配的特征點(diǎn)進(jìn)行高效篩選。篩選算法如下:設(shè)圖像的寬度為Width,重疊區(qū)域比例為factor,那么重疊區(qū)域的寬度為factor*Width,左邊圖像的特征點(diǎn)為leftPoints,右邊圖像的特征點(diǎn)為RightPoints,那么篩選算法如下:如果,leftPoints的cols值大于factor*Width,小于Width,該匹配點(diǎn)保留,否則丟棄;如果,RightPoints的cols值小于(1-factor)*Width,大于0,該匹配點(diǎn)保留,否則丟棄。該算法對(duì)重疊區(qū)域的之外的匹配特征點(diǎn)對(duì)剔除,提高了特征匹配的精準(zhǔn)度。避免了重疊區(qū)域之外的誤匹配特征點(diǎn)對(duì),同時(shí)減少了程序的耗時(shí)。
在平面上提取的經(jīng)過篩選的高度匹配特征點(diǎn)進(jìn)行柱面投影變換,以便準(zhǔn)確計(jì)算兩幅圖像在后期融合時(shí)需要的變換量。
如圖1所示,兩個(gè)攝像頭環(huán)形排列,每個(gè)攝像頭拍攝到的畫面為前方實(shí)線,圖像拼接就是將兩張圖像按照重疊區(qū)域融合,但是由于圖中兩個(gè)攝像頭朝向不同,使得拍攝畫面不滿足視覺一致性。因此考慮將圖像投影到柱面,即攝像頭前方弧線上,投影后的圖像重疊區(qū)域在柱面重合,具有較好視覺一致性。而且柱面圖像容易展開為矩形圖像,可直接用于圖像處理。圖1 (b)中點(diǎn)O 為攝像頭所在位置,前方矩形為拍攝畫面,柱面投影就是將其投影到紅色圓柱上。
既然投影后的圖像具有較好的視覺一致性,因此先對(duì)圖像進(jìn)行柱面投影然后再拼接。源圖像Img上一點(diǎn)被映射到Imgcyl上的點(diǎn)。圖1(c)是圖1(b)的俯視圖,其中,Img 的寬AB和攝像頭的視角∠AOB均已知,分別是W和α,那么攝像頭的焦距f = W/(2×tan (α/2)),的寬度W′ = f×α。因?yàn)?,PB = x,所以∠AOC = β = arctan ((x -W/2)=f),所以同樣的,圖1(d)是圖1(b)截面圖,其中,Img的高為H,PR = y,并且△PQO ~△ P′Q′O,所以可以得到P′R′ 值。坐標(biāo)變換公式(2)如下:
根據(jù)上面的坐標(biāo)變換公式,可以得到平面上匹配的特征點(diǎn)投影到柱面上的坐標(biāo)。
經(jīng)過柱面投影后的高度匹配特征點(diǎn)集用來進(jìn)行圖像對(duì)齊融合。本算法的圖像對(duì)齊融合操作很簡單,只需要利用匹配的特征點(diǎn)集計(jì)算出圖像之間的平移量,然后將源圖像平移到目標(biāo)圖像上即可。1&1圖像拼接平移量的計(jì)算方法是取所有匹配特征點(diǎn)平移量的平均值作為圖像的平移量,計(jì)算公式為(3):
其中,Wt是目標(biāo)圖像寬度,Pi,x是目標(biāo)圖像上的特征點(diǎn),P'i,x是源圖像上的對(duì)應(yīng)特征點(diǎn),N是匹配的特征點(diǎn)數(shù)量,diffx是x方向平移量,diffy是y方向平移量。
圖像拼接結(jié)果Ires可由源圖像I′src和I′tar按照公式(4)平移拼接得到:
其中,left = I′tar(x, y) - diffx,Xfactor=(xleft)/|diffx|。圖像融合過程簡單的說就是,左側(cè)區(qū)域取自左圖,右側(cè)區(qū)域取自右圖,中間重疊區(qū)域?yàn)樽髨D右圖線性融合。以上是1&1圖像拼接的平移量計(jì)算。在多路攝像頭視頻拼接之前,采用公式(3)事先計(jì)算好多路攝像頭視頻幀兩兩之間的變換矩陣(1&1平移量),以8路攝像頭為例,后續(xù)2&2,4&4圖像拼接的平移量計(jì)算需在前次(1&1)拼接變化矩陣的基礎(chǔ)上累加。并將每次的平移量保存起來,用于后續(xù)視頻幀圖像的拼接融合。
計(jì)算好圖像之間的平移量之后,就可以對(duì)其進(jìn)行融合。兩幅融合之前需要對(duì)基于平面坐標(biāo)的圖像進(jìn)行柱面投影。
在進(jìn)行柱面全景圖的拼接過程中,為了保持實(shí)際場(chǎng)景中的空間約束關(guān)系和實(shí)際場(chǎng)景的視覺一致性,需將拍攝得到的反映各自投影平面的重疊圖像序列映射到一個(gè)標(biāo)準(zhǔn)的柱面坐標(biāo)空間上即柱面投影,采用上述公式(2)可以得到源圖像Img的柱面投影圖像Imgcyl。對(duì)每路攝像頭圖像進(jìn)行柱面投影,得到柱面圖像序列,再進(jìn)行拼接得到柱面全景圖。
柱面投影后的圖像具有視覺一致性,可以用來做圖像對(duì)齊和融合,具體方法為:取左邊的圖像為目標(biāo)圖像,右邊的圖像為源圖像,源圖像在平移量的作用下,可以與目標(biāo)圖像完美融合。
后續(xù)視頻幀圖像融合過程中所需的攝像頭參數(shù)和畸變系統(tǒng)、圖像平移量在模板幀處理中就已得到,所以在后續(xù)視頻幀的融合過程中免于進(jìn)行攝像頭標(biāo)定、特征檢測(cè)和匹配以及平移量計(jì)算,這對(duì)算法速度的提升起到很大作用。
另外,柱面投影變換和圖像融合過程都可以使用GPU 的CUDA平臺(tái)并行加速(CUDA是NVIDIA推出的通用并行計(jì)算架構(gòu),支持對(duì)圖像進(jìn)行并行運(yùn)算處理)。所以后續(xù)視頻幀的處理速度快,可以做到實(shí)時(shí)拼接。實(shí)驗(yàn)結(jié)果表明,在NVIDIA 1080Ti GPU上運(yùn)行該算法,可以實(shí)時(shí)地生成無縫清晰的全景視頻。