数字图像处理实验指导书Word文档格式.docx
《数字图像处理实验指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验指导书Word文档格式.docx(47页珍藏版)》请在冰点文库上搜索。
![数字图像处理实验指导书Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/237168c0-a3e0-4835-97b6-1dd1d499677e/237168c0-a3e0-4835-97b6-1dd1d499677e1.gif)
g1=imadjust(f,[01],[10]);
figure,imshow(g1);
g2=imadjust(f,[0.50.75],[10],0.5);
figure,imshow(g2);
四、结论
这是数字图像处理的第一次实验,我们使用的是MATLAB软件,由于是第一次所以这次实验也较为简单。
主要是验证性的,具体是掌握了图像读取、显示和保存的方法。
然后,对于代码中使用的函数,一方面需要自己的理解,另一方面也可以使用MATLAB的HELP,或者直接上XX,解释都比较详细,所以总体说来比较顺利啦。
希望以后继续努力,毕竟数字图像处理是很深奥的。
五、问题与讨论
注:
实现图像矩阵的归一化操作
I=mat2gray(A,[aminamax])
将图像矩阵A中介于amin和amax的数据归一化处理,其余小于amin的元素都变为0,大于amax的元素都变为1。
I=mat2gray(A)
将图像矩阵A归一化为图像矩阵I,归一化后矩阵中每个元素的值都在0到1范围内(包括0和1)。
其中0表示黑色,1表示白色。
gb=im2bw(g,0.6)
matlab中DIP工具箱函数im2bw使用阈值(threshold)变换法把灰度图像(grayscaleimage)转换成二值图像。
所谓二值图像,一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。
当然,也可以是其他任意两种颜色的组合。
实验2、图像增强
一、实验目的
1掌握灰度直方图的概念及其计算方法;
2熟练掌握直方图均衡化过程;
二、实验原理
图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。
其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。
图像增强技术主要有直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。
本实验以直方图均衡化增强图像对比度的方法为主要内容,其他方法可以在课后自行练习。
直方图是多种空间域处理技术的基础。
直方图操作能有效地用于图像增强。
除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。
直方图在软件中易于计算,也适用于商用硬件设备,因此,它们成为实时图像处理的一个流行工具。
直方图是图像的最基本的统计特征,它反映的是图像的灰度值的分布情况。
直方图均衡化的目的是使图像在整个灰度值动态变化范围内的分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果。
灰度直方图是图像预处理中涉及最广泛的基本概念之一。
图像的直方图事实上就是图像的亮度分布的概率密度函数,是一幅图像的所有象素集合的最基本的统计规律。
直方图反映了图像的明暗分布规律,可以通过图像变换进行直方图调整,获得较好的视觉效果。
直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。
(1)直方图均衡化增强图像对比度的MATLAB程序:
I=imread(‘coins.tif);
%读入原图像
J=histeq(I);
%对原图像进行直方图均衡化处理
imshow(I);
%显示原图像
Title(‘原图像’);
%给原图像加标题名
Figure;
imshow(J);
%对原图像进行屏幕控制;
显示直方图均衡化后的图像
Title(‘直方图均衡化后的图像’);
%给直方图均衡化后的图像加标题名
Figure;
subplot(1,2,1);
%对直方图均衡化后的图像进行屏幕控制;
作一幅子图作为并排两幅图的
imhist(I,64);
%将原图像直方图显示为64级灰度
Title(‘原图像直方图’);
%给原图像直方图加标题名
Subplot(1,2,2);
%作第2幅子图
imhist(J,64);
%将均衡化后图像的直方图显示为64级灰度
Title(‘均衡变换后的直方图’);
%给均衡化后图像直方图加标题名
处理后的图像直方图分布更均匀了,图像在每个灰度级上都有像素点。
从处理前后的图像可以看出,许多在原始图像中看不清楚的细节在直方图均衡化处理后所得到的图像中都变得十分清晰。
对附录中的练习5-6、进行上机运行和调试
三、实验报告要求
1.技术路线;
2.MATLAB程序;
3.运行结果;
4.心得体会
四、思考题
1.直方图均衡化的目的是使图像直方图尽可能地分布均匀,你有什么改进的思路?
2.对实验中遇到的问题,进行讨论。
实验3、图像的滤波
1实验目的
进一步了解MatLab软件/语言,学会使用MatLab对图像作滤波处理,使学生有机会掌握滤波算法,体会滤波效果。
了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。
2实验要求
学生应当完成对于给定图像+噪声,使用平均滤波器、中值滤波器对不同强度的高斯噪声和椒盐噪声,进行滤波处理;
能够正确地评价处理的结果;
能够从理论上作出合理的解释。
3实验设备与软件
(1)IBM-PC计算机系统
(2)MatLab软件/语言包括图像处理工具箱(ImageProcessingToolbox)
(3)实验所需要的图片
4实验内容与步骤
a)调入并显示原始图像。
b)利用imnoise命令在图像上加入高斯(gaussian)噪声
c)利用预定义函数fspecial命令产生平均(average)滤波器
-1-1-1
-19-1
d)采用3x3的模板,分别用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果;
e)选择不同大小的模板,对加入某一固定噪声水平噪声的图像进行处理,观察上述滤波器处理的结果。
f)利用imnoise命令在图像上加入椒盐噪声(salt&
pepper)g)重复c)~e)的步骤
h)输出全部结果并进行讨论。
5思考题/问答题
(1)简述高斯噪声和椒盐噪声的特点。
(2)结合实验内容,定性评价平均滤波器/中值滤波器对高斯噪声和椒盐噪声的去噪效果?
(3)结合实验内容,定性评价滤波窗口对去噪效果的影响?
6实验报告要求
描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进
行必要的讨论,必须包括原始图像及其计算/处理后的图像。
7源代码
I=imread('
coins.png'
);
J=imnoise(I,'
gauss'
0.02);
%添加高斯噪声
%J=imnoise(I,'
salt&
pepper'
%添加椒盐噪声
K=filter2(fspecial('
average'
3),J)/255;
%均值滤波3×
3
L=filter2(fspecial('
5),J)/255;
%均值滤波5×
5
M=medfilt2(J,[33]);
%中值滤波3×
3模板
N=medfilt2(J,[44]);
%中值滤波4×
4模板
figure,imshow(J);
figure,imshow(K);
figure,imshow(L);
figure,imshow(M);
figure,imshow(N);
对附录中的练习7-8,9,10进行上机运行和调试
实验4、图像变换
1了解图像变换的意义和手段;
2熟悉离散傅里叶变换基本性质;
3熟练掌握图像变换的方法及应用;
4通过实验了解二维频谱的分布特点;
5通过本实验掌握利用MATLAB编程实现数字图像的变换。
1应用各种离散变换进行图像处理
傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。
通过实验培养这项技能,将有助于解决大多数图像处理问题。
对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。
2图像变换的基本原理
(1)傅立叶(Fourier)变换的定义
对于二维信号,二维Fourier变换定义为:
二维离散傅立叶变换为:
(1)二维离散傅立叶变换
I=imread(‘coins.png’);
%读入原图像文件
fftI=fft2(I);
%二维离散傅立叶变换
sfftI=fftshift(fftI);
%直流分量移到频谱中心
RR=real(sfftI);
%取傅立叶变换的实部
II=imag(sfftI);
%取傅立叶变换的虚部
A=sqrt(RR.^2+II.^2);
%计算频谱幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;
%归一化
figure;
%设定窗口
imshow(A);
%显示原图像的频谱
三、实验步骤
1打开计算机,安装和启动MATLAB程序;
程序组中“work”文件夹中应有待处理的图像文件;
2利用MatLab工具箱中的函数编制FFT频谱显示的函数;
3a).调入、显示获得的图像;
图像存储格式应为“.gif”;
b)对这三幅图像做FFT并利用自编的函数显示其频谱;
c)讨论不同的图像内容与FFT频谱之间的对应关系。
4记录和整理实验报告。
5.对附录中的练习4,11,13进行上机运行和调试。
四、实验报告内容
1叙述实验过程;
2提交实验的原始图像和结果图像。
五、思考题
1.傅里叶变换有哪些重要的性质?
2.图像的二维频谱在显示和处理时应注意什么?
实验5、图像复原
1了解图像复原的意义和手段;
2掌握图像复原的方法及应用;
4通过实验了解图像复原;
5通过本实验掌握利用MATLAB编程实现数字图像的复原。
2实验程序
1读取图像
f=checkerboard(8);
%原始图像
PSF=fspecial('
motion'
7,45);
%退化函数
gb=imfilter(f,PSF,'
circular'
%退化的图像
noise=imnoise(zeros(size(f)),'
gaussian'
0,0.001);
%高斯噪声图像
g=gb+noise;
%退化的图像加噪
%逆滤波
fr1=deconvwnr(g,PSF);
%parametricWienerfiltering(assumenoise-to-signalratioisaveragepowerratio)
Sf=abs(fft2(f)).^2;
%功率普
fA=sum(Sf(:
))/prod(size(f));
%图像的平均谱
Sn=abs(fft2(noise)).^2;
%噪声功率谱
nA=sum(Sn(:
))/prod(size(noise));
%求噪声的功率谱;
R=nA/fA;
fr2=deconvwnr(g,PSF,R)
%parametricWienerfilteringbyautocorrelationfunctions
NCORR=fftshift(real(ifft2(Sn)));
ICORR=fftshift(real(ifft2(Sf)));
fr3=deconvwnr(g,PSF,NCORR,ICORR);
subplot(221);
imshow(g,[]);
title('
degradedimage'
subplot(222);
imshow(fr1,[]);
directinversefilteredimage'
subplot(223);
imshow(fr2,[]);
parametricWienerfilteringusingpowerratio'
subplot(224);
imshow(fr3,[]);
parametricWienerfilteringusingautocorrelationratio'
3实验报告内容
实验6、图像分割
1、实验目的
1、使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响;
2、使用MatLab软件进行图像的分割;
3、能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能;
4、能够掌握分割条件(阈值等)的选择;
5、完成规定图像的处理并要求正确评价处理结果,能够从理论上作出合理的解释。
2、实验原理
(1)使用Roberts算子的图像分割实验,调入并显示一幅图像*.gif或*.tif;
使用Roberts算子对图像进行边缘检测处理;
Roberts算子为一对模板,相应的矩阵为:
rh=[01;
-10];
rv=[10;
0-1];
这里的rh为水平Roberts算子,rv为垂直Roberts算子。
可以显示处理后的水平边界和垂直边界检测结果;
用“欧几里德距离”和“街区距离”方式计算梯度的模,显示检测结果;
对于检测结果进行二值化处理,并显示处理结果。
先做检测结果的直方图,参考直方图中灰度的分布尝试确定阈值;
应反复调节阈值的大小,直至二值化的效果最为满意为止分别显示处理后的水平边界和垂直边界检测结果;
将处理结果转化为“白底黑线条”的方式;
给图像加上零均值的高斯噪声。
)
(2)使用Prewitt算子的图像分割实验
使用Prewitt算子进行内容
(1)中的全部步骤。
(3)使用Sobel算子的图像分割实验,使用Sobel算子进行内容
(1)中的全部步骤。
(4)使用LoG(拉普拉斯-高斯)算子的进行图像分割实验。
(5)使用Canny算子的进行图像分割实验。
作图像分割实验的MATLAB程序语句如下:
I=imread(‘circuit.tif’);
BW1=edge(I,‘roberts’);
BW2=edge(I,‘prewitt’);
BW3=edge(I,‘sobel’);
BW4=edge(I,‘log’);
BW5=edge(I,‘canny’);
Figure,imshow(BW1,[]);
Figure,imshow(BW2,[]);
Figure,imshow(BW3,[]);
Figure,imshow(BW4,[]);
Figure,imshow(BW5,[]);
3、实验步骤
1打开计算机,启动MATLAB程序;
2调入“实验一”中获取的数字图像,并进行图像分割处理;
3记录和整理实验报告
4、实验报告内容
5、思考题
1.评价一下Roberts算子、Prewitt算子、Sobel算子对于噪声条件下边界检测的性能。
2.为什么LoG梯度检测算子的处理结果不需要象Prewitt等算子那样进行幅度组合?
3.实验中所使用的四种算子所得到的边界有什么异同?
实验7:
形态学处理、图像分割(验证性实验)
要求学生掌握形态学处理、图像分割基本方法,掌握相关的MATLAB函数。
二、实验内容:
1)对附录中的练习15~24、练习26、练习28~29,进行上机运行和调试。
2)对上述练习,改变一些函数的参数,观察运行结果的变化。
对每个练习,要求学生获得相应的实验结果。
可以是对某些MATLAB函数如何使用的认识,也可以是学生的实验后的心得体会。
1)在形态学处理中,结构元选取的原则是什么?
举例说明。
2)对实验中遇到的问题,进行讨论。
8.图像压缩与编码
要求学生掌握图像压缩的DCT变换基本方法,掌握相关的MATLAB函数。
1)对本实验的后面程序进行上机运行和调试。
1)对实验中遇到的问题,进行讨论。
程序1
cameraman.tif'
%该图片在安装matlab的目录中找,原图为灰度图象
I=im2double(I);
%图像存储类型转换
T=dctmtx(8);
%离散余弦变换矩阵
B=blkproc(I,[88],'
P1*x*P2'
T,T'
%对原图像进行DCT变换
mask=[11110000
11100000
11000000
10000000
00000000
00000000];
B2=blkproc(B,[88],'
P1.*x'
mask);
%数据压缩,丢弃右下角高频数据
I2=blkproc(B2,[88],'
T'
T);
%进行DCT反变换,得到压缩后的图像
imshow(I)
原始图像'
imshow(I2)
压缩后的图像'
程序2
一个利用自己编写的DCT压缩
clear
orig_img=((imread('
circuit.tif'
)));
%readimage
orig_img=double(imresize(orig_img,[256256]));
%theimagebecomes256*256
%imagematrixwasstoredinvariableX
%imagecolormapisstoredinvariablemap
quant_multiple=1;
%setthemultipliertochangesizeofquant.levels
%(fractionsdecreasedistortion)
%varyquant_multfrom.1to3(seejpeg.resultsfile)
blocksize=8;
%setthesizeofchunkstotaketheDCTof(=<
8)
DCT_quantizer=...%levelsforquantizingtheDCTblock(8x8matrix)
[1611101624405161;
...
1212141926586055;
1413162440576956;
1417222951878062;
182237566810910377;
243555648110411392;
49647887103121120101;
7292959811210010399];
sz=size(orig_img);
rows=sz(1,1);
%therowsofimages
cols=sz(1,2);
colors=max(max(orig_img));
%guessatthenumberofcolorsintheimage
%Introduction
fprintf(1,'
Imageused:
circuit\n'
Itssizeis:
%dx%d\n'
rows,cols);
Numberofcolors(guess):
%d\n'
colors);
DCTblocksize:
blocksize,blocksize);
Quant.sizemultiplier:
quant_multiple);
%Displaytheoriginalimage
figure
(1)
imshow(orig_img,[0,255])
Originalimage'
figure
(2)
%Prepareimagefort