(中國(guó)船舶重工集團(tuán)公司第七二三研究所 揚(yáng)州 225001)
視覺信息是實(shí)現(xiàn)環(huán)境感知與監(jiān)控、系統(tǒng)智能的主要技術(shù)手段。尤其在海洋監(jiān)控領(lǐng)域中,視覺信息有著非常重要的價(jià)值。隨著海洋建設(shè)的不斷投入,視覺信息技術(shù)的發(fā)展前景廣闊,又充滿挑戰(zhàn)。
在海洋監(jiān)控領(lǐng)域中,最重要的技術(shù)應(yīng)用就是目標(biāo)檢測(cè)和識(shí)別,它是獲取目標(biāo)信息的主要技術(shù)手段。良好的目標(biāo)檢測(cè)技術(shù),對(duì)我國(guó)海洋國(guó)防事業(yè)起到重要的支撐作用。然而由于海洋環(huán)境的特殊性與復(fù)雜性,想要直接檢測(cè)目標(biāo)十分困難。這時(shí),海天線為我們提供了思路。在浩瀚的海洋環(huán)境中,當(dāng)目標(biāo)剛進(jìn)入我方視線時(shí),從我方角度看,一定會(huì)以低速經(jīng)過(guò)海天線。因此,如果能夠準(zhǔn)確獲取海天線信息,便能夠在此基礎(chǔ)上獲取目標(biāo)信息。
全景成像系統(tǒng)相對(duì)于常規(guī)成像系統(tǒng),具有視場(chǎng)大、旋轉(zhuǎn)不變性等特點(diǎn)。本文提出了一種基于艦船全景成像系統(tǒng)的海上目標(biāo)檢測(cè)算法,并以Visual C++與OpenCV計(jì)算機(jī)視覺庫(kù)為平臺(tái)編制相關(guān)程序,驗(yàn)證了算法的有效性。
該部分算法主要包括顯著性檢測(cè)、邊緣檢測(cè)和二值化處理。
顯著性檢測(cè)[1],源于人眼傾向于從圖像中找出感興趣區(qū)域,而淡化其他非感興趣區(qū)域的特性。隨著學(xué)者們的不斷研究,迄今出現(xiàn)了很多種顯著性檢測(cè)算法,主要分為顯著圖法、圖論法、基于對(duì)比度的方法、基于頻域的方法等幾個(gè)類別,典型算法有IT、LC、RC、FT等。
本文從頻域角度,采用SR算法(頻譜殘余法)進(jìn)行顯著性區(qū)域提取。相比于其他算法,SR算法具有模型簡(jiǎn)單、計(jì)算復(fù)雜度低、全局性好等特點(diǎn)。算法步驟如下:
1)對(duì)圖像進(jìn)行傅里葉變換,得到頻域內(nèi)的圖像。設(shè)A(f)為振幅譜,P(f)為相位譜,I(x)為原圖像,則通過(guò)下式計(jì)算頻域圖像內(nèi)的振幅譜與相位譜:
2)將振幅譜取對(duì)數(shù)變?yōu)閷?duì)數(shù)譜,然后進(jìn)行一次均值濾波得到剩余譜。設(shè)對(duì)數(shù)譜為L(zhǎng)(f),剩余譜為R(f)。濾波器H(f)為n×n均值濾波卷積核。則有:
3)對(duì)得到的剩余譜與相位譜,進(jìn)行傅里葉反變換,再進(jìn)行一次高斯模糊,從而得到最終的顯著圖。設(shè)顯著圖為S(x),高斯算子為G(x),則有:
邊緣檢測(cè)的算法比較多,一階邊緣檢測(cè)算子如Sobel算子、梯度算子、Roberts算子,Prewitt算子等,二階邊緣檢測(cè)算子如Laplacian算子,LOG算子等,其步驟大體分為濾波、增強(qiáng)與檢測(cè)。本文采用了一種多邊邊緣檢測(cè)算子——CANNY算子,相比于其他算子具有信噪比大、定位精度高、響應(yīng)效率高的特點(diǎn)。CANNY邊緣檢測(cè)算法如下:
1)采用高斯濾波器與原圖像進(jìn)行卷積以平滑圖像、消除噪聲。設(shè)原圖像矩陣為f(i,j),高斯模糊濾波器矩陣為G(i,j),σ為高斯模糊的標(biāo)準(zhǔn)差,輸出平滑后的圖像矩陣為P(i,j),則有:
2)對(duì)梯度的幅值T(i,j)與方向θ(i,j)采用導(dǎo)數(shù)的有限差分進(jìn)行計(jì)算:
3)用非極大值抑制法細(xì)化圖像。該方法對(duì)梯度幅值進(jìn)行操作,思想是將梯度角θ(i,j)劃分為四個(gè)扇形區(qū)域,標(biāo)號(hào)記為0~3。這樣,在3×3鄰域內(nèi),對(duì)應(yīng)著0與1、1與2、2與3、3與0,這四種鄰域組合。由于通過(guò)鄰域中心的點(diǎn)必然通過(guò)一個(gè)扇形區(qū)域,可將3×3鄰域作用于T(i,j)矩陣中的所有點(diǎn)。將每一點(diǎn)上鄰域的中心像素,與梯度方向兩元素進(jìn)行比較。若該中心像素梯度幅值不大于梯度方向兩元素的值,則將該中心點(diǎn)梯度值歸零。這樣,最終可以得到細(xì)化的邊緣檢測(cè)圖像。
圖1 扇形區(qū)域圖
4)采用兩個(gè)閾值的方法進(jìn)行邊緣連接。設(shè)高閾值為HT,低閾值為L(zhǎng)T,值的選取依據(jù)圖像梯度值對(duì)應(yīng)的直方圖。當(dāng)圖像的響應(yīng)信號(hào)大于高閾值HT時(shí),則可判定為邊緣圖像信號(hào);當(dāng)圖像的響應(yīng)信號(hào)低于低閾值LT時(shí),則不是邊緣圖像信號(hào);當(dāng)圖像的響應(yīng)信號(hào)在HT與LT之間時(shí),判斷其8個(gè)鄰域像素中是否有大于HT的。若有大于HT的,則判定為邊緣信號(hào);若沒有,則否定其為邊緣信號(hào)。通過(guò)標(biāo)記邊緣點(diǎn),以及同鄰域像素點(diǎn)進(jìn)行比較的方法,將所有滿足條件的點(diǎn)進(jìn)行連接,最終得到邊緣檢測(cè)圖。
常用的二值化方法有基于全局的二值化法、OTSU法、雙峰法等。在已有算法基礎(chǔ)上,本文提出了一種基于圖像分割的閾值自適應(yīng)二值化算法。算法流程如下:
1)將圖像分成若干部分,計(jì)算每部分像素的均值、方差、均方根值;
2)為各部分圖像建立關(guān)于以上特征值的參數(shù)方程,求取每部分圖像對(duì)應(yīng)的像素二值化閾值;
3)根據(jù)二值化處理原則,將每部分圖像中低于閾值的部分的像素設(shè)置為0(黑色),高于閾值的部分的像素設(shè)置為255(白色),最終將整張像素圖轉(zhuǎn)換為僅有黑白像素的二值化圖。
最具代表性的圓形檢測(cè)方法為HOUGH變換法,該理論由Paul Hough在1962年提出[2],可適用于直線、圓形、橢圓等典型圖形的檢測(cè)。
HOUGH圓變換[3]的常用算法有標(biāo)準(zhǔn)HOUGH圓變換、隨機(jī)HOUGH圓變換等。本文采用一種基于梯度的HOUGH圓變換(GHT)算法[4],相比于其他算法具有計(jì)算量較小、消耗內(nèi)存少、噪聲抑制能力強(qiáng)等特點(diǎn),適合于像素復(fù)雜的圖像[5]。其算法過(guò)程如下:
1)設(shè)所求圓的圓心坐標(biāo)為(a,b),半徑為r,圓上任一點(diǎn)坐標(biāo)為(x,y),則將圓以極坐標(biāo)表示為
對(duì)整幅圖像進(jìn)行掃描,求取每一像素點(diǎn)的梯度,并對(duì)獲得的梯度圖像進(jìn)行二值化以得到二值圖像。
2)掃描上一步的二值化梯度圖像,對(duì)梯度值非零的點(diǎn)(白色像素點(diǎn))找出其在原始圖像中的位置,并求取梯度的方向角θ,然后利用上式求取圓心坐標(biāo)。
3)為原始圖像每個(gè)點(diǎn)設(shè)立累加器,由上一步的結(jié)果對(duì)相應(yīng)點(diǎn)的累加器進(jìn)行累加。
4)整幅圖像掃描之后,對(duì)累加器的數(shù)值進(jìn)行排序,將最大值所對(duì)應(yīng)的坐標(biāo)確定為圓心坐標(biāo)。
5)對(duì)于確定的圓心,將二值梯度圖像中非零點(diǎn)與圓心的距離進(jìn)行降序排序。將半徑按從小到大的準(zhǔn)則,為每個(gè)半徑設(shè)立累加器。搜索滿足該半徑的非零點(diǎn)數(shù)目,為累加器進(jìn)行排序。那么,累計(jì)器最大值對(duì)應(yīng)的半徑,就是所需檢測(cè)圓的半徑。
當(dāng)目標(biāo)處于海天線區(qū)域時(shí)具有如下位置特點(diǎn):其中心像素點(diǎn)一定處于海天線上;由于其寬度通常會(huì)大于海天線寬度,其部分像素點(diǎn)會(huì)處于海天線內(nèi)部或外部。據(jù)此,文獻(xiàn)[6]提出了一種基于單窗口閾值的目標(biāo)檢測(cè)算法,即根據(jù)得到的某種曲線信息,在邊緣檢測(cè)圖中該曲線上的待搜索范圍內(nèi)的每一像素點(diǎn),對(duì)其建立一個(gè)適度大小的窗口并存取該窗口中非零像素點(diǎn)(白色點(diǎn))數(shù)目;設(shè)立數(shù)目閾值,當(dāng)窗口內(nèi)的非零點(diǎn)數(shù)目大于該閾值時(shí)確定有目標(biāo),小于時(shí)確定無(wú)目標(biāo)。經(jīng)實(shí)驗(yàn)驗(yàn)證,該算法耗費(fèi)較大的存儲(chǔ)空間,且檢測(cè)結(jié)果存在誤檢情況。
文獻(xiàn)[7]提出了一種基于局部區(qū)域復(fù)雜度的檢測(cè)算法。目標(biāo)的局部區(qū)域復(fù)雜度[8],是對(duì)圖像中目標(biāo)區(qū)域與其背景區(qū)域的量度值,表征了將目標(biāo)從背景區(qū)域中分離出來(lái)的難易程度[9],早期是通過(guò)計(jì)算目標(biāo)區(qū)域灰度均值gM與背景區(qū)域灰度均值gB之差來(lái)完成的[10],后來(lái)出現(xiàn)了計(jì)算平方和根[11](RSS)的方法:
其中,代表整個(gè)局部區(qū)域灰度值的方差:
式中,gi與gJ分別為局部區(qū)域中第i個(gè)點(diǎn)的灰度值與局部區(qū)域灰度均值。
該算法首先為待檢測(cè)曲線上每一點(diǎn)建立一個(gè)嵌套窗口,然后計(jì)算該點(diǎn)內(nèi)、外窗口的灰度均值、兩窗口中間部分灰度均值和整個(gè)外窗口內(nèi)部灰度值方差來(lái)求取RSS[12],當(dāng)計(jì)算結(jié)果大于設(shè)定的RSS值時(shí)認(rèn)定有目標(biāo),小于則認(rèn)定無(wú)目標(biāo)。該算法無(wú)論從理論和應(yīng)用上都具有可行性[13],然而需要遍歷整幅圖像建立嵌套窗口,計(jì)算量較大。
根據(jù)上述兩種算法的優(yōu)劣,本文提出了一種單窗口閾值結(jié)合局部區(qū)域復(fù)雜度的目標(biāo)檢測(cè)算法,既可以準(zhǔn)確地檢測(cè)與定位,又具有較低的算法復(fù)雜度,降低了運(yùn)算量,節(jié)省了內(nèi)存空間。算法如下:
1)根據(jù)所求得的圓形海天線,屏蔽海天線內(nèi)的所有像素點(diǎn)(設(shè)為黑色)以去除無(wú)關(guān)干擾。在海天線檢測(cè)范圍內(nèi),根據(jù)待測(cè)目標(biāo)的物理特性,對(duì)其上的每一個(gè)點(diǎn)建立一個(gè)適度大小的窗口。
2)為每個(gè)像素點(diǎn)設(shè)立累加器,計(jì)算每一個(gè)點(diǎn)的窗口內(nèi)的非零像素點(diǎn)數(shù)目并存于累加器中。
3)為累加器設(shè)定閾值。當(dāng)累加器中的值大于該閾值時(shí),判定該累加器所屬的點(diǎn)上可能會(huì)有目標(biāo)存在,并將該點(diǎn)列為可疑點(diǎn)。
4)對(duì)每一個(gè)可疑點(diǎn),設(shè)立一個(gè)稍大的窗口(長(zhǎng)、寬為小窗口的倍),計(jì)算其局部區(qū)域復(fù)雜度值。
5)為局部區(qū)域復(fù)雜度設(shè)定合適的閾值。當(dāng)某點(diǎn)局部區(qū)域復(fù)雜度值大于該閾值時(shí),判定該點(diǎn)上有目標(biāo)存在;當(dāng)數(shù)值小于該閾值時(shí),判定該點(diǎn)上無(wú)目標(biāo)存在。
本文以Visual C++和OpenCV計(jì)算機(jī)視覺庫(kù)為平臺(tái),對(duì)所設(shè)計(jì)算法編寫程序進(jìn)行驗(yàn)證。首先,對(duì)幾種不同天氣、不同地點(diǎn)的海面全景圖像進(jìn)行了無(wú)關(guān)區(qū)域提取和圓形海天線檢測(cè)。然后,采用本文所設(shè)計(jì)的目標(biāo)檢測(cè)算法檢測(cè)全景圖像中的目標(biāo)。各部分算法實(shí)驗(yàn)結(jié)果如下。
圖2 海面全景圖像
圖3 全景圖像的顯著性檢測(cè)
圖4 全景圖像顯著性檢測(cè)后的二值化
圖5 全景圖像的邊緣檢測(cè)
圖9 海天線內(nèi)部屏蔽
圖10 單窗口閾值目標(biāo)檢測(cè)
圖11 單窗口閾值結(jié)合局部區(qū)域復(fù)雜度目標(biāo)檢測(cè)及其在原全景圖中的定位
由實(shí)驗(yàn)結(jié)果可見:本文采用與設(shè)計(jì)的算法應(yīng)用在全景海面圖像中,可實(shí)現(xiàn)在進(jìn)行顯著性檢測(cè)去除無(wú)關(guān)干擾區(qū)域的基礎(chǔ)上對(duì)海天線的準(zhǔn)確檢測(cè);本文提出的目標(biāo)檢測(cè)算法完成了對(duì)海上目標(biāo)的檢測(cè),相對(duì)于傳統(tǒng)的檢測(cè)算法具有更好的檢測(cè)與定位能力,同時(shí)降低了算法的復(fù)雜度。