EKG Yardım

sasahes06

Üye
Katılım
23 Kas 2009
Mesajlar
33
Puanları
1
Yaş
37
Merhaba benim bitirme projem ekg sinyallerinden farklı aritmi hastalıklarının sınıflandırılması. Bunun için öncelikle ekg işaretinde tepelerin tespiti, nitelik vektörünün çıkartılması ve sınıflandırma yöntemleri ile ilgili kaynak bulmam gerekli yardımcı olabilirseniz sevinirim
 
Sn. sasahes06,

Ben lisansta proje olarak QRS kompleksinin tespitini yapmıştım. Eğer bitirme projemi yapayım başka birşey istemiyorum derseniz internette bulursunuz. Ama ben hem programlama yeteneğimi hem de kendimi geliştirmek istiyorum derseniz yardımcı olabilirim. Yani burada öğrenci olan/olmayan üyelerimizin de bilgisi olması için beraber çalışma yürütebiliriz.

Saygılarımla,
 
taiki kendimi geliştirmek bu konuyu öğrenmek istiyorum önce tezi yapıp sonrada matlab ta simulasyon yapmam gerek yardımcı olabilirseniz sevinirim
 
O zaman size yardımcı olması açısından, çekirdek bir uygulama ile başlayalım..

Şimdi sizden bir script yazmanızı rica edeceğim. Yapacağı iş ise başlangıçta 0 ile 100 arasında 100 tane rasgele (rand() fonksiyonunu kullanabilirsiniz.) sayı içeren bir vektör oluşturmak olacak. Daha sonra ise bu sayıları büyükten küçüğe gidecek şekilde başka bir değişkene yani vektöre yazdıracak. Yazacağınız komutlar arasında "find" ve "sort" fonksiyonları yer almayacaktır. Kısacası tanımlı olan fonksiyonları kullanmayacaksınız. Sadece döngü ve koşul fonksiyonlarını (for, while, if, else, vb.) kullanacaksınız.

Bunları neden yapmalıyım diye merak ediyorsanız nedenini söyleyeyim.

1. Algoritma kurmanın ve ilerlemenin bir programın oluşumunda ne kadar önemli olduğunu anlayacaksınız.
2. Hazır fonksiyonlar kullanılmadığı zaman programlama mantığınızın ne kadar ilerleyebileceğini anlayacaksınız.

Yukarıdaki bölümü tamamlarsanız ya da tamamlamakta sıkıntı yaşarsanız buraya belirtiniz ki beraber tartışalım ve düzeltelim.

Saygılarımla,
 
Sn. sasahes06,

Size MATLAB'in script dosyasını verebilirim ki bunu forumu inceleseydiniz siz de bulabilirdiniz. Ancak yöntem ve metod düşünmeniz sizin için iyi olacaktır. MATLAB kısmına geçmeden konuyu tartışalım..

Varsayalım hiç programlama bilgisine sahip olmayan birisiyim. Kodu ilk yazmadan önce aklıma gelen yöntemi size anlatayım.

Bir EKG sinyali aşağıdaki resimde de olduğu gibi, belli noktalarla veya dalgalarla ifade edilir.

ecg2.jpg



QRS kompleksi diye adlandırılan aksiyon potansiyelini nasıl bulabilirize en iyi cevap herhalde analitik yaklaşımla olur. Q noktasına kadar değerler geliyor ve birden artmaya başlıyor. Sonra R noktasına kadar değerler geliyor ve birden azalmaya başlıyor. Aynı şekilde S noktasına kadar değerler gelip birden artmaya başlıyor. Bu ani değişikliklerin tespiti bize Q,R ve S noktalarını verir.

Ancak akla ilk gelmesi gereken soru şu olmalıdır: Sinyalde gürültü varsa ne olacak?

