欢迎访问文稿网!

数字图像处理实习报告

范文小馒头 分享 时间: 加入收藏 我要投稿 点赞

数字图像处理实习报告

第1篇:数字图像处理实习报告

实验报告

学 院: 地信院

班 级: 生医1101

姓 名:

学 号:

指导教师: 戴培山,喻罡

时 间: 2014.7.15

数字图像处理实习一.目的1. 用MATLAB或其他的语言来实现数字图像处理方面的一些操作; 2. 熟悉MATLAB7.1的一些基本函数及与数字图像处理相关的函数; 3. 熟悉图形用户界面(GUI),并用其来编写界面;

4.熟悉数字图像处理课程中的一些知识点,如图像灰度变化,直方图,图像增强,滤波,图像复原,形态学处理,图像边缘检测,图像放大和缩小等等,并能用MATLAB实现以上的功能; 5. 掌握从简单到复杂的方法,一步一步的实现功能,并能耐心排错,养成合作互助精神。

二.任务

1.实现图像的打开,显示,保存操作,实现图像的旋转; 2.实现图像的灰度变换(图像反转,对数反转,幂次反转); 3.实现图像的大小变换;

4.实现图像的直方图处理及直方图均衡化;

5.实现图像的空域和频域增强,实现均值滤波,维纳滤波,中值滤波及巴特沃斯低通、高通滤波; 6.实现图像的加噪,如椒盐噪声、高斯噪声等;

7.实现图像的形态学运算,如开运算,闭运算,膨胀运算,腐蚀运算等操作;

8.实现图像的边缘检测,如Robert算子边缘检测,Sobel算子边缘检测,Prewitt算子边缘检测,Log算子边缘检测,Canny算子边缘检测;

9.实现整个界面的设计,编排,最终达到一种比较完美的效果。

三.主要内容

程序和界面截图

设计步骤 1启动GUIDE

在命令窗口中键入guide,启动GUIDE,显示如下图所示的“GUIDE Quick Start” 对话框。

打开“GUIDE Quick Start”对话框,利用GUIDE 模板创建新的GUI,选择一个模板后,单机OK 按钮,在输出编辑器中打开GUI。如下:

2输出编辑器

在GUIDE中打开GUI以后,它显示在输出编辑器中。输出编辑器是所有GUIDE工具的控制面板。可以通过拖拉控件来设计GUI,这些控件位于输出编辑器左侧的工具箱中,有按钮、弹出式菜单和坐标系等多种。也可以用输出编辑器设置GUI控件的基本属性。3菜单编辑器

利用菜单编辑器,可以创建、设置、修改下拉式菜单和弹出式菜单。在GUIDE中单机工具栏上的按钮,或者选择“Tools”菜单中的“Menu Editor…”选项,打开菜单编辑器的界面,如下图所示:

钮用于创建下拉式主菜单的子菜单 最终GUI菜单栏运行效果图如下:

上图中左上角第一个按钮用于创建下拉式菜单。用户可以通过单击它来创建下拉式主菜单。第二个按

4整体界面设计

首次运行后会自动生成Pjimage.m和pjimage.fig两个文件,默认目录设在MATLAB安装目录下的雅丽课设文件夹里,pjimage.m中存放的是GUI的相关编码,以及相关控件的回调函数,今后可以对其进行代码修改,添加,删除等操作,pjimage.fig是GUI的界面文件。这次课设主要是对pjiamge.m文件里面代码的相关操作以实现相关功能!

模块设计

菜单栏各文件下面有相关的子文件。如下图:

灰度变化下的子文件有灰度变换、对数变换和图像反转。工具栏设计如下:

这些图标分别对应于文件打开、保存、图像还原。数字图像处理其他方法设计,如下图:

以及拓展的功能按钮

系统各主要功能分析及演示

1、文件的打开及保存

在主菜单“文件”的下拉菜单中,有个“打开”选项,在其回调函数中添加打开某个文件的相关代码。

图1打开一幅图像后在界面窗口显示

在m_file_save_Callback程序的基础上添加如下代码。

[filename, pathname] = uiputfile({'*.bmp','BMP files';'*.jpg;','JPG files';'*.tif;','tif files'}, 'Pick an Image');if isequal(filename,0)|| isequal(pathname,0)return;else

fpath=fullfile(pathname, filename);¨ end img_src=getappdata(handles.figure_pjimage,'img_src');imwrite(img_src,fpath);

准备把当前文件*.tif保存到当前目录下,文件保存对话框中目录下的该文件,保存的文件名和路径名保存到newfile和newpath中。

2图像增强

图像增强是数字图像处理的基本内容之一,其目的是根据应用需要突出图像中的某些“有用”的信息,削弱或去除不需要的信息,以达到扩大图像中不同物体特征之间的差别,使处理后的图像对于特定应用而言,比原始图像更合适,或者为图像的信息提取以及其他图像分析技术奠定了基础。一般情况下,经过增强处理后,图像的视觉效果会发生改变,这种变化意味着图像的视觉效果得到了改善,某些特定信息得到了增强。

输入参数:

获得增强图像:

3 基本变换

大小变换和旋转为几何变换。几何变换又称为几何运算,它是图像处理和图像分析的重要内容之一。通过几何运算,可以根据应用的需要使原图像产生大小、形状、和位置等各方面的变化。简单的说,几何变换可以改变像素点所在的几何位置,以及图像中各物体之间的空间位置关系,这种运算可以被看成是将各物体在图像内移动,特别是图像具有一定的规律性时,一个图像可以由另外一个图像通过几何变换来产生。实际上,一个不受约束的几何变换,可将输入图像的一个点变换到输出图像中的任意位置。几何变换不仅提供了产生某些特殊图像的可能,甚至还可以使图像处理程序设计简单化。从变换性质来分可以分为图像的位置变换、形状变换等。本次课设,我们主要是为了实现大小变换和图像的旋转 1)大小变换 原来的图像

点击“ok”

2)旋转

旋转后的图像,可以设置任意角度参数,得到的效果不相同。

4 灰度变化

灰度变换是将彩色图像转换为灰度图像,MATLAB把灰度图像存储为一个数据矩阵,该数据矩阵中的元素分别代表了图像中的像素,其直为颜色的灰度值。大多数情况下,灰度图像很少跟颜色映射表一起保存,但是在显示灰度图像时,MATLAB仍然在后台使用系统预定义的默认的灰度颜色映射表

对数变换与图像反转是基于点的图像增强,需要在灰度变换的基础上进行操作。1)灰度变换前的图像

变换后图像

2)对数变换后的图像

还可以设置其他的参数

3)图像反转后的图像(就是图像对比度增强,黑白颜色看起来像互换)

5、直方图均衡

直方图均衡属于灰度变换增强,灰度变换增强是把对比度弱的图像变成对比度强的图像。由于各种拍摄条件的限制,导致图像的对比度比较差,图像的直方图分布不够均衡,主要的元素集中在几个像素值附近,通过直方图均衡化,使得图像中各个像素值尽可能均匀分布或者服从一定形式的分布,从而提高图像处理的对比度。

图像的直方图是一个统计像素个数的图形,它统计一副图像中相同像素值的个数,即一幅图像中有多少个像素值为1,有多少个像素值为2,利用图像的直方图对图像进行增强是一种简单有效地方法。

直方图均衡化是将一副图像的像素值均匀地分布在图像的各个区间上,从而使图像的视觉效果得到改善。在MATLAB中,用于直方图均衡化的函数是histeq。1)原来的图像和均衡化后的图像

2)原来的直方图和均衡化的直方图

3.6、图像二值化

图像二值化是将原图像转换成二值图像,二值图像只需要一个数据矩阵,每个像素只能取两个灰度值0或者1中的一个。二值图像可以采用uint8或double类型存储。

7 加噪和滤波

数字图像中往往存在各种各样的噪声,噪声使获得的图像的像素值不能反映真实场景亮度的误差。为了模拟不同方法的去噪效果,MATLAB图像处理工具箱中使用imnoise函数对一幅图像加入不同类型的噪声。(使用以上的原图加噪,之所以没有用彩色图像是因为只有真彩色图像加噪后才能滤波成功,而真彩色的图像不易寻找)

滤波是一种图像增强的技术。对一幅图像进行滤波可以强调一些特征而去除另外一些特征。通过图像的滤波可以实现图像的光滑、锐化和边缘检测。图像滤波是一种领域操作,输出图像的像素值是对输入图像的像素的领域值进行一定的处理而得到的。线性滤波是指对输入图像的领域进行线性算法操作得到输出图像。均值滤波是线性滤波,中值滤波和维纳滤波是空间域滤波增强,巴特沃斯则是频率域的图像增强。A、加噪处理 1)椒盐噪声

2)高斯噪声

3)斑点噪声

B、以椒盐噪声为例进行不同类型的滤波处理

1)椒盐噪声加噪及均值滤波效果(椒盐噪声参数设置为0.5)

2)椒盐噪声加噪及中值滤波效果(0.5)

3)椒盐噪声加噪及维纳滤波效果(0.5)

4)椒盐噪声加噪及巴特沃斯低通滤波效果(0.5)

5)椒盐噪声加噪及巴特沃斯高通滤波效果(0.5)

