使用MATLAB查找具有大量噪声的数据的最大值

我在MATLAB中有三个峰值的噪声数据集,并希望对其进行一些图像处理.峰在底部约5-9个像素宽,50×50阵列.我如何找到峰值? MATLAB对我来说很新鲜.这是我到目前为止所拥有的……

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

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

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

peaks = imextendedmax(C,threshold);

阈值是在视觉上确定的……哪个有效,但绝对不是一个很好的方法,因为它显然不那么强大.

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

最佳答案 快速建议:

尝试在matlab medfilt2中使用中值滤波器,它比高斯滤波器更有效地去除噪声. Gauss conovlution过滤器可以更好地处理精细噪声并更好地保留图像.

然后,在提取峰值后,它们仍然没有被分类,您应该对每个峰进行分类,并确定它是噪声还是预期的峰值.我建议你研究一下binary image类的功能.特别要看bwconncomp.

点赞