您的位置:首页 > 编程语言 > MATLAB

MATLAB实现中值滤波算法

2017-04-11 18:33 155 查看
x = imread('C:\Users\Administrator\Desktop\im7.jpg');

x = rgb2gray(x);

[m, n] = size(x); %m表示行数(即高度);n表示列数(即宽度)

x = imnoise(x,'salt & pepper',0.02);

subplot(1,2,1)

imshow(x);

title('原图');

x1 = double(x);

x2 = x1;

%% --------------------------------%

% 此处的算法缺点是未对边界值做出改变

for i = 1:m-3+1

    for j = 1:n-3+1

        mb = x1( i:(i+3-1), j:(j+3-1) ); %取出模板元素

        mb = mb(:);     %矩阵中的元素以一列输出

        mm = median(mb);%取向量的中值 

        x2( i+(3-1)/2, j+(3-1)/2 ) = mm; %对中心元素赋值

    end

end

%% --------------------------------%

dstImage = uint8(x2);

subplot(1,2,2)

imshow(dstImage);

title('效果图');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 中值滤波 算法