文档库 最新最全的文档下载
当前位置:文档库 › 数字图像处理实验报告

数字图像处理实验报告

 数字图像处理实验报告
 数字图像处理实验报告

数字图像处理实验报告

数字图像处理实验报告1

一. 实验内容:

主要是图像的几何变换的编程实现,具体包括图像的读取、改写,图像平移,图像的镜像,图像的转置,比例缩放,旋转变换等.

具体要求如下:

1.编程实现图像平移,要求平移后的图像大小不变;

2.编程实现图像的镜像;

3.编程实现图像的转置;

4.编程实现图像的比例缩放,要求分别用双线性插值和最近邻插值两种方法来实

现,并比较两种方法的缩放效果;

5.编程实现以任意角度对图像进行旋转变换,要求分别用双线性插值和最近邻插

值两种方法来实现,并比较两种方法的旋转效果.

二.实验目的和意义:

本实验的目的是使学生熟悉并掌握图像处理编程环境,掌握图像平移、镜像、转置和旋转等几何变换的方法,并能通过程序设计实现图像文件的读、写操作,及图像平移、镜像、转置和旋转等几何变换的程序实现.

三.实验原理与主要框架:

3.1 实验所用编程环境:

Visual C++(简称VC)是微软公司提供的基于C/C++的应用程序集成开发工具.VC拥有丰富的功能和大量的扩展库,使用它能有效的创建高性能的Windows应用程序和Web应用程序.

VC除了提供高效的C/C++编译器外,还提供了大量的可重用类和组件,包括著名的微软基础类库(MFC)和活动模板类库(ATL),因此它是软件开发人员不可多得的开发工具.

VC丰富的功能和大量的扩展库,类的重用特性以及它对函数库、DLL库的支持能使程序更好的模块化,并且通过向导程序大大简化了库资源的使用和应用程序的开发,正由于VC具有明显的优势,因而我选择了它来作为数字图像几何变换的开发工具.

在本程序的开发过程中,VC的核心知识、消息映射机制、对话框控件编程等都得到了生动的体现和灵活的应用.

3.2 实验处理的对象:256色的BMP(BIT MAP )格式图像

BMP(BIT MAP )位图的文件结构:

具体组成图: BITMAPFILEHEADER

位图文件头

(只用于BMP文件) bfType="BM" bfSize bfReserved1

bfReserved2

bfOffBits

biSize

biWidth

biHeight

biPlanes

biBitCount

biCompression

biSizeImage

biXPelsPerMeter

biYPelsPerMeter

biClrUsed

biClrImportant

单色DIB有2个表项

16色DIB有16个表项或更少

256色DIB有256个表项或更少

真彩色DIB没有调色板

每个表项长度为4字节(32位)

像素按照每行每列的顺序排列

每一行的字节数必须是4的整数

倍BITMAPINFOHEADER 位图信息头Palette 调色板DIB Pixels DIB图像数据

1. BMP文件组成

BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成.

2. BMP文件头

BMP文件头数据结构含有BMP文件的类型(必须为BMP)、文件

大小(以字节为单位)、位图文件保留字(必须为0)和位图起始位置(以相对于位图

文件头的偏移量表示)等信息.

3. 位图信息头

BMP位图信息头数据用于说明位图的尺寸(宽度,高度等都是以像素为单位,大小

以字节为单位, 水平和垂直分辨率以每米像素数为单位) ,目标设备的级别,每个像素所需的位数, 位图压缩类型(必须是0)等信息.

4. 颜色表

颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD

类型的结构,定义一种颜色.具体包含蓝色、红色、绿色的亮度(值范围为0-255)

位图信息头和颜色表组成位图信息

5. 位图数据

位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描

行之间是从下到上.

Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充.

3.3 BMP(BIT MAP )位图的显示:

①一般显示方法:

1. 申请内存空间用于存放位图文件

2. 位图文件读入所申请内存空间中

3. 在函数中用创建显示用位图, 用函数创建兼容DC,用函数选择显示删除位图

但以上方法的缺点是: 1)显示速度慢; 2) 内存占用大; 3) 位图在缩小显示时图形失真大,(可通过安装字体平滑软件来解决); 4) 在低颜色位数的设备上(如256显示模式)显示高颜色位数的图形(如真彩色)图形失真严重.

②BMP位图缩放显示:

用视频函数来显示位图,内存占用少,速度快,而且还可以对图形进行淡化(Dithering )处理.淡化处理是一种图形算法,可以用来在一个支持比图像所用颜色要少的设备上显示彩色图像.BMP位图显示方法如下:

1. 打开视频函数,一般放在在构造函数中

2. 申请内存空间用于存放位图文件

3. 位图文件读入所申请内存空间中

4. 在函数中显示位图

5. 关闭视频函数,一般放在在析构函数中

以上方法的优点是: 1)显示速度快; 2) 内存占用少; 3) 缩放显示时图形失真小,4) 在低颜色位数的设备上显示高颜色位数的图形图形时失真小; 5) 通过直接处理位图数据,可以制作简单动画.

3.4 程序中用到的访问函数

Windows支持一些重要的DIB访问函数,但是这些函数都还没有被封装到MFC中,这些函数主要有:

1. SetDIBitsToDevice函数:该函数可以直接在显示器或打印机上显示DIB. 在显

示时不进行缩放处理.

2. StretchDIBits函数:该函数可以缩放显示DIB于显示器和打印机上.

3. GetDIBits函数:还函数利用申请到的内存,由GDI位图来构造DIB.通过该函数,

可以对DIB的格式进行控制,可以指定每个像素颜色的位数,而且可以指定是否进行压缩.

4. CreateDIBitmap函数:利用该函数可以从DIB出发来创建GDI 位图.

5. CreateDIBSection函数:该函数能创建一种特殊的DIB,称为DIB项,然后返回

一个GDI位图句柄.

6. LoadImage函数:该函数可以直接从磁盘文件中读入一个位图,并返回一个DIB

句柄.

7. DrawDibDraw函数:Windows提供了窗口视频(VFW)组件,Visual C++支持该

组件.VFW中的DrawDibDraw函数是一个可以替代StretchDIBits

的函数.它的最主要的优点是可以使用抖动颜色,并且提高显示DIB 的速度,缺点是必须将VFW代码连接到进程中.

3.5 图像的几何变换

图像的几何变换,通常包括图像的平移、图像的镜像变换、图像的转置、图像的缩放和图像的旋转等.

数字图像处理实验报告2

一、实验的目的和意义

实验目的:本实验内容旨在让学生通过用VC等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。为学生进一步学习数字摄影测量、遥感和地理信息系统等专业课程以及应用图像处理解决实际问题奠定基础。

二、实验原理和方法

(1) Raw格式到BMP格式的转换:

