【问题标题】:Finding local minima and maxima in a scanned ECG using matlab使用 matlab 在扫描的 ECG 中查找局部最小值和最大值
【发布时间】:2013-02-06 14:45:51
【问题描述】:

我正在尝试使用 matlab 处理扫描的心电图图像(我是一个完全的新手)。我想:- 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 中提高自己的建议)将不胜感激。

【问题讨论】:

  • 您能否更详细地描述一下这个问题?特别是,当您应用找到的解决方案时,问题是什么?
  • 我想得到类似thisbut imregionalmax() 和其他人没有给我图像中我需要的 3 个峰值。如何处理图像以获得这些?谢谢前进。
  • @Eridanus 至少包含一个有代表性的输入图像以及您期望从中得到什么输出。

标签: image matlab image-processing


【解决方案1】:

由于您似乎正在寻找信号中的尖峰,我建议您执行以下操作:

假设你有一个叫signal的向量

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

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

在确定了波峰和波谷的位置后,分析它们应该不会太难。

【讨论】:

  • 谢谢,一定会试试的。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-12-15
    • 2017-01-04
    • 2014-07-03
    • 2018-04-25
    • 2021-09-12
    相关资源
    最近更新 更多