2012-07-05 65 views
1

在我的项目中,我必须将用普通相机(jpeg)拍摄的ECG图像数字化。例如,我有以下的相机拍摄的图像: 我使用C#实现这个如何从扫描的心电图像中获取数值?

enter image description here

然后我这个图像转换为灰度图像,然后应用门槛,单独从电网波动。 最后从图像中删除不必要的东西,并最终输出是这样

enter image description here

现在我想提取采用了像素数的segments.what之间是最好的方式做这将在下面进行图像上提值那?

enter image description here

主要的东西,我想有两个Q波之间QR波和长度的高度。(像素值)

如何实现波纹管代码来获取这些值并将其存储在阵列

public void black(Bitmap bmp) 
{ 
      Color[,] results = new Color[bmp.Width, bmp.Height]; 
      for (int i = 0; i < bmp.Height; i++) 
      { 
       for (int j = 0; j < bmp.Width; j++) 
       { 
        Color col = bmp.GetPixel(j, i); 
        if (col.R == 0) 
        { 
         results[j, i] = bmp.GetPixel(j, i); 

        } 
      } 
     } 
} 

回答

2

有关该问题的理论(即无源代码)概述,请阅读Syeda-Mahmood, Beymer, and Wang "Shaped-based Matching of ECG Recordings的第III部分。

基本上,你的黑色图像是一个数据点阵列:x轴只是图像的宽度(以像素为单位),y轴是通过平均每个x轴上黑色像素的y位置获得的,位置(如果黑线只有一个像素高,则不需要)。

为了使数据更易于管理,您可以通过从图像中选择每第n个x位置进行缩减采样。你可能想要坚持一个标准的心电采样率,以确保你不会错过重要的数据;现代心电图硬件通常以1000Hz采样,而麻省理工学院Physionet QRS数据库中的数据为250Hz或360Hz。使用这些速率之一意味着读取扫描图像中每秒数据(25毫米)的1000,250或360像素。