1

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

4

2 回答 2

1

当您似乎正在搜索信号中的尖峰时,我建议您执行以下操作:

假设你有一个向量叫做signal

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

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

在你有了峰和谷的位置之后,分析它们应该不会太难。

于 2013-02-06T15:15:02.223 回答
1

要获得图像的局部最小值,我:

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

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

于 2013-02-06T16:07:29.447 回答