8边缘检测

在图像中,边缘是指图像中对象的边界,即反应图像中像素值剧烈变化的曲线。MATLAB图像处理工具箱使用使用edge函数来检测边界,这个函数寻找像素值剧烈变化的像素点。

edge函数用来求边界的方法很多,其中有roberts,sobel,prewitt,log,canny等。1)prewitt算子检测后的图像

2)sobel算子检测后的图像

3)log算子检测后的图像

4)canny算子检测后的图像

5)roberts算子检测后的图像

6)零交叉

9 形态学运算

形态学运算是由一组形态学的代数运算子组成,是用一定形态的结构元素找到图像中的对应形状以达到图像分割识别的目的,基本操作有腐蚀、膨胀、开运算和闭运算。腐蚀和膨胀是数学形态学的基本操作,数学形态学的很多操作都是以腐蚀和膨胀为基础推导的算法。膨胀是将像素加到图像中对象的边缘,而腐蚀是指删除图像中对象的边缘。开操作是先腐蚀后膨胀,闭操作是先膨胀再腐蚀。1)膨胀

2)腐蚀

3)开操作

4)闭操作

截图功能

四:设计过程中遇到的问题及解决方案

1 界面设计中遇到的问题

在设计界面滚动条的时候,程序代码粘贴上去了,没有错误,但运行之后滚动条上面没有出现数值,查找资料询问他人知道,是因为滚动条上面的static text 的tag属性没有设置,滚动条的该属性也没有设置。设置之后就运行成功了。

初始弹出的界面框,标题是untitled,查找原因发现是在界面保存的时候没有按照要求命名,这个不能直接更改,可能会出现问题吧,只有先备份一个。在各种处理方法做好按钮加比较大的框的时候,加完后发现,在已完成的按钮上弹不出callback界面,试了各种方法,询问了别人,开始的时候是让所有的程序都编写好之后再加框,后来还是不能 运行。最终,当请教别人调程序的时候,被告知框的类型错误,不应该是Bushbutton,而应该是Panel,这样就不会出现错误了。

2 运行的过程中出现的问题

最开始运行的时候更改和添加相关程序后,发现图片可以保存,但却不可以打开,通过调试程序,清除界面上的相关图标等方法,发现时保存的界面名称出现了问题。需要将原文件夹中的界面更改名称,在原来的文件中不能更改,只有复制一个新的,运用这个新的文件,选取一个图片,就可以保存在想要保存的位置上了。

开始的时候用滚动条都处理好了,但是在验收的时候老师又说滚动条的运用会出现各种问题,因为用了滚动条,需要的参数都要通过滚动条设置,点击完滚动条再点击相关按钮,这样不但不方便更主要的是不同的处理方法有不同的处理要求,如果不能明晰的话就会出现各种错误。比如:对数变换要求不能取值0或者1,二值化要求取零整数,形态学运算要求取整数,最开始的时候把滚动条设置成了0—1,这样的话程序的编写就比较麻烦。最后,花费了一天的时间来去掉滚动条,重新设计界面,编写程序,最后成功运行。

在运行的时候,开始按钮用的是radiobutton,运行时发现,不论是点上还是回复该功能都要运行,并且会跟下一次运行起冲突,最后在老师的建议下都换成了pushbutton,把觉得赘余的放在菜单栏上面,这样就使界面更加简洁与美观。

五:小结

从通常意义上讲,数字图像处理技术更加普遍、可靠和准确,比起模拟方法,它们也更容易实现,专用的硬件被用于数字图像处理。今天,硬件解决方案被广泛的用于视频处理系统,但商业化的图像处理任务基本上仍以软件形式实现,运行在通用个人电脑上,掌握进一步的图像处理技能对今后的学习和工作生活也都有其积极的影响!

通过这个阶段的努力本图像处理演示系统已基本完成了对文件的打开保存,以及对图像的平移、图像的旋转、翻转、图像的缩放、图像的增强等功能的实现,由于个人水平和时间的有限,此次课程设计还存在许多想法没有很好的实现,扩展功能上也有一定的局限性,希望能在今后的学习中逐渐弥补和改善!附录:

源文件

function pjimage_OpeningFcn(hObject, eventdata, handles, varargin)setappdata(handles.figure_pjimage,'img_src',0);setappdata(handles.figure_pjimage,'img_dst',0);setappdata(handles.figure_pjimage,'clear',1);

打开文件

function m_file_open_Callback(hObject, eventdata, handles)[filename, pathname] = uigetfile(...{'*.bmp;*.jpg;*.png;*.jpeg', 'Image Files(*.bmp, *.jpg, *.png,*.jpeg)';...'*.*', 'All Files(*.*)'},...'Pick an image');axes(handles.axes_src);fpath=[pathname filename];

imshow(imread(fpath));img_src=imread(fpath);imshow(img_src);setappdata(handles.figure_pjimage,'img_src',img_src);

保存文件

function m_file_save_Callback(hObject, eventdata, handles)

[filename, pathname] = uiputfile({'*.bmp','BMP files';'*.jpg;','JPG files';'*.tif;','tif files'}, 'Pick an Image');

if isequal(filename,0)|| isequal(pathname,0)return;else

fpath=fullfile(pathname, filename);end

img_src=getappdata(handles.figure_pjimage,'img_src');imwrite(img_src,fpath);

退出

function m_file_exit_Callback(hObject, eventdata, handles)close(handles.figure_pjimage);

大小变换 function m_jbbh_dx_Callback(hObject, eventdata, handles)setappdata(handles.figure_pjimage,'bChanged',true);axes(handles.axes_dst);

img_src=getimage(handles.axes_src);prompt={'ÊäÈë²ÎÊý:'};defans={'1'};

p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});

f=imresize(img_src,p1,'bilinear');%axes(handles.axes_dst);figure, imshow(f);

guidata(hObject,handles);

旋转变换

function m_jbbh_xz_Callback(hObject, eventdata, handles)setappdata(handles.figure_pjimage,'bChanged',true);axes(handles.axes_dst);

img_src=getimage(handles.axes_src);prompt={'Ðýת½Ç¶È:'};defans={'0'};

p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});

f=imrotate(img_src,p1,'bilinear','crop');imshow(f);

guidata(hObject,handles);

灰度变换

function m_hdbh_hd_Callback(hObject, eventdata, handles)img_src=getimage(handles.axes_src);img_src=rgb2gray(img_src);axes(handles.axes_src);imshow(img_src)

对数变换 function m_hdbh_ds_Callback(hObject, eventdata, handles)img_src=getimage(handles.axes_src);img_src=double(img_src);prompt={'ÊäÈë¶ÔÊý±ä»»²ÎÊý1:'};defans={'0.02'};

p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});p1=p1*2;

img_src=p1*(log(img_src+1));axes(handles.axes_dst);imshow(img_src,)

图像反转

function m_hdbh_fz_Callback(hObject, eventdata, handles)img_src=getimage(handles.axes_src);

img_src=256-img_src;axes(handles.axes_dst);imshow(img_src)

直方图均衡

function m_zft_Callback(hObject, eventdata, handles)img_src=getimage(handles.axes_src);img_src1=histeq(img_src);axes(handles.axes_dst);imshow(img_src1)figure subplot(121)imhist(img_src)title('Ô-À´µÄÖ±·½Í¼')subplot(122)imhist(img_src1)

title(' ¾ùºâºóµÄÖ±·½Í¼ ')二值化 img_src=getimage(handles.axes_src);

prompt={'ÊäÈë¶þÖµ»¯µÄ²ÎÊý£¬²ÎÊý·¶Î§ÊÇ0,1'};defans={'0.02'};

p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});

img_src=im2bw(img_src,p1);axes(handles.axes_dst);imshow(img_src)

椒盐噪声

img_src=getimage(handles.axes_src);prompt={'ÊäÈë½·ÑÎÔëÉù²ÎÊý1:'};defans={'0.02'};

p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});

f=imnoise(img_src,'salt & pepper',p1);axes(handles.axes_src);imshow(f);

guidata(hObject,handles);

高斯噪声

function pushbutton1_Callback(hObject, eventdata, handles)setappdata(handles.figure_pjimage,'bChanged',true);axes(handles.axes_dst);

img_src=getimage(handles.axes_src);prompt={'ÊäÈë¸ß˹ÔëÉù²ÎÊý1:'};defans={'0.02'};

p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});

f=imnoise(img_src,'gauian',p1);axes(handles.axes_src);imshow(f);

guidata(hObject,handles);斑点噪声

setappdata(handles.figure_pjimage,'bChanged',true);axes(handles.axes_dst);

img_src=getimage(handles.axes_src);prompt={'ÊäÈë°ßµãÔëÉù²ÎÊý1:'};defans={'0.02'};

p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});

f=imnoise(img_src,'speckle',p1);axes(handles.axes_src);imshow(f);

guidata(hObject,handles);

均值滤波

function radiobutton5_Callback(hObject, eventdata, handles)setappdata(handles.figure_pjimage,'bChanged',true);axes(handles.axes_dst);

img_src=getimage(handles.axes_src);F1=[1 1 1;1 1 1;1 1 1]/9;%3*3¾ùÖµÂ˲¨ k=filter2(F1,img_src);

