使用matlab在扫描的ECG中查找局部最小值和最大值

时间:2013-02-06 14:45:51

标签: image matlab image-processing

我正在尝试使用matlab处理扫描的ECG图像(我是一个完整的新手)。我想:-    1.找出并突出显示心电图中的所有局部最大值和最小值 2.计算并显示连续最小值和最大值之间的距离 我正在使用来自互联网的jpeg图像。在将其转换为灰度后,我不知道该怎么做。我已经尝试了这些功能了 How can I find local maxima in an image in MATLAB? http://www.mathworks.in/matlabcentral/answers/58002-how-to-find-local-maxima-and-minima-of-a-noisy-ecg 但是图像保留了非最大值和非最小值点。将转换 对此有任何帮助(或者我如何在matlab上提高自己的建议)将不胜感激。

2 个答案:

答案 0 :(得分:1)

当你似乎在搜索信号中的尖峰时,我会推荐以下内容:

假设您有一个名为signal

的向量
treshold = std(signal); %Multiply with a constant to get a nice result
peak = signal>mean(signal) + treshold;
dip = signal>mean(signal) - treshold;

如果信号始终处于大致相同的水平,这可以为您提供所有尖峰的位置,否则您需要在信号的一部分上运行此信号而不是完整信号。

在获得峰值和倾角的位置后,分析它们应该不会太难。

答案 1 :(得分:1)

获取图像的局部最小值I:

minima=I(1:end-2,2:end-1)>I(2:end-1,2:end-1) && I(3:end,2:end-1)>I(2:end-1,2:end-1) && I(2:end-1,1:end-2)>I(2:end-1,2:end-1) && I(2:end-1,3:end)>I(2:end-1,2:end-1);

因此,你得到一个矩阵,最小值为1,最小值为0(注意边框被删除)

获取x和y的最小值列表

[x,y]=find(minima);
x=x+1;y=y+1; %Adding the removed border

获取最小值:

J=I(2:end-1,2:end-1);
val=J(minima(:));

对于你的第二个问题,我不明白你想要什么