2010-05-06 102 views
4

我在MATLAB中有三个峰值的嘈杂数据集,并且想要对其进行一些图像处理。在底部,峰值约为5-9个像素,以50×50阵列。我如何找到峰值? MATLAB对我来说是非常新的。以下是我迄今为止...使用MATLAB查找含有大量噪声的数据的最大值

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

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

但仍有沿峰之间的基线,所以我最终得到一些噪音大量的局部最大值只是噪声值。 (我试图与滤波器的尺寸打,但没有帮助。)我也试过

peaks = imextendedmax(C,threshold); 

其中目视判断的门槛......这作品,但绝对不是做一个好办法因为它显然不那么健壮。

那么,如何以稳健的方式找到这些峰?

回答

2

快速建议:

尝试在MATLAB medfilt2与中值滤波工作,它比高斯滤波器去除噪声更有效。高斯conovlution过滤器更好的噪音和更好地保留图像。

然后,在提取峰值后,它们仍未分类,应对每个峰进行分类并确定它是噪声还是预期峰值。我建议你看一下binary image类的功能。特别看看bwconncomp