close




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

主要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) 人氣()