我在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.