Raw格式:Raw格式文件是按照数字图像组成的二维矩阵,将像素按行列号顺序存储在文件中。这种文件只含有图像像素数据,不含有信息头,因此,在读图像时,需要根据文件大小,计算图像所包含的行列号,或者需要事先知道图像大小(矩阵大小)。RAW文件按图像上行到下行、左列到右列顺序存储。

BMP格式:BMP文件数据区按图像上下行到上行、左列列到右列顺序存储到数据区。BMP文件由文件头、信息头、颜色表、数据区四个部分组成。

做Raw格式文件到BMP格式文件的转化,先要为BMP格式文件申请四部分的内存:文件头,位图信息头,颜色表,图象数据,然后根据输入值以及Raw文件信息,BMP格式文件信息计算出这几部分的值,赋给他们,写到BMP文件中去。

(2) 灰度图象的线性拉伸:

灰度变化是点运算,将原图象的每个像素的灰度值改成线性变化之后的灰度即可。

灰度的线性变换就是指图像的中所有点的灰度按照线性灰度变换函数进行变换。灰度变换方程如下:

该方程为线性方程。式中参数为输入图像的像素的灰度值,参数为输出图像的

灰度值。

设原图象的灰度范围为[a,b],变化之后的范围为[a',b'],则:

fA=(b'-a')/(b-a)

fB=-(b'-a')/(b-a)*a+a'

如果算出来的值大于255,则让它等于255,小于0则让其等于0。

(3) 局部处理(3*3高通滤波,3*3低通滤波):

局部处理在处理某一像素时,利用与该像素相邻的一组像素,经过某种变换得到处理后图像中某一点的像素值。目标像素的邻域一般是由像素组成的二维矩阵,该矩阵的大小为奇数,目标像素位于该矩阵的中央,即目标像素就是区域的中心像素。经过处理后,目标像素

的值为经过特定算法计算后所得的结果。

实际上都是利用卷积来实现的,卷积往往用一个矩阵表示,将矩阵的中心对齐某个像素,矩阵中的值乘到相应的像素中去,然后将所有乘积加起来就得到中心像素的灰度值。边界像素不做处理,仍为原来的灰度值。求出的像素灰度值若超过[0~255],则向离其最近的属于该范围的像素值靠拢。

3*3低通滤波的算子见表1。

3*3高通滤波的算子见表2。

表格1

1/9

1/9

1/9

1/9

1/9

1/9

1/9

1/9

1/9

表格2

-1

-1

-1

-1

9

-1

-1

-1

-1

(4) 图象几何处理(图象平移,图象缩放):

对于图像平移来说,若平移量是(tx,ty),像素在原图像中的坐标为(x0,y0),则变化后的坐标为(x1,y1),x1=x0+tx,y1=y0+ty。平移只需改变像素的灰度值,不必改变位图信息头和调色板内容。

对于图像缩放,假设放大因子为ratio,缩放的变换矩阵为:

图像信息头中新图像的宽度和高度都变为原来宽度和高度分别与水平垂直比例的乘积,图像大小变为新宽度(变为4的整数倍)与新高度的乘积。

(5) 灰度图象中值滤波:

中值滤波也属于局部处理的一种,将窗口中的各个像素排序之后排序,取中值赋给模板中心的像素,所以窗口中个数一般是基数。

我用的中值滤波窗口是十字丝的9个数的窗口。

(6) 灰度图象边缘检测:

边缘检测有三种算子:Roberts,Prewit,Sobel。三种算子都是做一阶差分的,通过算子算出各个像素的梯度值,将水平梯度的绝对值和垂直梯度的绝对值相加,若此梯度值大于某个阈值,则将其灰度值

赋为255,否则赋为0。

(7) 图象旋转:

图像旋转一般是以图像中心为中心顺时针旋转,利用图像的四个角点求出图像旋转后的大小。

先计算以图像中心为原点坐标系下原图像四个角点的坐标值,按照旋转矩阵计算其旋转之后的坐标值,根据四个角点的新坐标值计算出最大宽度和高度作为新图像的宽度和高度值,按照计算值修改位图信息头,申请一块新内存,存储旋转后图像的灰度值。

旋转矩阵如下:

同样要求各个像素在原图像中的坐标,先将新图像的坐标系平移到图像中心,做逆时针旋转,然后再平移到屏幕左上角,然后将原图像对应坐标的值赋给新图像。

(8) 图象二值化:

判断分析法:假定图像的灰度区间为[0,L-1],则选择一阈值T 将图像的像素分为两组。

为最大值所对应的T,就是所求判断分析法的分割阈值。

搜寻到阈值之后,灰度值小于阈值的像素赋0,其他的赋1,修改文件信息头,调色板,申请新内存。

(9) 图象直方图:

统计各灰度值出现的频数,以及像素的总个数,用频数除以总个数作为频率,以灰度值作为横坐标,频率作为纵坐标绘图。

三、实验过程和步骤

首先要建立一个基于MFC的多文档工程,将视图基类改为滚动视图,以自己的学号命名。

我用的是书上给的CDib类,类里面有获取BMP宽度,高度的函数,有指向位图信息头的指针,指向图象数据的指针,因此我在文档类(Doc类)里定义了一个CDib类的对象,打开以及保存文件的时候利用这个对象去调用CDib里读取与存储文件的函数,并且可以利用这个对象的两个指针对打开的图象进行各种操作。

1.Raw格式到BMP格式的转换:

首先建立一个RawToBMP的对话框,在上面加上四个编辑框(一个输入打开文件的路径一个输入保存文件的路径,另两个),两个按钮,以及默认的确认,取消按钮。利用类向导插入此对话框类,并且为前两个编辑框定义CString的两个变量,用来存储打开与保存文件的路径。同时为两个浏览按钮添加消息响应函数,在消息函数里创建CFileDialog对象,利用此对象的函数将两个路径值赋给前两个编辑框的成员变量。再为OK键添加消息响应函数,分别定义BMP格式文件前三部分数据变量,计算出各变量的值,并且利用一个CFile对象获取Raw图象的数据,利用另一个CFile对象将数据存储到所输入的路径的文件中去,CFile对象的Read函数会自动创建一个文件。

然后在菜单上新建一个菜单,为菜单添加消息响应函数,在其消息响应函数里创建RowToBMP对话框。这样点击菜单后就会弹出一个对话框,按确定键之后就可以读取Raw文件并且存储BMP文件,完成整个消息循环。

2.灰度图象的线性拉伸:

创建一个对话框来输入变化后的灰度值,为对话框的两个编辑框定义成员变量,在文档类中添加处理函数,按照对话框输入值计算出fA与fB,做一个循环,将0到255的灰度值,计算出拉伸后的灰度值(超限情况特殊处理),存放在下标为此值的一个数组中,然后利用文档类的中定义的CDib类的成员变量m_DIB,获得当前打开的图像指

