金 毅,崔愛蓮,嚴(yán)傳續(xù),陶 衛(wèi),趙 輝
(1.上海交通大學(xué)電子信息與電氣工程學(xué)院,上海 200240; 2.白城兵器試驗中心,吉林 白城 137001;3.上海中船船舶設(shè)計技術(shù)國家工程研究中心有限公司,上海 200011)
無人水面艇(USV)作為海上最典型的無人智能平臺系統(tǒng),正受到各海洋強國的重視。無人艇無人駕駛的實現(xiàn)需要艇上各傳感器系統(tǒng)的協(xié)同工作,其中光學(xué)傳感器作為最直觀反應(yīng)無人艇所處環(huán)境的傳感器有著重要的作用和地位。為更直觀判斷無人艇周邊環(huán)境,方便操作人員觀察,需要提供大視場的圖像信息同時解決無人艇艇身的晃動問題。
普通無人艇配置的可見光光學(xué)設(shè)備通常為水平方向全自由度的遠(yuǎn)焦鏡頭攝像機或超廣角乃至全景鏡頭攝像機。然而高自由度的相機需要人為干預(yù),增加人工成本,廣角、全景鏡頭獲得的圖像需要考慮畸變,接近圖片邊緣的目標(biāo)畸變嚴(yán)重,修正畸變會造成部分信息丟失[1]。為了實現(xiàn)整體超過180°的視場,本文研究3臺布置于無人艇上的相機圖像的無失真拼接方法。傳統(tǒng)的圖像拼接通常采用特征點匹配,圖像融合的方法[2],其優(yōu)點是魯棒性強,拼接效果真實,符合人眼觀察習(xí)慣;但理論復(fù)雜,計算量大,實時性差,因此不適于無人艇的硬件環(huán)境。本文采用實時性好的單應(yīng)性映射方法拼接圖像以獲取大視場視覺信息[3~4]。不同于傳統(tǒng)的單應(yīng)性圖像拼接工程需求,無人艇上的圖像拼接需要解決艇身不可避免的晃動問題。本文同時對圖像中的海天線進行檢測,并利用海天線方程實時修正圖像的晃動。修正后的圖像采用靜態(tài)單映性投影變換進行拼接。
船體為剛性目標(biāo),因海浪波動、運行速度變化、轉(zhuǎn)向等引起的晃動在空間坐標(biāo)系中可分解為x,y,z3個方向上的分量,如圖1所示。船體沿各方向轉(zhuǎn)動均會引起相機光軸指向的變化從而影響成像?,F(xiàn)設(shè)船體以各方向為軸產(chǎn)生的角度變化分量分別為θx,θy,θz;艇上搭載的一路相機光軸與xy平面平行,光軸與y軸所成夾角為θa。其中θz分量為無人艇主動改變行進方向所產(chǎn)生,故利用艇上搭載的加速度計可進行直接求解。
圖1 船體晃動分解示意圖
最終需要根據(jù)艇身以各坐標(biāo)軸為軸產(chǎn)生轉(zhuǎn)動的情況求解相機光軸發(fā)生的角度變化。為方便計算,將空間坐標(biāo)系轉(zhuǎn)換為球坐標(biāo)系。艇身以某坐標(biāo)軸為軸發(fā)生姿態(tài)變化時,光軸位置的變化可視為其與球面交點的空間位置變化。如圖2所示,求解船體以z方向為軸產(chǎn)生的晃動θz對相機光軸帶來的影響。
圖2 繞z軸旋轉(zhuǎn)示意圖
圖中,光軸與球面交點由D點變化到了D′點,∠DOD′=θz。 設(shè)D,D′坐 標(biāo) 分 別 為D(x,y,z),D′(x′,y′,z′),在球坐標(biāo)系中可計算得到:
同理可得到θx,θy分量對光軸坐標(biāo)的影響:
設(shè)某相機光軸上一點P(x,y,z)繞x,y,z軸分別旋轉(zhuǎn)θx,θy,θz角度后,移動到了P′(x′,y′,z′)點。綜合式(1)~式(3)可計算得到:
傳統(tǒng)無人艇配備的光學(xué)設(shè)備一般為單目球形相機,自由度為360°×270°,僅能起到監(jiān)控作用。無人艇最終要實現(xiàn)無人駕駛,光學(xué)傳感器提供大視場是必要的。本文采用三路固定相機實時拼接獲取無人艇前方180°視場圖像。為提高實時性,放棄魯棒性強的基于特征匹配的圖像拼接方法[5-6],采用基于單應(yīng)性矩陣投影的圖像拼接方法[3-4,7]。
平面投影方式是將其中一張圖片所在的平面作為參考平面,把其他圖像重映射到這個基準(zhǔn)平面。
將空間某點坐標(biāo)由相機1映射到相機2可遵從如下公式[8]:
此處H即為單應(yīng)性矩陣,為得到點在相機平面的坐標(biāo)變換可通過如下推導(dǎo)[9]:
如果給定一個單應(yīng)矩陣H={hij},乘以系數(shù)a得到的系數(shù)矩陣aH與矩陣H作用相同,因為新單應(yīng)無非把齊次點x1變成了齊次點ax2,而ax2與x2對應(yīng)的圖像上的點相同。所以一個單應(yīng)中只有8個自由元素,一般令右下角的那個元素h33=1來歸一化。
求解歸一化后的單應(yīng)性矩陣需要求解8個未知數(shù)。假設(shè)有兩個圖像上的點齊次坐標(biāo)為[x1,y1, 1]T和[x2,y2, 1]T,帶入式(4)可得:
變換為等價的矩陣形式:
如果有4對不共線的匹配點對,方程組即可求得唯一解。
圖3 平面投影原理圖
圖4 成像平面空間變化示意圖
如圖3中所示,需要將兩側(cè)的成像平面投影到中間成像平面上。以左側(cè)相機為例,以相機成像焦平面中心點為原點,投影平面法向為y軸,相機固定平面為xy平面建立空間坐標(biāo)系,如圖4所示。船體平穩(wěn)狀態(tài)下,相機成像平面記為L,相機光軸與L平面交于P點,OP于y軸夾角為θa,令OP=h,圖像兩個邊界的中點為A、B。船體發(fā)生晃動時,相機成像平面變換為L′,相機光軸與L′平面交于P′點,圖像兩個邊界的中點為A′、B′。圖像映射的平面記為M。相機光軸與M平面交于P′點,圖像兩個邊界的中點為A′、B′。M平面內(nèi)選取 4 個不共線的點X1,X2,X3,X4,4 點在L′平面上的像點分別為X1′,X2′,X3′,X4′。將X1 與X1′,X2 與X2′構(gòu)成點對,以此類推即可得到4組不共線的匹配點對。本文采用的相機物理分辨率為800×600,鏡頭視場角為66.9°×52.7°,相機光軸與y軸夾角為θa=60°。以此展開計算以減少不確定參數(shù)。計算過程如下:
P點空間坐標(biāo)為(-0.866h,0.5h,0)。設(shè)相機根據(jù)公式(4),可得p′的空間坐標(biāo)為:
將p′坐標(biāo)記為(xp′,yp′,zp′),則平面L′方程為
設(shè)X1 坐標(biāo)為 (x1,y1,z1),X1′為直線OX1 與L′平面交點。X1′坐標(biāo)為
同理可得到X2′,X3′,X4′的坐標(biāo)。
保證圖像映射至M平面后尺寸不變,令映射后的圖像與中間相機圖像重合區(qū)域為5°以留有一定的容錯率。因匹配的特征點對可任意選取,獲取到θx,θy,θz信息后帶入式 (9)~式 (11)可算得X1′坐標(biāo)。以點X1與X1′為例,X1在M平面圖像坐標(biāo)系中的坐標(biāo)可根據(jù)相機物理分辨率、鏡頭視場角和X1、A′、B′坐標(biāo)計算得到。同理可得到X1′在圖像坐標(biāo)系中的坐標(biāo)。
2.3.1 概率霍夫檢測原理
直線檢測僅需要圖像中物體的大致輪廓,為了提高時效性,一般會先對圖像做預(yù)處理。本文采用Canny邊緣檢測算子對圖像進行邊緣提取并二值化,與其他邊緣檢測算法相比,該算法具有低錯誤率、高定位性以及良好的抗噪性[10]。
2.2 單因素分析結(jié)果 nSLN轉(zhuǎn)移與陽性SLN數(shù)目(Z=-1.991,P=0.047)、原發(fā)腫瘤直徑(Z=-1.991,P=0.047)以及神經(jīng)/脈管等淋巴結(jié)外浸潤(χ2=5.630,P=0.018)情況有關(guān);與病理類型、組織學(xué)分級、激素受體狀態(tài)、是否多個病灶、人表皮生長因子受體2(HER-2)以及Ki67表達狀況無關(guān)。見表1。
二值化后的圖片即可通過霍夫變換提取直線。首先引入標(biāo)準(zhǔn)霍夫直線檢測,對于直角坐標(biāo)系中的任意一點(x,y),在極坐標(biāo)系中表示過該點的任意直線方程為ρ=xcosθ+ysinθ。ρ,θ可認(rèn)為是一對 Hough空間的變量。在此空間中,每一個直角坐標(biāo)系下的點(x,y)都映射一條關(guān)于ρ,θ的正弦曲線。一條直線能夠通過在極坐標(biāo)下尋找交于一點的曲線數(shù)量來檢測,如果越多曲線交于一點,就意味著該交點表示的直線由更多的點組成。通過設(shè)置相交曲線的數(shù)量可控制所檢測直線的長度。霍夫直線檢測原理如圖5所示。
圖5 霍夫直線檢測原理圖
標(biāo)準(zhǔn)霍夫變換本質(zhì)上是把圖像映射到它的參數(shù)空間上,它需要計算所有的N個邊緣點,這樣它的運算量和所需內(nèi)存空間都會很大。如果在輸入圖像中只是處理n(n<N)個邊緣點,則這n個邊緣點的選取是具有一定概率性的,因此該方法被稱為概率霍夫變換(probabilistic Hough transform)[11]。該方法還有一個重要的特點就是能夠檢測出線端,即能夠檢測出圖像中直線的兩個端點,確切地定位圖像中的直線。
概率霍夫變換的一般步驟為:
1)隨機抽取圖像中的一個特征點,即邊緣點,如果該點已經(jīng)被標(biāo)定為是某一條直線上的點,則繼續(xù)在剩下的邊緣點中隨機抽取一個邊緣點,直到所有邊緣點都抽取完畢為止;
2)對該點進行霍夫變換,并進行累加和計算;
3)選取在霍夫空間內(nèi)值最大的點,如果該點是大于閾值的,則進行步驟4),否則回到步驟1);
4)根據(jù)霍夫變換得到的最大值,從該點出發(fā),沿著直線的方向位移,從而找到直線的兩個端點;
2.3.2 海天線提取及圖片修正
無人艇理論允許行駛的海況等級為0~3級之間,行駛在2~3級海況水面上時船體便會有明顯的晃動,從而使得到的圖片內(nèi)容產(chǎn)生明顯的偏移或旋轉(zhuǎn)。這會給操作人員帶來不適,同時會對視頻拼接帶來一定影響。由于判斷此類圖像是否在晃動情況下獲取的基準(zhǔn)一般是觀察海天線的偏轉(zhuǎn)程度,故本文提出一種基于海天線檢測的圖像晃動消除方法。
在光學(xué)圖像中海天線是天空區(qū)域向海面區(qū)域過渡的由像素梯度極大值點形成的一條分界線,在不考慮海面曲率和光學(xué)畸變的情況下海天線是一條直線。若將船體的晃動在空間中分解為x,y,z3個方向上的分量,對海天線進行檢測可以消除x,y方向上的晃動分量。再配合艇上對z方向上的信息可較大程度消除船體晃動對圖像信息的影響。
國內(nèi)外已有眾多學(xué)者提出了海天線的提取算法,Zou等[2]提出了一種基于剪切波變換的海天線檢測方法,該方法能夠提取邊緣的梯度方向信息并進行辨識。王博等[12]提出了一種基于梯度顯著性的海天線檢測方法,該方法能有效增強海天線的直線特征并抑制各種干擾因素。徐良玉等[11]提出的基于結(jié)構(gòu)森林算子和Hough變換的海天線檢測方法可以有效地剔除云層、浪紋等對復(fù)雜海天背景下海天線檢測的邊緣干擾,實現(xiàn)高魯棒性、高準(zhǔn)確性。以上算法在各自應(yīng)用背景下都取得了一定的效果。本文采用Canny邊緣檢測算子配合概率Hough變換對圖片進行直線檢測。并針對海天線特征建立約束條件,計算得到圖片中最接近海天線的直線方程。
在實際無人艇獲取的圖片上進行Canny邊緣提取及概率霍夫變換,得到多條線段。通過對3 000幀無人艇獲取的環(huán)境圖片進行霍夫變換處理,經(jīng)過統(tǒng)計對比,發(fā)現(xiàn)海天線具備一定的特征:
1)即使船體存在晃動,艇上光學(xué)設(shè)備相對艇身不會變動,因此獲取的圖像也存在一定的偏移范圍。在2~3級海況下行駛,圖像中海天線與x軸夾角在±8°以內(nèi);
2)海天線一般為圖像中最明顯的直線,通過概率霍夫變換得到的線段至少有兩條與海天線共線;
3)光線較強的圖像中,由于海浪的影響,霍夫變換會得到大量的干擾線,由于數(shù)量大也會有代表海浪的線段共線的情況,此時海天線所在的直線是最上方的直線。
結(jié)合上述特征,提出約束條件來提取海天線。在完成概率霍夫變換的圖像中計算所有線段所在直線的方程,剔除與水平方向夾角在±8°范圍外的直線。取定一條線段所在直線方程F(x),對于另一條線段,其上兩端點到F(x)距離均小于等于2個像素,則認(rèn)為兩條線段共線。通過最小二乘法擬合共線線段所在直線的方程。確定閾值L,當(dāng)圖像中找到的直線方程數(shù)量小于L時則認(rèn)為共線線段最多的擬合直線方程代表海天線。當(dāng)圖像中直線方程數(shù)量大于等于L時則認(rèn)為此時圖片中存在大量干擾,取直線方程截距絕對值最大的直線作為海天線方程。
前文已介紹了欲修正因船體晃動帶來的圖像平面變化,需要艇身在空間中3個方向的變化分量θx,θy,θz。若將海天線位置考慮為無窮遠(yuǎn),則θx,θy可通過光軸與空間y坐標(biāo)軸平行的相機圖片中的海天線方程計算得到。光軸與y坐標(biāo)軸平行的相機獲得的圖片中,海天線與水平方向的夾角即為θy,海天線豎直方向變化的距離可通過簡單計算得到θx。同一幀內(nèi),各圖片因曝光時間不同,進行圖片修正時采用的船體晃動角度是不同的。本文將船體幀間間隔產(chǎn)生的各方向轉(zhuǎn)動近似為勻速轉(zhuǎn)動。設(shè)光軸與y坐標(biāo)軸平行的相機幀間間隔為t,光軸與y坐標(biāo)軸成θa角度的相機幀間間隔為t′。則此相機對應(yīng)的船 體 各 方 向 轉(zhuǎn) 動 分 量 分 別 為θx′=t′θx/t,θy′=t′θy/t,θz′=t′θz/t。再由公式 (4)計算并進行映射變換,可完成圖像晃動的修正。
取一幀內(nèi)3臺相機獲取的圖片如圖6(a)所示。通過標(biāo)定中間相機獲取的圖片中海天線位置,與船體平穩(wěn)狀態(tài)下的海天線進行比對計算可獲取θx,θy的值。由于缺少θz信息,此處設(shè)為0。分別帶入式(9)~式(11),計算得到單映性矩陣,完成拼接。拼接結(jié)果如圖6(c)所示。
圖6 拼接結(jié)果
為驗證本文海天線檢測方法的有效性,在太湖水域利用某型號無人艇采集海天線場景的光學(xué)圖像。3臺相機分辨率為800×600鏡頭視場角為66.9°×52.7°,曝光機焦距均為固定值,獲得 3 000 幀jpeg格式彩色圖片。將圖片作為測試樣本,將本文方法分別與霍夫直線檢測方法、Radon直線檢測方法進行性能對比和分析。硬件為Intel core i5 3.3 GHz CPU,4 GB內(nèi)存。算法實現(xiàn)在Windows10系統(tǒng)環(huán)境下,采用python語言配合opencv圖像處理包。
當(dāng)提取的海天線上的點距離真實海天線均在3個像素值以內(nèi)時,則認(rèn)為成功提取了海天線。各方法的海天線檢測結(jié)果如表1所示,根據(jù)該結(jié)果繪制柱狀圖如圖7所示。圖8展示了船體不同姿態(tài),不同光照強度采集的具有代表性的3張圖片分別經(jīng)霍夫直線檢測算法、Radon直線檢測算法及本文算法提取的海天線效果圖。霍夫算法在正常光照情況下表現(xiàn)良好,但在光照強度偏高的條件下,如圖8(c),圖8(d)中,因水面波浪影響,檢測到的干擾直線過多,情況復(fù)雜,很難篩選優(yōu)化。算法平均耗時為11.24 ms,檢測率為67.2%。Radon算法主要針對圖像梯度信息進行計算,各條件下效果均良好;但由于算法復(fù)雜度較高,平均耗時為17.28 ms,檢測率為84%。本文算法基于概率霍夫變換進行改進,耗時要明顯優(yōu)于傳統(tǒng)霍夫變換。且提取的目標(biāo)為線段端點,更易進行優(yōu)化,在光照強度較高的條件下具有良好的魯棒性。算法平均耗時為8.69 ms,檢測率為94.5%。
表1 海天線檢測實驗結(jié)果
圖7 實驗結(jié)果柱狀圖
圖8 海天線檢測結(jié)果比對
對無人艇上多臺相機進行視頻拼接,因艇身晃動及各相機獲取圖片的絕對時間不能嚴(yán)格同步,將導(dǎo)致拼接難度提高。本文提出一種改進的概率霍夫變換海天線提取方法。通過對海天線進行標(biāo)定,計算相機姿態(tài)變化量。同時詳細(xì)分析了相機姿態(tài)變化情況下圖像單應(yīng)性矩陣的計算方法,使用得到的單應(yīng)性矩陣對圖像進行映射拼接,最終得到良好的拼接效果。通過與傳統(tǒng)的霍夫直線檢測方法及Radon直線檢測方法進行對比試驗,驗證了算法的優(yōu)越性。