相位解包裹(五)枝切法(Goldstein’s branch cut algorithm)
上一篇文章講了相位解包裹算法的分類,那從這一篇文章開始,就可以開始介紹具體的相位解包裹算法了。
因為介紹過了殘點的運算,所以這里首先介紹利用殘點的特性去進行相位解包裹算法的一種經(jīng)典算法,枝切法(Goldstein’s branch cut algorithm)。枝切法的解包裹是和路徑有關(guān)的,所以其屬于空間相位解包裹中的一種。
?
殘點的極性(polarity/charge)
從殘點的計算我們得知,在一個2*2的小區(qū)域里面求相位差的環(huán)路積分,結(jié)果可能為0,±1(所有結(jié)果都除2pi),+1成為正殘點(positive),-1成為負殘點(negative),這一屬性成為殘點的極性(polarity)或者charge(實在不知道怎么翻譯)
可以得到,相位差的環(huán)路積分,實際就是經(jīng)過多少個正負殘點charge的和的2pi倍
之前一直說,相位解包裹因為殘點存在,是一個與路徑有關(guān)的過程,那怎么可以讓他變成一個與路徑無關(guān)的過程呢?
從上面的式子可以看出來,要是相位差的環(huán)路積分等于0,就需要讓charge為0,那怎么才能為0呢,就是即路徑經(jīng)過的區(qū)域里,殘點的charge被平衡(balance)了,意思是區(qū)域中正負殘點的數(shù)量相等。只要所有區(qū)域的正負殘點都是平衡的,那相位解包裹的過程自然就和路徑?jīng)]有關(guān)系了。
空間相位解包裹的基礎(chǔ)就是殘點的理論,通過設(shè)置一些障礙,例如連接殘點的branch,讓解包裹的路徑繞開這些障礙,解包裹就能順利進行。
以上討論都是正常情況,假如認(rèn)為假如噪聲,導(dǎo)致計算的殘點不等于±1,這些特殊情況需要另外討論。
?
枝切法
枝切法就是利用連接殘點的branch,讓解包裹路徑躲開這些區(qū)域的相位解包裹的算法。其最重要的貢獻還是如何連接殘點。
算法的核心:通過枝節(jié)(branch)連接距離最近的正負殘點,并使它們達到平衡(balance)
?
殘點的連接
對于用branch連接殘點是有講究的,如下圖(a)從A到B解包裹,有3條路徑,明顯中間的路徑經(jīng)過了殘點的區(qū)域,自然得到的結(jié)果和另外兩條路徑會不一樣。假如像圖(b)一樣把正負殘點連接使它們平衡,解包裹的路徑需要躲開branch,只能走另外兩條路的其中一條,不管哪一條,它們的結(jié)果都一樣。但如果像圖(c)一樣,通過吧殘點和相位圖邊界連接起來以平衡它們,那么解包裹路徑還是會選擇中間錯誤的路。
所以如何 通過branch連接正負殘點,是需要一定的法則,如下圖,連接殘點的branch應(yīng)該盡可能短。Goldstein等提出的方法,也只是能解決部分殘點連接的問題,不是一個完美的方案,在他以后還有很多研究者提出各種各樣的方法,要根據(jù)情況來決定算法的選取。這里也只討論Goldstein枝切法一種。
?
Goldstein枝切法殘點連接
1、首先當(dāng)然是需要掃描檢測出所有的殘點。
2、將一個3*3的搜索窗放在殘點的位置,尋找別的殘點。如果找到了,將它們用branch連接起來。
? ? (1)如果另一個殘點的極性與當(dāng)前殘點相反,那么就認(rèn)為這一個branch是已經(jīng)平衡了,打上“balanced”標(biāo)記。
? ? (2)如果另一個殘點的極性和當(dāng)前殘點相同,那搜索窗就放在新檢測到的這個殘點的位置,繼續(xù)尋找殘點,直到找到極性相反的殘點并將它們用branch連接起來且他們charge的總和為0(也就是平衡了balanced);或者在搜索窗中再無殘點被檢測到,如果是后面這種情況,那么搜索窗會增大2,也就是變成5*5的窗,繼續(xù)從開始的那個殘點開始檢測別的殘點。
?
肥腸重要,一定要注意:
1、當(dāng)在搜索窗中檢測到了殘點,都要將它們用branch連接起來。如果檢測到的這個殘點之前還未被用branch連接過,那它的極性需要加到charge里面來,如果連接過了的就不需要加。(目的就是要用branch上殘點的charge總和為0,使它平衡)
2、如果在搜索窗遇到了相位圖的邊界,那直接把branch和邊界連接,同時認(rèn)定這一branch的charge總和為0。
3、之前講過,殘點實際是一個2*2的小區(qū)域,我們標(biāo)記這個小區(qū)域左上角的那個像素為殘點,但在殘點的連接中,不需要連接被標(biāo)記的兩個像素,而是選擇兩個小區(qū)域最短的路徑將他們連接起來,就像下面的圖。
?
?
殘點連接示例
假設(shè),圖中所有殘點都已經(jīng)計算檢測出來,并且如圖(a),已經(jīng)連接了一個平衡了的branch,現(xiàn)在從右邊的正殘點開始檢測殘點并連接。
1、首先把3*3搜索窗放在右邊的正殘點上,沒有檢測到別的殘點,當(dāng)前charge的總和為1。
2、將搜索窗擴大為5*5的搜索窗,沒有檢測到別的殘點當(dāng)前charge的總和為1。
3、將搜索窗擴大為7*7的搜索窗,如圖(b)檢測到了箭頭指著的正殘點,將它們連接起來,由于檢測到的這個殘點已經(jīng)連接過了branch,所以當(dāng)前charge的總和還是為1。
4、7*7的搜索窗內(nèi)沒有檢測到新的殘點,且charge的總和不為0,將7*7的搜索窗移到箭頭所指的殘點上繼續(xù)檢測,檢測到了相位圖的邊界,將branch和邊界相連,charge的總和為0,這一branch已經(jīng)平衡,結(jié)束檢測。
?
?
枝切法相位解包裹
完成殘點連接的工作,所有branch都已經(jīng)平衡了之后,可以開始相位解包裹了,過程類似以flood fill算法。
1、選擇一個非branch上的點作為起始點,標(biāo)記為已解包裹,將它的4鄰域的非branch的點,用Itoh方法解包裹,入隊
2、只要隊列不為空,首個元素出隊,將該點的4鄰域未曾入隊、非branch且未解包裹的點,用Itoh方法解包裹,入隊
3、重復(fù)步驟2,直到所有非branch上的點全部被解包裹
4、對于在branch上的點,根據(jù)他們的鄰域中已解包裹的點的相位,對它們逐一解包裹。
?
?
最后,本文的理論和圖片,都出自 Two-Dimensional Phase Unwrapping: Theory, Algorithms, and Software,我只是當(dāng)了個翻譯工、搬運工,根據(jù)自己的理解寫出來而已,如果需要更詳細的理論,可以自己查閱或者一起交流。
?
參考文獻:
[1] Ghiglia D C, Pritt M D. Two-dimensional phase unwrapping: theory, algorithms, and software[M]. New York: Wiley, 1998.
[2]?Goldstein R M, Zebker H A, Werner C L. Satellite radar interferometry: Two-dimensional phase unwrapping[J]. Radio science, 1988, 23(4): 713-720.
?
聲明:作者水平有限,如文中有錯,請務(wù)必留言指正。如有學(xué)習(xí)交流需要,也可通過郵箱zhenyuchung@m.scnu.edu.cn聯(lián)系我,大家一起討論學(xué)習(xí)。
總結(jié)
以上是生活随笔為你收集整理的相位解包裹(五)枝切法(Goldstein’s branch cut algorithm)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 数据库事务隔离标准分析
 - 下一篇: 分布式存储对比