向图像数据部分的指针m_DIB.m_pBits,在数组中查出每个像素变化后的灰度值,并将此值赋给指针m_pBits指向的内存。刷新视图。

然后在菜单中加上线性拉伸的菜单,为该菜单的ID添加消息响应函数,在该函数中创建对话框,并调用文档类线性拉伸的函数,将对话框的两个成员变量传给此函数。

3.局部处理:

在文档类里添加低通滤波和高通滤波的成员函数,在函数中使用m_DIB对象中指向图像数据部分的指针m_pBits,首先申请一个新内存,将原来图像的灰度值存储起来,然后定义9个BYTE类型的指针,利用双重嵌套循环,在循环中每次用这9个指针指向复制图像对应模板中的9个数,然后按照模板中的数值计算出中心像素的灰度值,判断是否超过范围,如果超过范围则做相应的处理,否则将此值直接赋给m_pBits中对应的中心像素。循环之后刷新视图。

添加局部处理的菜单,为菜单设置消息响应函数,在菜单消息响应函数中调用文档类的函数,完成对m_DIB的处理。

4.图像几何变换:

建立平移对话框,定义两个成员变量,分别存储输入的水平位移和垂直位移。

在文档类里添加平移函数,申请一块新内存复制原图像的信息,在函数中将

外层循环变量i视为纵坐标,内层循环变量j视为横坐标,通过双重循环,对每个像素,求出其在原图像中的坐标(i0,j0),将复制图像中的对应(i0,j0)的像素灰度值赋给m_DIB.m_pBits指针中的图像。如果在原图像中找不到该像素,置为背景色。刷新视图。

在菜单中添加图像平移菜单,并为该菜单添加消息响应函数,在此函数中创建平移对话框,调用文档类的平移函数,将对话框的成员变量传入该函数。

建立缩放对话框类,为此类定义两个成员变量,存储输入的水平缩放因子和垂直缩放因子。

再在文档类中添加缩放函数,利用m_DIB.m_pBMI(指向位图信息头的指针),修改位图信息头中的宽度,高度,图像大小。计算出新图像的大小,申请一块新内存存储新图像,同平移函数一样,计算出每个像素在原图像中的坐标,i0=i/PRatio,j0=j/VRatio,PRatio与VRatio 分别为水平缩放因子和垂直缩放因子。将原图像中对应坐标的灰度值赋给新内存,然后将m_DIB.m_pBits(指向图像数据的指针)指向新内存,刷新视图。

5.中值滤波:

在文档类中添加两个成员函数。一个用来把传入的指针里的内容排序,一个用来做中值滤波。也要申请一块新内存来复制原图像的信息,双重嵌套循环,边界像素不处理,对每个像素,使用一个大小为9个字节的数组来存放复制图像窗口中各像素值,然后将数组首地址传入排序的函数中,将中间的值赋给当前图像窗口中心的像素。排序函数我用的是快速排序法。

在菜单中添加中值滤波菜单项,为其添加消息响应函数,调用文档类的中值滤波函数。

6.边缘检测:

在文档类中定义三个函数,分别为Roberts,Prewit,Sobel算子处理函数,处理时,先申请新内存复制原来图像信息,边界像素不作处理,对每个像素值,求出其在复制图像中的梯度,判断,若梯度值大于150(这个是我自己定的),则将灰度值赋为255,否则置零。

菜单中添加边缘检测菜单,置属性为Pop—up,添加三个下一级菜单,分别为Roberts,Prewit,Sobel,各个菜单的消息响应函数中调用文档类中各自的处理函数。

7.图像旋转:

创建一个对话框输入旋转角度,在文档类中添加成员函数。

先将角度化为弧度值。

计算原图像四个角点的坐标,以及新图像四个角点的坐标。

根据新图像四个角点的坐标,取对角线上两个点横坐标差值较大值作为宽度,纵坐标差值较大值作为高度。

根据计算出来的高度和宽度修改文件信息头,并且申请内存存储新图像。

计算每点的像素在原来图像中的坐标从而获取其灰度值,写入新内存。

将m_DIB.m_pBits指向该新内存。刷新视图。

添加图像旋转菜单,在菜单响应函数中创建对话框,调用文档类中旋转函数,将对话框中获取的角度传给旋转函数。

8.图像二值化:

在文档类添加一个成员函数,根据传人的图像和阈值返回组间方差和组内方差的比值。

再添加一个成员函数,进行二值化。

在函数中:

计算新BMP文件的大小,申请一块新内存,存储新的整个BMP 文件的信息,将位图信息头中biBitCount置为1,调色板数组只有两个两个元素,下标为0的三个灰度值都为0,下标为1的三个灰度值为255。

从最大灰度值到最小灰度值之间搜寻上述函数返回值最大的值,作为阈值。

对每个像素,若其原来灰度值小于阈值,赋1,否则赋0。

将m_DIB,m_pBits指向新内存的图像数据部分,m_DIB.m_pBMI 指向位图信息头。

9.图像直方图:

为文档类添加一个int型指针成员变量m_pGray,在构造函数中将该指针赋空,在文档类中定义了一个函数,统计各个灰度值出现的频数,申请一个内存,存储在这个内存中,并将m_pGray指向它。

创建一个画直方图的对话框,添加Picture控件,在控件里调用文档类成员变量,画直方图。添加一个滚动条,用来确定阈值,为滚动条添加消息响应函数,按照滚动条的值进行二值化。

在菜单中添加直方图菜单,添加消息响应函数,在响应函数中创建直方图对话框对象。

最后,因为我开始做工程的时候没有把菜单设计好,做得有点乱,所以,我又在View里添加WM_CONTEXTMENU消息响应函数,在函数体内用CMenu类来实现弹出菜单。

四、结果分析与评价

(1)Raw格式到BMP格式的转换:效果见图1。

图表1

老师说在转化的时候后面用一个循环会降低效率,但是实际上只要宽度是4的整数倍,后面的循环就不会做了。所以这个算法效率我觉得还行吧。

(2)线性变化:输入线性变化范围10~20,效果见图2。

图表2

用了线性查找表之后,这个算法的效率应该会高很多,但是我的算法里是线性表从0~255都有变化之后的值,实际上,如果图片的灰度范围小一些的话,做了很多无用的计算,而且前面已经搜寻过原图

像的最大最小灰度值了,所以线性表的生成循环可以只从最小灰度做到最大灰度。另外,我设计的算法里,如果最大值和最小值输反了的话,程序会自动交换他们的值,做这个可能就会多算一些东西了。

(3)低通滤波:效果见图3。

图表3

取的是8邻域内的平均值,效果不是很好。

高通滤波:效果见图4。

图表4

基本上我觉得边缘还是有突出了吧。

中值滤波:效果见图5。

图表5

这个中值滤波的效果我还是比较满意的,因为排序所以要调用其他函数,我用了快速排序,而且用的是9个数的十字丝窗口,所以速度要比25个数的窗口快一些。平滑的效果出来还可以。