imshow(k,[0 255]);guidata(hObject,handles);

中值滤波

img_src=getimage(handles.axes_src);img_src=medfilt2(img_src);axes(handles.axes_dst);imshow(img_src,)

维纳滤波

function radiobutton7_Callback(hObject, eventdata, handles)img_src=getimage(handles.axes_src);img_src=wiener2(img_src,[5 5]);axes(handles.axes_dst);imshow(img_src)巴特沃斯低通

function radiobutton12_Callback(hObject, eventdata, handles)i=getimage(handles.axes_src);N=2

fuv=fftshift(fft2(i));d1=15;

[m,n]=size(fuv);x0=floor(m/2);y0=floor(n/2);for i=1:m

for j=1:n

d=sqrt(i-x0)^2+(j-y0)^2;

h1(i,j)=1/(1+(d/d1)^(2*N));

end

end

guv1=h1.*fuv;g1=ifftshift(guv1);g1=uint8(real(ifft2(g1)));axes(handles.axes_dst);imshow(g1)

巴特沃斯高通

function radiobutton13_Callback(hObject, eventdata, handles)i=getimage(handles.axes_src);N=2

fuv=fftshift(fft2(i));d1=15;

[m,n]=size(fuv);x0=floor(m/2);y0=floor(n/2);for i=1:m

for j=1:n

d=sqrt(i-x0)^2+(j-y0)^2;

h1(i,j)=1/(1+(d1/d)^(2*N));

end

end

guv1=h1.*fuv;g1=ifftshift(guv1);g1=uint8(real(ifft2(g1)));axes(handles.axes_dst);imshow(g1)

Prewitt算子

img_src=getimage(handles.axes_src);img_src=edge(img_src,'Prewitt');axes(handles.axes_dst);imshow(img_src)

Sobel算子

img_src=getimage(handles.axes_src);img_src=edge(img_src,'sobel');axes(handles.axes_dst);imshow(img_src)

Log算子

img_src=getimage(handles.axes_src);img_src=edge(img_src,'log');axes(handles.axes_dst);imshow(img_src)

Canny算子

img_src=getimage(handles.axes_src);img_src=edge(img_src,'canny');axes(handles.axes_dst);imshow(img_src)

Roberts算子 img_src=getimage(handles.axes_src);img_src=edge(img_src,'roberts');axes(handles.axes_dst);imshow(img_src)

腐蚀

setappdata(handles.figure_pjimage,'bChanged',true);img_src=getimage(handles.axes_src)img_src=getimage(handles.axes_src);prompt={'ÊäÈ븯ʴ²Ù×÷²ÎÊý£¬±ØÐëΪÕûÊý'};defans={'0.02'};

p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});axes(handles.axes_dst);se=strel('disk',p1);I2=imerode(img_src,se);imshow(I2)

膨胀

setappdata(handles.figure_pjimage,'bChanged',true);img_src=getimage(handles.axes_src);prompt={'ÊäÈëÅòÕͲÙ×÷²ÎÊý£¬±ØÐëΪÕûÊý'};defans={'0.02'};

p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});axes(handles.axes_dst);se=strel('disk',p1);I2=imdilate(img_src,se);imshow(I2)

开运算

setappdata(handles.figure_pjimage,'bChanged',true);img_src=getimage(handles.axes_src)prompt={'输入开操作参数,必须为整数'};defans={'0.02'};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});axes(handles.axes_dst);se=strel('disk',p1);I2=imopen(img_src,se);imshow(I2)

闭运算

setappdata(handles.figure_pjimage,'bChanged',true);img_src=getimage(handles.axes_src)prompt={'输入闭操作参数,必须为整数'};defans={'0.02'};

p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});axes(handles.axes_dst);se=strel('disk',p1);I2=imclose(img_src,se);imshow(I2)

保存左图

img_src=getimage(handles.axes_src);

[filename, pathname] = uiputfile({'*.bmp','BMP files';'*.jpg;','JPG files';'*.tif','tif files'}, 'Pick an Image');

if isequal(filename,0)|| isequal(pathname,0)return;else

fpath=fullfile(pathname, filename);end

imwrite(img_src,fpath);

保存右图

axes(handles.axes_dst);

img_dst=getimage(handles.axes_dst);

setappdata(handles.figure_pjimage,'img_dst',img_dst);img_dst=getimage(handles.axes_dst);[filename, pathname] = uiputfile({'*.bmp','BMP files';'*.jpg;','JPG files';'*.tif','tif files'}, 'Pick an Image');

if isequal(filename,0)|| isequal(pathname,0)return;else

fpath=fullfile(pathname, filename);end

img_dst=getappdata(handles.figure_pjimage,'img_dst');imwrite(img_dst,fpath);

清除右图

function pushbutton13_Callback(hObject, eventdata, handles)x=getappdata(handles.figure_pjimage,'clear');axes(handles.axes_dst);imshow(x);在前面还设置了全局变量

setappdata(handles.figure_pjimage,'clear',1);

截图

function pushbutton18_Callback(hObject, eventdata, handles)setappdata(handles.figure_pjimage,'bChanged',true);img_src=getimage(handles.axes_src);y=imcrop(img_src);axes(handles.axes_dst);imshow(y);

第2篇:数字图像处理实习报告

数字图像处理报告

数字图像处理实习报告

专业:生医0901

小组成员:李建鲁、张丹

指导老师:喻 罡

2012年7月10日

数字图像处理报告

数字图像处理报告

数字图像处理

一、目的1.用MATLAB或其他的语言来实现数字图像处理方面的一些操作; 2.熟悉MATLAB7.1的一些基本函数及与数字图像处理相关的函数; 3.熟悉图形用户界面(GUI),并用其来编写界面;

4.熟悉数字图像处理课程中的一些知识点,如图像灰度变化,直方图,图像增强,滤波,图像复原,形态学处理,图像边缘检测,图像放大和缩小等等,并能用MATLAB实现以上的功能;

5.掌握从简单到复杂的方法,一步一步的实现功能,并能耐心排错,养成合作互助精神。

二、任务

1.实现图像的打开,显示,保存操作,实现图像的旋转; 2.实现图像的灰度变换(图像反转,对数反转,幂次反转); 3.实现图像的大小变换;

4.实现图像的直方图处理及直方图均衡化;

5.实现图像的空域和频域增强,实现均值滤波,维纳滤波,中值滤波及巴特沃斯低通、高通滤波;

6.实现图像的加噪,如椒盐噪声、高斯噪声等;

7.实现图像的形态学运算,如开运算,闭运算,膨胀运算,腐蚀运算等操作; 8.实现图像的边缘检测,如Robert算子边缘检测,Sobel算子边缘检测,Prewitt算子边缘检测,Log算子边缘检测,Canny算子边缘检测; 9.实现整个界面的设计,编排,最终达到一种比较完美的效果。

第3篇:遥感数字图像处理实习报告

目录

一、实习目的 ......1 二、实习要求......1 三、实习内容......1 3.1 图像裁剪...1 3.2 图像配准...3 3.3 监督分类...6 四、实习总结.....16

I

一、实习目的(1)熟悉使用erdas软件

(2)了解图像处理的原理与步骤,提高动手能力

二、实习要求

(1)对图像进行裁剪

(2)将TM图像与与临川区图像进行配准(校正)(3)对图像进行监督分类

三、实习内容

3.1 图像裁剪

利用临川区行政边界AOI文件对TM图象进行裁剪,裁剪出临川区TM图象。基本步骤如下:

(1)打开erdas imagine 9.2,单击“data proparation”,如图1

图1 data proparation 界面

(2)单击“subset imagine”,进入以下界面:

图2 subset界面

(3)图像裁剪的方法有三种

① 在TM影像上,通过AOI工具进行裁剪,裁剪出所需要的范围 ② 通过使用文件裁剪

③ AOI裁剪,在subset界面,单击AOI,图3 AOI文件的输入

(4)输入AOI文件后,确认并进行裁剪,得到以下结果

图4 裁剪后的结果

3.2 图像配准

map-to-image: 1:10万临川区土地利用图与TM图象配准;

要求最初选GCP点6-10个,及检测点5个,各点均匀分布,RMS检验误差小于30米(1个像元)。

(1)进入“data proparation”界面,单击以下图中所示:

图5 data proparation 界面

(2)选择视窗,应该注意影像图的选择,选择tiff格式的临川区规划图(需校正的影像)

图6 视窗的选择

(3)模型的选择(多项式)

图7 模型选择界面

(4)模型选择后,进行参数的设置,如:次数的选择【次数不多选择的控制点个数不多】、单位的选择

图8 参数设置

(5)设置完参数,进入控制点建立所涉及的窗口,选择已存在的窗口

图9 采集点的形式

(6)弹出以下窗口,这时就应该选择TM影像图(参考影像),之后还会显示图像的参考椭球、区间等,并进入图像校正界面,进行控制点的选择。

注:1)选择控制点后,比如上面选择2次,在第7个控制点时,会自动进行配准。

2)控制点、检查点误差总和分别最好不大于1

图10 图像校正界面

