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);