课程名称:学 院:专业年级:学 号:学生姓名:指导教师:日 期:
课程报告
数字图像处理 信息工程与自动化学院 2012级 刘 辉 2015-6-18
一、实验要求
1、用Matlab语言完成如下实验:
1)打开一个BMP文件
2)将其局部区域的灰度值进行改变 3)另存为一个新的BMP文件
2、Matlab编程实现图像傅立叶高通、低通滤波,给出算法原理及实验结果。
3、找一幅曝光不足的灰度(或彩色)图像(MATLAB目录及上课课件中也有),用Matlab按照直方图均衡化的方法进行处理。 4、用Matlab打开一幅图像,添加椒盐、高斯噪声,然后使用邻域平均法、中值滤波法进行平滑。
5、用Matlab打开一幅图像,用Roberts梯度法、Sobel算子和拉普拉斯算子进行锐化,并比较结果。 二、实验代码:
1、用Matlab语言完成如下实验
clc;
close all;
f1=imread('e:\\201210405210.bmp'); p=rgb2gray(f1); [m,n]=size(p);
f=p(50:300,50:300);
pic2=imadjust(f,[0.3 0.5],[0.6 0.8]); pic3=pic1;
pic3(50:300,50:300)=pic2;
subplot(1,2,1);imshow(p);title('原图')
subplot(1,2,2);imshow(pic3);title('灰度变换后')
2、Matlab编程实现图像傅立叶高通、低通滤波,给出算法原理及实验结果
傅里叶高通滤波:
clc;
close all;
I=imread('e:\\201210405210.bmp'); I=rgb2gray(I);
subplot(1,2,1);imshow(I);title('原图像'); s=fftshift(fft2(I)); [a,b]=size(s); a0=round(a/2); b0=round(b/2); d=10;
p=0.2;q=0.5; for i=1:a
for j=1:b
distance=sqrt((i-a0)^2+(j-b0)^2); if distance<=d h=0; else h=1;
end;
s(i,j)=(p+q*h)*s(i,j); end; end;
s=uint8(real(ifft2(ifftshift(s))));
subplot(1,2,2);imshow(s);title('傅里叶高通滤波所得图像');
傅里叶低通滤波:
clc;
close all;
I=imread('e:\\201210405210.bmp'); I=rgb2gray(I);
subplot(1,2,1);imshow(I);title('原图像'); s=fftshift(fft2(I)); [a,b]=size(s); a0=round(a/2); b0=round(b/2); d=10;
for i=1:a
for j=1:b
distance=sqrt((i-a0)^2+(j-b0)^2); if distance<=d h=1; else h=0; end;
s(i,j)=h*s(i,j); end; end;
s=uint8(real(ifft2(ifftshift(s))));
subplot(1,2,2);imshow(s);title('傅里叶低通滤波所得图像');
3、找一幅曝光不足的灰度(或彩色)图像(MATLAB目录及上课课件中也有),用Matlab按照直方图均衡化的方法进行处理。
close all;
clc;
i1=imread('e:\\201210405210.bmp'); i=rgb2gray(i1);
subplot(2,2,1);imshow(i);title('原图')
subplot(2,2,2);imhist(i);title('原图直方图') J=histeq(i,256);
subplot(2,2,3);imshow(J);title('均衡后图像')
subplot(2,2,4);imhist(J);title('均衡后图像直方图')
4、用Matlab打开一幅图像,添加椒盐、高斯噪声,然后使用邻域平均法、中值滤波法进行平滑。
添加椒盐噪声,利用邻域平均法和中值滤波法:
clc;
close all;
I0=imread('e:\\201210405210.bmp'); I=rgb2gray(I0);
J=imnoise(I,'salt & pepper',0.02); K1=filter2(fspecial('average',7),J); subplot(2,2,1);imshow(I);title('原图');