(7)校正后的结果如下,图像出现了扭曲,可能因为控制点选择分布不均匀以及控制点的个数较少

图11 校正后的影像图

3.3 监督分类

监督分类包括利用训练区样本建立判别函数的“学习”过程和把待分像元代入判别函数判别的过程。具体要求:

1)使用多边形选择工具;保留每个类型训练文件及aoi文件。2)分类结果与1:10万土地利用图比较,反复修正训练样区。3)进行监督分类,计算各地类的面积。

4)分层随机抽样,每类30个样点,目视判读分类准确与否,统计分类精度。(1)进入“claicffication”界面,训练区样本的选择

图12 claicfication界面

(2)训练区样本的选择是对裁剪后的影像图利用AOI工具进行样本选择,像元越多越具有代表性

注:1)选择样本时,最好在其中心区域进行采集像元

2)同类样本要在不同区域进行采集,越多越好

3)还可以利用扩散方法采集,设置参数,在所需区域进行采集 重复操作,根据不同类型划分不同类别。比如:林地、水域、居民地、耕地、交通用地、未利利用土地等

训练区样本选择后,全部输出,保存为后缀“*.sig”格式的文件

图13 训练区样本的选择

(3)由于训练区样本是分类的依据,须对其进行精度评价,确定其是否符合要求,精度评定有分离度、矩阵两种类型。

1)分离度精度评定是利用距离运算进行精度的评定,距离越大,精度越差

图14 分离度精度评定参数设置

图15 精度分析

2)矩阵精度评定

图16 矩阵精度评定参数设置

图17 精度分析

(4)以上操作完之后,进行监督分类,操作步骤如下:

图18 设置参数

(5)利用所建立的训练区样本对影像进行分类

图19 监督分类结果

(6)分类结果是否符合实际,须对分类结果进行质量的评价

注:1)在图像显示时,采用到叠加显示方法 2)导入的文件为分类后的影像图

(7)利用随机点对图像进行识别评定分类精度,并对随机点进行参数的设置包括点分布范围、个数以及分布方式。

注:为了不让随机点分布在图像意外,应选择类别

图20 随机点参数设置

(8)设置完后,显示随机点的坐标,通过“view”显示其值

图21 随机点的分布状况

(9)通过目视解译确认随机点的值是否符合实际情况,并生成精度评定报告

注:总比例精度要大于85%以上,若有些类别精度过低,应重新对训练区

样本重新选择

图22 精度报告

(10)分类后处理有三种方法:聚类、过滤、去除

1)聚类分析将整个影像离散成一小块一小块,相似类别聚集一起

基本操作步骤:

①单击“imagine interpreter”,进入以下操作界面

图23 聚类分析

②参数设置,输入分类后的影像图,输出的层以及搜索区域等

图24 参数设置

③输出结果

图25 聚类分析后的影像

2)聚类处理是过滤处理的预处理,基本步骤如聚类分析

注:输入的影像为聚类处理后的影像

图26 过滤处理的影像

3)去除处理基本步骤如1)所述,输入的影像图为聚类处理后的影像图

图27 去除处理基本步骤

图28 监督分类结果图

四、实习总结

通过短暂的遥感数字图像处理实习,熟悉了Erdas软件的基本操作,学会了如何将影像图进行一些简单的分析处理的方法,提高了动手能力,更巩固了相关方面的知识。在图像处理过程中,尤其是图像校正的时候,更需要耐心,认真仔细地操作。多一次实习多一份学识,也将为踏入社会奠定基础。

第4篇:数字图像处理编程实习报告

遥感灰度图像地物识别预处理

XX

武汉大学 遥感科学与技术专业, 武汉 430079

E-mail: XXX@XXXX.com

摘 要:通过航摄等方式获取的遥感图像往往是灰度图像,辨识度不高,为了更好地分辨植被、水系、建筑等不同地物及其分布状况,就需要对图像进行预处理,包括平滑、边缘锐化、伪彩色增强等。关键词: 遥感图像,预处理,平滑,锐化,伪彩色增强

1 引言

随着遥感技术的快速发展及日益增长的生产生活需求,遥感图像在现实中的应用越来越广泛。为了使图像拥有更好的显示效果,发挥更大作用,就需要与相关的数字图像处理方法联系起来。1.1 问题的提出

遥感图像很大一部分是灰度图像,不能展现真实的地物原貌,辨识度不高,需要想办法解决。1.2 本报告研究的意义

本报告主要介绍遥感灰度图像为了更好地进行地物识别而采取的部分简单处理步骤,使笔者对遥感生产实践加深了了解,同时巩固了相关数字图像处理知识。

1.3 本报告研究的结构安排

本报告分为引言、算法描述、实验结果及分析、总结与展望、实习心得与体会等五个部分阐述。

2 算法描述

2.

1算法1-中值滤波

刚获取的原始遥感图像由于仪器质量、大气因素、光照因素等多方面影响,会产生部分干扰及噪声。预处理的第一步就是通过空间域平滑抑制噪声,比较了各种具体的平滑方法后,笔者决定采用中值滤波。该方法是一种非线性的平滑法,对脉冲干扰及椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘少受模糊。下面介绍一下其具体算法。

中值滤波需要对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心像素的灰度值。该窗口可以是一维,也可以是多维(在此处采用二维窗口,通常有3×3、5×5等规格)。窗口按照一定的顺序(如先从左到右,再从上到下)进行滑动,依次改变图像

内的每一个像素值。如图1,这个3×3窗口中的各像素值中值为6,因此窗口中心像素值便被替换成了6,有效的抑制了10这个可能的噪声信号。

图 1: 中值滤波示例

在数字图像处理相关程序中实现中值滤波功能的核心代码如图2:

图 2: 中值滤波相关代码

对含有较多椒盐噪声的灰度图像进行中值滤波处理后效果如图3、图4所示:

图 3: 处理前 图4: 处理后

2.

2算法2-高通滤波

在进行中值滤波处理后的图像中,噪声受到了一定程度的抑制,但同时由于整体平滑使得边缘或多或少变得模糊,不利于识别。此时就需要进行锐化增强图像的边缘和轮廓信息,使不同地物之间的边界更加突出、清晰、易于判读。常用的空间域锐化方法有梯度算子、Roberts算子、Prewitt算子、Sobel算子、Laplacian增强算子、高通滤波等,此处笔者采用的是最后一种。

一幅图像通常由不同的频率成分组成,根据一般图像频谱的概念,高的空间频率对应影像中急剧变化的部分,而低的频率则代表灰度缓慢变化的部分。对于遥感图像,高频分量常常包含地物的空间结构,对于影像分析格外重要。高通滤波法就是在空间域用高通滤波算子和图像卷积来增强图像边缘。通过定义一个模板来对原始图像中的目标像素的一组邻域进行处理,然后将处理结果赋给模板中心对应的目标像素。常用的算子如图5、图6所示。

图5 图6

笔者实验中所写程序要求算子要运行者自行输入,增强了可选择性,核心代码及运行界面如图7、图8。

图 7: 高通滤波相关代码

图 8: 高通滤波运行界面

笔者高通滤波处理前后的图像如图9、图10所示。

图 9: 处理前 图10: 处理后

2.

3算法3-伪彩色增强

灰度图像颜色的差别不大,细微的变化人眼很难分辨,而伪彩色增强正是把黑白图像的各个不同灰度级按照线性或非线性的映射函数变换成不同的彩色,得到一幅彩色图像的技术。这样就使得原图像细节更易辨认,目标更容易识别。

伪彩色增强的方法主要有密度分割法、灰度级一彩色变换和频率域伪彩色增强三种。而此处笔者用的是一种自创的方法,效果并不是很好,但毕竟比起黑白图像还是一定程度上提高了辨识度。

核心代码如下:

CMy2011302590024HRDoc* pDoc = GetDocument();CBmpFile srcBmp,desBmp;srcBmp = pDoc->bmpfile;

desBmp.CreateBmp(srcBmp.m_Cols,srcBmp.m_Rows,3);int r,g,b;

