1

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

我想要得到的主要是 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);

                    }
           }
      }
}
4

1 回答 1

3

有关该问题的理论(即无源代码)概述,请阅读Syeda-Mahmood、Beymer 和 Wang “基于形状的心电图记录匹配”的第 III 节。

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

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

于 2012-11-30T01:11:32.390 回答