İşte sinyal işleme aşamaları bunun için çok kritiktir. EKG sinyalleri mV mertebesinde olduğu için aksırma, ani hareket bile o anlık kalpteki kasların hareketini etkileyebiliyor. FFT (Fast Fourier Transform) uygulanıp frekans karakteristiği incelenip kullanılacak filtrenin karakteristiği iyi tespit edilmeli. (Geçiş bandı mı daha önemli yoksa durdurma bandı mı karar verilmeli.) Uygun filtre kesim frekansı eş zamanlı olarak frekans ve zaman uzayı incelenerek yapılmalıdır. (PSD (Power Spectral Density) incelemesi yapmak en yaygın yöntemdir.)

Gürültüden kaynaklanan değişimleri filtre ile hallettiğimizi varsayalım. Sonraki adımlarda artık Q, R ve S noktalarına arzu ettiğimiz yöntemle ulaşabiliriz.

Örneğin Q noktasını bulalım.

* QRS kompleksini bütün olarak 1000 parça düşünelim. Q noktasından 50 parça öncesinden başlasın ve S noktasından 50 parça sonra bitsin. QRS[1] ile QRS[100] arasında bir algoritma yazalım.

Varsayalım Q noktası 50. nokta, R noktası 500. nokta ve S noktası 950. nokta olsun.

** Aralık [1,100] **

QRS[2], QRS[1]'den küçük müdür ? Evet ise devam et. Hayır ise dur.
QRS[3], QRS[2]'den küçük müdür ? Evet ise devam et. Hayır ise dur.
QRS[4], QRS[3]'den küçük müdür ? Evet ise devam et. Hayır ise dur.
..
..
..
QRS[51], QRS[50]'den küçük müdür ? Evet ise devam et. Hayır ise dur.

Hayır olduğu görüldü ve durdu. QRS[50] değerinin Q noktası olduğu tespit edildi.

Şimdi de R noktasını bulalım;

** Aralık [101,899] **

QRS[101], QRS[100]'den büyük müdür ? && QRS[101], QRS[102]'den büyük müdür? Evet ise devam et. Hayır ise dur.
QRS[102], QRS[101]'den büyük müdür ? && QRS[102], QRS[103]'den büyük müdür? Evet ise devam et. Hayır ise dur.
QRS[103], QRS[102]'den büyük müdür ? && QRS[103], QRS[104]'den büyük müdür? Evet ise devam et. Hayır ise dur.
..
..
..
..
QRS[500], QRS[499]'den büyük müdür ? && QRS[500], QRS[501]'den büyük müdür? Evet ise devam et. Hayır ise dur.

QRS[500] değeri QRS[499]'dan ve
QRS[501]'den büyük olduğu için QRS[500] değerinin R noktası olduğu tespit edildi. Yani aslında o sivri olan köşe noktası bulunmuş oldu.
Şimdi de S noktasını bulalım;

** Aralık [900,1000] **

QRS[901], QRS[900]'den küçük müdür ? Evet ise devam et. Hayır ise dur.
QRS[902], QRS[901]'den küçük müdür ? Evet ise devam et. Hayır ise dur.
QRS[903], QRS[902]'den küçük müdür ? Evet ise devam et. Hayır ise dur.
..
..
..
QRS[950], QRS[949]'den küçük müdür ? Evet ise devam et. Hayır ise dur.

Hayır olduğu görüldü ve durdu. QRS[950] değerinin S noktası olduğu tespit edildi.


Böylelikle QRS kompleksinin parçaları bulunmuş oldu. Programlama kısmı için kodları sitemizde bulabilirsiniz.

Bazı durumlarda algoritmayı oluşturmak korkutucu gelebilir ama pes etmeden çalışmak, araştırmak ve kafa yormak en iyi çözümdür.

Saygılarımla,
 
Arkadaşlar ben bu programın üstesinden gelemedim :( elinde kod olan varsa bana gönderebilir mi?
 
Sn. sasahes06,

Nerede takıldığınızı söyleyin, yardımcı olalım..
 
ben yaptığım programı ve dataları size göndermeye çalışıyorum ama buradan nasıl yapabilirim?
 

Forum istatistikleri

Konular
129,708
Mesajlar
929,146
Kullanıcılar
452,412
Son üye
Muhammed Hakan Yüzgeç

Yeni konular

Geri
Üst