(4)边缘检测:

Roberts算子:效果见图6。

图表6

Prewit算子:效果见图7。

图表7

Sobel算子:效果见图8。

图表8

由于Prewit算子和Sobel算子都用了8个数去做,所以效果要好

一些,相比之下,Sobel算子对这幅图又要效果好些,应该是对4邻域赋予了更大权的缘故。但是后两种算法计算量也要大一些。

(5)图像平移:效果见图9。

图表9

这个图像平移量比较大,所以被裁切的也显得不真实了。主要是因为我的图像大小和坐标都没有变化,所以只在原来的图像坐标范围内显示平移后的图像,实际上,我既可以改变图像的大小,并且为了节省计算,可以让循环变量i和j从一个新的值开始做计算,前面的全都赋背景色。

图像缩放:水平比例0.4,垂直比例0.5,效果见图10。

图表10

在此基础上旋转:效果见图11。

图表11

这几种算法主要的计算量都在for循环内,所以要想优化算法的话,必须简化循环里的计算。不过我的想法差不多跟书上的差不多,还没有什么优化。也许,这种优化的算法需要看很多别人做的好程序才能慢慢自己学会吧。

(6)二值化(判断分析法):效果见图12。

图表12

实际上,我用直方图看的最佳阈值应该在100多左右,而我做的程序阈值好像偏小一些,所以效果不太好,我计算组间方差和组内方差的时候调用了一个函数专门求阈值,可能这里的计算还是有一点问

题。而且在我的函数里,要256次调用这个函数,又因为计算机是按字节处理数据的,因此写图像数据的时候要用每8个写到一个数组中,然后通过计算得到字节类型的值,这些都使得我的算法效率比较低,最后一个问题,我觉得如果使用位运算会快一些,但是前面的问题还没有想到比较好的解决方法。

(7)直方图:效果见图13。

这个图像255的像素太多,如果我没算错的话,量化应该不是很好吧。

图表13

五、实验总结与体会

这次实验学到最大的东西,是自己总算有MFC编程的概念了,虽然自己VC++考试的分数还不错,但是里面的很多东西,不通过自己的编程时绝对不能真正理解。比如说封装性,这次用CDib的方便,很好地利用了类的封装性。另外,比如MFC是基于消息响应机制的,这就决定了,要利用鼠标或者菜单响应函数去实现功能,而用c语言编写程序的时候,完全是按主函数的线程来的。

另外,我也学会了调试的真正含义。以前都只知道那几个按键是做什么用的,调试的真正目的,是根据自己的算法来检验程序计算的各个值是否符合,从而可以很快速方便地查到自己的错误。

自学也是很重要的一方面。实际上,在现在来说,用MSDN也不是很难的事了,我们不应该被英文打到,而且现在,随着对一些专有名词熟悉了之后,看MSDN也容易一些了,万一不懂的函数,也可以

数字图像处理实验1

实验一 实验内容和步骤 练习图像的读取、显示和保存图像数据,步骤如下: (1)使用命令figure(1)开辟一个显示窗口 (2)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内显示、二值图像和灰度图像,注上文字标题。 (3)保存转换后的灰度图像和二值图像 (4)在同一个窗口显示转换后的灰度图像的直方图 I=imread('BaboonRGB.bmp'); figure,imshow(I); I_gray=rgb2gray(I); figure,imshow(I_gray); I_2bw=Im2bw(I_gray); figure,imshow(I_2bw); subplot(1,3,1),imshow(I),title('RGB图像'); subplot(1,3,2),imshow(I_gray),title('灰度图像'); subplot(1,3,3),imshow(I_2bw),title('二值图像'); imwrite(I_gray,'Baboongray.png'); imwrite(I_2bw,'Baboon2bw.tif'); figure;imhist(I_gray);

RGB 图 像灰度图 像二值图 像 050100150200250 500 1000 1500 2000 2500 3000

(5)将原RGB 图像的R 、G 、B 三个分量图像显示在figure(2)中,观察对比它们的特点,体会不同颜色所对应的R 、G 、B 分量的不同之处。 [A_RGB,MAP]=imread('BaboonRGB.bmp'); subplot(2,2,1),imshow(A_RGB),title('RGB'); subplot(2,2,2),imshow(A_RGB(:,:,1)),title('R'); subplot(2,2,3),imshow(A_RGB(:,:,2)),title('G'); subplot(2,2,4),imshow(A_RGB(:,:,3)),title('B'); (6)将图像放大1.5倍,插值方法使用三种不同方法,在figure(3)中显示放大后的图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;A=imread('BaboonRGB.bmp'); figure(3),imshow(A),title('原图像'); B=imresize(A,1.5,'nearest'); figure(4),imshow(B),title('最邻近法') C=imresize(A,1.5,'bilinear'); ; figure(5),imshow(C),title('双线性插值'); D=imresize(A,1.5,'bicubic'); figure(6),imshow(D),title('双三次插值 '); RGB R G B

数字图像处理 课程设计报告

数字图像处理 课程设计报告 姓名: 学号: 班级: 设计题目:图像处理 教师:赵哲老师 提交日期: 12月29日

一、设计内容: 主题:《图像处理》 详细说明:对图像进行处理(简单滤镜,模糊,锐化,高斯模糊等),对图像进行处理(上下对称,左右对称,单双色显示,亮暗程度调整等),对图像进行特效处理(反色,实色混合,色彩平衡,浮雕效果,素描效果,雾化效果等), 二、涉及知识内容: 1、二值化 2、各种滤波 3、算法等 三、设计流程图 四、实例分析及截图效果: 运行效果截图: 第一步:读取原图,并显示 close all;clear;clc; % 清楚工作窗口clc 清空变量clear 关闭打开的窗口close all I=imread(''); % 插入图片赋给I imshow(I);% 输出图I I1=rgb2gray(I);%图片变灰度图 figure%新建窗口 subplot(321);% 3行2列第一幅图 imhist(I1);%输出图片

