討論如何「完全正確地」從超音波訊號,計算得到血流速度,以及如何將此速度以雙聲道聲訊方式播放出來。

主要focus在Spectrum Separation時的注意事項,還有做偶數長度的DFT時,可能產生的問題。


鍵字

Audio doppler, ultra sound, spectrum Separation, matlab, DFT.




這學期有幸擔任助教,作業其中一題便是實作audio doppler。

之前修課因為時間進度關係,沒有操作過spectrum Separation,所以寫這題時難免考慮不周。

最後統整了各種問題與解法,記錄在此。

ㄏㄏ


使用軟體

聖明偉大的吾主 Matlab




先說明「血流速度」。

遙想高中回憶中的都卜勒效應,沒錯,

離你遠去的救護車「哦咿哦咿」聲聽起來頻率愈來愈低,而向你接近的「哦咿哦咿」聲聽起來愈來愈高亢。

ambulance 


根據收到的訊號頻率,可以回推出該物體移動的方向與速度。

公式請翻課本或估狗。


得到血流速度,其隨時間變化的週期性,即為心跳頻率(註一)。



接下來,該如何處理這段超音波訊號呢?

首先我們已經得到了一段時間的超音波訊號(註二)。


將其spectrogram(註三)畫出來,可觀察到其包含正負頻率,並不是以fs/2為中心呈現左右對稱

這是一組包含兩種資訊的訊號。

SS0  

我們要做Spectrum Separation,將正負頻分離,各組成一個完整的頻譜。

SS  

將兩個頻譜轉到時域,以左右兩個聲道播出,即為Audio doppler。

FD  


最重要的一步:Spectrum Separation,看似簡單的步驟,卻挑戰操作者對於DFT的理解。

以DFT來說,通常是進行2的次方數的DFT運算(註四),也就是以偶數個點來sample連續的頻譜。


如此操作出來的頻譜,不會是對稱的


這個結果有點違反直觀(?),以下面的訊號為例:

(自己產生一個包含四種頻率的訊號)

code   (註五)

時域:

x

頻域:

x_spec  


雖然頻域在圖片上是精美的對稱,但從數值上看,

是以第129點為中心,而在最後少了一點。

array  


進行DFT的頻譜操作時,這種「不對稱」往往會被人忽略,而造成錯誤的結果。

這一點就是藏在Spectrum Separation裡的魔鬼。

 

下圖是自己產生的「包含正負頻的頻譜」(只是將x的負頻部分乘上scale)

將以此頻譜進行spectrum Seperation的步驟。

mod_spec  



進行偶數點數的Spectrum Separation的實數部分,步驟如下:

SS2  


虛部部分,因為我們要產生的是實數聲音訊號,所以其頻率以0為中心呈Complex conjugate(註六)

……


照上述步驟,完成結果如下。

實數部分:

g_spec_real  

虛數部分:

g_spec_img  

完成Spectrum Separation後,進行IFFT,即可得到兩組時域訊號,分別取實部部分放在左右聲道,就可以聽到Audio doppler的心跳聲了。

時域:

gx  

看起來和原始x很像,為了驗證,將兩者相減:

sub  

虛數部分的確為0,實數部分差距落在10e-15左右,比起原scale可無視。

故此方法為「完全正確」。


過程中特別要注意的是:對稱中心的選擇。

因為要符合「頻率以0為中心呈Complex conjugate」的原則,所以選擇到的中心點(頻率為0這一點),必須虛部為0




實行Audio doppler時,要考量到偶數點DFT時產生的頻譜並非對稱,

故在進行Spectrum Separation時,翻轉的部分需注意範圍。


這一題完全沒有人寫對,老師與其說是出給學生寫,不如說是在考驗助教=_=



如果……實作時沒有將以上納入考量的話,會怎麼樣呢?

答案是,也不會怎麼樣

些微的頻率偏移或時間差,人耳根本察覺不出來。


頂多證明了DFT充滿了該注意的細節吧ㄏㄏ






--------------------------------------------------

註一
心臟收縮->血流變快,心臟舒張->血流變慢;完成一次收縮舒張->心跳一次。

註二
如何得到不在這篇討論範圍內,不外乎去醫院量之類的。

註三
一張3維的圖,可看每個時間點的頻率分佈與強度。偉大的M神已有函式spectrogram()可支援。

註四
因為通常是用radix=2的FFT來實行DFT運算。

註五
進行很少點數的DFT(ex:8點)時,可以輕易看出不對稱,
但是用這麼少點數的DFT會造成另一種distortion,解釋太麻煩了,故在此使用256點。

註六
請翻閱寶典<Signals and System>或<Digital Signal Processing>

註七
上述內容如有錯誤,歡迎留言指正

--------------------------------------------------

arrow
arrow

    卡滋里滋多里多滋 發表在 痞客邦 留言(1) 人氣()