天天看點

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

作者:曆史安利官

文|曆史安利官

編輯|曆史安利官

經過了圖像預處理步驟,圖像中的噪聲已經受到了抑制。

不過在尋找圖像中出現的星體之前,首先需要判斷哪些像素是屬于星體,而哪些像素又不屬于星體。

為了進行這樣的判斷,圖像分割的步驟是不可少的。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

圖像預處理

在導星算法中,圖像分割的目的就是根據像素值的分布

确定屬于星體的像素,保留其像素值,并從圖像中剔除那些不屬于星體的像素(使其像素值為0)。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

顧名思義,這一步驟是在導從圖像處理的角度來看,一個像素是否屬于某個星體取決于以下好幾個因素:

1.這個像素的像素值(亮度)是否夠大。

2.這個像素是否緊鄰其它亮度比較大的像素。

因為星體成像在天文觀測圖像上一般為較小的圓斑,包含幾個到幾十個像素。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

3.這個像素與其緊鄰的像素值較大的像素組成的集合,其形狀和尺寸是否符合星體成像規律。

圖像分割步驟就是為了在圖像進入尋找星體步驟之前,首先根據第一個依據剔除掉明顯不屬于星體的像素。

而為了決定一個像素的像素值是否夠大,判斷依據,即門檻值的計算便是首先需要考慮的問題。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

在多種分割門檻值的計算方法中,通過計算方法引用的像素集合,可以将門檻值計算方法分為兩個大類:全局門檻值方法和局部門檻值方法。

顧名思義,全局門檻值方法即在考察圖像全體時使用同一個門檻值,此門檻值的計算當然也使用了全部的圖像像素值。

而局部門檻值則剛好相反,它在考察每個像素時,使用單獨計算得出的門檻值,此門檻值的計算隻用到了此像素某個鄰域内的像素值。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

本文實作的導星算法考慮到觀測環境的多樣性,對全局和局部的門檻值計算方法都進行了實作。

而具體門檻值的計算方法則參考了圖像分割領域的兩個常用方法:正态分布和Otsu。

正态分布方法,即正态分布規律。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

在光學理論中,物方一個光點的能量經過光路傳輸到圖像傳感器上時,由于衍射受限,其能量會擴散到像點的周圍空間中,而描述這一擴散規律的函數即為高斯函數。

而星體由于距離觀測者十分遙遠,正好可視為一個近似的光點,其發射的能量根據上述理論,便會擴散到星體中心的像點周圍的一部分像素上。

是以,其實圖像上的每個像素值都是多個高斯函數不同位置的值疊加而成的。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

這些像素值大緻滿足正态分布的規律,并可以分為兩類。

第一類:即大多數的像素值來源于背景光照和剩餘的背景噪聲,具有平均亮度。

第二類:則隻有少量的像素值,源自于星體成像和黑暗背景的響應。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

因為找到星體成像的響應像素,便是圖像分割的目的所在。

是以,根據正态分布規律,設u為像素鄰域平均值,而a為鄰域标準差,則第一類的像素值應該落在區間(u-3a,u+3a)中,而第二類則落在此區間之外。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

很明顯,為了區分出星體像素,門檻值應該至少取為u+3a。

實際在使用這個公式時,a前的系數經常會随情況而變動,一般取在[3,5]。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

正态分布方法的優勢在于計算簡單,快速,滿足導星算法對于圖像處理的實時性要求。

但正是由于過于簡單的計算步驟和理論基礎,使得正态分布算法的效果不太理想。

而要獲得較好的效果,甚至需要對算法的計算式中的k值進行仔細的調整,特别是在進行全局門檻值計算時。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

而且,根據應用場景的不同,k值也應做細微的調整,才能使算法效果達到最佳。

是以,導星算法除了實作全局正态分布以外,還實作了局部正态分布的分割方法。

局部正态分布的實作使得算法在處理亮暗不一的多個星體時,正确率更高。

由于不是對全體像素使用同一個門檻值,即分割标準,k值的容錯區域更大,讓算法更加易于使用,更具有實效。

Otsu算法的基本思想是選取一個門檻值,使得按照這個門檻值将圖像劃分為兩個部分時,它們的類間方差最大,即達到最佳的分割效果。

根據類間方差的定義,為Otsu對于門檻值的判别标準。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

sb即為類間方差,w0、w1為被門檻值分割開的兩個像素集合,其像素數占圖像總像素數的比例。

U0、u1為兩個部分的像素值均值。

Otsu的關鍵在于找到一個門檻值使得sb的取值最大,此門檻值被認為是分割圖像的最佳門檻值。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

由于Otsu算法依賴于類間方差的統計特性,它對于兩類像素集合,目标(前景,星體)和背景(夜空)的大小(像素數多少)非常敏感。

當一方像素數過多,而另一方較少時,分割效果不太理想。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

這也使得這一方法在對夜空和星體之間分割的效果不好,尤其是在計算局部門檻值的時候。

是以,導星算法隻保留了全局的Otsu算法,供星體較多的拍攝場景選用。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

分割結果排除了大部分的背景像素,隻保留了可能為星體像素的像素值,不僅保證了星體内部像素的完整,也盡量保留了足夠明亮的較小星體。

