韓迎輝
(常州大學(xué)城常州輕工職業(yè)技術(shù)學(xué)院,江蘇常州213164)
為了獲得超寬視角,魚眼鏡頭被大量地應(yīng)用在群組視頻會(huì)議[1]、大范圍監(jiān)控系統(tǒng)、智能交系統(tǒng)、虛擬實(shí)景技術(shù)[2],全景瀏覽及球面電影等領(lǐng)域。魚眼鏡頭可以克服普通鏡頭視場小的缺點(diǎn),但是魚眼圖像具有嚴(yán)重的桶形畸變,在利用魚眼圖像信息之前需要對魚眼圖像進(jìn)行校正展開。
目前魚眼圖像輪廓提取的算法主要有最小二乘擬合法,面積統(tǒng)計(jì)法,區(qū)域增長法和掃描線逼近法。最小二乘擬合法[3]提取魚眼輪廓的計(jì)算量大并且不一定精確。面積統(tǒng)計(jì)法[4]原理簡單但是當(dāng)有效區(qū)域內(nèi)特別是靠近輪廓有大量黑色像素點(diǎn)存在時(shí)計(jì)算誤差偏大,而且計(jì)算量相對較大,因此適用范圍也有限。區(qū)域增長法[5]計(jì)算復(fù)雜,耗時(shí)長,且不一定能夠取得理想結(jié)果,更不實(shí)用。相比之下,掃描線逼近算法[6-8]的效率最高,效果也比較好,應(yīng)用廣泛,但仍具有抗噪能力差的缺陷,有些輪廓提取效果還可以提升。本文在已有的掃描線逼近算法的基礎(chǔ)上提出了一種新的魚眼輪廓提取算法,該算法有很強(qiáng)的抗噪能力,能夠精確定位魚眼圖像的中心和半徑,在提高魚眼輪廓提取精度的同時(shí)能夠保證不增加運(yùn)行時(shí)間,具有很強(qiáng)的實(shí)用價(jià)值。
圖1是一張魚眼鏡頭拍攝的圖像,從圖中可以看出魚眼圖像具有很嚴(yán)重的桶形畸變,要想利用魚眼圖像的信息(除了藝術(shù)欣賞)就要對魚眼圖像進(jìn)行校正展開。魚眼圖像的特點(diǎn)是中間圓形區(qū)域是圖像涵蓋物景信息的有效區(qū)域,四周是黑色的背景部分。在進(jìn)行魚眼圖像校正之前首先要把魚眼圖像的有效區(qū)域提取出來,為后續(xù)的魚眼圖像校正做準(zhǔn)備。所以說魚眼圖像輪廓的提取效果在魚眼圖像的校正過程中非常重要,常常直接影響圖像的校正結(jié)果。
圖1 魚眼圖像
極限亮度差是指圖像中某一行或列的各像素點(diǎn)的最大亮度和最小亮度之間的差值。根據(jù)魚眼圖像的特點(diǎn)可知,圖像的全部物景信息都包含在圓形有效區(qū)域里,有效區(qū)域里像素的亮度值比有效區(qū)域外的像素要大得多,掃描線逼近算法就是根據(jù)這一特點(diǎn)提出的算法。
既然魚眼圖像的有效區(qū)域是圓形的,那么這個(gè)圓必然存在一外切正方形,掃描線逼近算法首先求出這個(gè)外切正方形進(jìn)而再求出圓形的中心坐標(biāo)和半徑。如圖2所示,從魚眼圖像的上下左右四個(gè)方位分別建立一條掃描線,從周圍向中心掃描逼近。在圓形有效區(qū)域外部,大多是黑色像素點(diǎn),各像素的亮度值很小,所以掃描線對應(yīng)的極限亮度差很小,但是當(dāng)掃描線進(jìn)入有效區(qū)域時(shí),由于物景像素點(diǎn)的增多,掃描線的極限亮度差很大。當(dāng)掃描線貼近圓形輪廓時(shí)極限亮度差劇增,如掃描線left2有一個(gè)很大的跳躍值存在,我們可以設(shè)一個(gè)閾值,當(dāng)差值大于這個(gè)閾值時(shí),我們就認(rèn)定掃描線到達(dá)了魚眼圖像的輪廓邊上了,這條直線對應(yīng)的位置就是魚眼圖像圓形輪廓的一條切線。
圖2 掃描線逼近算法掃描示意圖
算法的具體步驟為:
首先設(shè)定一亮度閾值T,從魚眼圖像的四周開始,建立四條掃描線,像中心逼近掃描。魚眼圖像一般為彩色的RGB圖像,我們首先根據(jù)紅R,綠G,藍(lán)B信息得到該像素對應(yīng)的亮度值,圖像像素亮度公式為[7]:
極限亮度差:
其中Imax、Imin分別是掃描中確立的該行或該列的最大和最小亮度值。當(dāng)Ilim大于設(shè)定的閾值T時(shí),則Imax對應(yīng)的點(diǎn)就是魚眼圖像輪廓上的點(diǎn),立即停止該方向的掃描。四個(gè)方位都掃描完畢時(shí),在理想情況下將得到圓形的外切正方形,那么魚眼圖像的中心坐標(biāo)和半徑分別為:
理想情況下Rx=Ry,但是當(dāng)魚眼圖像輪廓附近有比較多的黑色像素時(shí),會(huì)導(dǎo)致掃描線定位有偏差,那么得到的外切正方形將畸變成長方形,這時(shí)我們可以取兩者的平均值作為半徑。
掃描線逼近算法解決了面積統(tǒng)計(jì)法存在的一個(gè)問題,即當(dāng)有效區(qū)域內(nèi)含有像素值比較小的像素點(diǎn)比較多,仍能取得精確的計(jì)算結(jié)果,但是當(dāng)大量黑色像素點(diǎn)存在于輪廓邊緣時(shí),特別是存在與四條掃描線的切點(diǎn)附近時(shí)掃描線逼近算法計(jì)算結(jié)果也有偏差。
圖3 新的掃描方案示意圖
從上節(jié)可知,掃描線逼近算法是逐行逐列進(jìn)行掃描的,當(dāng)魚眼圖像有效區(qū)域比較小,而黑色背景比較大時(shí),掃描到魚眼輪廓邊緣需要很長時(shí)間,掃描效率低下,針對此,本文建立新的掃描方案,引入掃描步長λ,即前后兩次掃描跳躍的行或列值。如圖3所示,以左方向掃描為例,掃描線lefti和lefti+1是前后兩次掃描,但是第lefti+1次掃描的列值比lefti次掃描大λ。當(dāng)lefti掃描線未進(jìn)入魚眼圖像有效區(qū)域時(shí),則以步長λ進(jìn)入下一次掃描,記為lefti+1。當(dāng)lefti+1進(jìn)入有效區(qū)域時(shí),則下一次掃描以步長為1逐列退回掃描,記為lefti+2,就這樣一直退回掃描到魚眼輪廓邊界為止。
掃描線逼近算法用的是固定閾值,閾值的選取對算法的結(jié)果有一定的影響,特別是對于掃描線逼近算法來說,閾值選取過小,會(huì)把噪點(diǎn)當(dāng)做邊緣,造成計(jì)算半徑過大,閾值選取過大有可能錯(cuò)過邊緣點(diǎn),使半徑偏小。本論文針對固定閾值的缺陷,根據(jù)不同的魚眼圖像采用自動(dòng)閾值。
一般來說魚眼圖像四周或多或少都存在亮度很低的黑色區(qū)域,本文稱為背景部分。一般數(shù)碼相機(jī)噪聲點(diǎn)的灰度大部分小于30,因此魚眼圖像背景區(qū)域絕大部分亮度值也小于30[9],本文就以30為參考值對閾值進(jìn)行如下方法設(shè)置:首先設(shè)定一較小的整數(shù)值M,數(shù)值在10以下均可。然后取圖像四周最外層的M行M列的像素值,按式(1)計(jì)算亮度,然后計(jì)算亮度平均值記為Tm,則閾值T為:
其中N為一正整數(shù),本文取為20。本文這樣設(shè)置閾值T的目的是防止魚眼圖像黑色區(qū)域的亮度過大,而固定閾值30太小不適用于某些魚眼圖像。而且這樣設(shè)定閾值還能在一能程度上抑制噪聲點(diǎn)對掃描算法的干擾。
掃描線逼近算法對噪聲的干擾比較敏感,比如背景部分的椒鹽噪聲點(diǎn),或者亮度較高像素點(diǎn)。容易想到的一個(gè)解決方案就是在輪廓提取之前對魚眼圖像進(jìn)行濾波去噪處理,如中值濾波,均值濾波,高斯濾波等,其中中值濾波處理對椒鹽噪聲的處理效果最好[10]。但是對魚眼圖像進(jìn)行濾波處理必定會(huì)影響魚眼圖像輪廓的提取速度,而且在魚眼圖像輪廓提取階段對魚眼圖像有效區(qū)域內(nèi)的像素信息進(jìn)行濾波也是不必要的,因此不宜采用濾波處理。
在掃描線逼近算法中,當(dāng)掃描線掃描到噪聲點(diǎn)時(shí),亮度差超過了設(shè)定的閾值,算法誤認(rèn)為掃描到了輪廓邊界,針對此我們可以在對取得最大亮度的那個(gè)點(diǎn)進(jìn)行定位然后判斷此點(diǎn)是否噪聲點(diǎn),如何區(qū)分此點(diǎn)是噪聲點(diǎn)還是正常點(diǎn)是本節(jié)研究的重點(diǎn)。
魚眼圖像有效區(qū)域里的圖像像素亮度值比黑色背景部分要大很多,因此可以通過二值化將有效區(qū)域和背景部分分割出來,但是由于有效區(qū)域里也會(huì)含有像素亮度值比較小的點(diǎn),因此不可能將二者完全分離出來。但是相鄰像素之間是存在一定關(guān)聯(lián)性的,可以根據(jù)它來區(qū)分二值化后黑色像素點(diǎn)是屬于有效區(qū)域的還是背景部分,區(qū)域增長法就是利用這個(gè)原理來提取魚眼圖像的輪廓的。
根據(jù)相鄰像素之間的關(guān)系可以對黑色像素點(diǎn)這樣進(jìn)行判別,如圖4所示,點(diǎn)q在圓O外,U(q)是q的任意一個(gè)鄰域(矩形鄰域亦可)。在U(q)中,屬于圓O的區(qū)域?yàn)閕n,面積記為Si;不屬于圓O的區(qū)域?yàn)?out,面積記為So。由此可得:Hi的面積小于U(q)面積的1/2,即Si/(Si+So)<0.5;反之,如果點(diǎn)q在圓O內(nèi),就有Si/(Si+So)>0.5。
圖4 像素點(diǎn)鄰域特性
一般來說,二值化過后的鄰域內(nèi)黑色像素點(diǎn)比鄰域內(nèi)白色像素點(diǎn)要多時(shí),可以認(rèn)為該黑色的像素點(diǎn)是屬于背景部分的,否則認(rèn)為是有效區(qū)域的。本文也將利用取得最大亮度差的點(diǎn)的鄰域特性來判斷該點(diǎn)是不是噪聲點(diǎn)。鄰域可選用圓形鄰域或者矩形鄰域,如圖5所示。噪聲點(diǎn)的特性就是與周圍點(diǎn)像素值差別太大,而針對本文,取得最大亮度差的那個(gè)點(diǎn)如果是噪聲點(diǎn)的話,像素值必定比鄰域內(nèi)其他的點(diǎn)大。因此可以對取得極限亮度差的點(diǎn)某個(gè)鄰域內(nèi)的所有點(diǎn)用上小節(jié)的閾值進(jìn)行局部二值化,然后計(jì)算鄰域內(nèi)白色像素點(diǎn)所占的比例(記為S)的大小,若大于某一閾值(記為Ts)如0.5,可斷定此點(diǎn)不是噪聲點(diǎn),否則就是噪聲點(diǎn),應(yīng)該繼續(xù)進(jìn)行掃描。
圖5 像素點(diǎn)的兩種鄰域
本文提出的新的魚眼圖像輪廓提取算法的流程圖如圖6所示。
算法的具體步驟如下:
(1)按式(5)計(jì)算亮度閾值T。
(2)以左側(cè)掃描為例,以步長λ進(jìn)行掃描,若極限亮度差小于T則繼續(xù)以步長λ掃描。
圖6 魚眼輪廓提取流程圖
(3)否則暫停掃描,定位取得極限亮度差的像素點(diǎn)。
(4)按照3.3節(jié)所描述的方式對該像素點(diǎn)進(jìn)行局部二值化,計(jì)算比例S,若S小于設(shè)定的閾值Ts說明此點(diǎn)是噪聲點(diǎn),應(yīng)繼續(xù)以步長λ前進(jìn)掃描。
(5)若S大于設(shè)定的閾值Ts,說明掃描到了輪廓的邊界點(diǎn),立即停止前進(jìn)掃描,以步長1也就是逐列退回向左進(jìn)行掃描,直到掃描到輪廓邊界為止。
值得注意的是,逐列退回掃描時(shí)要一直后退直掃描到輪廓邊界外的那一列,才能斷定已經(jīng)掃描到了輪廓邊界,這一點(diǎn)未在流程圖中體現(xiàn)出來,務(wù)必要注意。
本節(jié)將給出本文提出的改進(jìn)的掃描線逼近算法與原算法性能的對比,本文算法的測試環(huán)境為:Windows XP sp3 Intel(R)Pentinum(R)Dual CPU 1.46 GHz,1 GB內(nèi)存,MATLAB 7.4。共選用8幅魚眼圖像進(jìn)行測試,數(shù)據(jù)如表1和表2所示,其中圓心坐標(biāo)和半徑是算法計(jì)算得到的,誤差是與的標(biāo)準(zhǔn)值相比得到的,而標(biāo)準(zhǔn)值則是手工測量獲得的。圖1的魚眼圖像(對應(yīng)圖像序號為3)的輪廓提取結(jié)果對比如圖7所示。
圖7 魚眼圖像輪廓提取對比圖
從圖7可以看出改進(jìn)算法提取的輪廓比原算法更精確,圖7(a)出現(xiàn)的偏差是由圖像右邊的白色噪點(diǎn)引起的,右側(cè)的掃描線掃到此行時(shí)由于噪聲點(diǎn)的存在使極限亮度差大于設(shè)定的閾值,認(rèn)為掃描到了邊界。
表1 掃描線逼近法實(shí)驗(yàn)結(jié)果數(shù)據(jù)
表2 本文提出的改進(jìn)掃描線逼近法實(shí)驗(yàn)結(jié)果數(shù)據(jù)
相比的掃描線逼近算法,本文提出的改進(jìn)的掃描線逼近算法取得了很好的效果。由于本文引入局部二值化的去噪思想,使得含噪聲圖像(對應(yīng)序號為3)的提取效果改善很多。詳細(xì)的對比情況如圖8所示,圓圈代表本文提出的改進(jìn)算法的圓心坐標(biāo)誤差,十字代表原掃描線逼近算法,顯而易見本文提出的算法提取的圓心坐標(biāo)誤差更小。參照表1和表2的數(shù)據(jù),本文提出的改進(jìn)算法的半徑平均誤差為0.91,而原掃描線逼近算法的半徑平均誤差為1.09,可見本文提出的算法效果更好。
圖8 改進(jìn)前后掃描線逼近算法提取圓心坐標(biāo)誤差
表2中算法運(yùn)行時(shí)間包括掃描步長為5和1的結(jié)果,結(jié)合表1中原算法運(yùn)行時(shí)間,繪制時(shí)間曲線如圖9。當(dāng)步長為5時(shí)算法運(yùn)行時(shí)間最小,而且大部分小于原算法的運(yùn)行時(shí)間。當(dāng)改進(jìn)算法不引入步長掃描時(shí),即步長為1時(shí)算法的運(yùn)行時(shí)間較長,因此說明本文引入的步長掃描能夠有效地改進(jìn)算法的運(yùn)行時(shí)間。
圖9 改進(jìn)前后掃描線逼近算法的運(yùn)行時(shí)間對比曲線
本文針對掃描線逼近算法在提取魚眼圖像輪廓時(shí)具有抗噪能力差的缺點(diǎn),提出改進(jìn)的掃描線算法,提取的改進(jìn)算法由于引進(jìn)新的閾值計(jì)算方法和局部二值化去噪思想能夠很好地抑制噪聲,有效改善魚眼圖像輪廓的提取效果,而新的掃描方案,即按步長λ掃描的方案能夠縮短算法的運(yùn)行時(shí)間,提高了計(jì)算效率。因此本文提取的算法具有更精確的效果,更短的運(yùn)行時(shí)間,具有很強(qiáng)的實(shí)時(shí)性和實(shí)用價(jià)值。
[1]Yang R G,Brownt M S,Sealest W B.Geometrically Correct Imagery for Teleconferencing,Orlando,ACM Multimedia’99,1999(1):179-186.
[2]Xiong Y,Turkowski K.Creating Image-Based VR Using a Self-Calibrating Fisheye Lens[C]//IEEE Computer Society Conference on Computer Vision and Pattern Recognition(CVPR’97),San Juan,Puerto Rico,1997,6:237-243.
[3]吳方,王霞.魚眼鏡頭圖像變形校正算法研究[J].計(jì)算機(jī)科學(xué),2009,36(4B):109-111.
[4]Szeliski R.Video Mosaics for Virtual Environment[J].IEEE Computer Graphics and Applications,1996,16(2):22-30.
[5]楊丹,游磊,張小洪,等.基于區(qū)域生長的魚眼圖像輪廓提取算法[J].計(jì)算機(jī)工程,2010,36(8):217-218.
[6]王大宇,崔漢國,陳軍.魚眼圖像輪廓提取及校正研究[J].計(jì)算機(jī)工與設(shè)計(jì),2007,28(6):2878-2879.
[7]崔漢國,陳軍,王大宇.基于魚眼圖像的虛擬漫游研究[J].系統(tǒng)仿真學(xué)報(bào),2007,9(5):1504-1506.
[8]Li S G,Nakano M,Chiba N.Acquisition of Spherical Image by Fish-Eye Conversion Lens[J].IEEE Computer Society,2004:235-236.
[9]肖詩勤,楊關(guān)良.一種改進(jìn)的魚眼圖像輪廓提取算法[J].計(jì)算機(jī)與數(shù)字工程,2010,38(1):147-150.
[10]賈永紅.數(shù)字圖像處理[M].武漢:武漢大學(xué)出版社,2003:77-78.