title('原图直方图');%图片名称 一,图像处理模糊 H=fspecial('motion',40); %% 滤波算子模糊程度40 motion运动 q=imfilter(I,H,'replicate');%imfilter实现线性空间滤波函数,I图经过H滤波处理,replicate反复复制q1=rgb2gray(q); imhist(q1); title('模糊图直方图'); 二,图像处理锐化 H=fspecial('unsharp');%锐化滤波算子,unsharp不清晰的 qq=imfilter(I,H,'replicate'); qq1=rgb2gray(qq); imhist(qq1); title('锐化图直方图'); 三,图像处理浮雕(来源网络) %浮雕图 l=imread(''); f0=rgb2gray(l);%变灰度图 f1=imnoise(f0,'speckle',; %高斯噪声加入密度为的高斯乘性噪声 imnoise噪声污染图像函数 speckle斑点 f1=im2double(f1);%把图像数据类型转换为双精度浮点类型 h3=1/9.*[1 1 1;1 1 1;1 1 1]; %采用h3对图像f2进行卷积滤波 f4=conv2(f1,h3,'same'); %进行sobel滤波 h2=fspecial('sobel'); g3=filter2(h2,f1,'same');%卷积和多项式相乘 same相同的 k=mat2gray(g3);% 实现图像矩阵的归一化操作 四,图像处理素描(来源网络) f=imread(''); [VG,A,PPG] = colorgrad(f); ppg = im2uint8(PPG); ppgf = 255 - ppg; [M,N] = size(ppgf);T=200; ppgf1 = zeros(M,N); for ii = 1:M for jj = 1:N if ppgf(ii,jj)

数字图像处理四个实验报告,带有源程序

数字图像处理 实验指导书 学院:通信与电子工程学院 专业:电子信息工程 班级: 学号: 姓名: XX理工大学

实验一 MATLAB数字图像处理初步 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像间如何转化。 二、实验原理及知识点 1、数字图像的表示和类别 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。 图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。 图1 图像的采样和量化 根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类: 亮度图像(Intensity images) 二值图像(Binary images) 索引图像(Indexed images) RGB图像(RGB images)

数字图像处理实验报告

数字图像处理实验报告 实验一数字图像基本操作及灰度调整 一、实验目的 1)掌握读、写图像的基本方法。 2)掌握MATLAB语言中图像数据与信息的读取方法。 3)理解图像灰度变换处理在图像增强的作用。 4)掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方 法。 二、实验内容与要求 1.熟悉MATLAB语言中对图像数据读取,显示等基本函数 特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure()函数。 1)将MATLAB目录下work文件夹中的forest.tif图像文件读出.用到imread, imfinfo 等文件,观察一下图像数据,了解一下数字图像在MATLAB中的处理就是处理一个矩阵。将这个图像显示出来(用imshow)。尝试修改map颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。 2)将MATLAB目录下work文件夹中的b747.jpg图像文件读出,用rgb2gray() 将其 转化为灰度图像,记为变量B。 2.图像灰度变换处理在图像增强的作用 读入不同情况的图像,请自己编程和调用Matlab函数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果。 3.绘制图像灰度直方图的方法,对图像进行均衡化处理 请自己编程和调用Matlab函数完成如下实验。 1)显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用 imadjust函 数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰

度直方图与原灰度直方图的区别。 2) 对B 进行直方图均衡化处理,试比较与源图的异同。 3) 对B 进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。 图1.1 分段线性变换函数 三、实验原理与算法分析 1. 灰度变换 灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。 1) 图像反转 灰度级范围为[0, L-1]的图像反转可由下式获得 r L s --=1 2) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围, 如直接使用原图,则一部分细节可能丢失。解决的方法是对原图进行灰度压缩,如对数变换: s = c log(1 + r ),c 为常数,r ≥ 0 3) 幂次变换: 0,0,≥≥=γγc cr s 4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求 局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸: 其对应的数学表达式为:

武汉科技大学 数字图像处理实验报告

二○一四~二○一五学年第一学期电子信息工程系 实验报告书 班级:电子信息工程(DB)1102班姓名 学号: 课程名称:数字图像处理 二○一四年十一月一日

实验一图像直方图处理及灰度变换(2学时) 实验目的: 1. 掌握读、写、显示图像的基本方法。 2. 掌握图像直方图的概念、计算方法以及直方图归一化、均衡化方法。 3. 掌握图像灰度变换的基本方法,理解灰度变换对图像外观的改善效果。 实验内容: 1. 读入一幅图像,判断其是否为灰度图像,如果不是灰度图像,将其转化为灰度图像。 2. 完成灰度图像的直方图计算、直方图归一化、直方图均衡化等操作。 3. 完成灰度图像的灰度变换操作,如线性变换、伽马变换、阈值变换(二值化)等,分别使用不同参数观察灰度变换效果(对灰度直方图的影响)。 实验步骤: 1. 将图片转换为灰度图片,进行直方图均衡,并统计图像的直方图: I1=imread('pic.jpg'); %读取图像 I2=rgb2gray(I1); %将彩色图变成灰度图 subplot(3,2,1); imshow(I1); title('原图'); subplot(3,2,3); imshow(I2); title('灰度图'); subplot(3,2,4); imhist(I2); %统计直方图 title('统计直方图'); subplot(3,2,5); J=histeq(I2); %直方图均衡 imshow(J); title('直方图均衡'); subplot(3,2,6); imhist(J); title('统计直方图');

原 图 灰度图 01000 2000 3000统计直方图 100200直方图均衡 0统计直方图 100200 仿真分析: 将灰度图直方图均衡后,从图形上反映出细节更加丰富,图像动态范围增大,深色的地方颜色更深,浅色的地方颜色更前,对比更鲜明。从直方图上反应,暗部到亮部像素分布更加均匀。 2. 将图片进行阈值变换和灰度调整,并统计图像的直方图: I1=imread('rice.png'); I2=im2bw(I1,0.5); %选取阈值为0.5 I3=imadjust(I1,[0.3 0.9],[]); %设置灰度为0.3-0.9 subplot(3,2,1); imshow(I1); title('原图'); subplot(3,2,3); imshow(I2); title('阈值变换'); subplot(3,2,5); imshow(I3); title('灰度调整'); subplot(3,2,2); imhist(I1); title('统计直方图'); subplot(3,2,4);

数字图像处理实验指导书模板

《数字图像处理》实验指导书 编写: 罗建军 海南大学三亚学院 10月

目录 一、概述 ....................................................................... 错误!未定义书签。 二、建立程序框架 ....................................................... 错误!未定义书签。 三、建立图像类 ........................................................... 错误!未定义书签。 四、定义图像文档实现图像读/写.............................. 错误!未定义书签。 五、实现图像显示 ....................................................... 错误!未定义书签。 六、建立图像处理类................................................... 错误!未定义书签。 七、实现颜色处理功能............................................... 错误!未定义书签。 (一) 亮度处理................................................................. 错误!未定义书签。 (二) 对比度处理............................................................. 错误!未定义书签。 (三) 色阶处理................................................................. 错误!未定义书签。 (四) 伽马变换................................................................. 错误!未定义书签。 (五) 饱和度处理............................................................. 错误!未定义书签。 (六) 色调处理................................................................. 错误!未定义书签。 八、实现几何变换功能............................................... 错误!未定义书签。 (一) 图像缩放................................................................. 错误!未定义书签。 (二) 旋转......................................................................... 错误!未定义书签。 (三) 水平镜像................................................................. 错误!未定义书签。 (四) 垂直镜像................................................................. 错误!未定义书签。 (五) 右转90度................................................................. 错误!未定义书签。 (六) 左转90度................................................................. 错误!未定义书签。 (七) 旋转180度............................................................... 错误!未定义书签。 九、实现平滑锐化功能............................................... 错误!未定义书签。 十、图像处理扩展编程............................................... 错误!未定义书签。

