中南大学数字图像实验报告Word文档格式.doc
《中南大学数字图像实验报告Word文档格式.doc》由会员分享,可在线阅读,更多相关《中南大学数字图像实验报告Word文档格式.doc(34页珍藏版)》请在冰点文库上搜索。
255
图1.1对比度线性变换关系
设原图像的灰度为,处理后的图像的灰度为,对比度线性展宽的原理示意图如图1.1所示。
假设原图像中我们关心的景物的灰度分布在[,]区间内,处理后的图像中,我们关心的景物的灰度分布在[,]区间内。
在这里,也就是说我们所关心的景物的灰度级得到了展宽。
根据图中所示的映射关系中分段直线的斜率我们可以得出线性对比度展宽的计算公式:
,
, (1-1)
,
(;
)
其中,,,,图像的大小为×
。
2.直方图均衡化
直方图均衡化是将原始图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法。
离散图像均衡化处理可通过变换函数:
来实现
三、实验内容与步骤
1.熟悉MATLAB语言中数字图像处理函数的使用。
2.图像灰度线性变换的实现
1)读入一幅灰度图像test1.tif,显示其灰度直方图
2)根据图像灰度直方图,选择所关心的图像景物的灰度分布范围[fa,fb],以及拟变换的灰度分布范围[ga,gb]
3)实现对图像的灰度线性变换
4)调整,,的值,观察对处理结果的影响。
①灰度范围fa=30,fb=50,ga=30,gb=200,线性变换系数如下
α=1,β=8.5,γ=0.268
α=1对于灰度值0-30直方图几乎没有发生变化,可看做是恒等变化;
灰度值处于30至50之间的部分进行拉伸,其他部分压缩,图像变换效果
比较明显。
30至50位于直方图低灰度值部分,所以图像变亮。
②灰度范围fa=60,fb=100,ga=30,gb=200,线性变换系数如下
α=0.5,β=4.25,γ=0.3548
③灰度范围fa=30,fb=80,ga=30,gb=200,线性变换系数如下
α=1,β=3.4,γ=0.314
由①②③可以看出,对于斜率大于1的部分对图像灰度分布范围有拉伸作
用,斜率小于1的部分对图像灰度分布范围有压缩作用,斜率等于1的部
分对于图像灰度范围没有变化。
④灰度范围fa=30,fb=80,ga=130,gb=255,线性变换系数如下
α=4.3,β=2.5,γ=0
0-30,30-80灰度范围拉伸,其他压缩,图像变亮。
⑤灰度范围fa=100,fb=150,ga=5,gb=50,线性变换系数如下
α=0.05,β=0.9,γ=1.95
100-150灰度区间压缩,图像变暗
⑥灰度范围fa=100,fb=150,ga=50,gb=200,线性变换系数如下
α=0.5,β=3,γ=0.523
由此可以看出,将图像灰度在100到150之间的部分进行灰度拉伸,其他部分灰度压缩,图像整体变暗了,但因为拉伸的灰度值处于中间部分,所以效果不明显。
3.图像的均衡化处理
1)读入一幅灰度图像test2.tif,求出其直方图
2)利用Matlab函数实现图像的均衡化处理
3)同屏显示处理前后的图像和灰度直方图,说明处理前后直方图的变化以
及对应的灰度变化
均衡化处理前,直方图分布集中在低亮度区域,图像暗且对比度低,视觉效果
差。
均衡化处理后,直方图分布均匀,图像变亮,且对比度提高,图像清晰,视
觉效果好。
附:
程序界面部分截图:
1.均衡化处理
2.灰度线性变换
四、思考问题
1.在映射关系中,分段直线的斜率的大小对图像处理结果有哪些影响?
斜率大于1的部分对图像灰度有拉伸作用,小于1的部分对图像灰度有
压缩作用。
例如,低灰度级的区域斜率大于1,有拉伸作用,高灰度级的区
域斜率小于1,有压缩作用,所以图像变亮;
反之,图像变暗。
2.在进行对比度扩展时,如何确定和选取所关心的景物?
根据直方图分布的峰值所在区域,一半背景峰值分布在直方图低灰度区,
物体对象峰值分布在直方图高灰度区,两峰之间的谷底近似背景和物体对象
的分界。
因此对于暗图像可以将峰值左边灰度范围进行扩展,使图像变亮,
对于亮图像将峰值右边灰度范围进行扩展,使图像变亮,以达到增强图像对
比度效果。
3.直方图均衡化适用于什么形式的灰度分布情形?
适用于图像的有用数据的对比度相当接近的时候,灰度分布集中在较窄
的区域从而使图像细节不清晰的图像,直方图均衡化后使图像的灰度间距拉
开,使灰度分布均匀,增大反差,提高对比度,使图像细节清晰,改善视觉
效果。
实验二图像的空间域增强
1.熟悉图像空间域增强方法,掌握增强模板使用方法
2.掌握均值滤波器、中值滤波器的理论基础和实现方法
3.掌握图像锐化的基本理论和实现方法
4.验证图像滤波处理结果
图像增强是数字图像处理的基本内容之一,其目的是根据应用需要突出图像中的某些“有用”信息,削弱或去除不需要的信息,以改善图像的视觉效果,或突出图像的特征,便于计算机处理。
图像增强可以在空间域进行,也可以在频率域中进行。
空间域滤波主要利用空间模板进行,如3´
3,5´
5模板等。
一般来说,使用大小为m×
n的滤波器对大小为M×
N的图像f进行空间滤波,可表示成:
其中,m=2a+1,n=2b+1,𝑤
(𝑠
𝑡
)是滤波器系数,𝑓
(𝑥
𝑦
)是图像值
均值滤波器是一种空间平滑滤波器,它是对包含噪声的图像上的每个像素点,用它邻域内像素的平均值替代原来的像素值。
例如,采用一个3×
3的模板,待处理的像素为f(i,j),则处理后图像对应的像素值为g(i-1,j+1)
g(i,j)=1/9*(f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)+f(i,j-1)+f(i,j)+
f(i,j+1)+f(i+1,j-1)+f(i+1,j)+f(i+1,j+1));
中值滤波器也是一种空间平滑滤波器,它是对以图像像素点为中心的一个滑动窗口内的诸像素灰度值排序,用中值代替窗口中心像素的原来灰度值,因此它是一种非线性的图像平滑法。
采用Laplacian锐化算子进行图像边缘的锐化,是采用二阶差分运算获得像素间的差异值,由此,获得对图像景物边界的锐化。
Laplacian也可以算子也可以写成是模板作用的方式,如下:
设待处理的像素为f(i,j),则处理后图像对应的像素值为g(i-1,j+1),则
g(i,j)=4*f(i,j)-(f(i-1,j-1)+f(i,j-1)+f(i,j+1)+f(i+1,j));
常用的锐化算子还有Roberts、Prewitt和Sobel算子等
1.读入一幅256×
256大小、256级灰度的数字图像test3
2.图像的平滑滤波处理
1)对原图像分别加入高斯噪声、椒盐噪声。
2)利用邻域平均法,分别采用3´
5模板对加噪声图像进行平滑处理,显示原图像、加噪图像和处理后的图像。
3)利用中值滤波法,分别采用3´
5模板对加噪声图像进行去噪处理,显示原图像、加噪图像和处理后的图像。
4)比较各种滤波方法和滤波模板的处理结果
①加入高斯噪声,均值滤波
②加入高斯噪声,中值滤波
③加入椒盐噪声,均值滤波
④加入椒盐噪声,中值滤波
3.图像的锐化处理
1)利用Laplacian锐化算子(α=-1)对256×
256大小、256级灰度
的数字图像test4进行锐化处理,显示处理前、后图像。
2)分别利用Roberts、Prewitt和Sobel边缘检测算子,对数字图像test4
进行边缘检测,显示处理前、后图像。
1.采用均值滤波、中值滤波,对高斯噪声和椒盐噪声的抑制哪种比较有效?
均值滤波对高斯噪声的抑制比较有效,但造成一定的模糊,邻域越大,图像
模糊越严重;
中值滤波对椒盐噪声比较有效,从实验结果看3*3模板处理后的图
像接近原图像,而5*5模板造成图像模糊严重,邻域越大,模糊越严重。
2.模板大小的不同,所处理效果有何不同?
为什么?
模板越大,去噪能力增强,但同时造成的模糊越严重。
均值滤波中,模板中央像素灰度值取模板内所有像素的平均,模板越大,关
联的像素越多,降低噪声对中央像素灰度值的影响,提高去噪能力,但同时使边
缘附近像素灰度值接近,造成图像模糊。
中值滤波中,窗口中央灰度值取窗口内
所有像素的中值,模板越大,噪声出现的次数,越可能小于模板的一半则被滤掉,
提高了降噪能力,尤其是椒盐噪声,但同时使图像边缘附近像素灰度值接近而造
成图像模糊,范围越大,模糊越严重。
3.对Laplacian锐化算子的处理结果中,对小于0的部分,采用不同的方法标准化到[0,255]时,图像的显示效果有什么不同?
对于小于0的部分可以采用以下办法:
方法1:
整体加一个正整数,以保证所有的像素值均为正。
比如+128,还有
<
0的则视为0,若有>
255视为255处理,这样做的结果是:
可以获得类似浮雕的效果。
方法2:
将所有的像素值取绝对值。
这样做的结果是,可以获得对边缘的有方向提取。
实验三图像的傅里叶变换和频域处理
1.熟悉图像空间域和频率域的关系,掌握快速傅里叶变换
2.掌握离散傅里叶变换的性质和应用
图像既能在空间域处理,也能在频率域处理。
把图像信息从空域变换到频域,可以更好地分析、加工和处理
二维离散傅立叶正变换的表达式为
逆变换为:
二维离散傅立叶变换具有若干性质,如:
线性性、平移性、可分离性、周期性、共轭对称性、旋转不变性等。
可利用离散傅里叶变换,将信号从空间域变换到频率域,在频率域选择合适的滤波器H(u,v)对图像的频谱成分进行处理,然后经逆傅立叶变换得到处理图像,实现图像处理结果。
1.产生一幅如图所示亮块图像f(x,y)(256×
256大小、暗处=0,亮处=255),对其进行FFT:
(1)同屏显示原图f和FFT(f)的幅度谱图;
(2)若令f1(x,y)=(-1)x+yf(x,y),重复以上过程,比较二者幅度谱的异同,简述理由;
(3)若将f1(x,y)顺时针旋转45度得到f2(x,y),试显示FFT(f2)的幅度谱,并与FFT(f2)的幅度谱进行比较。
2.对256×
256大小、256级灰度的数字图像test5进行频域的理想低通、高通滤波滤波,同屏显示原图、幅度谱图和低通、高通滤波的结果图。
设置低通滤波截止频率为Dl0=50,即:
1,
0,
设置高通滤波器截止频率为Dh0=30,即:
1,
0,
由滤波结果可以得出,低通滤波器由于滤掉了高频成分,高频成分含有大量
边缘信息,所以造成了一定程度的图像模糊。
高通滤波器滤掉了低频成分,保留
了高频成分,即保留了边界信息,所以显示出原图像的边界。
附录
实验代码
实验一:
1.界面设计
2.源码
⑴ugamma.m文件
%计算灰度分段线性变换参数a,b,r
%fa,fb目标灰度范围
%ga,gb逆变换灰度范围
function[a,b,r]=ugamma(fa,fb,ga,gb)
a=ga/fa;
b=(gb-ga)/(fb-fa);
r=(255-gb)/(255-fb);
end
⑵histlt.m文件
%求解灰度分段线性变换后图像
%g变换后图像
%f处理图像对象
%fa,fb关心灰度区间
%ga,gb逆变换后灰度区间
function[g]=histlt(f,fa,fb,ga,gb)
[M,N]=size(f);
[a,b,r]=ugamma(fa,fb,ga,gb);
fori=1:
M
forj=1:
N
iff(i,j)<
=fa
g(i,j)=a*f(i,j);
elseiff(i,j)<
=fb
g(i,j)=b*(f(i,j)-fa)+ga;
elseg(i,j)=r*(f(i,j)-fb)+gb;
end
end
⑶lab1gui_1.m界面关联核心代码
%figure打开时回调函数
functionlab1gui_1_OpeningFcn(hObject,eventdata,handles,varargin)
scrsize=get(0,'
ScreenSize'
);
set(gcf,'
Position'
scrsize);
%窗口最大化
index=1;
%标记当前选择处理项
handles.index=index;
handles.output=hObject;
guidata(hObject,handles);
%文件选择器选择图像后回调函数
functionrpicBtn_Callback(hObject,eventdata,handles)
[filename,pathname]=uigetfile({'
*.tif'
},'
读取图片'
filecomppath=[pathnamefilename];
set(handles.pfEdit,'
string'
filecomppath);
%显示读取文件的路径
f=imread(filecomppath);
handles.f=f;
axes(handles.axes1);
imshow(f);
axes(handles.axes2);
imhist(f);
g=histeq(handles.f);
handles.g=g;
guidata(hObject,handles);
showProcessResult(handles);
%图像处理按钮回调
functiondwBtn_Callback(hObject,eventdata,handles)
switchhandles.index
case1
g=histeq(handles.f);
case2
g=getlt(handles);
%退出按钮回调
functionexitBtn_Callback(hObject,eventdata,handles)
closeall;
clearall;
clc;
%单选按钮组线性变换,均衡化选择变化回调
functionuipanel7_SelectionChangeFcn(hObject,eventdata,handles)
sectag=get(hObject,'
tag'
switchsectag
case'
ltRb'
index=2;
histeqRb'
index=1;
%线性变换处理
functiongs=getlt(handles)
%得到文本框中输入参数
fa=str2double(get(handles.fa,'
));
fb=str2double(get(handles.fb,'
ga=str2double(get(handles.ga,'
gb=str2double(get(handles.gb,'
fprintf('
a=%f,b=%f,c=%f\n'
a,b,r);
%设置数据
set(handles.k1,'
['
α='
num2str(a)]);
set(handles.k2,'
β='
num2str(b)]);
set(handles.k3,'
γ='
num2str(r)]);
gs=histlt(handles.f,fa,fb,ga,gb);
%显示处理后结果
functionshowProcessResult(handles)
axes(handles.axes3);
imshow(handles.g);
axes(handles.axes4);
imhist(handles.g);
实验二:
homegui.fig
lab2gui_1.fig
lab2gui_2.fig
⑴homegui.m
%退出按钮回调
functionpushbutton3_Callback(hObject,eventdata,handles)
%启动窗口lab2gui_1
functionphlbBtn_Callback(hObject,eventdata,handles)
lab2gui_1;
%启动窗口lab2gui_2
functionpushbutton2_Callback(hObject,eventdata,handles)
lab2gui_2;
⑵lab2gui_1.m
functionlab2gui_1_OpeningFcn(hObject,eventdata,handles,varargin)
functionreadimgBtn_Callback(hObject,eventdata,handles)
set(handles.filepathEdit,'
gp=getpollutionImg(1,handles.f);
showpollutionImg(gp,handles);
handles.gp=gp;
[glb3glb5]=getfilterImg(1,handles.gp);
showfilterImg(glb3,glb5,handles);
%得到加入噪声后图像
%index1高斯噪声2椒盐噪声
functiongp=getpollutionImg(index,f)
switchindex
gp=imnoise(f,'
gaussian'
0,0.03);
%加入高斯噪声,均值、方差分别为0,0.02
salt&
pepper'
0.02);
%加入椒盐噪声
%得到滤波后图像
%glb33*3模板处理结果glb55*5模板处理结果
%index:
1均值滤波2中值滤波
function[glb3glb5]=getfilterImg(index,gp)
avf3=fspecial('
average'
[3,3]);
avf5=fspecial('
[5,5]);
glb3=filter2(avf3,gp);
glb5=filter2(avf5,gp);
glb3=medfilt2(gp,[3,3]);
glb5=medfilt2(gp,[5,5]);
%显示噪声污染后的图像
functionshowpollutionImg(gp,handles)
imshow(gp);
%显示滤波处理后的图像
functionshowfilterImg(glb