for(int i=0;i

{

r=1*srcBmp.m_pImgDat[i]%255;

g=2*srcBmp.m_pImgDat[i]%255;

b=3*srcBmp.m_pImgDat[i]%255;desBmp.m_pImgDat[3*i+2]=r;desBmp.m_pImgDat[3*i+1]=g;desBmp.m_pImgDat[3*i]=b;}

pDoc->bmpfile=desBmp;Invalidate();

主要的思路是将黑白图像每个像素的灰度值按照不同的比例转换成伪彩色的R、G、B三个分量,然后显示成RGB颜色。

3 实验结果及分析

原遥感灰度图像及其经过中值滤波、高通滤波、伪彩色增强等步骤处理后的结果如图11、图12所示:

图 11: 处理前

图 12: 处理后

可以看到,处理后的图像相比原图像少了些噪声干扰,边缘更加突出,颜色更加丰富,易于分辨出不同地物所分布的范围。

然而,由于程序不够完善,探究不够深入,伪彩色增强后的图像仍然不能真实地反应地物实际特征,例如河流颜色过深、植被颜色不应该是红色而应该是绿色、土壤颜色太过鲜艳等。

4 总结与展望

总体来说该报告的各项算法基本实现了初始目的,一定程度上达到了预期效果,但还是有一些问题。

比如,中值滤波虽然对干扰、噪声的抑制效果不错,但对于点、线等细节较多的图像却不太合适,这时候就需要尝试其他更合适的平滑方法;高通滤波两个算子可能对某些图像都不适用,这时候就需要寻找其他算子。;又比如之前所提到的伪彩色增强中根据地物实际特征合理设置颜色的问题。

这些都需要进一步思考钻研加以解决。

5 实习心得与体会

通过为期两周的实习,我编程实现了图像的格式转换、线性变换、局部处理、几何变换、二值化处理、伪彩色增强、编码压缩等基本功能,受益匪浅。

首先,巩固了对课程专业知识的掌握,并学会将其应用到具体实践中;同时,通过解决编程中遇到的各种问题增强了VC编程技术,熟悉了更多算法思想;此外,体会到细心、耐心的重要性,学会虚心求教与自主思考相结合。

希望以后该课程实习前老师可以更详细地讲解下各算法的基本思路(包括选作部分),而将具体的编程实现交给学生完成,因为有些内容书本上介绍得实在太少,自己找资料自学又比较难懂。

致谢

感谢实习老师在编程方面的宝贵指导以及提供本文Word格式模板。

感谢遥感学院提供机房作为实习场地。

参考文献

[1] 贾永红.数字图像处理.武汉: 武汉大学出版社, 2003.[2] 贾永红,崔卫红,余卉.数字图像处理实习教程.武汉: 武

汉大学出版社,2007

第5篇:《数字图像处理》

实验五 图像的几何变换

一.实验目的及要求

掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB编程实现方法。

二、实验内容

(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

1.图像缩放 clear all, close all I = imread('cameraman.tif');Scale = 1.35;

% 将图像放大1.35倍

J1 = imresize(I, Scale, 'nearest');

% using the nearest neighbor interpolation J2 = imresize(I, Scale, 'bilinear');

% using the bilinear interpolation imshow(I), title('Original Image');figure, imshow(J1), title('Resized Image--using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image--using the bilinear interpolation ');help imresize

% 查看imresize使用帮助

1.95倍

I = imread('cameraman.tif');Scale = 1.96;

% 将图像放大1.96倍

J1 = imresize(I, Scale, 'nearest');

% using the nearest neighbor interpolation J2 = imresize(I, Scale, 'bilinear');

% using the bilinear interpolation imshow(I), title('Original Image');figure, imshow(J1), title('Resized Image--using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image--using the bilinear interpolation ');

说明:

注意观察不同插值方法的图像表现; 改变图像缩放因子Scale,重做上述实验。2.图像旋转

clear all, close all I = imread('cameraman.tif');Theta = 45;

% 将图像逆时针旋转45。

J1 = imrotate(I, Theta, 'nearest');

% using the nearest neighbor interpolation Theta =-45;

% 将图像顺时针旋转45。

J2 = imrotate(I, Theta, 'bilinear', 'crop');% using bilinear interpolation and crops the output image imshow(I), title('Original Image');figure, imshow(J1), title('Rotated Image--using the nearest neighbor interpolation ');figure, imshow(J2), title(' Rotated Image--using the bilinear interpolation ');% 查看imrotate使用帮助

5 help imrotate %-------

图像旋转30顺时针逆时针

clear all, close all I = imread('cameraman.tif');Theta = 30;

% 将图像逆时针旋转30。

J1 = imrotate(I, Theta, 'nearest');

% using the nearest neighbor interpolation Theta =-30;

% 将图像顺时针旋转30。

J2 = imrotate(I, Theta, 'bilinear', 'crop');% using bilinear interpolation and crops the output image imshow(I), title('Original Image');figure, imshow(J1), title('Rotated Image--using the nearest neighbor interpolation ');figure, imshow(J2), title(' Rotated Image--using the bilinear interpolation ');7

8 说明:

注意观察不同插值方法和输出图像后处理方法的图像表现; 改变旋转角度大小和方向,重做上述实验。

3.图像水平镜象

clear all, close all I = imread('cameraman.tif');I1 = flipdim(I,2);

I2 = flipdim(I,1);figure(1), subplot(1,2,1), imshow(I);subplot(1,2,2), imshow(I1);figure(2), subplot(2,1,1), imshow(I);subplot(2,1,2), imshow(I2);%----

(二)用MATLAB编程实现以下图像几何变换(参考自编讲义相关章节)

10 1.图像扭曲变换 2.球面变换

三、实验设备

1.PIII以上微机; 2.MATLAB6.5;

四、预习与思考

1.预习实验内容,阅读教材熟悉实验原理;

2.查阅资料,熟悉实验中涉及的有关MATLAB函数;

3.利用课余时间,采用MATLAB底层函数编程实现实验内容

(二)中的图像平移、图像转置等几何变换。

五、实验报告要求

1.简述试验的目的和试验原理;

2.叙述各段程序功能,改变有关函数的参数,分析比较实验结果; 3.打印出所编写的实验程序。4.写出本实验的心得体会及意见。

实验六

数字图像处理应用

一.实验目的及要求

1.利用MATLAB提供的图像处理函数实现图像中物体属性的测量; 2.训练综合运用MATLAB图像处理函数的能力; 3.了解数字图像处理基本应用。

二、实验内容

以大米粒特性测量为例,综合应用课程中图像分割、形态学滤波、图像增强、图像特征提取等图像处理方法,实现大米粒特性自动测量。实验过程简述:

1. 读取和显示图像 2. 估计图像背景 3. 获取背景均匀的图像 4. 图像增强 5. 图像二值化分割 6. 区域标记及为彩色处理

7. 测量图像中的区域特性(面积、质心等)

8.统计大米粒的特性分布规律。

(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结

11 果。熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

% Read and Display an Image clear, close all,close all;I = imread('rice.png');

figure, imshow(I)

% Use Morphological Opening to Estimate the Background

background = imopen(I,strel('disk',15));

figure, imshow(background);

%Display the Background Approximation as a Surface

figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]);set(gca,'ydir','reverse');% Subtract the Background Image from the Original Image I2 = imsubtract(I,background);figure, imshow(I2)% Adjust the Image Contrast I3 = imadjust(I2, stretchlim(I2), [0 1]);figure, imshow(I3);% Apply Thresholding to the Image level = graythresh(I3);bw = im2bw(I3,level);figure, imshow(bw)% Determine the Number of Objects in the Image [labeled,numObjects] = bwlabel(bw,4);

% Label components.numObjects % Examine the Label Matrix RGB_label = label2rgb(labeled, @spring, 'c', 'shuffle');figure, imshow(RGB_label);% Measure Object Properties in the Image graindata = regionprops(labeled,'basic')allgrains = [graindata.Area];% Compute Statistical Properties of Objects in the Image max(allgrains);biggrain = find(allgrains==695)mean(allgrains);figure, hist(allgrains,20);12

(详见MATLAB IPT的 帮助文档demo中的Correcting Nonuniform Illumination)

(二)查看MATLAB IPT 帮助文档,研究其它应用演示

三、实验设备

16 1.PIII以上微机; 2.MATLAB6.5;

四、预习与思考

1.预习实验内容,阅读教材熟悉实验原理; 2.查阅资料,熟悉实验中涉及的有关函数。

3.利用课余时间,采用MATLAB函数编程实现实验内容

(二)。

五、实验报告要求

1.简述试验的目的和试验原理;

2.叙述各段程序功能,改变有关函数的参数,分析比较实验结果; 3.打印出所编写的实验程序。4.写出本实验的心得体会及意见。

第6篇:数字图像处理

中南大学

数字图像处理实验 实验名称:空间滤波和频域滤波

班级:电子信息0802班

姓名:李哲 学号:0909080609 实验日期:2010年12月22日

目录

一,实验目的„„„„„„„„„„„„„„„„„„„„„„„3 二,给图像添加噪声„„„„„„„„„„„„„„„„„„„„4 三,对被噪声污染的图像进行中值滤波和均值滤波„„„„„„„5 四,对图像进行空间域的锐化„„„„„„„„„„„„„„„„6 五,MATLAB以外函数空间滤波和图像锐化„„„„„„„„„„7 六,自带函数傅立叶变换和反变换„„„„„„„„„„„„„„8 七,低通滤波器程序„„„„„„„„„„„„„„„„„„„„9 八,心得体会 „„„„„„„„„„„„„„„„„„„„„„10 九,参考文献 „„„„„„„„„„„„„„„„„„„„„„10

一、实验目的 1,空间滤波:

图像平滑主要目的是减少噪声。噪声有很多种类,不同的噪声有不同的抑制措施。本实验要求用平滑线性滤波和中值滤波2种最典型、最常用的处理算法进行程序设计,学习如何对已被噪声污染的图像进行“净化”。通过平滑处理,对结果图像加以比较,得出自己的实验结论。学习如何用锐化处理技术来加强图像的目标边界和图像细节,对图像进行梯度算子、拉普拉斯算子,使图像的某些特征(如边缘、轮廓等)得以进一步的增强及突出。本实验锐化处理主要在空间域中进行 2,频域滤波:

掌握傅里叶变换的基本性质; 掌握傅里叶正变换和反变换; 通过实验了解二维频谱的分布特点; 掌握怎样利用傅立叶变换进行频域滤波

利用MATLAB程序数字图像的傅立叶变换并且进行频域滤波

二,给图像添加椒盐噪声或者高斯噪声: 原理:利用MATLAB自带函数添加噪声 程序代码:A=imread('onion.png');I=rgb2gray(A);imshow(I);J = imnoise(I,'salt & pepper',0.05);figure,imshow(J),title('椒盐噪声');%添加椒盐噪声 K = imnoise(I,'gauian',0,0.03);

figure,imshow(K),title('高斯噪声');%添加高斯噪声

三,对被噪声污染的图像进行中值滤波和均值滤波: 原理:自带函数进行中值滤波和均值滤波 源程序:A=imread('onion.png');I=rgb2gray(A);J = imnoise(I,'salt & pepper',0.05);k2=medfilt2(J,[5 5]);k3=medfilt2(J,[7 7]);imshow(J),title('原图');figure,imshow(k2),title('中值滤波5*5模板');figure,imshow(k3),title('中值滤波7*7模板');

四,对图像进行空间域的锐化: 原理:自带函数进行空间锐化。源程序:I=imread('coins.png');subplot(121),imshow(I),title('原图像');H=fspecial('sobel');I2=filter2(H ,I);subplot(122),imshow(I2),title('sobel算子锐化图像');

五,MATLAB以外函数空间滤波和图像锐化:

源程序:I = imread('eight.tif');J = imnoise(I,'salt & pepper',0.02);K = medfilt2(J);imshow(J);title('噪声干扰图像')figure, imshow(K);title('medfilt2滤波图像')X=J;a=2;b=2;k=floor(a*b/2)+1;[M,N]=size(X);uint8 Y=zeros(M,N);funBox=zeros(a,b);temp=zeros(a*b);

for i=1:M-a

for j=1:N-b

funBox=X(i:i+a,j:j+b);

temp=funBox(:);

tempSort=sort(temp);

Y(i,j)=tempSort(k);

end;end;figure, imshow(Y);title('滤波图像')

六,利用Matlab的图像处理工具箱中提供的函数实现图像的傅立叶变换和反变换: 源程序:

A=imread('onion.png');f=rgb2gray(A);subplot(131),imshow(f),title('原图');F=fft2(f);% 快速傅立叶变换

subplot(132),imshow(F),title('傅里叶变换')Fabs=abs(F);% 求幅频绝对值 Fc=fftshift(Fabs);% 中心移位 SFc=log(1+Fc);% 对数变换

iFc1=ifftshift(Fc);% 中心移位的逆变换,绝对值 iF2=ifft2(iFc1);% 快速傅立叶变换的逆变换

subplot(133),imshow(iF2),title('快速傅立叶变换的逆变换')

七,低通滤波器程序:

I=imread('testpat1.png');subplot(221),imshow(I);title('原始图像')J1=imnoise(I,'gauian',0.02);% 叠加高斯白噪声

subplot(222),imshow(J1);title('添加高斯白噪声的图像')f=double(J1);

% 数据类型转换 g=fft2(f);

% 傅立叶变换 g=fftshift(g);

[M,N]=size(g);nn=2;

% 二阶巴特沃斯(Butterworth)低通滤波器 d0=50;

% 设置截止频率 m=fix(M/2);n=fix(N/2);for i=1:M for j=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));subplot(223),imshow(J3);title('低通滤波后图像')