数字图像处理实验 实验二

实验二MATLAB图像运算一、实验目的 1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。 二、实验步骤 1.图像的加法运算-imadd 对于两个图像f x,y和 (x,y)的均值有: g x,y=1 f x,y+ 1 (x,y) 推广这个公式为: g x,y=αf x,y+β (x,y) 其中,α+β=1。这样就可以得到各种图像合成的效果,也可以用于两张图像的衔接。说明:两个示例图像保存在默认路径下,文件名分别为'rice.png'和'cameraman.tif',要求实现下图所示结果。 代码: I1 = imread('rice.png'); I2 = imread('cameraman.tif'); I3 = imadd(I1, I2,'uint8'); I4 = imadd(I1, I2,'uint16'); subplot(2, 2, 1), imshow(I1), title('?-ê?í???1'); subplot(2, 2, 2), imshow(I2), title('?-ê?í???2'); subplot(2, 2, 3), imshow(I3), title('8??í?????ê?'); subplot(2, 2, 4), imshow(I4), title('16??í?????ê?'); 结果截图:

2.图像的减法运算-imsubtract 说明: 背景图像可通过膨胀算法得到background = imopen(I,strel('disk',15));,要求实现下图所示结果。 示例代码如下: I1 = imread('rice.png'); background = imerode(I1, strel('disk', 15)); rice2 = imsubtract(I1, background); subplot(2, 2, 1), imshow(I1), title('?-ê?í???'); subplot(2, 2, 2), imshow(background), title('±3?°í???'); subplot(2, 2, 3), imshow(rice2), title('′|àíoóμ?í???'); 结果截图: 3.图像的乘法运算-immultiply

数字图像处理技术应用课程报告

集中稀疏表示的图像恢复 董伟胜中国西安电子科技大学电子工程学院wsdong@https://www.wendangku.net/doc/7d13978733.html, 张磊香港理工大学计算机系cslzhang@https://www.wendangku.net/doc/7d13978733.html,.hk 石光明中国西安电子科技大学电子工程学院gmshi@https://www.wendangku.net/doc/7d13978733.html, 摘要 本文对于图像恢复任务提出了一种新的称为集中稀疏表示(CSR)的稀疏表示模型。为了重建高还原度的图像,通过给定的字典,退化图像的稀疏编码系数预计应该尽可能接近那些未知的原始图像。然而,由于可用的数据是原始图像的退化版本(如噪声、模糊和/或者低采样率),正如许多现有的稀疏表示模型一样,如果只考虑局部的稀疏图像,稀疏编码系数往往不够准确。为了使稀疏编码更加准确,通过利用非局部图像统计,引入一个集中的稀疏性约束。为了优化,局部稀疏和非局部稀疏统一到一个变化的框架内。大量的图像恢复实验验证了我们的CSR模型在以前最先进的方法之上取得了令人信服的改进。 1、介绍 图像恢复(IR)目的是为了从,比如说通过一个低端摄像头或者在有限条件下得到图像的图像退化版本(例如噪声、模糊和/或者低采样率),来恢复一副高质量的图像。对于观察的图像y,IR问题可以表示成: y = Hx + v (1) 其中H是一个退化矩阵,x是原始图像的矢量,v是噪声矢量。由于IR的病态特性,尝试把观察模型和所需解决方案的先验知识合并到一个变分公式的正则化技术,已经被广泛地研究。对于正则方法,对自然图像适当的先验知识进行寻找和建模是最重要的关注点之一,因此学习自然图像先验知识的各种方法已经被提出来了【25,5,6,12】。 近年来,对于图像恢复基于建模的稀疏表示已经被证明是一种很有前途的模型【9,5,13,20,16,21,27,15,14】。在人类视觉系统【23,24】的研究中,已经发现细胞感受区域使用少量的从一个超完备的编码集中稀疏选出的结构化基元来编码自然图像。在数学上,一个x ∈ R N的信号可以表示为一个字典Φ中的几个原子的线性组合,例如,X ≈Φα,用|0 最小化:

数字图像处理程序

数字图像处理程序

数字图像处理实验 图像处理实验(一)直方图 灰度变换是图像增强的一种重要手段,使图像对比度扩展,图像更加清晰,特 征更加明显。 灰度级的直方图给出了一幅图像概貌的描述,通过修改灰度直方图来得到图像 增强。 1、灰度直方图 (1)计算出一幅灰度图像的直方图 clear close all I=imread('004.bmp'); imhist(I) title('实验一(1)直方图'); (2)对灰度图像进行简单的灰度线形变换, figure subplot(2,2,1) imshow(I); title('试验2-灰度线性变换'); subplot(2,2,2) histeq(I); (3)看其直方图的对应变化和图像对比度的变化。 原图像 f(m,n) 的灰度范围 [a,b] 线形变换为图像 g(m,n),灰度范围[a’,b’]公式:g(m,n)=a’+(b’-a’)* f(m,n) /(b-a) figure subplot(2,2,1) imshow(I) J=imadjust(I,[0.3,0.7],[0,1],1); title(' 实验一(3)用g(m,n)=a’+(b’-a’)* f(m,n) /(b-a)进行变换 '); subplot(2,2,2) imshow(J) subplot(2,2,3) imshow(I) J=imadjust(I,[0.5 0.8],[0,1],1); subplot(2,2,4) imshow(J) (4) 图像二值化(选取一个域值,(5) 将图像变为黑白图像) figure subplot(2,2,1)

数字图像处理——彩色图像实验报告

