جداسازی سیگنال ضربان قلب جنین از سیگنال مادر:
پردازش سیگنال امروزه یکی از مهم ترین قسمت ها در علم پزشکی را می دهد یکی از این کاربرد ها در پردازش سیگنال ECG و کاربرد این پردازش می باشد.
هدف از پردازش سیگنال ECG را می توان بررسی ماهیچه قلب در فعالیت های بدنی لحاظ کرد که این سیگنال در طول مدت مشخص چندین روز اندازه گیری شده و هدف از این کار مشخص شدن اغتشاشات در ضربان قلب در بدن شخص انجام می گیرد که این کار نیز برای تشخیص نارسایی های قلبی کمک بسزایی به شخص بیمار می کند.
و از طرفی ذخیراه این اطلاعات زیاد نیز به فضای مناسب برای این کار دارد و نیز می توان به این مسئله اشاره کرد که پردازش این سیگنال مشخص کننده درک درستی از این سیگنال و خواص دینامیکی در تغییرات ریتم و ضربان قلب می باشد بعنوان مثال می توان درک نمود که این سیگنال حاوی اطلاعات مهم در زیمنه عملکرد سیستم قلبی عروقی و نیز تغییرات بسیار ظریف در نواخت آهنگ قلب می باشد.
که افزایش سطوح پایین تغییرات متناوب در دامنه موج T نشان دهنده افزایش حملات قلبی در شخص بیمار می گردد که هیچ کدام از این علائم با دیدن ظاهر فرد مانند چشم و دیگر اعضا قابل تشخیص نبوده و بوسیله پردازش سیگنال ECG مکان پذیر می باشد.
اطلاعات مربوط به برنامه ریزی که بوسیله شناساگر QRS ایجاد می گردد می تواند بلوک فیلتر نویز و تراکم اطلاعات (که بوسیله پیکان خاکستری مشخص می شود) که باعث عملکرد نسبی سیستم می شود.
خروجی شاخه فوقانی سیگنال خروجی ECG را شامل شده که شامل اطلاعات زمانی وابسته می باشد و زمان وقوع ضربان قلب و آغاز و پایان هر موج را ببینید.
اطلاعات شامل سیگنال ECG شامل محدوده وسیعی از اطلاعات می باشد که برای تشخیص کیفیت ریتم ضربان قلب و سلامتی اشخاص بکار می رود.
در این پروژه ما از الگوریتم تطبیقی به روش LMS و یا حداقل مربعات خطا سعی در جداسازی سیگنال جنین از مادر هستیم که این کار را مرحله به مرحله انجام می دهیم.
روند کاری را در شکل زیر می توانیم ببینیم:
روند استخراج سیگنال جنین از مادر بوسیله الگوریتم فوق بصورت زیر می باشد:
1- سیگنال های ورید های شکمی و سیگنال های قفسه سینه بوسیله ضرایب موجی ایجاد می گردد.
که در متلب پردازش این سیگنال بوسیله پارامترهای فرکانسی انجام میگیرد.
2- در هر مقیاسی جزئیات ضرایب بوسیله الگوریتم تطبیقی LMS انجام میگیرد ،ضرایب سیگنال ورید شکمی از سیگنال معمول از سیستم فیلتر تطبیقی بدست می آید و ضرایب سیگنال قفسه سینه از ورودی مرجع بدست می آید.
3- ضرایب موج حاصله از روش SWT معکوس برای تشکیل سیگنال جنین حاصل می شود.
که می توان الگوریتم را بصورت زیر دسته بندی کرد:
طبق الگوریتم فوق سیگنال عمومی یا اصلی که از ورید شکمی بدست می آید شامل نوسانات قلب جنین همراه با نویز و ریپل می باشد و سیگنال اصلی قفسه سینه که همان سیگنال قلب مادر می باشد را بوسیله در فایل های با پیشوند dat به صورت زیر معرفی می کنیم که بصورت زیر در می ِآید:
load signalhearbeat.mat
در فایل فوق شامل اطلاعاتی از سیگنال ضربان قلب جنین و مادر می باشد که بصورت یکجا جمع آوری شده است.
و سیگنال ورید شکمی مادر را باید تشکیل داد سپس با استفاده از نویزگیر تطبیقی سیگنال ورید شکمی را از سیگنال ضربان قلب جنین کم کرده و نتیجه نمایش داده شود که این نویز گیر به چند مولفه نیازمند است مانند سیگنال مرجع تولید شده از ورید شکم مادر که سیگنال ورید شکمی را بصورت زیر تعریف می کنیم :
x = mhb + 0.02*randn(size(mhb));
subplot(3,3,4); plot(t,x);
axis([0 2 -4 4]);
grid;
xlabel('Time [sec]');
ylabel('Voltage [mV]');
title('Reference Signal');
سیگنال ضربان قلب جنین سریعتر از ضربان قلب مادر است و در حدود 120 تا 160 ضربه در هر دقیقه می باشد و دامنه سیگنال در حدود 0.25 میلی ولت می باشد که سیگنال بصورت زیر تعریف می گردد:
x2 = 0.25*ecg(1725);
y2 = sgolayfilt(kron(ones(1,ceil(NumSamp/1725)+1),x2),0,17);
del = round(1725*rand(1));
fhb = y2(n + del)';
subplot(3,3,2); plot(t,fhb,'m');
axis([0 2 -0.5 0.5]);
grid;
xlabel('Time [sec]');
ylabel('Voltage [mV]');
title('Fetal Heartbeat Signal');
و نوبت به تعریف فیلتر تطبیقی می رسد برای تعریف این فیلتر از روش LMS (حداقل مربعات خطا) طبق مقاله استفاده می گردد که بصورت زیر کدنویسی می کنیم :
h = adaptfilt.lms(15, 0.001);
[y,e] = filter(h,x,d);
subplot(3,3,5); plot(t,d,'c',t,e,'r');
grid;
xlabel('Time [sec]');
ylabel('Voltage [mV]');
title('Convergence of Adaptive Noise Canceller');
legend('Measured Signal','Error Signal');
الگوریتم LMS با تشخیص سیگنال ورید شکمی و اختلاف آن با سیگنال صدری اختلاف و یا نویز را نشخیص داده و تحت عنوان سیگنال جنین یا FETAL ELECTROCARDIOGRAPH ثبت می کند .
برای تعرف سیگنال اندازه گیری از ضرایب بهینه و فیلتر تطبیقی بصورت زیر تعریف می کنیم:
Wopt = [0 1.0 -0.5 -0.8 1.0 -0.1 0.2 -0.3 0.6 0.1];
%Wopt = rand(1,10);
d = filter(Wopt,1,mhb) + fhb + 0.02*randn(size(mhb));
subplot(3,3,3); plot(t,d,'r');
axis([0 2 -4 4]);
%axis tight;
grid;
xlabel('Time [sec]');
ylabel('Voltage [mV]');
title('Measured Signal');
پس از این مرحله به دستورات کاربرد فیلتر تطبیقی در جداسازی سیگنال ها می پردازیم که بصورت زیر کد نویسی می کنیم :
h = adaptfilt.lms(15, 0.001);
[y,e] = filter(h,x,d);
subplot(3,3,5); plot(t,d,'c',t,e,'r');
grid;
xlabel('Time [sec]');
ylabel('Voltage [mV]');
title('Convergence of Adaptive Noise Canceller');
legend('Measured Signal','Error Signal');
سیگنال جنین را که خروجی فیلتر تطبیقی می باشد را بصورت زیر نمایش می دهیم :
subplot(3,3,6); plot(t,e,'r'); hold on; plot(t,fhb,'b');
axis([Time-4 Time -0.5 0.5]);
grid on;
xlabel('Time [sec]');
ylabel('Voltage [mV]');
title('Steady-State Error Signal');
legend('Calc Fetus','Ref Fetus ECG');
و نهایتا پیک های سیگنال جنین را در این قسمت مشخص می کنیم تا بتوان تعداد ضربان قلب جنین را بدست آورد:
filt_e = filter(Hd,e);
subplot(3,3,7); plot(t,fhb,'r'); hold on; plot(t,filt_e,'b');
axis([Time-4 Time -0.5 0.5]);
grid on;
xlabel('Time [sec]');
ylabel('Voltage [mV]');
title('Filtered signal');
legend('Ref Fetus','Filtered Fetus');
thresh = 4*mean(abs(filt_e))*ones(size(filt_e));
peak_e = (filt_e >= thresh);
edge_e = (diff([0; peak_e]) >0);
subplot(3,3,8); plot(t,filt_e,'c'); hold on; plot(t,thresh,'r'); plot(t,peak_e,'b');
xlabel('Time [sec]');
ylabel('Voltage [mV]');
title('Peak detection');
legend('Filtered fetus','Dyna thresh','Peak marker', 'Location','SouthEast');
axis([Time-4 Time -0.5 0.5]);
subplot(3,3,9); plot(t,filt_e,'r'); hold on; plot(t,edge_e,'b'); plot(0,0,'w');
fetus_calc = round((60/length(edge_e(16001:end))*Fs)* sum(edge_e(16001:end)));
fetus_bpm = ['Fetus Heart Rate =' mat2str(fetus_calc)];
xlabel('Time [sec]');
ylabel('Voltage [mV]');
title('Reconstructed fetus signal');
legend('Fetus Sig','Edge marker',fetus_bpm, 'Location','SouthEast');
axis([Time-4 Time -0.5 0.5]);
سیگنال اولیه ورید شکمی بصورت زیر در می ِآید:
و سیگنال صدری که مربوط به سیگنال قلب مادر بصورت زیر در می ِآید:
و در نهایت از اختلاف دو سیگنال فوق سیگنال خروجی یا سیگنال جنین بصورت زیر حاصل می شود :
سیگنال اندازه گیری بصورت زیر در می آید:
و تشخیص پیک سیگنال در قسمت زیر نمایش داده می شود :
که طبق شکل فوق نوسانات قلبی جنین دارای نوساناتی می باشد که تحلیل این سیگنال در حوزه پزشکی می باشد ولی می توان گفت دامنه سیگنال فوق دارای دامنه محدود می باشد.
و نهایتا سیگنال کلی بصورت زیر در می ِآید که می توان مقایسه بهتری داشت:
و برای تکمیل این پروژه می توان سیگنال جنین را در محیط سیمولینک نیز شبیه سازی کرد که قابلیت دیدن نتایج و شمارش تعداد ضربان را می توان بدست آوردکه بصورت زیر در می ِآید:
که در این حالت دو سیگنال مرجع و اصلی را به برنامه داده که بصورت زیر در می ِآید:
و فیلتر تطبیقی LMS را از سیمولینک متلب استفاده شده است که بصورت زیر می بینید:
و پس از اجرای برنامه می توان تعداد ضربان قلب جنین را در قسمت نمایشگر در صفحه اول مشخص کرد که در طی زمان شبیه سازی که 60 ثانیه یا 1 دقیقه انجام می گیرد تعداد ضربان 130 می باشد و نوسانات سیگنال ضربان بصورت زیر نمایش داده می شود:
که نتایج شبیه سازی با نتایج مقاله مرجه یکسان می باشد .
مراجع :
http://www.porojeamadematlab.ir
تنها وبسایت مرجع پروژه به زبان متلب ویژه دانشجویان در تمامی مقاطع و رشته های مهندسی
با 50 درصد تخفیف دانشجویی قیمتی که هیچ کجا مطمنا پیدا نمیکنید.
تمامی پروژه ها دارای گزارش و مقاله شبیه سازی می باشد فقط و فقط در سایت
http://www.porojeamadematlab.ir
در رشته های زیر:
مهندسی برق
الکترونیک
مخابرات
پزشکی
مکانیک
شیمی
پردازش تصویر
الگوریتم تکاملی
قدرت
شبکه های عصبی
و.... هر آنچه شما برای ارایه پایان نامه به آن نیاز دارید کافی است به سایت ما سری بزنید.
ضمنا با خرید یک پروژه 20 کوپن تخفیف درصدی دریافت کنید.
شماره تماس: 09132399969 – 09338075778
ایمیل :mrkiani2009@yahoo.com
http://www.porojeamadematlab.ir
انجام پروژه متلب
http://www.porojeamadematlab.ir
تنها وبسایت انجام پروژه متلب
انجام پروژه متلب
http://www.porojeamadematlab.ir
+ نوشته شده در دوشنبه هفدهم اردیبهشت ۱۳۹۷ ساعت 16:1 توسط محمدرضا کیانی
|