حذف نویز از سیگنال ECG توسط موجکها
منبع: راسخون
مقدمه
در سالهای اخیر پردازش سیگنال های قلب (ECG) به منظور تشخیص اولیه مشکلات قلبی ، کاربرد گسترده ای یافته است. اولین گام برای تحلیل سیگنال حذف نویزهای موجود در سیگنال بدست آمده است.سیگنال ECG در واقع سیگنالی الکتریکی است که توسط بافت عضلانی قلب در هنگام انقباض و انبساط ایجاد میشود. این سیگنالهای توسط الکترودهای در نزدیکی قلب و از روی پوست جمعآوری شده و اطلاعات مفیدی از نحوهی عملکرد قلب می دهند. شکل موج یک دوره از ضربان عادی و سالم قلب مشابه شکل 1 است. سیگنال ECG دارای پالسهایی با فرکانسها و دامنههای متفاوت است. رفتار متغییر با زمان این پالسها، سیگنال ECG را یک سیگنال غیرایستا (Non-Stationary) میسازد.
شکل 1 ) شکل موج یک ضربان عادی قلب سالم
الف) تغییرات در پایه سیگنال (Baseline Wandering) که بصورت یک نویز فرکانس پایین مدل میشود.
ب) تداخل نویز 50 – 60 Hz ناشی از خطوط برق که در مقایسه با فرکانس سیگنال قلب، نویز فرکانس بالا محسوب میشود
پ) سیگنال EMG (Electromyogram) که سیگنالی الکتریکی ناشی از عضلات غیر قلب اطراف الکترودها می باشد.
ت) نویز ایجاد شده به علت تغییرات در امپدانس اتصال الکترود با پوست بدلیل جابجایی الکترودها روی پوست در زمان ثبت سیگنال
با استفاده از تبدیل موجک گسسته، سیگنال به یک سیگنال تقریب (Approximation) و یک سیگنال جزییات (details) تجزیه میشود و میتوان سیگنال تقریب را مجدد با استفاده از تبدیل موجک به دو بخش تجزیه کرد و این روند را برای تعداد مراحل موردنظر ادامه داد، در انتها مجموعهای از سیگنالهای جزییات و سیگنالهای تقریب بدست میآید. (شکل 1)
برای حذف نویز از سیگنال اصلی، با آستانه گذاری برای سیگنال جزییات در مراحل مختلف، میتوان جزییات ناخواسته سیگنال را که حذف کرد. پس از این آستانهگذاری، با تبدیل موجک معکوس سیگنالهای جزییات و تقریب را مرحله به مرحله ترکیب کرد و در نهایت به سیگنال بدون نویز دست یافت. این مراحل در شکل 1 قابل مشاهده است.
با توجه به روند ذکر شده، اولین گام در حذف نویز انتخاب موجک مناسب برای سیگنال ECG و سپس انتخاب تعداد مراحل اعمال تبدیل موجک است. همچنین انتخاب آستانه مناسب بسیار حائز اهمیت میباشد زیرا با آستانهگذاری باید بگونهای باشد که جزییات غیرضروری یا بعبارتی نویز را حذف شوند در حالیکه جزییات ضروری سیگنال اصلی حفظ شوند.
پس از گذر از بخش تئوری، بحث پیادهسازی این سیستم پردازش سیگنال دیجیتالی مطرح میشود. با توجه به کند بودن تغییرات در سیگنال ECG ، فرکانس نمونهبرداری تقریبا کمی، معمولا 0.5 KHz و گاهی 1 KHz، بکار میرود، بنابراین مسئله فرکانس عملیاتی و سرعت محاسبات چالشی در این پیادهسازی محسوب نمیشود. از سویی دیگر تمایل به مصرف توان و مساحت اشغالی پایین همواره وجود دارد. در این مقاله FPGAای از شرکت Xillinx و از خانواده Spartan6 مدل XC6SLX4 جهت پیادهسازی هدف قرار داده شده است. این FPGA در خانواده خود کوچکترین است و این انتخاب کمترین مساحت و توان مصرفی را در این مقاله هدف گذاری میکند.
شکل 2) شکل نویزهای متداول آلاینده سیگنال ECG و شکل نویز مرکب آنها [1]
بخش دوم : بررسی چند پژوهش در زمینه انتخاب موجک و آستانه مناسب
در [1]، 7 موجک متفاوت در 5 مرحله و با شیوههای متفاوت انتخاب آستانه آزموده شده است و نتیجه گرفته اند که موجک Sym9 با روش انتخاب آستانه MinMax و در 5 مرحله بیشترین بهبود SNR را نتیجه داده است. برای سایر موجکها نتایج آزمایش در جدول ذیل آورده شده است. سیگنال ECG مورد آزمایش در این پژوهش از بانک اطلاعاتی MIT-BIH Arrhythmia گرفته شده است و سیگنال نویزی با اضافه کردن نویزهای نشان داده شده در شکل (1) بعلاوهی 5db نویز سفید به سیگنال سالم، بدست آمده است.جدول 1 ) نتایج شبیهسازی حذف نویز برای موجکهای مختلف [1]
در [3] نشان داده شده است که اگرچه Sym8 در حذف نویز از قسمتهای فرکانس پایین سیگنال ECG موفق است اما به قسمتهای فرکانس بالای این سیگنال آسیب میرساند.
بخش سوم : نتایج آزمایش چند موجک و انتخاب موجک مناسب
در مقالات مطالعه شده از میان موجکهای موجود، موجکهای خانواده Dabuchies و Symlet مناسب معرفی شدهاند. با بررسی شکل موج این موجکها، بطور شهودی درک میشود که این موجکها از نظر شکل به پالسهای موجود در سیگنال ECG شبیه میباشند و معیار انتخاب یک موجک در واقع میزان شباهت آن با سیگنال مورد بررسی است.از میان این دو خانواده موجکهای DB4 , DB8 و Sym8 , Sym9 , Sym10 در مطلب بروی سیگنال نویزی آزموده شدند. که در این میان اگرچه Sym10 و DB8 اندکی بهتر هستند ولی با توجه به هدفگذاری توان مصرفی و مساحت پایین در پیادهسازی، استفاده از موجکهایی با فیلترهای مرتبه پایین، در صورتی که کیفیت حذف نویز تغییر جدی نکند، ترجیح داده میشود. با توجه به این موضوع موجک DB4 با فیلترهای 8 مرتبه ، انتخاب شده است. در این شبیهسازیها از شیوهی Fixed Thresholding یا Univeral Thresholding برای انتخاب آستانه استفاده شده است که بسته به انحراف از معیار و تعداد نمونه سیگنال نویزی آستانه برای هر مرحله تعیین میشود.
شکل3 ) مقایسه میزان خطا آشکارسازی موجکها مختلف به ازای آستانه گذاری Hybrid SURE
شکل 4 ) نتایج آزمایش موجکهای مختلف یا آستانه گذاری ثابت بروی سیگنالی با نویز متوسط
بخش چهارم : الگوریتم و معماری سختافزار برای پیاده سازی سیستم حذف نویز
اولین گام در طراحی سیستم دیجیتال حذف نویز توسط تبدیل موجک، طراحی فیلترهای FIR برای موجک انتخابی است. با انتخاب موجک DB4، فیلترهای FIR مرتبه 8 مورد نیاز است. با توجه به اینکه هدف کلی پیادهسازی کمترین مساحت و توان مصرفی است، و از سویی دیگر فرکانس کار و سرعت محاسبات مسئله نیست، ساختار تکرارشونده برای فیلتر پیشنهاد میشود که شمای بلوک دیاگرامی آن در شکل 5 نشان داده شده است.شکل 5 ) نتایج آزمایش موجکهای مختلف یا آستانه گذاری ثابت بروی سیگنالی با نویز بالا
شکل 6 – شمای یک فیلتر FIR با ساختار تکرارشونده
فیلترهای F0 و F1 نیز باید بگونهای تغییر داده شوند که با فرکانس نمونهبرداری مرحله قبلی نمونهبرداری کنند، و به ازای هر نمونهای که از مرحله قبل دریافت میشود، یک نمونه اضافی صفر هم به عنوان ورودی به فیلتر تحویل داده شود. در مدول F1، علاوه بر دو برابر کردن نرخ نمونهبرداری، آستانهگذاری نیز باید لحاظ شود، بدین صورت که درهنگام پذیرفتن نمونه (x) از مرحله قبل، اگر از آستانه (Thsh) برزگتر بود، (x-Thsh) وارد شود در غیر این صورت صفر به ورودی فیلتر داده شود.( آستانه گذاری نرم)
موضوع دیگری که باید در مورد آن تصمیم گرفته شود، تعداد بیت ورودی/خروجی فیلترها و ضرایب فیلتر و تعیین میزان دقت آنها میباشد. تعداد بیت بالاتر اگرچه دقت را افزایش میدهد اما افزایش مساحت و توان مصرفی را نیز بدنبال دارد. کم کردن تعداد بیتها باعث کاهش دقت و افزایش نویز گسستهسازی(Quantization) میگردد. در این طراحی 12 بیت برای ورودی/خروجی و ضرایب فیلتر در نظر گرفته شده است که ورودی خروجی به شکل ممیز ثابت Q3.8 علامتدار و ضرایب به شکل Q1.10 علامتدار در نظر گرفته شدهاند. فرم Q3.8 به این دلیل انتخاب شده است که طبق شبیهسازیها در MATLAB، در مرحله چهارم تبدیل موجک،اندازه ضرایب تقریب از 4 بیشتر شده و در دو بیت صحیح نمیگنجد. اندازه انباشگر (Accumulator) در فیلترها، به اندازه جمع تعداد بیت موثر ضرایب فیلتر و ورودی به علاوهی بیت علامت، برابر 23 میباشد.
با توجه به ناچیز بودن جزییات در مرحلهی اول و دوم تبدیل، و براساس شبیهسازیهای صورت گرفته در MATLAB، این جزییات از آستانه عبور نمیکنند و در واقع حذف میشوند بنابراین برای استفاده بهینه از فضا و کاهش توان مصرفی، فیلترهای H1 و F1 مراحل اول و دوم را از سیستم حذف شده است.
باید توجه شود برای رساندن نمونههای جزییات از H1 مرحله سوم به F1 ، بصورت همزمان (Synchronized) با نمونههای تقریب، نیاز به شیفت رجیستری است که تاخیر ناشی از مرحله چهارم تبدیل بر نمونههای تقریب مرحله سوم را به نمونههای جزییات نیز وارد سازد.
در نهایت شمای کلی سیستم حذف نویز ، براساس مدولهای H0، H1، F0 و F1 و شیفت رجیستر(SR)، در شکل 7 مشاهده میگردد
شکل 7 ) شمای کلی سیستم حذف نویز توسط چهار مرحله تبدیل موجک
بخش پنجم : توضیح مدولهای Verilog طراحی
همانگونه که در بخش قبل شرح داده شد، چهار مدول متفاوت H0، H1، F0 و F1 تعریف شده و سپس در مدول اصلی با فراخوانی این مدولهای و اتصال صحیح آنها به یکدیگر، سیستم حذف نویز براساس چهار مرحله تبدیل موجک طراحی میشود. مدولهای H0 و H1 از نظر ساختار کاملا مشابه بوده و تنها در ضرایب فیلتر متفاوت میباشند. در ادامه هریک از مدولها بررسی میشوند.مدولهای H0 و H1 :
این مدولها در واقع همان فیلتر FIR با ساختار تکرارشونده (شکل 2) میباشند که DownSampling نیز در آنها تعبیه شده است.مدولها پارامتری نوشته شدهاند. L مرتبه فیلتر، M تعداد بیت ضرایب فیلتر، N تعداد بیت ورودی و lvl متناسب با مرحلهای است که این مدول برای آن فراخوانی میشود. برای مرحله اول lvl برابر یک و برای مراحل دو، سه و چهار به ترتیب برابر 2 ، 4، 8 است.
از آنجاییکه تمام مدولها براساس یک فیلتر با ساختار تکرارشونده میباشند، همه نیاز به یک شمارنده دارند و برای استفاده بهینه از فضا، یک شمارنده در مدول اصلی تعبیه شده است که مقدار آن به عنوان ورودی به زیر مدولها داده میشود. بنابراین هر مدول ورودی بنام counter دارد.
تغییر فرکانس نمونهبرداری توسط شمارندهی lvel صورت میپذیرد. بدین ترتیب که در ابتدا مقدار این رجیستر یک است و هنگامی نمونه ورودی پذیرفته میشود و خروجی داده میشود که مقدار این رجیستر با پارامتر lvl برابر شود. بنابراین مدولی که در مرحله اول قرار داشته باشد با یکبار 8 شدن شمارشگر نمونهگیری میکند و خروجی میدهد و مدول در مرحله سوم پس از 4 بار 8شدن شمارشگر اقدام به نمونهگیری میکند بدینگونه فرکانس نمونهبرداری در مرحله سوم 4/1 مرحله اول میشود.
در کلیه مدولها، در هنگام انتقال مقدار نهایی انباشگر، بدلیل اینکه فرمت انباشگر در واقع Q4.18 میباشد و فرمت خروجی Q3.8 تعریف شده است، و همچنین بدلیل اینکه با توجه به شبیهسازیها هیچگاه نتایج از 7 بزرگتر نمیشوند، بیت پرارزش (بعد از بیت علامت) حذف میگردد.
مدول F0 :
ساختار فیلتر این مدول و نحوهی تغییر فرکانس نمونهبرداری آن کاملا مشابه با مدولهای H است و تنها تفاوت آن در تعبیه شدن UpSampling در آن است. بیت پرچم (U) تعربف میشود و مقدار آن به ازای هر بار برآورده شدن شروط (counter =L) و (lvel = lvl)، تغییر میکند، بسته به اینکه مقدار U یک یا صفر است، نمونه از طبقه قبلی گرفته میشود یا ورودی صفر داده میشود. بدین صورت به ازای هر نمونهی طبقهی قبل، یک نمونه صفر هم به فیلتر داده میشود و UpSampling صورت میپذیرد.مدول F1 :
این مدول کاملا مشابه با F0 است و تنها تفاوت آن در تعبیه شدن آستانهگذاری قبل از پذیرفتن نمونه ورودی است. پارامتر Thsh مقدار آستانه را مشخص میکند. نمونه ورودی با این مقدار مقایسه میشود در صورت بزرگتر بودن، با کسر این مقدار از آن پذیرفته میشود و در صورت کوچکتر بودن از مقدار آستانه، ورودی صفر به فیلتر داده میشود.مدول اصلی :
در این مدول، یک ثبات شمارنده (counter) تعریف شده است که همان شمارنده سراسری سیستم است.مدولهایی که قبلا نوشته شده اند به ترتیب مراحل، فراخوانی (instantiate) و توسط wire های تعریف شده به یکدیگر متصل میگردند.
بخش ششم : نتایج سنتز و پیاده سازی بروی FPGA
در این بخش ورودی به مدول اصلی داده میشود سپس نتایج شبیهسازی Verilog که بهMATLAB منتقل شده است با نتایج بدست آمده از شبیهسازیهای تحت MATLAB مقایسه میشود همچنین گزارشی از میزان منابع استفاده شده از FPGA ارائه میشود.دادن نمونههای ورودی به شبیهساز Verilog (نرمافزار ISE):
سه نوع ورودی با سطح نویز متفاوت موجود است. این ورودیها طولانی میباشند و با جدا کردن 2048 نمونه از آنها (معادل 4 ثانیه) این ورودیها را در مطلب میخوانیم.برای وارد کردن این نمونهها به ISE، روش اصلی، ذخیره حاصلضرب اطلاعات بردار حاوی نمونهها در 28 درون یک فایل متنی است و سپس خواندن این فایل در ISE و قرار دادن اطلاعات در یک حافظه تا ورودی از این حافظه خوانده شود. اما میتوان با کپی کردن ستون نمونهها از ویرایشگر مطلب، و وارد کردن آنها در برنامه Excel، آنها را در 28 ضرب کرد و عبارت #9 X= را به ابتدای آن و “;” را به انتهای آن اضافه کرد و سپس ستون حاصله را در مدول تست (Test-Bench module) وارد کرد.
خواندن نمونههای از ISE و وارد کردن آنها به محیط MATLAB:
با نوشتن قطعه کد Verilog زیر در مدول تست، نمونههای خروجی در فایلی ذخیره میشوند. با پاک کردن "X" ها از اول فایل به وجود آمده، میتوان این فایل را در MATLAB بارگذاری کرد و اطلاعات آن را در برداری قرار داد و سپس خروجی را رسم کرد.Integer handle;
Initial begin
handle = $fopen (“out.txt”);
#1 forever #9 $fdisplay (handle,Y);
End
نتایج شبیهسازی Verilog برای حذف نویز توسط 4 مرحله تبدیل موجک، با استفاده از موجک DB4 و آستانهگذاری نرم در شکل 8 نشان داده شده است. در اینجا ورودی دارای نویز متوسط میباشد. همانطور که در شکل (ب) مشاهده میشود، تعدادی از نمونهها از دست رفتهاند که البته این در ابتدای شروع به کار سیستم رخ میدهد و با گذشتن 200 نمونه، خروجی ظاهر میگردد و پس از آن مشکلی پیش نمیآید. میتوان این مشکل را با وارد کردن 200 ورودی صفر جبران کرد.
شکل 8
شکل 9
میزان منابع مصرفی از FPGA :
این مدل از خانواده Spartan 6 دارای 8 مدول DSP داخلی (DSP48A1) است که هریک دارای یک MAC با ورودی ضرب کنندهی 18 بیتی و یک پیش جمع کننده میباشد. به عبارتی با ساختار تکرارشونده، هر مدول DSP در این FPGA میتواند یک فیلتر FIR را پیشتیبانی کند.مدل XC6SLX4، دارای 600 برش (slice) میباشد که 300 تای آنها دارای RAM و Register میباشند. بطور کلی این تراشه دارای ظرفیت 36 کیلوبیت ثبات میباشد. طبق گزارش ابزار سنتز ISE، تنها 7% از ثباتهای برشها استفاده شده اند و 46% از LUT های برشهای در تراشه مورد استفاده قرار گرفتهاند که تنها 41% از آنها به عنوان مدار منطقی مورد استفاده قرار گرفتهاند و بصورت کلی 56% از کلی برشها استفاده شدهاند.
خلاصه و نتیجهگیری :
با توجه به اهمیت پردازش سیگنالهای قلب، تلاش فراوانی بر حذف نویزها و عوامل مزاحم از سیگنال اصلی ECG به عنوان گام اول میباشد. با توجه به غیر ایستا بودن این سیگنال، استفاده از تبدیل موجک بهترین نتیجه را میدهد. نشان داده شده است که خانوادههایDabuchies وSymlet ، مناسبترین انتخابها برای موجک میباشند.با توجه به کند بودن تغییرات سیگنال ECG، سرعت محاسبات مهم نیست و هدف کمترین مساحت و توان مصرفی میباشد.
تراشه XC6SLX4 از خانواده Spartan 6 محصول Xillinx، هدف پیادهسازی این سیستم میباشد که تراشهی کوچک و کمظرفیتی است.
سیستم حذف نویز با چهار مرحله تبدیل موجک DB4 طراحی شده است. انتخاب این موجک بدلیل کم بودن مرتبهی فیلترهای آن و کارایی قابل مقایسه آن در حذف نویز با موجکهای مرتبه بالاتر است، که در شبیهسازیها مشاهده شده است. روش انتخاب آستانه، Universal Thresholding برگزیده شده است که آستانه در آن براساس واریانس سیگنال نویزی و تعداد نمونهها در هر مرحله تعیین میگردد. و فیلترها همگی بر اساس ساختار تکرارشونده و با یک MAC طراحی شده اند بنابراین فرکانس کاری سیستم باید 9 برابر فرکانس نمونهبرداری سیگنال ECG باشد.
پينوشتها:
* دانشجوی دکتری مهندسی برق
منابع مقاله :[1] G.Garg, V.Singh, J.R.P Gupta, A.P. Mittal “Optimal Algorithm for ECG Denoising using Discrete Wavelet Transforms” IEEE, 2010.
[2] B.N. Singh, A.K. Tiwari “Optimal selection of wavelet basis function applied to ECG signal denoising” , Digital Signal Processing , vol. 16 , pp.275-287 , 2006.
[3] M. Kania, M. Fereniec, R. Maniewski “Wavelet Denoising for Multi-lead High Resolution ECG Signals,” MEASUREMENT SCIENCE REVIEW, Vol.7 , No.4 , 2007
شکلها و جداول
/ج
{{Fullname}} {{Creationdate}}
{{Body}}