赞
踩
本文主要为代码展示,未对所用算法进行较为详细的文字介绍,请读者见谅。如有建议,欢迎私信。
MATLAB调用格式为:
J=imnoise(I,type)或者J=imnoise(I,type,parameters)。将类型噪声添加到灰度图像。
其中,I为原始图像,J为有噪图像,参数type和parameters用于确定噪声类型和相应的参数。类型是以下字符串:
‘guassian’添加高斯噪声;
‘salt&pepper’添加盐和胡椒的噪音;
‘specle’添加乘法噪声。
例:
J=imnoise(I, ‘guassian’,M,V)向图像I添加均值为M,方差为V的高斯白噪声。默认均值为0,方差为0.01的噪声。
J=imnoise(I, ‘salt&pepper’,D)向图像I添加强度为D的椒盐噪声,默认强度为0.05。
J=imnoise(I, ‘specle’,V)使用J=I+n*I将乘性噪声添加到图像I,其中n是均匀分布的随机噪声,均值为0,方差为V。均值V默认为0.04。
代码如下:
- close all;
- clear;
- clc;
- img = imread('图片'); % 读取彩色图像
-
- % 定义一个3x3的平均值滤波器
- h = fspecial('average', [3 3]);
-
- % 对彩色图像进行滤波
- filtered_img = imfilter(img, h);
-
- % 显示原始图像和滤波后的图像
- subplot(1,2,1), imshow(img), title('原始图像');
- subplot(1,2,2), imshow(filtered_img), title('滤波后的图像');
具体效果如图所示:
代码如下:
- close all;
- clear;
- clc;
- I = imread('图片'); % 读取彩色图像
- J=imnoise(I,'gaussian',0,0.01);%向图像I添加均值为0,方差为0.01的高斯白噪声。
- img=imnoise(J,"salt & pepper",0.05);%向图像I添加强度为0.05的椒盐噪声。
- % 对红、绿、蓝三个通道分别进行中值滤波
- r1 = medfilt2(img(:,:,1), [3 3]);%3*3窗口
- g1 = medfilt2(img(:,:,2), [3 3]);
- b1 = medfilt2(img(:,:,3), [3 3]);
- img1 = cat(3, r1, g1, b1);
- r2 = medfilt2(img(:,:,1), [5 5]);%5*5窗口
- g2 = medfilt2(img(:,:,2), [5 5]);
- b2 = medfilt2(img(:,:,3), [5 5]);
- img2 = cat(3, r2, g2, b2);
- r3 = medfilt2(img(:,:,1), [7 7]);%7*7窗口
- g3 = medfilt2(img(:,:,2), [7 7]);
- b3 = medfilt2(img(:,:,3), [7 7]);
- img3 = cat(3, r3, g3, b3);
- % 显示原始图像和滤波后的图像
- subplot(2,2,1), imshow(img), title('原始图像');
- subplot(2,2,2), imshow(img1), title('3*3滤波后的图像');
- subplot(2,2,3), imshow(img2), title('5*5滤波后的图像');
- subplot(2,2,4), imshow(img3), title('7*7滤波后的图像');
具体效果如图所示:
代码如下:
- close all;
- clear;
- clc;
- I = imread('图片'); % 读取彩色图像
- I=im2double(I);
- J=imnoise(I,'gaussian',0,0.01);%向图像I添加均值为0,方差为0.01的高斯白噪声。
- x=imnoise(J,"salt & pepper",0.05);%向图像I添加强度为0.05的椒盐噪声。
- %%%%%%%%%%%%%对图像噪声去噪
- h1=[1,1,1;1,1,1;1,1,1];
- myfilter1=h1/9;
- h2=[1,1,1;1,2,1;1,1,1];
- myfilter2=h2/10;
- h3=[1,2,1;2,4,2;1,2,1];
- myfilter3=h3/16;
-
- % 分离出红、绿、蓝三个通道
- R = x(:, :, 1);
- G = x(:, :, 2);
- B = x(:, :, 3);
-
- % 对三个通道分别进行滤波
- R1 = imfilter(R, myfilter1);
- G1= imfilter(R, myfilter1);
- B1= imfilter(B, myfilter1);
- R2 = imfilter(R, myfilter2);
- G2= imfilter(R, myfilter2);
- B2= imfilter(B, myfilter2);
- R3 = imfilter(R, myfilter3);
- G3= imfilter(R, myfilter3);
- B3= imfilter(B, myfilter3);
- % 合并三个通道
- img1 = cat(3, R1, G1, B1);
- img2 = cat(3, R2, G2, B2);
- img3 = cat(3, R3, G3, B3);
- % 显示原始图像和滤波后的图像
- figure;
- subplot(2, 2, 1), imshow(x), title('原始图像');
- subplot(2, 2, 2), imshow(img1), title('h1滤波后的图像');
- subplot(2, 2, 3), imshow(img2), title('h2滤波后的图像');
- subplot(2, 2, 4), imshow(img3), title('h3滤波后的图像');
具体效果如图所示:
PS:1,通过对以上运行效果的比对分析,读者可以对三种算法的特征做出一定评价。
2,文中所用图片的原图为互联网图片。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。