我正在尝试使用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上提高自己的建议)将不胜感激。
答案 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(:));
对于你的第二个问题,我不明白你想要什么