心电信号去噪(part3)--数学形态学
本系列上一篇(中值濾波器)指路:https://blog.csdn.net/m0_37422217/article/details/90739660
注:這里是以小型手持心電圖機為研究對象的(單導聯(lián))
上一篇中我們說到中值濾波器可以較好的去除基線漂移的噪音,此外數(shù)學形態(tài)學也可以很好的去除基線漂移,并且數(shù)學形態(tài)法也可以去除其他類型的噪音。
數(shù)學形態(tài)法原理
數(shù)學形態(tài)學是一門建立在嚴格數(shù)學理論基礎上的學科,它提供了一種有效的非線性信號處理方法,可以很好地保持信號的幾何信息。數(shù)學形態(tài)學最基本的概念是結構元素,它本身具有一定的形態(tài)(如點、線段和圓等),相當于一個`探針',
在圖形中不斷地移動結構元素,便可考察出圖形各部分間的關系,類似于人的注意焦點(focus of attention,FOA)視覺特點,結構元素可直接攜帶圖形知識(形態(tài)、大小等)。用不同的結構元素來處理一維信號可以得出不同的結果.[1]
腐蝕和膨脹是數(shù)學形態(tài)學中最基本的運算,其定義如下:
設信號序列?f?為定義在?F={0,1,…,N-1}上的序列函數(shù),結構元素?k?為定義在?K={0,1,…,M-1}上的函數(shù),其中?N>M,那么結構元素?k?對信號?f?的腐蝕運算可以定義為:
?
?其中?m=0,1,…,N-M。
結構元素?k?對信號?f?的膨脹運算可以定義為:
其中?m=M-1,M-2,…,N-1。
信號?f?被膨脹的結果就是把結構元素?k?平移后使集合?K?與集合?F?交集非空點構成的集合,其作用效果是集合?F?呈現(xiàn)出的圖像擴大了。而腐蝕的結果就是把結構元素?k?平移后,使集合?K?包含于集合?F?交集所有點構成的集合,其作用效果是使集合?F?呈現(xiàn)出的圖像縮小。
膨脹和腐蝕運算還可以組成開(opening,)、閉(closing,?)、擊中、薄化、厚化等幾種運算方式。其中開(opening,)、閉(closing,?)的定義為:
數(shù)學形態(tài)學理論認為,開運算和閉運算分別是在信號的下方和上方移動結構元素。開運算可以削除信號“波峰”,具有收縮性,消除信號孤立點,抑制正脈沖噪聲,使信號光滑;閉運算則可以填充信號的“波谷”,具有擴張性,可抑制負脈沖噪聲。開閉運算均具有低通特性。
以下,分別給出開、閉運算對一段ECG信號進行處理結果:
黑色線為原始心電信號,黃色線為開運算對心電信號的處理結果,可以看出開運算削除了信號“波峰”:
同樣,黑色線為原始心電信號,藍色線為閉運算對心電信號的處理結果,可以看出開運算填充了信號“波谷”:
PS:原作者用細實線組成的波形均代表原始心電信號,粗實線構成的波形代表開、閉運算處理后的心電信號,但是我實在是有點看不清粗細,就給他用不同顏色表示了。。。。
形態(tài)濾波器的實質(zhì)是通過組合運用開、閉運算,消除信號中特定寬度的波峰和波谷。信號中實際被濾除的成分與運算中所采用的結構元素有關,如結構元素的寬度為M,信號中波峰或波谷的寬度為N,則有:
?
為了可同時去除信號中的正負兩種脈沖噪聲,Maragos采用開、閉運算的級聯(lián)組合形式,定義了形態(tài)開閉(open-closing)和閉開(close-opening)濾波器:
?
由于開運算的收縮性導致形態(tài)開-閉濾波的輸出偏小,閉運算的擴張性又導致形態(tài)閉-開濾波的輸出偏小,很大程度上影響了濾波器高效去除噪聲的性能,所以為減少偏移的發(fā)生,取得較好的濾波效果,我們并不單一地使用它們,而是通過形態(tài)開-閉和形態(tài)閉-開級聯(lián)對信號進行濾波,設信號為f,則通過形態(tài)學濾波后的數(shù)學表達式為:
結構元素
結構元素是數(shù)學形態(tài)學濾波器中的一個非常重要的參數(shù),在心電信號預處理領域中,它的形狀、寬度和高度決定著濾波的效果。
(1)形狀:選取的結構元素的形狀要盡可能接近待分析信號的圖形特點。結構元素有一些不同的形狀,如三角形、圓形和直線形等。
(2)尺寸:結構元素的尺寸包括寬度(結構元素定義域的寬度)和高度(結構元素的幅值)。其中結構元素的寬度對信號的處理效果影響更大。選取結構元素的尺寸應大于被濾除信號的尺寸,但小于被保留信號的尺寸。若選取的寬度較大,則可能會濾除特征波形,引起失真,若寬度較小,則不能完全濾除噪聲。
?
實例1
這里我們采取直線型結構元素的數(shù)學形態(tài)學濾波器,直線型結構元素的寬度應大于心電特征波形的寬度,使得這些特征波形都被濾除,只剩下基線漂移信號,再用原信號減去獲得的基線干擾信號,即可獲得濾除了基線漂移干擾后的心電信號。這里我取寬度M=65(特征波形最大寬度*采樣頻率)
代碼:
% x 為原始信號 % 關于strel函數(shù)的具體用法,請見:https://blog.csdn.net/qwerasdf_1_2/article/details/54376657se1 = strel('line', 65, 0); %設置為線性,長度為65,角度為0 fo1 = imopen(x, se1);%開運算 fc1 = imclose(x, se1);%閉運算 foc1 = imclose(fo1, se1); %開-閉運算 fco1 = imopen(fc1, se1);%閉-開元算 x = x - floor((foc1 + fco1)/2);原始信號:
處理后信號:
.。。。。。嗯。。。感覺有點一言難盡呀
實例2
也有參考文獻指出,可以先利用第一組形態(tài)濾波模塊,提取心電信號中的QRS波群;再利用第二組形態(tài)濾波模塊在第一組的基礎上,提取P波和T波,最后將兩者加總,就可以剔除基線漂移產(chǎn)生的噪音了。我們試一試:同樣選取直線型結構元素的數(shù)學形態(tài)學濾波器,第一組結構序列寬度M1= 25,第二組結構序列寬度M2 = 65。
代碼:
seA = strel('line', 25, 0); %設置為線性,長度為25,角度為0 fo = imopen(x, seA); fc = imclose(x, seA); foc = imclose(fo, seA); fco = imopen(fc, seA); xb2 = floor((foc + fco)/2); QRSx = x - xb2; %QRS波提取seB = strel('line', 65, 0); %設置為線性,長度為65,角度為0 fo = imopen(xb2, seB); fc = imclose(xb2, seB); foc = imclose(fo, seB); fco = imopen(fc, seB); xc = floor((foc + fco)/2); TPx = xb2- xc; % P波 T波提取 x = QRSx + TPx;處理后信號:
看起來,好像比例1稍微好一點。。。。。吧
主要參考文獻:
[1]基于形態(tài)學濾波器的ECG信號預處理
[2]基于FIR濾波和數(shù)學形態(tài)學的心電信號預處理算法
[3]ECG去噪和R波檢測的算法研究
[4]心電信號去噪的數(shù)學形態(tài)學濾波器
[5]基于 EMD 的心電信號去噪方法研究及實現(xiàn)
下一篇(EMD)指路:https://blog.csdn.net/m0_37422217/article/details/90922047
總結
以上是生活随笔為你收集整理的心电信号去噪(part3)--数学形态学的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《魔兽世界怀旧服》月亮井在哪 月亮井具体
- 下一篇: 红警3世界大战作弊码秘籍