【问题标题】:Using MATLAB to find maxima for data with a lot of noise使用 MATLAB 查找具有大量噪声的数据的最大值
【发布时间】:2012-12-13 04:01:27
【问题描述】:

我在 MATLAB 中有包含三个峰值的嘈杂数据集,我想对其进行一些图像处理。在 50 x 50 阵列中,底部的峰宽约 5-9 像素。如何定位峰? MATLAB 对我来说很新。这是我到目前为止所拥有的......

对于我的原始图像,我们称之为array,我试过了

J = fspecial('gaussian',[5 5], 1.5);
C = imfilter(array, J)
peaks = imregionalmax(C);

但是沿着峰之间的基线仍然存在一些噪声,所以我最终得到了大量的局部最大值,它们实际上只是噪声值。 (我尝试使用过滤器的大小,但没有帮助。)我也尝试过

peaks = imextendedmax(C,threshold);

阈值是在视觉上确定的......这是可行的,但绝对不是一个好方法,因为它显然不是那么健壮。

那么,如何以稳健的方式定位这些峰?

【问题讨论】:

    标签: matlab image-processing


    【解决方案1】:

    快速建议:

    尝试在 matlab medfilt2 中使用中值滤波器,它在去除噪声方面比高斯滤波器更有效。高斯卷积滤波器在处理精细噪声时效果更好,并且更能保留图像。

    然后在您提取出它们仍未分类的峰后,您应该对每个峰进行分类并确定它是噪声还是预期峰。我建议您查看binary image 函数类。尤其是bwconncomp

    【讨论】:

      猜你喜欢
      • 2010-10-24
      • 1970-01-01
      • 2011-12-24
      • 2015-07-08
      • 2018-08-28
      • 2013-06-12
      • 2016-05-05
      • 2020-08-24
      • 2018-02-07
      相关资源
      最近更新 更多