如何从扫描的心电图图像中获取值?

时间:2012-07-05 18:00:05

标签: c# image multidimensional-array graphic waveform

在我的项目中,我必须将使用普通相机(jpeg)拍摄的ECG图像数字化。例如,我有以下相机拍摄的图像: 我正在用c#来实现这个

enter image description here

然后我将此图像转换为灰度图像,然后应用阈值从网格中分离波形。 最后从图像中删除不必要的东西,最终输出就像这样

enter image description here

现在我想使用这些段之间的像素数来获取波纹管图像上提到的值。最好的方法是什么?

enter image description here

我想得到的主要内容是QR波的高度和两个Q波之间的长度。(像素值)

如何实现波纹管代码以获取这些值并将它们存储在数组中

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);

                    }
           }
      }
}

1 个答案:

答案 0 :(得分:2)

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

基本上,你的黑&amp;白色图像是数据点的数组:x轴只是像素的宽度,y轴是通过平均每个x位置的黑色像素的y位置获得的(如果黑色线是只有一个像素高。)

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