我在MATLAB中有三个峰值的噪声数据集,并想在上面做一些图像处理。在50x50阵列中,峰值在底部大约是5-9个像素宽。我如何定位这些山峰?MATLAB对我来说是非常新的。这是我到目前为止所做的。
对于我的原始图像,我们称其为array,我尝试了
J = fspecial('gaussian',[5 5], 1.5);
C = imfilter(array, J)
peaks = imregionalmax(C);但是在峰值之间的基线上仍然有一些噪声,所以我最终得到了大量的局部最大值,实际上就是噪声值。(我试着调整滤镜的大小,但没有用。)我也试过了
peaks = imextendedmax(C,threshold);其中阈值是由视觉确定的。这是可行的,但肯定不是一个好的方法,因为它显然不是那么健壮。
那么,如何以一种可靠的方式定位这些峰值呢?
发布于 2010-05-06 16:49:11
快速建议:
尝试在matlab medfilt2中使用中值滤波器,它在去除噪声方面比高斯滤波器更有效。高斯卷积滤波器在处理细微噪声时效果更好,并能更好地保留图像。
然后,在提取了仍未分类的峰值后,您应该对每个峰值进行分类,并确定它是噪声还是预期峰值。我建议您研究一下binary image类的函数。特别是看看bwconncomp。
https://stackoverflow.com/questions/2779592
复制相似问题