数值图像处理.docx
《数值图像处理.docx》由会员分享,可在线阅读,更多相关《数值图像处理.docx(49页珍藏版)》请在冰豆网上搜索。
数值图像处理
数字图像处理
(实验报告)
专业:
电子信息工程
学号:
2009040201019
姓名:
宋军
沈阳航空航天大学
电子信息工程学院
20012.6
《数字图像处理》实验指导书
实验一、显示图像、读取文件格式
实验二、空间域图像增强
实验三、频率域图像增强
实验四、图像恢复
实验五、图像分割
实验一、显示图像、读取文件格式
一、实验目的
熟悉常用的图像文件格式;
熟悉图像矩阵的显示方法;
熟悉图像矩阵的插值方法
二、实验原理
1图像文件的存储格式
在计算机中,数据是以文件的形式存放在存储器中的,图像数据也不例外。
图像文件是采用特定数据结构表示图像数据的文件,这种特定格式,就是该图像文件的格式,图像文件一般由文件头、色调数据和像素数据三部分组成。
常用的图像文件格式:
BMP、JPEG、TIFF、GIF。
在windows操作系统下能够在显示器上显示上述常用的文件格式,但有些文件格式windows系统不支持显示,比如DICOM医学影像文件格式。
现在已有几十种常用的图像文件格式,它们是由计算机软件技术公司、计算机设备制造厂商等研究制订的,主要目的是为了图像信息交换和操作的方便性。
2图像的插值方法
在浏览图像的时候经常对图像进行缩放,然而对于不同的图像缩放方法,缩放的效果也不同。
分别采用最邻近插值法、双线性插值和双三次插值法,可以发现在图像边缘处方块效应不同。
3所应用到的Matlab函数
imread读图像文件函数;
imwrite写图像文件函数图像文件信息显示
Imfinfo图像文件信息显示函数
Imshow显示图像函数.
Imresize图像缩放函数
Dicomread读取医学影像文件函数
Dicominfo医学影像文件信息显示函数
rgb2gray图像文件转换函数
三、实验步骤
1图像文件格式及显示
•调用imread函数,读取硬盘中的图像文件;
•调用imshow函数,显示图像;
•调用imfinfo函数,显示图像文件信息;
•调用dicomread函数,读取医学影像文件
•调用dicominfo函数,显示医学影像文件信息
2图像文件格式的转换
•调用imread函数,读取硬盘中的图像文件;
•调用imshow函数,显示图像;
•调用imfinfo函数,显示图像文件信息;
•调用rgb2gray函数,进行文件格式的转换,将彩色.jpg文件转换成灰度图像;
•调用imfinfo函数,显示图像文件转换后的输出信息;
•比较转换后文件格式的区别
3图像缩放的实验
•调用imread函数,读取硬盘中的图像文件;
•调用imshow函数,显示图像;
•调用imfinfo函数,显示图像文件信息;
•调用Imresize函数,进行图像进行缩放,分别选用'bilinear'、'nearest'、'bicubic'参数,并更改缩放比例(0.5,2);
•调用imfinfo函数,显示图像文件转换后的输出信息;
•调用imshow函数,显示图像;
4记录和整理实验报告
四、实验仪器
1计算机;
2MATLAB程序;
3移动式存储器(软盘、U盘等)。
五、实验报告内容
1.1源程序:
I=imread('Plane211.jpg');
imshow(I);
imfinfo('Plane211.jpg')
I2=rgb2gray(I);
figure,imshow(I2);
imwrite(I2,'Plane211.bmp');
imfinfo('Plane211.bmp')
1.2原图像:
1.3结果图像:
2.1源程序:
clear;
closeall;
I=imread('cameraman.tif');
imshow(I);
I2=imresize(I,2,'bilinear');%双线性插值图像缩放
I3=imresize(I,0.5,'nearest');%最邻近插值算法图像缩放
I4=imresize(I,0.5,'bicubic');%双三次样条插值算法图像缩放
whos
figure,imshow(I2);
figure,imshow(I3);
figure,imshow(I4);
imwrite(I2,'cameraman.bmp');
imfinfo('cameraman.bmp')
2.2源图像:
2.2结果图像:
2.3结果图像:
2.4结果图像:
六、思考题
1比较各种图像的输出文件格式,分析它们的特点。
2比较.jpg文件格式转换后的文件输出格式,分析文件大小不同的原因;
3比较图像缩放后的效果,分析原因
实验二、空间域图像增强
一、实验目的
熟悉图像直方图的显示;
熟悉图像灰度变换的方法;
熟悉图像直方图均衡的方法
二、实验原理
图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。
其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。
图像增强技术主要有灰度对比度变换、直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。
本实验以灰度对比度变换、直方图均衡化增强图像对比度的方法,其他方法同学们可以在课后自行实验。
1图像灰度对比度变换
图像灰度对比度变换是一幅输入图像经过点处理将产生一幅输出图像,后者的每个象素点的灰度值仅由相应输入象素点的值决定,又称为“对比度增强”、“对比度拉伸”、“灰度变换”
下图中分别是对数、反对数及反色灰度变换函数
2.图像直方图均衡化
直方图是图像的最基本的统计特征,它反映的是图像的灰度值的分布情况。
直方图是多种空间城处理技术的基础。
直方图操作能有效地用于图像增强。
除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的。
灰度直方图是图像预处理中涉及最广泛的基本概念之一。
直方图均衡化的目的是使图像在整个灰度值动态变化范围内的分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果。
直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。
处理后的图像直方图分布更均匀了,图像在每个灰度级上都有像素点。
Pf(f)——输入图像的概率密度
Pg(g)——输出图像的概率密度
输入图像落在[f,f+Δf]经过映射函数Ψ(f)使输出图像中落在[g,g+Δg]。
图像的直方图事实上就是图像的亮度分布的概率密度函数,是一幅图像的所有象素集合的最基本的统计规律。
直方图反映了图像的明暗分布规律,可以通过图像变换进行直方图调整,获得较好的视觉效果。
从处理前后的图像可以看出,许多在原始图像中看不清楚的细节在直方图均衡化处理后所得到的图像中都变得十分清晰。
3所应用到的Matlab函数
imread读图像文件函数;
imwrite写图像文件函数图像文件信息显示
Imfinfo图像文件信息显示函数
imadjust图像灰度对比度变换函数:
imshow显示图像函数.
imhist图像直方图输出显示函数:
例如:
Imhist(J,64)将均衡化后图像的直方图显示为64级灰度
histeq图像直方图均衡变换函数:
三实验步骤
(一)图像灰度对比度变换
实验步骤:
a.调用imread函数,读取硬盘中的图像文件.
b.调用imshow函数,显示图像.
c.调用imhist函数,显示图像直方图信息
d.调用imadjust函数,对图像做灰度变换
(二)图像直方图均衡
实验步骤:
a.调用imread函数,读取硬盘中的图像文件.
b.调用imshow函数,显示图像.
c.调用imhist函数,显示图像直方图信息
d.调用histeq函数,对图像做直方图均衡
3显示原图像的直方图和经过均衡化处理过的图像直方图。
4记录和整理实验报告
三、实验仪器
1计算机;
2MATLAB程序;
3移动式存储器(软盘、U盘等)。
4记录用的笔、纸。
四、实验报告内容
1.1源程序
I=imread('pout.tif');
imshow(I);
figure,imhist(I);
J=imadjust(I,[0.250.9],[01]);%图像灰度对比度变换函数
figure,imshow(J);
figure,imhist(J);
1.2源图像
1.3波形图像
1.4结果图像
1.4波形图像
2.1源程序
I=imread('pout.tif');
imshow(I);
figure,imhist(I);%图像直方图输出显示函数
[J,T]=histeq(I,64);%图像直方图均衡变换函数
figure,imshow(J);
figure,imhist(J);
figure,plot((0:
255)/255,T);
J=histeq(I,32);
figure,imshow(J);
figure,imhist(J);
2.2源图像
2.3波形图像
2.4结果图像
2.5波形图像
2.6波形图像
2.7结果图像
2.8结果图像
3.1源程序
I=imread('eight.tif');
imshow(I);
J2=imnoise(I,'salt&pepper',0.04);%叠加密度为0.04的椒盐噪声。
figure,imshow(J2);
I_Filter1=medfilt2(J2,[33]);%窗口大小为3×3
figure,imshow(I_Filter1);
I_Filter2=medfilt2(J2,[55]);%窗口大小为5×5
figure,imshow(I_Filter2);
I_Filter3=medfilt2(J2,[77]);%窗口大小为7×7
figure,imshow(I_Filter3);
3.2源图像
3.3结果图像
3.4结果图像
3.5结果图像
3.6结果图像
4.1源程序
[I,map]=imread('eight.tif');
figure,imshow(I);title('original')
J1=imnoise(I,'gaussian',0,0.02);%受高斯噪声干扰
figure,imshow(J1);
M4=[010;101;010];
M4=M4/4;%4邻域平均滤波
I_filter1=filter2(M4,J1);
figure,imshow(I_filter1,map);
M8=[111;101;111];%8邻域平均滤波
M8=M8/8;
I_filter2=filter2(M8,J1);
figure,imshow(I_filter2,map);
4.2源图像
4.3结果图像
4.4结果图像
4.5结果图像
五、思考题
1.直方图是什么概念?
它反映了图像的什么信息?
2.直方图均衡化是什么意思?
它的主要用途是什么?
实验三、图像的傅立叶变换
一、实验目的
1了解图像变换的意义和手段;
2熟悉傅里叶变换的孩本性质;
3熟练掌握FFT方法的应用;
4通过实验了解二维频谱的分布特点;
5通过本实验掌握利用MATLAB编程实现数字图像的傅立叶变换。
二、实验原理
1应用傅立叶变换进行图像处理
傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。
通过实验培养这项技能,将有助于解决图像处理问题。
2傅立叶(Fourier)变换的定义
对于二维信号,二维Fourier变换定义为:
二维离散傅立叶变换为:
图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见参考书目,有关傅立叶变换的快速算法的程序不难找到。
Butterworth低通滤波器
N级Butterworth低通滤波器的传递函数:
D(u,v)是(u,v)点距频率矩形原点的距离
D0是截止频率距原点的距离
图为Butterworth滤波器的透视图,滤波效果,滤波器阶数
3利用MATLAB软件实现数字图像傅立叶变换的程序:
imread读入原图像文件
imshow显示原图像
imnoise(I,'salt&pepper')叠加椒盐噪声
fft2二维离散傅立叶变换
fft2二维离散傅立叶逆变换
fftshift直流分量移到频谱中心一般在对图像进行的傅立叶变换时,坐标原点在中心位置处,而计算机在对图像执行傅立叶变换时是以图像的左上角为坐标原点。
所以使用函数fftshift进行修正,使变换后的直流分量位于图形的中心;
ifftshift频谱中心移到直流分量
double数据类型转换,图像的无符号整型转换为双精度浮点数
uint8数据类型转换,双精度浮点数转换为图像的无符号整型
size获取图像的宽度和高度
fix取整
三、实验步骤
1编写中心为矩形二值图像的傅立叶变换,并显示变换后图像
2编写对图像进行Butterworth低通滤波
输入图像
叠加椒盐噪声
显示图像
将图像的无符号整型转换成浮点型
进行傅立叶变换
直流分量移到频谱中心
获得图像的宽度和高度
设定二阶巴特沃斯低通滤波器
设定截止频率到原点距离
计算低通滤波器传递函数
对图像进行滤波
显示滤波处理后的图像
记录和整理实验报告。
四、实验仪器
1计算机;
2MATLAB程序;
3移动式存储器(软盘、U盘等)。
4记录用的笔、纸。
五、实验报告内容
1.1源程序
f=zeros(30,30);
f(5:
24,13:
17)=1;
imshow(f,'notruesize');
F=fft2(f,256,256);
F2=fftshift(F);
figure,imshow(log(abs(F2)),[-15],'notruesize');
1.2原图像
图3.1图3.2
2.1源程序
I=imread('eight.tif');
imshow(I);
J1=imnoise(I,'salt&pepper');
figure,imshow(J1);
f=double(J1);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
nn=2;
d0=50;
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn));
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
J2=ifft2(result);
J3=uint8(real(J2));
figure,imshow(J3);
2.2结果图像
图3.3图3.4
3.1源程序
I=imread('eight.tif');
imshow(I);
f=double(I);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
nn=2;
d0=5;
m=fix(M/2);
n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
if(d==0)
h=0;
else
h=1/(1+0.414*(d0/d)^(2*nn));
end
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
J2=ifft2(result);
J3=uint8(real(J2));
figure,imshow(J3);
3.2图像及结果图像
图3.6图3.7
六、思考题
1.傅里叶变换有哪些重要的性质?
2.图像的二维频谱在显示和处理时应注意什么?
实验四、图像恢复
实验目的
熟悉图像中值滤波、均值滤波
熟悉图像维纳滤波,及图像逆滤波
实验原理
1.图像复原原理
什么是退化?
成像过程中的”退化”,是指由于成像系统各种因素的影响,使得图像质量降低。
引起图像退化的原因:
成像系统的散焦;成像设备与物体的相对运动;成像器材的固有缺陷;外部干扰等。
2图像复原的方法
均值滤波器
算术均值滤波器
对m×n的矩形子窗口取平均值
(2)中直滤波器
在滤波器涉及范围内计算最大值和最小值之间的中点:
(a)原始信号(b)均值滤波,(c)中值滤波.
尖顶边缘滤波示意图
2维纳滤波器
从噪声污染的信号中抽取原来的信号,滤波器的输出的均方误差为最小。
正在观测的信号由有用信号和加性噪声信号构成,维纳滤波器在尽可能降低噪声的信号的同时恢复有用信号。
这样我们就能用滤波器尽量接近地估计出原来的信号。
图像处理中:
估计局部均值和局部方差,以整体的局部方差均值为噪声估计
实验步骤
1编写图像均值滤波、中值滤波
输入图像
叠加椒盐噪声
显示图像
设定中值滤波器、均值滤波器
对图像进行滤波
显示滤波处理后的图像
记录和整理实验报告
2编写对图像进行维纳逆滤波。
输入图像
建立运动退化模型对图像进行退化
显示图像
设定维纳逆滤波器
对图像进行滤波
显示滤波处理后的图像记录和整理实验报告。
实验仪器
1计算机;
2MATLAB;
3移动式存储器(软盘、U盘等)。
4记录用的笔、纸。
实验报告内容
1.1程序
I=imread('eight.tif');
imshow(I);
J2=imnoise(I,'salt&pepper',0.04);%叠加密度为0.04的椒盐噪声。
figure,imshow(J2);
I_Filter1=medfilt2(J2,[33]);%窗口大小为3×3的中值滤波
figure,imshow(I_Filter1);
I_Filter2=medfilt2(J2,[55]);%窗口大小为5×5
figure,imshow(I_Filter2);
I_Filter3=medfilt2(J2,[77]);%窗口大小为7×7
figure,imshow(I_Filter3);
1.2原图像
1.3结果图像
2.2源程序
[I,map]=imread('eight.tif');
figure,imshow(I);title('original')
J1=imnoise(I,'gaussian',0,0.02);%受高斯噪声干扰
figure,imshow(J1);
M4=[010;101;010];
M4=M4/4;%4邻域平均滤波
I_filter1=filter2(M4,J1);
figure,imshow(I_filter1,map);
M8=[111;101;111];%8邻域平均滤波
M8=M8/8;
I_filter2=filter2(M8,J1);
figure,imshow(I_filter2,map);
2.3源图像
2.4结果图像
3.1源程序
I=imread('eight.tif');
figure;imshow(I);
len=31;
theta=11;
psf=fspecial('motion',len,theta);%生成卷积核
blurred=imfilter(I,psf,'circular','conv');%图像滤波
figure;imshow(blurred);
wnr1=deconvwnr(blurred,psf);%维纳去卷积函数
figure;imshow(wnr1);
3.2源图像
实验五、图像分割
一、实验目的
1熟悉图像分割的意义和用途,理解图像分割的原理;
2掌握图像分割的一般方法;
3掌握运用MATLAB软件进行图像分割的操作。
二、实验原理
图像分割是将图像划分成若干个互不相交的小区域的过程,小区域是某种意义下具有共同属性的像素的连通集合。
如不同目标物体所占的图像区域、前景所占的图像区域等。
图像边缘提取的方法:
(1)分别利用Prewitt算子、Log算子提取图像的边缘,
(2)分水岭Watershed分割法
1.对比度最大化,通过watershed变换找到的低谷数目最小,使感兴趣的对象的对比度达到最大。
应用top-hat变换定义为原图像和它的开之差;bottom-hat变换定义为在原图像和它的闭之间的差。
2.图像相加减。
top-hat图像bottom-hat图像相减,显示目标对象之间的间隙
3.转换感兴趣的对象。
调用watershed变换找出图像的亮度”低谷”,把imcomplement函数作用于增强过的图像上,将感兴趣的目标对象转换为亮度低谷,得到增强图的补图
4.检测亮度低谷。
对所得补图运用imextendedmin函数检测低于某特别阈值的所有亮度低谷。
imextendedmin函数的输出是一个二值(逻辑值)图像。
用imimposemin函数把补图改为只含有那些由imextendedmin函数找到的低谷,并将低谷的像素值变为0
5.Watershed分割。
通过watershed变换,可找出来所有含有强加给最小值的区域。
三、实验步骤
(1)读图像
(2)显示原始图像
(3)对图像分别进行高通滤波,低通滤波
(4)将滤波后的两幅图像相减以利用提取图像边缘
(5)差值图像进行图像增强变换
(6)利用Imextendedmin函数搜索图像直方图谷底
(7)
(1)
Watershed分水岭函数
(2)对图像进行二值化处理
(8)对分割的区域填充不同的颜色利用区分,并与原始图像比较分割效果
四、实验仪器
1计算机;
2MATLAB程序;
3移动式存储器(软盘、U盘等);
4记录用的笔、纸。
五.实验程序及图像
1.1源程序
I=imread('bacteria.BMP');
BW1=edge(I,'prewitt',0.04);
figure
(1);
imshow(I);
figure
(2);
imshow(BW1);
1.2源图像
1.3结果图像
2.1源程序
I=imread('bacteria.BMP');
BW1=edge(I,'log',0.003);
imshow(BW1);title('¦Ò=2')
BW1=edge(I,'log',0.003,3);
figure,imshow(BW1);title('¦