心得体会

1,进一步熟悉了Matlab软件、编程以及图像处理工具箱 2,学会利用自带函数对图像做简单的处理,例如:均值化等。3,熟练了一些基本函数的运用,例如fspecial,imfilter等。4,加深了对MATLAB编程的理解。

5,对于试验中的出现的一些问题,懂得怎样去处理。6,通过实际操作,增强了自己的动手能力,把理论用于实践。

参考文献:数字图像处理第二版

MATLAB教程

第7篇:数字图像处理——彩色图像实验报告

6.3实验步骤

(1)对彩色图像的表达和显示

* * * * * * * * * * * *显示彩色立方体* * * * * * * * * * * * *

rgbcube(0,0,10);

%从正面观察彩色立方体

rgbcube(10,0,10);%从侧面观察彩色立方 rgbcube(10,10,10);%从对角线观察彩色立方体

%* * * * * * * * * *索引图像的显示和转换* * * * * * * * * f=imread('D:PictureFig0604(a)(iris).tif');figure,imshow(f);

%f是RGB真彩图像

%rgb图像转换成8色索引图像,不采用抖动方式

[X1,map1]=rgb2ind(f,8,'nodither');figure,imshow(X1,map1);

%采用抖动方式转换到8色索引图像

[X2,map2]=rgb2ind(f,8,'dither');figure,imshow(X2,map2);%显示效果要好一些 g=rgb2gray(f);

%f转换为灰度图像

g1=dither(g);

%将灰色图像经过抖动处理,转换打二值图像figure,imshow(g);

%显示灰度图像

figure,imshow(g1);

%显示抖动处理后的二值图像

程序运行结果:

*

彩色立方体原图

不采用抖动方式转换到8色索引图像采用抖动方式转换到8色索引图像

灰度图像抖动处理后的二值图像

(2)彩色空间转换

f=imread('D:PictureFig0604(a)(iris).tif');figure,imshow(f);

%转换到NTSC彩色空间

%f是RGB真彩图像

ntsc_image=rgb2ntsc(f);

figure,imshow(ntsc_image(:,:,1));%显示亮度信息 figure,imshow(ntsc_image(:,:,2));%显示色差信息 figure,imshow(ntsc_image(:,:,3));%显示色差信息

%转换到HIS彩色空间

hsi_image=rgb2hsi(f);

figure,imshow(hsi_image(:,:,1));%显示色度信息 figure,imshow(hsi_image(:,:,2));%显示饱和度信息 figure,imshow(hsi_image(:,:,3));%显示亮度信息

程序运行结果:

原图

转换到NTSC彩色空间

显示亮度信息显示色差信息显示色差信息

转换到HIS彩色空间

显示色差信息显示饱和度信显示亮度信息

(3)彩色变换

f=imread('D:PictureFig0614(a)(Chalk Original).tif');

G=ice('image',f);

%打开ice窗口对图像进行调整

%在窗口中执行以下操作:

%a)得到图像的补色

%b)拖动映射曲线,对图像显示效果进行修改

%c)在颜色通道中选中某一颜色,然后对映射曲线进行修改

程序运行结果(1):

全彩色图片ICE窗口

它的补色ICE窗口

拖动映射曲线,图像的显示效果

ICE窗口

f2=imread('D:Picture JLK Magenta.tif');figure,imshow(f2);%在CMYK彩色空间内打开图像 选择Red

ICE窗口

g2=ice('image',f2,'space','CMYK');

%f2的图像色彩偏红,拖动映射曲线,%调整映射参数,使图像的色彩看起来比较正常。

程序运行结果(2)

原图

在CMYK彩色空间内打开图像

调整映射参数后

ICE窗口

(4)彩色空间滤波

%* * * * * * * * * * * * * * * * * * * * 彩色图像平滑 * * * * * * * * * * * * * * * * * * * * * *

fc=imread('D:PictureFig0604(a)(iris).tif');figure,imshow(fc);h=rgb2hsi(fc);

H=h(:,:,1);

S=h(:,:,2);

I=h(:,:,3);

%转换到HIS彩色空间

%色度分量

%饱和度分量

%亮度分量

%25×25的方形平滑算子 w=fspecial('average',25);

I_filtered=imfilter(I,w,'replicate');%对亮度分量进行平滑操作 H1=cat(3,H,S,I_filtered);%将H、S、I三个分量重新组合起来f=hsi2rgb(H1);

f=min(f,1);

%转换到RGB彩色空间

%f的值控制在[0,1]之间

figure,imshow(f);

%彩色图像平滑处理 %* * * **** * * * * * * * * * * * * 彩色图像锐化 * * * * * * * * * * * * * * * * * * * * * *

fb=imread('D:PictureFig0604(a)(iris).tif');lapmask=[1 1 1;1-8 1;1 1 1];%拉普拉斯算子 g=imfilter(fb,lapmask,'replicate');%拉普拉斯算子处理 figure,imshow(g);

%图像锐化后与原图像相减

fen=imsubtract(fb,g);

figure,imshow(fen);%显示差值图像

程序运行结果:

原图彩色图像平滑处理

拉普拉斯算子处理

锐化处理

(5)彩色图像分割

%* * * * * * * * * * * * * * * * * 彩色边缘检测* * * * * * * * * * * *

close all;clear;clc;

f=imread('iris.tif');%f如图6-4所示

%直接计算彩色边缘VG,并得到对单独彩色平面的二维梯度求和形成的梯度PPG

[VG,A,PPG]=colorgrad(f);

figure,imshow(VG,[ ]);

%显示彩色梯度图像 figure,imshow(A,[ ]);

%显示彩色梯度对应的角度图像

figure,imshow(PPG,[ ]);

%显示分量梯度图像

g=VG-PPG;

%计算两种梯度方法得到的梯度之差 figure,imshow(g,[ ]);

