超聲仿真軟件Field II學(xué)習(xí)筆記系列一:模擬發(fā)射聲場強度并繪圖輸出結(jié)果


前言
Field_II是丹麥超聲專家J. A. Jensen等利用聲學(xué)原理設(shè)計的一個超聲系統(tǒng)。它可以仿真超聲探頭所形成的聲場和超聲圖像等。雖然其在Matlab上進行仿真,但是它的建模計算主要采用封裝的C語言來實現(xiàn),這部分代碼并沒有開源,matlab代碼只是用來配置參數(shù)和調(diào)用函數(shù)。用戶手冊只是對命令流進行簡要介紹,缺少必要的解釋或案例,加之網(wǎng)上的教程很少,因此該軟件對我個人而言簡直是晦澀難懂。本貼結(jié)合了網(wǎng)上零星的案例、本人購買的教程以及自己的學(xué)習(xí)心得,一是為了記錄自己的學(xué)習(xí)過程,二是為了分享交流和討論。如果把官網(wǎng)的用戶手冊比作是心法,希望本貼能夠成為你學(xué)習(xí)超聲仿真的招式,祝你在超聲領(lǐng)域有所成就。
正文
0.參數(shù)配置
? ? ? ?首先是所有仿真模擬的第一步,對參數(shù)進行配置。
1 設(shè)置發(fā)射孔徑
? ? ? ?在Field II中,有關(guān)換能器的命令通常是以xdc_開頭,這里使用xdc_linear_array命令創(chuàng)建一個線陣換能器。其中的focus參數(shù)一直令我費解,暫時按下不表,有理解的同學(xué)歡迎不吝賜教,謝謝。


接下來,將對不同參數(shù)下的換能器陣列進行配置和繪圖顯示,以期能夠直觀的理解發(fā)射孔徑的創(chuàng)建。
1.1 單一陣元換能器
? ? ? ? 定義單一陣元換能器,陣元個數(shù)為1,x和y方向上的子陣個數(shù)也設(shè)置為1:N_elements = 1, N_sub_x=1; N_sub_y=1。
? ? ? ? 用show_xdc命令繪制換能器,結(jié)果如圖所示。

需要注意的是,N_sub_x和N_sub_y是對陣元的進一步細分,使計算結(jié)果更加精確,并不影響仿真計算的結(jié)果。如圖4,按照N_sub_x=10,N_sub_y=10進行設(shè)置。

1.2 創(chuàng)建陣列換能器
在這里,使用xdc_focus_array
指令創(chuàng)建聚焦換能器陣列,命令的用戶手冊說明如圖5所示,陣列換能器的部分參數(shù)可以參考圖6,代碼如下:


其中,Rfocus參數(shù)定義了換能器的曲率半徑,同樣用show_xdc命令繪制創(chuàng)建的換能器,如圖7所示。

2 設(shè)置換能器的激勵和脈沖響應(yīng)
在定義好發(fā)射孔徑之后,接下來使用xdc_excitation()
函數(shù)設(shè)置發(fā)射孔徑的激勵脈沖Excitation,代碼如下:
之后,使用xdc_impulse()
函數(shù)設(shè)置換能器發(fā)射孔徑的脈沖響應(yīng)Transducer impulse response
注意,這里設(shè)置的是發(fā)射孔徑的激勵脈沖和發(fā)射孔徑的脈沖響應(yīng),而二者的卷積是我們要計算和得到的空間脈沖響應(yīng)Spatial impulse response,不知道我理解的對不對。繪制激勵脈沖和脈沖響應(yīng)如圖8所示。


3 計算并繪制發(fā)射聲場強度
Field II可以計算空間中某點、某線以及某平面上的空間脈沖響應(yīng)和聲場強度。使用的是calc_h和calc_hp函數(shù),如圖10和11所示。


這里以聚焦陣列換能器為例,對其發(fā)射聲場的聲場強度進行繪制顯示計算結(jié)果。
3.1 空間某點計算結(jié)果
繪制空間中(0,0,60mm)處的空間脈沖響應(yīng)和聲壓,那么用到的代碼如下:


3.2?空間某線上的計算結(jié)果
選擇(-20,0,60)mm到(20,0,60)mm處選擇101個測量點形成一條線,計算聚焦換能器陣列在60mm深度處的空間脈沖響應(yīng)和聲場強度。代碼如下:


比較圖13和圖15我們可以發(fā)現(xiàn),聲場強度都是時間的函數(shù),其實這很好理解,因為聲波是從孔徑向外傳播的,因此在空間中的某點或某線的聲強,是從無到有的,當聲波還未傳播至此則聲強為0,隨著時間的推移,聲波也慢慢傳播過來了。細心的朋友可能會發(fā)現(xiàn),無論是點還是線的聲場強度hp的時間軸都不是從0開始的,而是從start_time開始的,并且記錄到的聲場強度的持續(xù)時間也是有限的,這其實就會帶來一些問題,比如無法繪制在整個計算空間中聲場強度隨時間的變化。
3.3 平面上的場強
計算xz
切面方向上的聲場強度,其中x
的變化范圍為-15mm至15mm,z
的變化范圍為5mm至150mm。照葫蘆畫瓢,平面中的聲場強度也比較好計算,代碼如下:
其實計算平面場強并不難,當時困擾我的并不是計算,而是聲場的繪制,一直得不到跟網(wǎng)上案例一致的結(jié)果,糾結(jié)了很久,后來發(fā)現(xiàn)其實我的計算沒有問題,主要是繪制的方式不得其法,有兩個要點:1是歸一化,2是將聲強用對數(shù)表示。圖16得到的是歸一化的計算結(jié)果,圖17是每個深度點歸一化的計算結(jié)果。
在這里再啰嗦幾句,不同于點和線的聲場強度的展示方式,平面聲場強度里并沒有時間軸,我個人推測對于發(fā)射聲場更關(guān)注的是聲場分布,而不是聲場的變化。因此真實的場強,應(yīng)該是隨時間在空間中移動變化的。

