原玉磊,席 靚,張文郎
(1.信息工程大學 測繪學院,鄭州 450052;2.海軍航空工程學院 科研部,山東 煙臺 264001;3.國家測繪局第四地形測量隊,哈爾濱 255020)
在星敏感器獲取的CCD 星空圖像處理中,快速準確提取星點目標是進行星點中心亞像素細分及星圖匹配的前提。從圖像中提取目標的一般方法是基于掃描的邊界搜索法,但邊界搜索法只能獲取目標的邊界像素。對于灰度重心法、曲面擬合法等提取星點目標的亞像素中心算法來說,還需要提取目標區域內的每一個像素。一般的思路是邊界搜索后,采用連通域判別法進行圖像標記,但是這種標記法計算量比較大,對于凸區域的目標,本文提出了通過判斷邊界像素最大最小行列數來確定目標的區域。針對大視場星點圖像目標范圍小、目標間距離遠的特點,為進一步減小計算量,提出了基于視框范圍的搜索法。
邊界搜索算法是在根據目標提取閾值搜索到圖像中第一個屬于目標的像素點之后,若該像素點屬于目標的邊界點,繼續搜索該像素點的鄰近像素,以期找到下一個目標邊緣點,直到與第一個目標邊界點重合,從而完全找出目標的邊界。
為了便于提取邊界,對數字圖像像素間相互關系作如下分析。如圖1所示,中間的黑色像素為目標像素,其周圍與其有公共邊界和共享頂點的像素共有8個,為8鄰點像素。為便于分析,對這8個8鄰點像素進行編號,黑色像素左上方的像素為1號8鄰點,左側像素為2號8鄰點,依此類推,以逆時針的順序分別對8個8鄰點像素進行編號。

圖1 像素8鄰點位置關系
找到目標區域的第一個像素之后(此像素為邊界點),分別對其8個8鄰點像素按照編號進行判斷,找出第一個屬于該星體區域的8鄰點像素,以該像素作為新的邊界點,對其8鄰點像素進行判斷,從而找出新的邊界點,直到與第一個邊界點重合為止。具體實現算法如下:
1)按照從左到右、從上到下的順序搜索圖像,對每一個像素進行判斷,找出第一個屬于星體區域S的像素點 s (k)=(x (k),y (k)),k=0;
2)用c表示當前邊界上被跟蹤的像素點。置c=s (k),記c左8鄰點為b,b ? S;
3)按逆時針順序記從b 開始的c的8個8鄰點像素分別記為n1,n2,…,n8,k=k+1;
4)從b 開始,按逆時針順序找到第一個 ni∈ S;
5)置 c=s (k)=ni,b=ni?1;
6)重復步驟3)、4)、5),直到s (k)=s(0)為止。
圖2所示為圖中黑色區域邊界提取的順序。

圖2 邊界提取順序
目標邊緣像素其實就是目標區域的邊界。因此,在已知目標邊緣像素的條件下,要獲取目標的確切區域,可以采用如下思想:根據邊緣像素坐標,判斷出目標區域的最大行數和最小行數,然后判斷目標區域中的每一行中目標區域的最大列數和最小列數,從而確定具體的目標區域。
判斷目標區域的最大最小行數的算法流程圖如圖3所示。

圖3 判斷目標區域最大最小行數的流程圖
圖3中,max為區域的最大行數;min為區域的最小行數;lin為圖像的行數;G (i,j)為邊緣像素,像素坐標為i行、j列。程序結束后的max和min值即為目標區域的最大行數和最小行數。
判斷區域每一行的最大列數和最小列數的算法流程圖如圖4所示:

圖4 判斷目標區域每一行的最大最小列數流程圖
圖4中,Maxli為目標區域第i行的最大列數,Minli為目標區域第i行的最小列數,i=Min,Min+1,…,Max;G (i,j)為邊緣像素,像素坐標為i行、j列。
判斷出目標區域的最大行數和最小行數以及每一行的最大列數和最小列數后,就確定了目標的具體區域,可以提取出目標區域中的每一個像素進行后續處理。
上述算法是針對整幅圖像中只有一個目標的情況,而如果圖像中有多個目標,則僅使用上述算法無法區分不同的目標。一種可行的方法是在搜索到一個目標后,將該目標區域內的所有像素都設置低于提取閾值的灰度值,然后再進行全圖搜索下一個目標。由于前一個目標區域內像素灰度值經過重新賦值都低于提取閾值,就不會影響下一個目標的搜索。
按照1.1 介紹的邊緣搜索算法提取出一個目標后,再按照1.2 介紹的區域提取算法確定目標的區域,提取出目標區域中的每一個像素,將其灰度值賦一個比提取閾值小的值,這樣就可以避免下次搜索時再對該目標計算。然后再對圖像進行邊界搜索,以提取下一個目標的邊界。
而如1.2 中所述的目標區域提取算法,需要對目標的每一個邊緣像素進行多次的判斷,計算量非常大,耗時長,無法滿足圖像處理的實時性要求。為了減小計算量和計算時間,實現對目標的實時提取和處理,本文針對星點圖像的特點,提出了可用于星點圖像目標提取的視框搜索算法。
圖5為實際拍攝的星空圖像。圖中的星點目標所占的區域都非常小,而且不同目標之間的距離相對比較遠,遠大于目標的大小。因此可構造一個視框,通過在圖像中移動視框來搜索目標。這樣對像素的判斷處理只在視框內進行,縮小了判斷范圍,減小了計算量。該視框要能夠將整個星點目標包含進來,而且只能包含一個目標,如果有其他目標的像素進到視框中,必然對主要目標的提取產生影響。

