平均滤波器Matlab

哈姆扎·祖拜尔·贡达尔

我已经写了3x3的平均滤镜。它可以正常工作,但是它显示相同的输出图像三遍而不是一遍。该如何解决呢?

该代码是

function [filtr_image] = avgFilter(noisy_image)

    [x,y] = size(noisy_image);
    filtr_image = zeros(x,y);
    for i = 2:x-1
        for j =2:y-1
            sum = 0;
            for k = i-1:i+1
                for l = j-1:j+1
                    sum = sum+noisy_image(k,l);
                end
            end
            filtr_image(i,j) = sum/9.0;
           filtr_image = uint8(filtr_image);

        end
    end

end

提前致谢

雷瑞恩

最有可能发生的事实是,当代码专门用于灰度时,您正在提供彩色图像。之所以看到“三个”,是因为当您这样做分配输出的过滤图像时:

[x,y] = size(noisy_image)

如果您使用3D矩阵,则报告的列数size将为y = size(noisy_image,2)*size(noisy_image,3);这样,当您遍历图像中的每个像素时,将按列主要顺序将每个平面彼此并排放置。您应该做的是将图像从RGB转换为灰度,或者分别过滤每个平面。

同样,您在循环中执行了不必要的转换。只需在循环外执行一次即可。

选项#1-每个平面的过滤器

function [filtr_image] = avgFilter(noisy_image)
[x,y,z] = size(noisy_image);
filtr_image = zeros(x,y,z,'uint8');
for a = 1 : z
    for i = 2:x-1
        for j =2:y-1
            sum = 0;
            for k = i-1:i+1
                for l = j-1:j+1
                    sum = sum+noisy_image(k,l,a);
                end
            end
            filtr_image(i,j,a) = sum/9.0;
        end
    end
 end
end

然后,您可以通过以下方式调用它:

filtr_image = avgFilter(noisy_image);

选项#2-转换为灰度

filtr_image = avgFilter(rgb2gray(noisy_image));

次要音符

您正在sum用作变量。sum是MATLAB中的实际函数,您可能会将该变量与该函数相混淆。如果您还有其他依赖于sum后续操作的功能,则将产生意想不到的后果

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Matlab FIR滤波器

来自分类Dev

Matlab滤波器矩阵

来自分类Dev

高通滤波器Matlab

来自分类Dev

使用CUDA的平均滤波器

来自分类Dev

Matlab中高斯滤波器的导数

来自分类Dev

超低频滤波器MATLAB

来自分类Dev

使用fft的Matlab低通滤波器

来自分类Dev

在MATLAB中实现均值滤波器

来自分类Dev

Matlab中滤波器的逆FT

来自分类Dev

Matlab中的FIR滤波器

来自分类Dev

Matlab中的滤波器系数

来自分类Dev

如何通过Matlab基于平均滤波器计算强度不均匀性

来自分类Dev

在Matlab中将朴素逆滤波器与维纳滤波器进行反卷积比较

来自分类Dev

MATLAB:如何将平均滤波器应用于RGB图像的正方形区域?

来自分类Dev

使用 Matlab 从滤波器设计器接收相同的系数

来自分类Dev

MATLAB中的低通滤波器返回NaN值

来自分类Dev

Matlab-在系统上使用低通滤波器

来自分类Dev

在Matlab中计算FIR滤波器的系数

来自分类Dev

Matlab带通滤波器不起作用

来自分类Dev

在MATLAB中的**任意**位置提取IIR滤波器状态

来自分类Dev

在Matlab中设计一个低通滤波器

来自分类Dev

如何在MATLAB中设计窄带截止滤波器

来自分类Dev

通过MATLAB中的逆滤波器问题重建图像

来自分类Dev

如何在matlab中将图像与内核/滤波器相乘

来自分类Dev

python中的Matlab卡尔曼滤波器

来自分类Dev

使用MATLAB中的系数在C ++中进行FIR滤波器设计,滤波器未给出正确的结果

来自分类Dev

在MATLAB中使用自回归(AR)滤波器对某些随机信号进行滤波

来自分类Dev

定向gabor滤波器的盒式滤波器近似

来自分类Dev

带通滤波器组