綜上所述,圖像分割這一步驟,對天文圖像中可能屬于星體的像素以及屬于背景的像素做了一次基本的區分。

考慮到後面星體尋找和定位對于原像素值分布的需要,本文提出的導星算法并沒有采取通常定義的圖像二值化行為,而對于圖像分割這一步驟定義了明确的另一種語義。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

雖然同樣清除了背景像素值(将背景像素值設為了0),但對于星體像素則保留了原值。

這樣,後續步驟便能夠參考星體像素集合中的像素值分布資訊。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

星體尋找

經過了圖像分割的步驟,天文圖像中的背景像素已經被清除,剩下的像素值不為零的像素都通過了對于星體像素的第一個測試,即亮度測試。

然而,在被認定是星體成像的一個像素之前,還需要對此像素的鄰域進行考察,看其是否滿足條件。

星體尋找步驟就是根據這後面的兩個條件,對像素鄰域進行考察,并對目前像素是否是星體像素做出結論。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

實作的導星算法,其星體尋找步驟的目的就是根據圖像分割後的像素分布,找出可能是星體成像的像素集合,進行記錄的同時,将結果送入後續步驟以進行進一步的處理。

由此可知,對于星體尋找算法來講,其根本任務就是分析像素鄰域的像素值分布,并作出鄰域部分是否為星體像素的判斷。

對鄰域的分析方式便是星體尋找算法最主要的部分。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

由于在掃描全圖之前,算法無從得知星體成像在圖像上的像素大小,即無法在尋找星體之前就确定後續用來分析的鄰域定義的大小。

是以,一般星體尋找算法的實作都是先預估一個大概的成像大小,然後使用這一大小在周遊像素時擷取鄰域,并進行進一步考察。

由于其在搜尋時使用的鄰域大小固定,是以得名固定搜尋框箅法。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

這種算法的優勢在于簡單,快速,其判斷标準一般是搜尋框中出現的星體像素比例。

如果比例夠大,就認為搜尋框中出現了一個星體。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

然而,這種過于簡單的思考方式會導緻以下幾個對結果準确性有嚴重影響的問題:

1.搜尋框過大,會包括進不必要的像素,對星體的實際大小估計和中心定位造成影響。

甚至還可能在搜尋框内包含多個星體。

2.搜尋框過小,無法完全包括星體成像的所有像素,同樣會對星體的尺寸和位置估計産生不利影響。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

3.容易造成重複識别和漏識别,一個像素可能被認為是多個星體,而一個星體可能被包含在另一個搜尋框中,而被遺漏。

4.預設的矩形搜尋框在确定星體像素集合時,與星體成像的一般形狀有偏差。

并且可能由于實際拍攝時星體成像的形變,而包含過多的背景像素。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

其中,除了重複識别的問題可以通過對星體像素進行标記的方法解決外,其它的問題都與算法本身使用固定搜尋框的特性相關。

如果不拋棄這一限制,則這些問題會一直存在,并對星體(屬于某個星體的像素集合)識别的準确性産生非常不利的影響。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

星體尋找算法,在考慮到固定搜尋框的多種缺點的基礎上,摒棄了搜尋框固定大小的前提,對使用固定搜尋框的星體尋找算法進行了以下兩點改進:

1.采用在實際搜尋時,大小會自适應改變的搜尋框來進行搜尋過程。

這祥做,可以更加精确的擷取星體像素集合。

2.對搜尋框預設的矩形鄰域進行了改變,同時采用了兩種形狀的搜尋框來提高對星體像素集合的定位準确性。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

動态搜尋框的基本原理就是,首先設定一個最小的星體尺寸。

作為搜尋一個像素的鄰域時使用的初始搜尋框大小,然後根據這個初始搜尋框中像素的分布,判斷是否可能包含星體或星體的一部分。

如果包含,說明搜尋框正在一個星體附近,則應該擴大搜尋框搜尋這個星體成像的邊界。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

在擴大之後,需要通過新加入的像素以判斷星體像素集合的邊界所在,直到擴大的搜尋框包含了全部星體像素,具體步驟如下:

1.依次考察圖像中的每個像素,除非已經被标記為某個星體的像素。

2.在考察p(i,j)像素時,首先以預設的最小搜尋框尺寸建構初始搜尋框,判斷搜尋框邊界是否包含星體像素。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

3.若為星體像素,則開始按照相應擴張規則擴張搜尋框,繼續下一步。

否則回到第2步并考察下一個像素。

4.在擴張後的搜尋框判斷新邊界像素(擴張後加入的像素)中是否有星體像素,若有,則繼續按照相應的規則擴張,并疊代此步驟。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

沒有則設定搜尋框中的像素為屬于星體的,認為目前搜尋框包含一顆星體,并記錄下此星體的區域資訊。

5.回到第2步考察下一個不屬于星體的像素。

這樣的動态擴張過程賦予了搜尋算法對于星體大小的自适應性,無論星體是否全部包含在初始的搜尋框中,最終的搜尋框都會包含完整的星體像素集合。

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

其劣勢在于對于每個星體像素都需要不斷擴大搜尋框,進行多次嘗試,速度較慢。

參考文獻

抑制圖像中的噪聲,為了判斷像素與星體的差別,需要用到圖像分割

繼續閱讀