6.3实验步骤 (1)对彩色图像的表达和显示 * * * * * * * * * * * *显示彩色立方体* * * * * * * * * * * * * rgbcube(0,0,10); %从正面观察彩色立方体 rgbcube(10,0,10); %从侧面观察彩色立方 rgbcube(10,10,10); %从对角线观察彩色立方体 %* * * * * * * * * *索引图像的显示和转换* * * * * * * * * * f=imread('D:\Picture\Fig0604(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:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %转换到NTSC彩色空间 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彩色空间

2013数字图像处理课程设计报告

数字图像处理 课程设计报告 课设题目:彩色图像增强软件学院:信息科学与工程学院专业:电子与信息工程 班级: 1002501 姓名:曾小路 学号: 100250131 指导教师:赵占峰 哈尔滨工业大学(威海) 2013 年12月27日

目录 目录 .......................................................................................................................... I 一. 课程设计任务 (1) 二. 课程设计原理及设计方案 (2) 2.1 彩色图像基础 (2) 2.2 彩色模型 (2) 三. 课程设计的步骤和结果 (6) 3.1 采集图像 (6) 3.2 图像增强 (7) 3.3 界面设计 (9) 四. 课程设计总结 (12) 五. 设计体会 (13) 六. 参考文献 (14)

哈尔滨工业大学(威海)课程设计报告 一. 课程设计任务 1.1设计内容及要求: (1)、独立设计方案,根据所学知识,对由于曝光过度、光圈过小或图像亮度不均匀等情况下的彩色图像进行增强,提高图像的清晰度(通俗地讲,就是图像看起来干净、对比度高、颜色鲜艳)。 (2)、参考photoshop 软件,设计软件界面,对处理前后的图像以及直方图等进行对比显示; (3)、将实验结果与处理前的图像进行比较、分析。总结设计过程所遇到的问题。 1.2参考方案 1、实现图像处理的基本操作 学习使用matlab 图像处理工具箱,利用imread()语句读入图像,例如image=imread(flower.jpg),利用彩色图像模型转换公式,将RGB 类型图像转换为HSI 类型图像,显示各分量图像(如imshow(image)),以及计算和显示各分量图像直方图。 2、彩色图像增强实现 对HSI彩色模型图像的I分量进行对比度拉伸或直方图均衡化等处理,提高亮度图像的对比度。对S分量图像进行适当调整,使图像色彩鲜艳或柔和。 H 分量保持不变。将处理后的图像转换成RGB 类型图像,并进行显示。分析处理图像过程和结果存在的问题。 3、参照“photoshop”软件,设计图像处理软件界面 可设计菜单式界面,在功能较少的情况下,也可以设计按键式界面,视 功能多少而定;参考matlab 软件中GUI 设计,学习软件界面的设计 - 1 -

数字图像处理实验报告

数字图像处理实验报告

实验一数字图像处理编程基础 一、实验目的 1. 了解MA TLAB图像处理工具箱; 2. 掌握MA TLAB的基本应用方法; 3. 掌握MA TLAB图像存储/图像数据类型/图像类型; 4. 掌握图像文件的读/写/信息查询; 5. 掌握图像显示--显示多幅图像、4种图像类型的显示方法; 6. 编程实现图像类型间的转换。 二、实验内容 1. 实现对图像文件的读/写/信息查询,图像显示--显示多幅图像、4种图像类型的显示方法、图像类型间的转换。 2. 运行图像处理程序,并保存处理结果图像。 三、源代码 I=imread('cameraman.tif') imshow(I); subplot(221), title('图像1'); imwrite('cameraman.tif') M=imread('pout.tif') imview(M) subplot(222), imshow(M); title('图像2'); imread('pout.bmp') N=imread('eight.tif') imview(N) subplot(223), imshow(N); title('图像3'); V=imread('circuit.tif') imview(V) subplot(224), imshow(V); title('图像4');

N=imread('C:\Users\Administrator\Desktop\1.jpg') imshow(N); I=rgb2gary(GRB) [X.map]=gary2ind(N,2) RGB=ind2 rgb(X,map) [X.map]=gary2ind(I,2) I=ind2 gary(X,map) I=imread('C:\Users\dell\Desktop\111.jpg'); subplot(231),imshow(I); title('原图'); M=rgb2gray(I); subplot(232),imshow(M); [X,map]=gray2ind(M,100); subplot(233),imshow(X); RGB=ind2rgb(X,map); subplot(234),imshow(X); [X,map]=rbg2ind(I); subplot(235),imshow(X); 四、实验效果

数字图像处理实验

《数字图像处理》 实验报告 学院:信息工程学院 专业:电子信息工程 学号: 姓名: 2015年6月18日

目录 实验一图像的读取、存储和显示 (2) 实验二图像直方图分析 (6) 实验三图像的滤波及增强 (15) 实验四噪声图像的复原 (19) 实验五图像的分割与边缘提取 (23) 附录1MATLAB简介 (27)

实验一图像的读取、存储和显示 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像的显示。 二、实验原理 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 三、实验设备 (1) PC计算机 (2) MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox) (3) 实验所需要的图片 四、实验内容及步骤 1.利用imread( )函数读取一幅图像,假设其名为flower.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件设为flower.jpg语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。 7.用imread()读入图像:Lenna.jpg 和camema.jpg; 8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小;

数字图像处理课程设计报告

课程设计报告书课程名称:数字图像处理 题目:数字图像处理的傅里叶变换 学生姓名: 专业:计算机科学与技术 班别:计科本101班 学号: 指导老师: 日期: 2013 年 06 月 20 日

数字图像处理的傅里叶变换 1.课程设计目的和意义 (1)了解图像变换的意义和手段 (2)熟悉傅里叶变换的基本性质 (3)热练掌握FFT的方法反应用 (4)通过本实验掌握利用MATLAB编程实现数字图像的傅里叶变换 通过本次课程设计,掌握如何学习一门语言,如何进行资料查阅搜集,如何自己解决问题等方法,养成良好的学习习惯。扩展理论知识,培养综合设计能力。 2.课程设计内容 (1)熟悉并掌握傅立叶变换 (2)了解傅立叶变换在图像处理中的应用 (3)通过实验了解二维频谱的分布特点 (4)用MATLAB实现傅立叶变换仿真 3.课程设计背景与基本原理 傅里叶变换是可分离和正交变换中的一个特例,对图像的傅里叶变换将图像从图像空间变换到频率空间,从而可利用傅里叶频谱特性进行图像处理。从20世纪60年代傅里叶变换的快速算法提出来以后,傅里叶变换在信号处理和图像处理中都得到了广泛的使用。 3.1课程设计背景 数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。 3.2 傅里叶变换 (1)应用傅里叶变换进行数字图像处理 数字图像处理(digital image processing)是用计算机对图像信息进行处理的一门技术,使利用计算机对图像进行各种处理的技术和方法。 20世纪20年代,图像处理首次得到应用。20世纪60年代中期,随电子计算机的发展得到普遍应用。60年代末,图像处理技术不断完善,逐渐成为一个新兴的学科。利用数字图像处理主要是为了修改图形,改善图像质量,或是从图像中提起有效信息,还有利用数字图像处理可以对图像进行体积压缩,便于传输和保存。数字图像处理主要研究以下内容:傅立叶变换、小波变换等各种图像变换;对图像进行编码和压缩;采用各种方法对图像进行复原和增强;对图像进行分割、描述和识别等。随着技术的发展,数字图像处理主要应用于通讯技术、宇宙探索遥感技术和生物工程等领域。

数字图像处理实验

学院计算机与通信工程学院专业生物医学工程专业 班级51111 学号5111133 姓名杨静 指导教师贾朔 2014年04月21日

