%读出图像
I=imread('rice.tif');
%显示图像
figure(1),imshow(I);
%显示直方图
figure(2),imhist(I,64);
%原图像f(m,n)的灰度范围[a,b]线形变换为图像g(m,n),灰度范围[a’,b’]
%公式:g(m,n)=a’+(b’-a’)* f(m,n)/(b-a)
%increase contrast
J=imadjust(I,[0.15 0.9],[0 1]);
figure(3),imshow(J);
%显示直方图
figure(4),imhist(J);
%decrease contrast
J=imadjust(I,[0 1],[0.3 0.8]);
figure(5),imshow(J);
%显示直方图
figure(6),imhist(J);
%直方图均衡
J=histeq(I);
figure(7),imshow(J);
figure(8),imhist(J);
%加入salt & pepper噪声
J=imnoise(I,'salt & pepper',0.02);
%加入gauss噪声
%J=imnoise(I,'gauss',0.02);
%加入speckle噪声
%J = IMNOISE(I,'speckle',0.02);
figure(9),imshow(J);
%3*3中值滤波
MFJ=medfilt2(J,[3 3]);
figure(10),imshow(MFJ);
%平均过滤
%AFJ=filter2(fspecial('average',5),J);
%自适应滤波
I = imread('saturn.tif');
J = imnoise(I,'gaussian',0,0.005);
K = wiener2(J,[5 5]);
imshow(J)
figure, imshow(K)
%高斯过滤
AFJ=filter2(fspecial('gaussian',5,0.05),J);
% sobel 锐化
%AFJ=filter2(fspecial('sobel')',J);
figure(11),imshow(AFJ/255);
%利用低通邻域平均模板进行平滑:
I=imread('girl.bmp');
subplot(1,3,1);
imshow(I);
title('原图');
J=fspecial('average');
J1=filter2(J,I)/255;
subplot(1,3,2);
imshow(J1);
title('3*3滤波');
K=fspecial('average',9);
K1=filter2(K,I)/255;
subplot(1,3,3);
imshow(K1);
title('9*9滤波');
%中值滤波和平均滤波
I=imread('girl.bmp');
J=imnoise(I,'gaussian',0,0.01);
subplot(2,2,1);
imshow(I);
title('原图');
subplot(2,2,2);
imshow(J);
title('noise');
K=fspecial('average',5);
K1=filter2(K,J)/255;
subplot(2,2,3);
imshow(K1);
title('average');
L=medfilt2(J,[3 5]);
subplot(2,2,4);
imshow(L);
title('medium');
%高通滤波边缘增强
I=imread('girl.bmp');
subplot(2,2,1);
imshow(I);
title('original pic');
J=fspecial('average',3);
J1=conv2(I,J)/255;
%J1=filter2(J,I)/255;
subplot(2,2,2);
imshow(J1);
title('3*3lowpass');
K=fspecial('prewitt');
K1=filter2(K,J1)*5;
subplot(2,2,3);
imshow(K1);
title('prewitt');
L=fspecial('sobel');
L1=filter2(L,J1)*5;
subplot(2,2,4);
imshow(L1);
title('sobel');
%边缘检测
%sobel和laplacian算子
I=imread('girl.bmp');
subplot(1,3,1);
imshow(I);
title('original pic');
K=fspecial('laplacian',0.7);
K1=filter2(K,I)/100;
subplot(1,3,2);
imshow(K1);
title('laplacian');
L=fspecial('sobel');
L1=filter2(L,I)/200;
subplot(1,3,3);
imshow(L1);
title('sobel');
修改上述程序来实现以下功能:(1)改变图像的对比度,采用灰度变换,直方图均衡化;
(2)观察局部平均、中值滤波、自适应滤波的效果;
(3)用所学锐化算子对图像进行锐化处理。
(4)编制一个通用的边缘提取函数。通过输入不同的参数,能够实现Sobel算子、Prewitt算子、Roberts算子、LOG算子和Canny边缘检测。
最新发布