圖5 實際拍攝的星空圖像
與邊界搜索算法不同,當在圖像中搜索到第一個屬于目標區域的像素點(該像素點必然是目標區域的邊界點)之后,不是按照8 鄰域逐一搜索法搜索緊鄰的下一個邊界點,而是以該像素點為中心,構造一個視框,然后對該視框內的每一個像素判斷其灰度值是否屬于目標區域,如果是,就直接將其提取出來。
如圖6所示,當在圖像中搜索到第一個屬于目標區域的像素點1點之后,以1點為中心構造虛線所示的視框,該視框可以將整個目標區域包含于其中,然后對視框內部的像素進行判斷。

圖6 視框搜索算法原理
對于圖像中多個目標的視框搜索算法,可以采用1.3 所述的思路,即提取出一個目標后,將該目標區域內的所有像素灰度賦一個低于目標提取閾值的值,這樣在下一次全圖搜索下一個目標時,就會將該目標忽略,從而實現對下一個目標的正確提取。
由于當前搜索的目標其區域完全在構造的視框內,因此只需對視框內的所有像素灰度置一個低于目標提取閾值的值就可以了,不需要再使用1.2 所述的目標具體區域確定算法,因而計算量大為減小。
對于基于視框搜索的目標區域提取算法來說,關鍵是確定視框的大小。需構造視框的大小一旦確定,就可以使用該視框迅速實現對全圖的搜索。
視框大小的確定有兩個原則:
1)足夠大,要能將全圖中最大的目標包含在內,否則對大目標的所有區域無法正確提?。?/p>
2)不能太大,不能大于全圖中距離最近的兩個目標的中間矩形區域,不然將對近距離目標區域的提取帶來粗差。
因此視框的大小應根據不同的星圖來確定。
對于一般星光條件下拍攝的星圖,星點圖像均近似圓形或橢圓形,星點圖像所占一般不超過50個像素,而星點間的距離都在10個像素以上,因此采用10×10像素的視框即可正確提取目標。
為了比較基于邊界搜索的目標區域提取算法與基于視框的目標區域提取算法的計算量,本文對不同個數的星點圖像,分別使用基于邊界搜索的算法和基于視框搜索的算法提取該星點的區域,并計算出區域提取程序的運行時間,如圖7所示。經過多次實驗,基于邊界搜索的目標提取算法和基于視框的搜索算法在沒有目標的情況下對全圖的搜索時間近似相同,分別為0.134 73 s和0.134 41 s。而計算平均一個目標的搜索時間,基于邊界搜索的目標提取算法為0.123 137 s,而基于視框搜索的目標提取算法為0.031 132 s(采用大小為10×10像素的視框)。由此可見,基于視框搜索的目標提取算法在星點目標區域提取的計算量上比基于邊界搜索的目標提取算法減少了3/4。

圖7 不同目標個數圖像兩種算法的計算時間
本文為實現星點圖像中星點目標區域像素的提取,提出了兩種目標區域提取算法。第一種是對邊界搜索算法的擴展,在搜索出目標的邊界之后,根據目標邊界像素的坐標確定出目標區域的具體位置,從而提取目標區域像素;第二種專門針對星點圖像的目標提取,根據星點圖像目標范圍小、目標間距離大的特點,提出了基于視框搜索的目標提取算法?;谶吔缢阉鞯哪繕藚^域提取算法可應用于一般圖像的目標區域提取,但計算量要比基于視框搜索的目標提取算法大。而基于視框的算法計算量小,但是只適合于類似星點圖像的目標區域提取。
[1]賈云得.機器視覺[M].北京∶科學出版社,2000∶33-46.
[2]原玉磊.三維激光掃描及其應用技術研究[D].鄭州∶解放軍信息工程大學測繪學院,2009.
[3]田金文,歐陽樺,鄭勝,等.一種星圖中星的提取方法[J].華中科技大學學報∶自然科學版,2005,33(4)∶38-40.
[4]王洪濤,羅長洲,王渝,等.基于背景自適應預測的星點提取算法[J].光學技術,2009,35(3)∶412-414.
[5]林建粦,馬德寶.基于二值化差分的CCD 星圖快速定位方法[J].解放軍信息工程大學學報,2009,10(9)∶376-378.
[6]陸敬輝,王宏力,鄭佳華,等.一種改進的星圖中星提取方法[J].傳感器與微系統,2008,27(6)∶31-33.
[7]王洪濤,羅長洲,王渝,等.一種改進的星點質心算法[J].光電工程,2009,36(7)∶412-414.
[8]沈本劍,劉海波,賈輝,等.CCD 溫度對星敏感器星點定位精度的影響[J].空間控制技術與應用,2009,35(6)∶36-40.
[9]李德良,阮錦.一種適用于星敏感器的星點提取方法[J].紅外與激光,2009,39(12)∶1348-1350.
[10]劉海波,譚吉春,沈本劍,等.像差對星敏感器星點定位精度的影響[J].光學技術,2009,35(3)∶471-473.