实验一图像的基本运算 一、实验目的: 1、掌握图像处理中的点运算、代数运算、逻辑运算和几何运算及应用。 2、掌握各种运算对于图像处理中的效果。 二、实验内容: 1、(1)选择一幅图像lena8.jpg,设置输入/输出变换的灰度级范围,a=0.2,b=0.6,c=0.1,d=0.9. (2)设置非线性扩展函数的参数c=2. (3)采用灰度级倒置变换函数s=255-r进行图像变换 (4)设置二值化图像的阈值,分别为level=0.4,level=0.7 解:参考程序如下: I=imread('C:\lena8.jpg'); figure; subplot(2,3,1); imshow(I); title('原图'); J=imadjust(I,[0.3;0.6],[0.1;0.9]); %设置灰度变换的范围 subplot(2,3,2); imshow(J); title('线性扩展'); I1=double(I); %将图像转换为double类型 I2=I1/255; %归一化此图像 C=2; K=C*log(1+I2); %求图像的对数变换 subplot(2,3,3); imshow(K); title('非线性扩展'); M=im2bw(I,0.5); M=~M; %M=255-I; %将此图像取反 %Figure subplot(2,3,4); imshow(M); title('灰度倒置'); N1=im2bw(I,0.4); %将此图像二值化,阈值为0.4 N2=im2bw(I,0.7); %将此图像二值化,阈值为0.7 subplot(2,3,5); imshow(N1); title('二值化阈值0.4'); subplot(2,3,6); imshow(N2); title('二值化阈值0.7');

数字图像处理实验一

数字图像处理—实验一 一.实验内容: 图像灰度变换 二.实验目的: 学会用Matlab软件对图像灰度进行变换;感受各种不同的灰度变换方法对最终图像效果的影响。 三.实验步骤: 1.获取实验用图像:rice.jpg. 使用imread函数将图像读入Matlab。 程序: clc;clear; figure; subplot(4,4,1); i = imread('rice.png'); i = im2double(i); imshow(i);title('1'); 2.产生灰度变换函数T1,使得: 0.3r r < 0.35 s = 0.105 + 2.6333(r – 0.35) 0.35 ≤r ≤0.65

1 + 0.3(r – 1) r > 0.65 用T1对原图像rice.jpg进行处理,使用imwrite函数保存处理后的新图像。程序: subplot(4,4,2); r=[0:0.001:1]; s=[r<0.35].*r*0.3+[r<=0.65].*[r>=0.35].*(0.105+2.6333*(r-0.35))+[r>0.65].*(1 +0.3*(r-1)); plot(r,s);title('2p'); subplot(4,4,3); T1=[i<0.35].*i*0.3+[i<=0.65].*[i>=0.35].*(0.105+2.6333*(i-0.35))+[i>0.65].*( 1+0.3*(i-1)); imshow(T1);title('2i'); imwrite(T1,'rice_T1.jpg','jpg');

3.产生灰度变换函数T2,使得: 用T2对原图像rice.jpg进行处理,使用imwrite保存处理后的新图像。 %3 subplot(4,4,4); r = [0:0.001:1];

数字图像处理课程心得

数字图像处理课程心得 本学期,我有幸学习了数字图像处理这门课程,这也是我大学学习中的最后一门课程,因此这门课有着特殊的意义。人类传递信息的主要媒介是语音和图像。据统计,在人类接受的信息中,听觉信息占20%,视觉信息占60%,其它如味觉、触觉、嗅觉信息总的加起来不过占20%。可见图像信息是十分重要的。通过十二周的努力学习,我深刻认识到数字图像处理对于我的专业能力提升有着比较重要的作用,我们可以运用Matlab对图像信息进行加工,从而满足了我们的心理、视觉或者应用的需求,达到所需图像效果。 数字图像处理起源于20世纪20年代,当时通过海底电缆从英国伦敦到美国纽约采用数字压缩技术传输了第一幅数字照片。此后,由于遥感等领域的应用,使得图像处理技术逐步受到关注并得到了相应的发展。第三代计算机问世后,数字图像处理便开始迅速发展并得到普遍应用。由于CT的发明、应用及获得了备受科技界瞩目的诺贝尔奖,使得数字图像处理技术大放异彩。目前数字图像处理科学已成为工程学、计算机科学、信息科学、统计学、物理、化学、生物学、医学甚至社会科学等领域中各学科之间学习和研究的对象。随着信息高速公路、数字地球概念的提出以及Internet的广泛应用,数字图像处理技术的需求与日俱增。其中,图像信息以其信息量大、传输速度快、作用距离远等一系列优点成为人类获取信息的重要来源及利用信息的重要手段,因此图像处理科学与技术逐步向其他学科领域渗透并为其它学科所利用是必然的。 数字图像处理是通过对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。图像处理科学是一门与国计民生紧密相联的应用科学,它给人类带来了巨大的经济和社会效益,不久的将来它不仅在理论上会有更深入的发展,在应用上亦是科学研究、社会生产乃至人类生活中不可缺少的强有力的工具。它的发展及应用与我国的现代化建设联系之密切、影响之深远是不可估量的。在信息社会中,数字图象处理科学无论是在理论上还是在实践中都存在着巨大的潜力。近几十年,数字图像处理技术在数字信号处理技术和计算机技术发展的推动下得到了飞速的发展,正逐渐成为其他科学技术领域中不可缺少的一项重要工具。数字图像处理的应用领域越来越广泛,从空间探索到微观研究,从军事领域到工农业生产,从科学教育到娱乐游戏,越来越多的领域用到了数字图像处理技术。 虽然通过一学期的课程学习我们还没有完全掌握数字图像处理技术,但也收获了不少,对于数字图像处理方面的知识有了比较深入的了解,当然也更加理解了数字图像的本质,即是一些数字矩阵,但灰度图像和彩色图像的矩阵形式是不同的。对于一些耳熟能详的数字图像相关术语有了明确的认识,比如常见的:像素(衡量图像的大小)、分辨率(衡量图像的清晰程度)、位图(放大后会失真)、矢量图(经过放大不会失真)等大家都能叫上口却知识模糊的名词。也了解图像处理技术中一些常用处理技术的实质,比如锐化处理是使模糊的图像变清晰,增强图像的边缘等细节。而平滑处理是的目的是消除噪声,模糊图像,在提取大目标之前去除小的细节或弥合目标间的缝隙。对常提的RGB图像和灰度图像有了明确的理解,这对大家以后应用Photoshop等图像处理软件对图像进行处理打下了坚实的基础。更重要的是学习到了数字图像处理的思想。通过学习也是对C++编程应用的很好的实践与复习。 数字图像处理在国民经济的许多领域已经得到广泛的应用。农林部门通过遥感图像了解植物生长情况,进行估产,监视病虫害发展及治理。水利部门通过遥感图像分析,获取水害灾情的变化。气象部门用以分析气象云图,提高预报的准确程度。国防及测绘部门,使用航测或卫星获得地域地貌及地面设施等资料。机械部门可以使用图像处理技术,自动

相关文档
相关文档 最新文档