我是MATLAB的新手。我不知道如何使用几何平均滤波器来过滤噪声图像。对于算术平均滤波器,我使用:
H = fspecial('average',5);
a = imfilter(a, H);
几何平均滤波器有没有类似的方法?
答案 0 :(得分:1)
是的。我建议在The Mathworks上阅读由Steve Eddins撰写的关于几何平均数的Wikipedia page以及this blog。
借用史蒂夫的解释(实际上是整个代码/例子):
局部几何平均滤波器将所有像素相乘 在邻域中的值然后取第N个根,其中N是 邻域中的像素数。
因此,就Matlab代码而言,h
是内核,其填充的是具有邻域大小的内核,用于计算平均值,I
是您的图像:
geo_mean = imfilter(log(I), h, 'replicate');
geo_mean = exp(geo_mean);
geo_mean = geo_mean .^ (1/numel(h));
希望有所帮助!