10. matlab图像处理基础——图像滤波、图像裁剪、噪声

1、图像滤波

  

  步骤1:使用fspecial函数创建二维滤波器

  步骤2:使用函数imfilter进行滤波

%% 滤波
I = imread('cameraman.tif');
subplot(3,3,1),imshow(I),title('原图像');
% 均值滤波
fs1 = fspecial('average');
J1 = imfilter(I,fs1);
subplot(3,3,2),imshow(J1),title('average');
% 圆形领域
fs2 = fspecial('disk');
J2 = imfilter(I,fs2);
subplot(3,3,3),imshow(J2),title('disk');
% 高斯
fs3 = fspecial('gaussian');
J3 = imfilter(I,fs3);
subplot(3,3,4),imshow(J3),title('gaussian');
% 高斯-拉普拉斯
fs4 = fspecial('log');
J4 = imfilter(I,fs4);
subplot(3,3,5),imshow(J4),title('log');
% 拉普拉斯
fs5 = fspecial('laplacian');
J5 = imfilter(I,fs5);
subplot(3,3,6),imshow(J5),title('laplacian');
% motion模版
fs6 = fspecial('motion');
J6 = imfilter(I,fs6);
subplot(3,3,7),imshow(J6),title('motion模版');
% prewitt模版
fs7 = fspecial('prewitt');
J7 = imfilter(I,fs7);
subplot(3,3,8),imshow(J7),title('prewitt模版');
% sobel模版
fs8 = fspecial('sobel');
J8 = imfilter(I,fs8);
subplot(3,3,9),imshow(J8),title('sobel模版');

2、图像裁剪

  处理结果 = imcrop(原始图像,裁剪区域)

  裁剪区域:[xmin, ymin, width, height]

%% 图像裁剪
I = imread('cameraman.tif')
[x,y] = size(I);
subplot(2,3,1),imshow(I);
% 裁剪左上角
J1= imcrop(I,[0,0,100,100]);
subplot(2,3,2),imshow(J1);
% 裁剪右上角
J2= imcrop(I,[156,0,100,100]);
subplot(2,3,3),imshow(J2);
% 裁剪左下角
J3= imcrop(I,[0,156,100,100]);
subplot(2,3,4),imshow(J3);
% 裁剪右下角
J4= imcrop(I,[156,156,100,100]);
subplot(2,3,5),imshow(J4);
% 裁剪中间
J5= imcrop(I,[128,128,50,50]);
subplot(2,3,6),imshow(J5);

3、噪声

 (1)噪声

  处理结果 = imnoise(原始图像,噪声类型)

     

     

(2)高斯噪声

%% 高斯噪声
I = imread('lena.jpg');
subplot(1,2,1),imshow(I);
J = imnoise(I,'gaussian',0.01,0.1);
subplot(1,2,2),imshow(J);

(3)localvar噪声--类型1

  目标图像 = imnoise(原始图像,'localvar',V)

  其中V是与原始图像大小相同的一个数组。

%% localvar噪声类型1
I = imread('lena.jpg');
subplot(1,2,1),imshow(I);
J = imnoise(I,'localvar',ones(size(I))*0.01);
subplot(1,2,2),imshow(J);

(4)localvar噪声--类型2

  目标图像 = imnoise(原始图像,'localvar',image_intensity,var)

 

%% localvar噪声类型2
I = imread('lena.jpg');
subplot(1,2,1),imshow(I);
J = imnoise(I,'localvar',rand(1,100),ones(1,100));
subplot(1,2,2),imshow(J);

 (4)泊松噪声

  处理结果 = imnoise(原始图像,'poisson')

%% 泊松噪声
I = imread('lena.jpg');
subplot(1,2,1),imshow(I);
J = imnoise(I,'poisson');
subplot(1,2,2),imshow(J);

(5)椒盐噪声

  处理结果 = imnoise(原始图像,'salt&pepper',d)

  其中,d是噪声密度(即包括噪声值的图像区域的备份比),默认噪声密度为0.5。

I = imread('lena.jpg');
subplot(1,2,1),imshow(I);
J = imnoise(I,'salt & pepper');
subplot(1,2,2),imshow(J);

(6)speckle噪声

  处理结果 = imnoise(原始图像,'speckle',V)

  目标图像 = 原始图像+n*原始图像,其中,n是均值为0,方差为V的均匀分布的随机噪声。

  V的默认值是0.04。

I = imread('lena.jpg');
subplot(1,2,1),imshow(I);
J = imnoise(I,'speckle');
subplot(1,2,2),imshow(J);

 

posted @ 2020-05-13 21:09  红叶楠木  阅读(4724)  评论(0编辑  收藏  举报