程序运行结果:

%显示差值图像

彩色梯度图像 彩色梯度对应的角度图像

分量梯度图像两种梯度差值图像

%* * * * * * * * * * * * * * * * * 彩色图像分割 * * * * * * * * * * * * * * * * * * * * * * * * *

f=imread('jupitermoon.tif');%f如图6-4所示 mask=roipoly(f);

%取得选定区域图像的红色分量

%手工选定图中红色区域

R=immultiply(mask,f(:,:,1));

%取得选定区域图像的绿色分量

G=immultiply(mask,f(:,:,2));%取得选定区域图像的蓝色分量

B=immultiply(mask,f(:,:,3));

g=cat(3,R,G,B);

%取得选定区域的RGB图像 figure,imshow(g);

%显示取得选定区域

[M,N,K]=size(g);

%选定区域的大小

I=reshape(g,M*N,3);

%对g中的像素进行重排,按列序拉成一行 idx=find(mask);

%找到mask中的像素在重排后的图像g中位置 I=double(I(idx,1:3));

%转换到double类型 [C,m]=covmatrix(I);

%计算协方差矩阵C主对角线上的元素,即方差 %>>sd=sqrt(d)%求得这些元素的平方根,即均方差

均方差

%用欧式距离对图像进行彩色分割,阈值为25

E25=colorseg('euclidean',f,25,m);E251=f;E251(E25==0)=0 figure,imshow(E251,[]);

%用马氏距离对图像进行彩色分割,阈值为25 M25=colorseg('mahalanobis',f,25,m,C);figure , imshow(M25 , [ ]);程序运行结果:

原图选定区域

欧氏距离彩色分割马氏距离彩色分割

6.4 思考题

(1)请将图6-1所示的彩色图像转换到灰度图像,并根据灰度值对此灰度图像进行索引化,手工指定索引表中的RGB值,并把此索引图像显示出来。

程序代码如下

%思路:把原图想转换为128位索引图

close all;clear;clc;%将f从灰度图像转换为索引图像,x是索引图像; %map是索引矩阵,R,G,B的值都相等

f=imread('D:PictureRGB_iris.tif');figure,imshow(f);

%f是RGB图像 f1=rgb2gray(f);

%将f转换成灰度图像 figure,imshow(f1);[x,map]=gray2ind(f1,128);

figure,imshow(x);%将map中的值做下面改变则R,G,B的值不相等,产生彩色

%把灰度图像转化成128位的索引图

map(1,:)=0.5;map(: ,1)=0.5;map(2,:)=0.4;map(1,1)=0;figure,imshow(f1,map);

程序运行结果:

原RGB图像

灰度图像

索引图 修改索引表后的图像

(2)6.3节的(4)是将图像转换到HIS空间后再对亮度分量进行平滑操作,试直接对原图像的RGB三个分量分别进行平滑操作,并计算两种操作方法的图像差值。

程序代码如下:

f=imread('D:PictureRGB_iris.tif');figure,imshow(f);%直接对原图像的RGB三个分量分别进行平滑操作 H=f(:,:,1);

S=f(:,:,2);

I=f(:,:,3);

%色度分量

%饱和度分量

%亮度分量

%25×25的方形平滑算子 w=fspecial('average',25);

H_filtered=imfilter(H,w,'replicate');

%对色度分量进行平滑操作 S_filtered=imfilter(S,w,'replicate');

%对饱和度分量进行平滑操作 I_filtered=imfilter(I,w,'replicate');

%对亮度分量进行平滑操作 %将H、S、I三个分量重新组合起来

Ha=cat(3,H_filtered,S_filtered,I_filtered);Ha=im2double(Ha);

%转化成double类型 figure,imshow(Ha);%转换到HIS彩色空间 h=rgb2hsi(f);

%转换到HIS彩色空间

H=h(:,:,1);

S=h(:,:,2);

I=h(:,:,3);

%色度分量

%饱和度分量 %亮度分量 %25×25的方形平滑算子 w=fspecial('average',25);

I_filtered=imfilter(I,w,'replicate');%对亮度分量进行平滑操作 %将H、S、I三个分量重新组合起来 H1=cat(3,H,S,I_filtered);fb=hsi2rgb(H1);

%转换到RGB彩色空间 fb=min(fb,1);

figure,imshow(fb);

%f的值控制在[0,1]之间

%彩色图像平滑处理

fen=imsubtract(Ha,fb);figure,imshow(fen);程序运行结果:

%计算两中方式处理后图像的差值

原图

直接对RGB三分量进行平滑操作转换到HIS空间对亮度进行平滑操作

差值图像

试验中的问题和心得体会:

本次实验是彩色图像处理。

(1)通过这个实验我了解了RGB图像以及索引图像在MATLAB中的存储和询问方式

(2)了解RGB空间到其他彩色空间的转换方式和转换方法(3)知道了一些彩色图像的空间滤波方法(4)了解在RGB向量空间中检测彩色边缘的方法(5)了解在RGB向量空间中对图像进行分割的方法

遇到的问题:在做思考题(2)的时候,计算两种平滑处理的得到图像的差值的中程序出现了问题,经过看出错信息,认真检查程序后,发现是因为直接平滑处理的图像是unit8类型的,而转换到HIS空间后,得到的图像是double类型,二者的类型不同,导致使用imsubtract函数的时候出现了问题。感觉做matlab的实验和平时编写C代码的时候有很多地方是相同的,都会经历:编码,debug,正确这三个过程,这个过程本身就具有挑战性和趣味性。

第8篇:数字图像处理图像变换实验报告

数字图象处理实验指导书

实验一 图象变换实验

实 验

实验名称:图像处理姓名:刘强

班级:电信

学号:

报 告

1102

1404110128

数字图象处理实验指导书

实验一 图象变换实验

实验一 图像变换实验——图像点运算、几何变换及正交变换

一、实验条件

PC机 数字图像处理实验教学软件

大量样图

二、实验目的1、学习使用“数字图像处理实验教学软件系统”,能够进行图像处理方面的简单操作;

2、熟悉图像点运算、几何变换及正交变换的基本原理,了解编程实现的具体步骤;

3、观察图像的灰度直方图,明确直方图的作用和意义;

4、观察图像点运算和几何变换的结果,比较不同参数条件下的变换效果;

5、观察图像正交变换的结果,明确图像的空间频率分布情况。

三、实验原理

1、图像灰度直方图、点运算和几何变换的基本原理及编程实现步骤

图像灰度直方图是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的灰度分布情况,为图像的相关处理操作提供了基本信息。

图像点运算是一种简单而重要的处理技术,它能让用户改变图像数据占据的灰度范围。点运算可以看作是“从象素到象素”的复制操作,而这种复制操作是通过灰度变换函数实现的。如果输入图像为A(x,y),输出图像为B(x,y),则点运算可以表示为:

B(x,y)=f[A(x,y)] 其中f(x)被称为灰度变换(Gray Scale Transformation,GST)函数,它描述了输入灰度值和输出灰度值之间的转换关系。一旦灰度变换函数确定,该点运算就完全确定下来了。另外,点运算处理将改变图像的灰度直方图分布。点运算又被称为对比度增强、对比度拉伸或灰度变换。点运算一般包括灰度的线性变换、阈值变换、窗口变换、灰度拉伸和均衡等。

图像几何变换是图像的一种基本变换,通常包括图像镜像变换、图像转置、图像平移、图像缩放和图像旋转等,其理论基础主要是一些矩阵运算,详细原理可以参考有关书籍。

实验系统提供了图像灰度直方图、点运算和几何变换相关内容的文字说明,用户在操作过程中可以参考。下面以图像点运算中的阈值变换为例给出编程实现的程序流程图,如下:

数字图象处理实验指导书

实验一 图象变换实验

2、图像正交变换的基本原理及编程实现步骤 数字图像的处理方法主要有空域法和频域法,点运算和几何变换属于空域法。频域法是将图像变换到频域后再进行处理,一般采用的变换方式是线性的正交变换(酉变换),主要包括傅立叶变换、离散余弦变换、沃尔什变换、霍特林变换和小波变换等。正交变换被广泛应用于图像特征提取、图像增强、图像复原、图像压缩和图像识别等领域。

正交变换实验的重点是快速傅立叶变换(FFT),其原理过于复杂,可以参考有关书籍,这里不再赘述。至于FFT的编程实现,系统采用的方法是:首先编制一个一维FFT程序模块,然后调用该模块对图像数据的列进行一维FFT,再对行进行一维FFT,最后计算并显示幅度谱。程序流程图如下:

四、实验内容

图像灰度直方图

点运算:图像反色、灰度线性变换、阈值变换、窗口变换、灰度拉伸和灰度

数字图象处理实验指导书

实验一 图象变换实验

均衡

几何变换:图像镜像变换、图像转置、图像平移、图像缩放和图像旋转 正交变换:傅立叶变换、离散余弦变换、沃尔什变换、霍特林变换和小波正反变换

注意:

1、所有实验项目均针对8位BMP灰度图像进行处理,其它格式(如JPG)的图像可以利用系统提供的图像格式转换工具进行转换,再进行处理;

