中南大学数字图像实验报告.doc

上传人:w****2 文档编号:6424806 上传时间:2020-02-25 格式:DOC 页数:36 大小:2.85MB
返回 下载 相关 举报
中南大学数字图像实验报告.doc_第1页
第1页 / 共36页
中南大学数字图像实验报告.doc_第2页
第2页 / 共36页
中南大学数字图像实验报告.doc_第3页
第3页 / 共36页
点击查看更多>>
资源描述
数字图像处理实验报告 学 院: 信息科学与工程 专业班级: 电子信息工程 学 号: 姓 名: 指导老师: 目录实验一 数字图像的基本操作和灰度变换31.1实验目的31.2实验原理与方法31.3实验内容与结果分析41.4思考问题9实验二 图像的空间域增强112.1实验目的112.2实验原理与方法112.3实验内容与结果分析122.4思考问题15实验三 图像的傅里叶变换和频域处理173.1实验目的173.2实验原理与方法173.3实验内容与结果分析17附录 实验代码20实验一 数字图像的基本操作和灰度变换一、 实验目的 1. 了解数字图像的基本数据结构 2. 熟悉Matlab中数字图像处理的基本函数和基本使用方法 3. 掌握图像灰度变换的基本理论和实现方法 4. 掌握直方图均衡化增强的基本理论和实现方法二、实验原理与方法1. 图像灰度的线性变换灰度的线性变换可以突出图像中的重要信息。通常情况下,处理前后的图像灰度级是相同的,即处理前后的图像灰度级都为0,255。那么,从原理上讲,我们就只能通过抑制非重要信息的对比度来腾出空间给重要信息进行对比度展宽。 0255 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,= 00-30,30-80灰度范围拉伸,其他压缩,图像变亮。灰度范围fa=100,fb=150,ga=5,gb=50,线性变换系数如下=0.05,=0.9,= 1.95100-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. 验证图像滤波处理结果二、实验原理与方法图像增强是数字图像处理的基本内容之一,其目的是根据应用需要突出图像中的某些“有用”信息,削弱或去除不需要的信息,以改善图像的视觉效果,或突出图像的特征,便于计算机处理。图像增强可以在空间域进行,也可以在频率域中进行。空间域滤波主要利用空间模板进行,如33,55模板等。一般来说,使用大小为mn 的滤波器对大小为MN 的图像f进行空间滤波,可表示成: 其中,m=2a+1, n=2b+1, (,)是滤波器系数,(,)是图像值均值滤波器是一种空间平滑滤波器,它是对包含噪声的图像上的每个像素点,用它邻域内像素的平均值替代原来的像素值。例如,采用一个33的模板,待处理的像素为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读入一幅256256 大小、256 级灰度的数字图像test32. 图像的平滑滤波处理1)对原图像分别加入高斯噪声、椒盐噪声。2)利用邻域平均法,分别采用33,55模板对加噪声图像进行平滑处理,显示原图像、加噪图像和处理后的图像。3)利用中值滤波法,分别采用33,55模板对加噪声图像进行去噪处理,显示原图像、加噪图像和处理后的图像。4)比较各种滤波方法和滤波模板的处理结果加入高斯噪声,均值滤波加入高斯噪声,中值滤波加入椒盐噪声,均值滤波加入椒盐噪声,中值滤波3. 图像的锐化处理 1)利用Laplacian 锐化算子(=-1)对256256 大小、256 级灰度的数字图像test4进行锐化处理,显示处理前、后图像。 2) 分别利用Roberts、Prewitt 和Sobel 边缘检测算子,对数字图像test4进行边缘检测,显示处理前、后图像。 四、思考问题1采用均值滤波、中值滤波,对高斯噪声和椒盐噪声的抑制哪种比较有效?均值滤波对高斯噪声的抑制比较有效,但造成一定的模糊,邻域越大,图像模糊越严重;中值滤波对椒盐噪声比较有效,从实验结果看3*3模板处理后的图像接近原图像,而5*5模板造成图像模糊严重,邻域越大,模糊越严重。2模板大小的不同,所处理效果有何不同?为什么?模板越大,去噪能力增强,但同时造成的模糊越严重。均值滤波中,模板中央像素灰度值取模板内所有像素的平均,模板越大,关联的像素越多,降低噪声对中央像素灰度值的影响,提高去噪能力,但同时使边缘附近像素灰度值接近,造成图像模糊。中值滤波中,窗口中央灰度值取窗口内所有像素的中值,模板越大,噪声出现的次数,越可能小于模板的一半则被滤掉,提高了降噪能力,尤其是椒盐噪声,但同时使图像边缘附近像素灰度值接近而造成图像模糊,范围越大,模糊越严重。3对Laplacian锐化算子的处理结果中,对小于0的部分,采用不同的方法标准化到0,255时,图像的显示效果有什么不同?为什么?对于小于0的部分可以采用以下办法:方法1:整体加一个正整数,以保证所有的像素值均为正。比如+128,还有255视为255处理,这样做的结果是:可以获得类似浮雕的效果。方法2:将所有的像素值取绝对值。这样做的结果是,可以获得对边缘的有方向提取。 实验三 图像的傅里叶变换和频域处理一、 实验目的 1. 熟悉图像空间域和频率域的关系,掌握快速傅里叶变换2. 掌握离散傅里叶变换的性质和应用二、实验原理与方法图像既能在空间域处理,也能在频率域处理。把图像信息从空域变换到频域,可以更好地分析、加工和处理二维离散傅立叶正变换的表达式为逆变换为:二维离散傅立叶变换具有若干性质,如:线性性、平移性、可分离性、周期性、共轭对称性、旋转不变性等。可利用离散傅里叶变换,将信号从空间域变换到频率域,在频率域选择合适的滤波器H(u,v)对图像的频谱成分进行处理,然后经逆傅立叶变换得到处理图像,实现图像处理结果。三、实验内容与步骤1产生一幅如图所示亮块图像f(x,y)(256256 大小、暗处=0,亮处=255),对其进行FFT:(1)同屏显示原图f 和FFT(f)的幅度谱图;(2)若令f1(x,y)=(-1)x+y f(x,y),重复以上过程,比较二者幅度谱的异同,简述理由;(3)若将f1(x,y)顺时针旋转45 度得到f2(x,y),试显示FFT(f2)的幅度谱,并与FFT(f2)的幅度谱进行比较。2. 对256256 大小、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);for i=1:M for j=1:N if f(i,j)=fa g(i,j) = a*f(i,j); elseif f(i,j)=fb g(i,j) = b*(f(i,j)-fa)+ga; else g(i,j)=r*(f(i,j)-fb)+gb; end endendend lab1gui_1.m 界面关联核心代码% figure打开时回调函数function lab1gui_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);% 文件选择器选择图像后回调函数function rpicBtn_Callback(hObject, eventdata, handles)filename,pathname = uigetfile(*.tif,读取图片);filecomppath = pathname filename;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);% 图像处理按钮回调function dwBtn_Callback(hObject, eventdata, handles)switch handles.index case 1 g = histeq(handles.f); case 2 g = getlt(handles);endhandles.g = g;guidata(hObject,handles);showProcessResult(handles);% 退出按钮回调function exitBtn_Callback(hObject, eventdata, handles)close all;clear all;clc;% 单选按钮组 线性变换,均衡化选择变化回调function uipanel7_SelectionChangeFcn(hObject, eventdata, handles)sectag = get(hObject,tag); switch sectag case ltRb g = getlt(handles); index = 2; case histeqRb g = histeq(handles.f); index = 1;endhandles.g = g;handles.index = index;guidata(hObject,handles);showProcessResult(handles);% 线性变换处理function gs = getlt(handles)%得到文本框中输入参数fa = str2double(get(handles.fa,string);fb = str2double(get(handles.fb,string);ga = str2double(get(handles.ga,string);gb = str2double(get(handles.gb,string);a,b,r = ugamma(fa,fb,ga,gb);fprintf(a= %f,b=%f,c=%fn,a,b,r);% 设置数据set(handles.k1,string,= num2str(a);set(handles.k2,string,= num2str(b);set(handles.k3,string,= num2str(r);gs = histlt(handles.f,fa,fb,ga,gb);% 显示处理后结果function showProcessResult(handles) axes(handles.axes3);imshow(handles.g);axes(handles.axes4);imhist(handles.g);实验二:1. 界面设计homegui.figlab2gui_1.figlab2gui_2.fig2. 源码homegui.m%退出按钮回调function pushbutton3_Callback(hObject, eventdata, handles)clc;close all;%启动窗口lab2gui_1function phlbBtn_Callback(hObject, eventdata, handles)lab2gui_1;%启动窗口lab2gui_2function pushbutton2_Callback(hObject, eventdata, handles)lab2gui_2;lab2gui_1.mfunction lab2gui_1_OpeningFcn(hObject, eventdata, handles, varargin)scrsize = get(0,ScreenSize);set(gcf,Position,scrsize); % 窗口最大化handles.output = hObject;guidata(hObject, handles);function readimgBtn_Callback(hObject, eventdata, handles)filename,pathname = uigetfile(*.tif,读取图片);filecomppath = pathname filename;set(handles.filepathEdit,string,filecomppath); % 显示读取文件的路径f = imread(filecomppath);handles.f = f;axes(handles.axes1);imshow(f);gp = getpollutionImg(1,handles.f);showpollutionImg(gp,handles);handles.gp = gp;guidata(hObject,handles);glb3 glb5 = getfilterImg(1,handles.gp);showfilterImg(glb3,glb5,handles);% 得到加入噪声后图像% index 1 高斯噪声 2 椒盐噪声function gp = getpollutionImg(index,f)switch index case 1 gp = imnoise(f,gaussian,0,0.03); %加入高斯噪声,均值、方差分别为0,0.02 case 2 gp = imnoise(f,salt & pepper,0.02); %加入椒盐噪声end% 得到滤波后图像% glb3 3*3模板处理结果 glb5 5*5模板处理结果% index: 1 均值滤波 2 中值滤波function glb3 glb5 = getfilterImg(index,gp)switch index case 1 avf3 = fspecial(average,3,3); avf5 = fspecial(average,5,5); glb3 = filter2(avf3,gp); glb5 = filter2(avf5,gp); case 2 glb3 = medfilt2(gp,3,3); glb5 = medfilt2(gp,5,5);end% 显示噪声污染后的图像function showpollutionImg(gp,handles)axes(handles.axes2);imshow(gp);% 显示滤波处理后的图像function showfilterImg(glb3,glb5,handles)axes(handles.axes3);imshow(glb3,);axes(handles.axes4);imshow(glb5,);function backBtn_Callback(hObject, eventdata, handles)close gcf; %关闭当前窗口function uipanel8_SelectionChangeFcn(hObject, eventdata, handles)sectag = get(hObject,tag); disp(sectag);switch sectag case gsBtn index = 1; case jyBtn index = 2; endfprintf(加入噪声index= %d n,index);handles.gp = getpollutionImg(index,handles.f);axes(handles.axes2);imshow(handles.gp);guidata(hObject,handles);if(get(hObject,value)=1) pos = 1else pos = 2;endfprintf(当前滤波选择项pos= %dn,pos);glb3 glb5 = getfilterImg(pos,handles.gp);showfilterImg(glb3,glb5,handles);function uipanel2_SelectionChangeFcn(hObject, eventdata, handles)sectag = get(hObject,tag); disp(sectag);switch sectag case aveRbtn index = 1; case mediumRbtn index = 2; endfprintf(滤波选择 index= %d n,index);glb3 glb5 = getfilterImg(index,handles.gp);showfilterImg(glb3,glb5,handles);lab2gui_2.mfunction lab2gui_2_OpeningFcn(hObject, eventdata, handles, varargin)scrsize = get(0,ScreenSize);set(gcf,Position,scrsize); % 窗口最大化handles.output = hObject;guidata(hObject, handles);function readimgBtn_Callback(hObject, eventdata, handles)filename,pathname = uigetfile(*.tif,读取图片);filecomppath = pathname filename;set(handles.imgpathEdit,string,filecomppath); % 显示读取文件的路径f = imread(filecomppath);axes(handles.axes1);imshow(f);w = 0,-1,0;-1,5,-1;0,-1,0;f = double(f);glapls = uint8(conv2(f,w);axes(handles.axes2);imshow(glapls,);axes(handles.axes3);grob = edge(f,Roberts);imshow(grob,);axes(handles.axes4);gprew = edge(f,Prewitt);imshow(gprew,);axes(handles.axes5);gsob = edge(f,Sobel);imshow(gsob,);function pushbutton2_Callback(hObject, eventdata, handles)close gcf;实验三:1. 源码makeimg.m% 产生一幅如图所示亮块图像f(x,y)(256256 大小、暗处=0,亮处=255)f = zeros(256,256);width = 24;height = 104;yl = (256 - height)/2;yr = (256 - height)/2 + height;xl = (256 - width)/2;xr = (256 - width)/2 + width;for i=yl:1:yr for j=xl:1:xr f(i,j) = 255; endendimshow(f);imwrite(f,F:bw.tif);lab3_1.mclear all;close all;clc;FILEPATH = F:workspacematlabdpwres;I=imread(FILEPATH bw.tif);subplot(3,2,1);imshow(I);title(原始图像);I=double(I);G1=fft2(I);subplot(3,2,2);imshow(log(abs(G1),); % 傅里叶变换幅度谱title(幅度谱图);m,n=size(I);for i=1:m for j=1:n I2(i,j)=(-1)(i+j).*I(i,j); endendsubplot(3,2,3);imshow(I2);title(原始中心对称图像);G2=fft2(I2);subplot(3,2,4);imshow(log(abs(G2),);title(中心对称幅度谱图);% 旋转图像考虑空白部分图像的插值% 最邻近插值法 双线性插值法 三次卷积插值法% nearest bilinear bicubicI3=imrotate(I2,45,bilinear);subplot(3,2,5);imshow(I3);title(旋转45度图像);G3=fft2(I3);subplot(3,2,6);imshow(log(abs(G3),);title(旋转45度幅度谱图);lab3_2.mclear all;close all;clc;FILEPATH = F:workspacematlabdpwres;I=imread(FILEPATH test5.tif);subplot(2,2,1);imshow(I);title(test5原图);f=double(I); subplot(2,2,2);G=fft2(f);imshow(log(abs(G),);title(test5幅度谱图);g=fft2(f); % fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称% 因为直接用fft得出的数据与频率不是对应的,fftshift可以纠正过来g=fftshift(g); M,N=size(g);dl0=50; % 低通滤波器截止频率m=fix(M/2); n=fix(N/2); % 取整fprintf(M=%d,N=%dn,M,N);result = zeros(M,N);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); if(d=dh0) h=1; else h=0; end result2(i,j)=h*g(i,j); endendresult2=ifftshift(result2);Gh1=ifft2(result2);Gh2=uint8(real(Gh1);subplot(2,2,4);imshow(Gh2) ;title(test5高通滤波图);
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!