《数字图象处理》实验报告
一、数字图像处理设计主要内容
数字图象处理课程设计要求使学生掌握数字图像处理的基本算法的计算机实现,从而培养学生运用数字信号处理的原理解决生物医学、电子工程领域的实际问题的能力。进一步提高程序设计及调试能力,初步掌握进行科学研究工作的主要步骤和方法,学习和掌握科学研究资料检索的方法,学习对已有资料进行消化总结的方法,学习撰写科学报告的基本方法。
二、前期工作
1.查阅资料,对数字信号处理和图象处理基本理论和实践作一全面了解;
2.根据实验内容和要求确定实验思路,熟悉Matlab语言,理解对数字信号处理进行计算机仿真原理;
三、设计工作
1.图像平滑
a.利用二个低通邻域平均模板(3×3和9×9)对一幅图象进行平滑,验证模板尺寸对图象的模糊效果的影响。
b.利用一个低通模板对一幅有噪图象(GAUSS白噪声)进行滤波,检验两种滤波模板(分别使用一个5×5的线性邻域平均模板和一个非线性模板:3×5中值滤波器)对噪声的滤波效果。 c.选择一个经过低通滤波器滤波的模糊图象,利用sobel水平边缘增强高通滤波器(模板)对其进行高通滤波图象边缘增强,
验证模板的滤波效果。
d.选择一幅灰度图象分别利用一阶Sobel算子和二阶Laplacian算子对其进行边缘检测,验证检测效果。 2.图像增强
a.直方图均衡化增强图像对比度的MATLAB程序。 b.采用线性变换进行图像增强的MATLAB程序。 c.采用边界锐化算法增强图像的MATLAB程序。
四、程序设计
1.利用二个低通邻域平均模板(3×3和9×9)对一幅图象进行平滑,验证模板尺寸对图象的模糊效果的影响。程序如下:
l=imread('E:/matlab/test1/sample.jpg'); L=rgb2gray(l); subplot(1,3,1); imshow(L); title('原图');
j=fspecial('average'); j1=filter2(j,L)/255; subplot(1,3,2); imshow(j1); title('3*3 滤波'); k=fspecial('average',9); k1=filter2(k,L)/255; subplot(1,3,3); imshow(k1); title('9*9 滤波');
仿真结果如下图:
原图3*3 滤波9*9 滤波
2.利用一个低通模板对一幅有噪图象(GAUSS白噪声)进行滤波,检验两种滤波模板(分别使用一个5×5的线性邻域平均模板和一个非线性模板:3×5中值滤波器)对噪声的滤波效果。程序如下:
l=imread('E:/matlab/test1/sample.jpg'); L=rgb2gray(l); subplot('2,2,1'); imshow(L); title('原图');
j=imnoise(L,'gaussian',0,0.001); subplot(2,2,2); imshow(j); title('噪声');
t=fspecial('average',5); t1=filter2(t,j)/255; subplot(2,2,3); imshow(t1);
title('5*5 average'); u=medfilt2(j,[3,5]); subplot(2,2,4); imshow(u);
title('中值滤波');
仿真结果如下图:
原图噪声5*5 average中值滤波
3.选择一个经过低通滤波器滤波的模糊图象,利用sobel水平边缘增强高通滤波器(模板)对其进行高通滤波图象边缘增强,验证模板的滤波效果。 程序如下:
l=imread('E:/matlab/test1/sample.jpg'); L=rgb2gray(l); subplot(1,3,1); imshow(L); title('原图');
j=fspecial('average'); j1=conv2(j,L)/255; subplot(1,3,2); imshow(j1); title('3*3 滤波'); t=fspecial('sobel'); t1=filter2(t,j1)*3; subplot(1,3,3); imshow(t1); title('soble');
仿真图如下:
原图3*3 滤波soble
4.选择一幅灰度图象分别利用一阶Sobel算子和二阶Laplacian算子对其进行边缘检测,验证检测效果。程序如下:
l=imread('D:/matlab/test1/sample.jpg'); L=rgb2gray(l); subplot(1,3,1); imshow(L); title('原图');
k=fspecial('laplacian',0.7); k1=filter2(k,L)/100; subplot(1,3,2); imshow(k1);
title('laplacian'); t=fspecial('sobel'); t1=filter2(t,L)/200; subplot(1,3,3); imshow(t1); title('sobel');
仿真图如下:
原图laplaciansobel
5.直方图均衡化增强图像对比度的MATLAB程序。程序如下:
l=imread('E:/matlab/test1/sample.jpg'); L=rgb2gray(l); subplot(1,2,1); imshow(L); title('原图');
j=histeq(L); subplot(1,2,2); imshow(j);
title('直方图均衡化后的图像'); figure(2)
subplot(1,2,1),imhist(L,),title('原始直方图'); subplot(1,2,2); imhist(j,);
title('均衡化后的直方图');
仿真图如下:
原图直方图均衡化后的图像
原始直方图120001000090001000080007000800060005000400040003000200010000010020000100200均衡化后的直方图60002000
6.采用线性变换进行图像增强的MATLAB程序。程序如下:
l=imread('E:/matlab/test1/sample.jpg');
L=rgb2gray(l); subplot(1,2,1); imshow(L); title('原图'); L=double(L); [M,N]=size(L); for i=1:M for j=1:N if L(i,j)<30 L(i,j)=L(i,j); elseif L(i,j)<=150
L(i,j)=(200-30)/(150-30)*(L(i,j)-30)+30; else
L(i,j)=(255-200)/(255-150)*(L(i,j)-150)+200; end end end
subplot(1,2,2); imshow(uint8(L)); title('灰度线性变换');
仿真图如下:
原图灰度线性变换
7.采用边界锐化算法增强图像的MATLAB程序。程序如下:
l=imread('E:/matlab/test1/sample.jpg'); L=rgb2gray(l); subplot(1,3,1); imshow(L); title('原图'); L=double(L);
h1=[0 1 0, 1 -4 1, 0 1 0]; L1=conv2(L,h1,'same');
h2=[-1 -1 -1, -1 9 -1, -1 -1 -1];
L2=conv2(L,h2,'same'); subplot(1,3,2); imshow(L1);
title('拉普拉斯算子锐化图像'); subplot(1,3,3); imshow(L2);
title('高通滤波锐化图像');
仿真图如下:
原图
拉普拉斯算子锐化图像高通滤波锐化图像