2、本次实验的重点是图像的灰度直方图和点运算,几何变换和正交变换只作一般性了解。

五、实验步骤

以图像灰度阈值变换为例说明实验的具体步骤,其它实验项目的步骤与此类似。

1、打开计算机,在系统桌面上双击“数字图像处理实验教学软件系统”的可执行文件“图象处理”的图标,进入实验系统;

2、执行文件→打开,在OPEN对话框中选择待处理的图像,按【OK】后系统显示出图像;

3、执行查看→图像基本信息,将显示图像基本信息对话框,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

4、执行查看→灰度直方图,查看图像的灰度直方图,如图所示;

5、执行图像变换→正交变换→傅立叶变换,查看图像的频率域分布情况,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

6、执行图像变换→正交变换→小波变换,查看图像经过小波变换的效果,如图所示;

7、执行图像变换→点运算→阈值变换,修改阈值变换对话框中的阈值参数,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

8、设置完阈值参数后按【OK】,系统显示阈值变换后的图像,与原图像进行比较,观察阈值变换的效果,如图所示;

9、重复步骤4,查看阈值变换后图像的直方图分布情况;

数字图象处理实验指导书

实验一 图象变换实验

10、重复步骤5,查看阈值变换后图像的频率域分布情况;

11、执行文件→保存或另存为,保存处理后的图像;

12、执行文件→重新加载,重新加载原始图像,但要注意先前对图像的处理将会丢失; 注意:

13、在执行步骤2时可能会出现有些图像文件不能打开的情况,如图所示,此时可以先利用图像格式转换工具将图像文件转换为8位BMP图像,再利用系统进行处理。步骤14和15是使用图像格式转换工具的方法;

14、在桌面上双击图像格式转换工具Jpg2bmp的图标,进入转换工具界面,如图所示;

15、按照界面提示,把JPG格式的图像文件转换成8位BMP图像。

数字图象处理实验指导书

实验一 图象变换实验

步骤13示意图

步骤14示意图

六、思考题

1、图像灰度线性变换、阈值变换、窗口变换、灰度拉伸和灰度均衡之间有何区别?

灰度线性变换就是将图像的像素值通过指定的线性函数进行变换,以此增强或者减弱图像的灰度。

灰度的阈值变换可以让一幅图像变成黑白二值图。

灰度的窗口变换也是一种常见的点运算。它的操作和阈值变换类似。从实现方法上可以看作是灰度折线变换的特列。窗口灰度变换处理结合了双固定阈值法,与其不同之处在于窗口内的灰度值保持不变。

灰度拉伸又叫做对比度拉伸,它与线性变换有些类似,不同之处在于灰度拉伸使用的是分段线性变换,所以它最大的优势是变换函数可以由用户任意合成。

灰度均衡是增强图像的有效方法之一。灰度均衡同样属于改进图像的方法,灰度均衡的图像具有较大的信息量。从变换后图像的直方图来看,灰度分布更加均匀。

2、利用图像镜像和旋转变换可以实现图像转置吗?如果可以,应该怎样实现?

可以。进行一次镜像变换,顺(逆)时针旋转两次,再以与第一次相反的方向镜像变换。

数字图象处理实验指导书

实验一 图象变换实验

实验二 图像增强及复原实验

七、实验条件

PC机 数字图像处理实验教学软件

大量样图

八、实验目的1、熟练使用“数字图像处理实验教学软件系统”;

2、熟悉图像增强及复原的基本原理,了解编程实现的具体步骤;

3、观察图像中值滤波、平滑、锐化和伪彩色编码的结果,比较不同参数条件下的图像增强效果;

4、观察图像退化和复原的结果,比较不同复原方法的复原效果。

九、实验原理

1、图像增强和复原的基本原理

对降质图像的改善处理通常有两类方法:图像增强和图像复原。

图像增强不考虑图像降质的原因,只将图像中感兴趣的特征有选择地进行突出,并衰减图像的次要信息,改善后的图像不一定逼近原始图像,只是增强了图像某些方面的可读性,如突出了目标轮廓,衰减了各种噪声等。图像增强可以用空域法和频域法分别实现,空域法主要是在空间域中对图像象素灰度值直接进行运算处理,一般包括中值滤波、模板平滑和梯度锐化等,空域法可以用下式来描述:

g(x,y)=f(x,y)*h(x,y)其中f(x,y)是处理前图像,g(x,y)表示处理后图像,h(x,y)为空间运算函数。图像增强的频域法是在图像的频率域中对图像的变换值进行某种运算处理,然后变换回空间域,系统涉及的各种滤波器属于频域法增强,这是一种间接处理方法,可以用下面的过程模型来描述:

其中:F(u,v)=[ f(x,y)],G(u,v)= F(u,v)H(u,v),g(x,y)=1[ G(u,v)],和1分别表示频域正变换和反变换。实验系统提供了图像增强相关内容的文字说明,用户在操作过程中可以参考。

图像复原是针对图像降质的原因,设法去补偿降质因素,使改善后的图像尽可能逼近原始图像,提高了图像质量的逼真度。关于图像复原的详细原理可以参考相关书籍,这里不再赘述。本系统提供了图像的噪声退化、卷积退化和运动模糊退化操作,并提供了相应的逆滤波复原、维纳复原和运动模糊复原操作。本次

数字图象处理实验指导书

实验一 图象变换实验

实验中图像复原只作一般性了解。

2、编程实现步骤

下面以图像增强中的中值滤波操作为例给出编程实现的程序流程图,如下:

十、实验内容

图像增强:中值滤波、图像模板平滑、理想低通滤波器平滑、巴特沃斯低通滤波器平滑、梯度锐化、拉普拉斯锐化、理想高通滤波器锐化、巴特沃斯高通滤波器锐化和伪彩色编码

图像复原:图像的噪声退化、卷积退化、卷积加噪声退化、运动模糊退化、逆滤波复原、维纳复原和运动模糊复原

注意:

3、所有实验项目均针对8位BMP灰度图像进行处理;

4、本次实验的重点是图像增强中的中值滤波和模板平滑,图像复原只作一般性了解。

十一、实验步骤

以图像中值滤波操作为例说明实验的具体步骤,其它实验项目的步骤与此类似。

11、打开计算机,在系统桌面上双击“数字图像处理实验教学软件系统”的可执行文件“图象处理”的图标,进入实验系统;

12、执行文件→打开,在OPEN对话框中选择待处理的图像,按【OK】后系统显示出图像;

数字图象处理实验指导书

实验一 图象变换实验

13、执行查看→图像基本信息,将显示图像基本信息对话框,如图所示;

14、执行查看→灰度直方图,查看图像的灰度直方图,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

15、执行图像变换→正交变换→傅立叶变换,查看图像的频率域分布情况,如图所示;

16、执行图像增强→中值滤波,选择或自定义对话框中的滤波器参数,如图所示;

数字图象处理实验指导书

实验一 图象变换实验

17、设置完滤波器参数后按【OK】,系统显示中值滤波后的图像,与原图像进行比较,观察中值滤波的效果,如图所示;

18、重复步骤4,查看中值滤波后图像的直方图分布情况;

数字图象处理实验指导书

实验一 图象变换实验

19、重复步骤5,查看中值滤波后图像的频率域分布情况;

10、执行文件→保存或另存为,保存处理后的图像;

11、执行文件→重新加载,重新加载原始图像,但要注意先前对图像的处理将会丢失。

数字图象处理实验指导书

实验一 图象变换实验

十二、思考题

1、图像中值滤波和模板平滑之间有何区别?

图像平滑处理就是用平滑模板对图像进行处理,以减少图像的噪声。而中值滤波是一种非线性的信号处理方法。

2、图像增强和图像复原之间有何区别?

图像增强:利用一定的技术手段,不用考虑图像是否失真(即原 始图像在变换后可能会失真)而且不用分析图像降质的原因。针对给定图像的应用场合,有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。

图像复原:针对质量降低或者失真的图像,恢复图像原始的内容或者质量。图像复原的过程包含对图像退化模型的分析,再对退化的图像进行复原。图像退化是由于成像系统受各种因素的影响,导致了图像质量的降低,称之为图像退化。这些因素包括传感器噪声、摄像机聚焦不佳、物体与摄像机之间的相对移动、随机大气湍流、光学系统的象差、成像光源和射线的散射等。图像复原大致可以分为两种方法:

一种方法适用于缺乏图像先验知识的情况,此时可对退化过程建立模型进行描述,进而寻找一种去除或消弱其影响的过程,是一种估计方法;

另一种方法是针对原始图像有足够的先验知识的情况,对原始图像建立一个数学模型并根据它对退化图像进行拟合,能够获得更好的复原效果。

3、图像维纳复原为什么比逆滤波复原效果好?

维纳滤波复原的原理可表示为

对于维纳滤波,由上式可知,当

时,由于存在 项,所以数字图象处理实验指导书

实验一 图象变换实验

不会出现被0除的情形,同时分子中含有项,在处。当时,此时维纳滤波就变成 了逆滤波;当时,表明维纳滤波避免了逆滤波中 出现的对噪声过多的放大作用,也就是说图像维纳复原比逆滤波复原效果好。

221381
领取福利

微信扫码领取福利

微信扫码分享