河北工业大学《计算机图像处理》实验指导书
数字图像处理实验指导书
实验一:图像文件类型转换实验目的:理解数字图像文件的几种基本类型掌握在MATLAB中进行图象文件类型转换的方法观察图象转换前后的效果加深对图象文件类型的理解熟悉图象格式、颜色系统间的转换实验内容:1)灰度图像与索引图像的相互转换2)RGB图像与索引图像的相互转换3)将图像转换为二值化图像实验方法:利用MATLAB工具进行实验一、灰度图像到索引图像的转换启动MATLAB,新建一个自己的工作文件夹(如下图中的“MYFIG”)。
并把它设置在当前的工作路径(Current Directory)下。
1)在该文件夹中拷入个灰度图片,比如“2.jpg”文件。
2)在MATLAB命令输入窗中,调用函数info=imfinfo('2.jpg')观查2.jpg是否为灰度图像在ColorType: 'grayscale' 属性行如此显示,则说明以2.jpg命名的文件为灰度图像。
3)输入如下命令完成转换RGB=imread('2.jpg'); % 将图像“2.jpg”的数据赋给变量RGBfigure(3); % 设定显示窗口3imshow(RGB); % 显示原“2.jpg”文件figure(1); % 设定显示窗口1[RGB1,map1]=gray2ind(RGB,128); % 指定灰度级128,进行灰度图像到索引图像转换imshow(RGB1,map1) ; % 显示索引图像1figure(2); % 设定显示窗口2[RGB2,map2]=gray2ind(RGB,16); % 指定灰度级16,进行灰度图像到索引图像转换imshow(RGB2,map2) ; % 显示索引图像2imwrite(RGB1,map1,'3.bmp'); % 将索引图像1保存为名为“3.bmp”的文件imwrite(RGB2,map2,'4.bmp'); % 将索引图像2 保存为名为“4.bmp”的文件运行并观察结果和现象。
数字图像处理实验指导书
数字图像处理实验指导书Digital image processing ExperimentalInstruction崔艳秋许爽大连民族学院Dalian nationalities university数字图像处理实验指导书机电信息工程学院(College of Electromechanical and Information Engineering)2009年7月10日基本要求Basic requirements1.学生必须按时到实验室做实验,不得迟到早退,未经老师批准不得中途离开。
凡迟到者,应给予批评并作适当扣分。
实验课迟到20分钟以上及无故缺席者视为旷课,旷课者不予补做实验,本次实验以零分计。
学生因病或特殊情况不能按时到实验室做实验时,应办理正常请假手续。
请病假必须有医生签字的病假条,请事假必须有班主任签字的事假条。
不符合请假手续的,以旷课论处。
请假的学生由指导教师安排补做实验。
对于未做实验数达三分之一以上(含三分之一)的学生,实验课程按0分计。
2.学生在每次实验课之前,应仔细阅读实验教材,查阅相关的资料,写出预习报告。
预习报告的具体内容包括:实验内容、实验目的、实验原理图、实验步骤、实验数据记录表格等。
实验课前由任课教师检查预习报告,未写预习报告者不予做实验。
3.做实验前,了解设备的原理和正确使用方法。
在没有弄懂仪器设备的使用方法前,不得贸然使用,否则因使用不当造成仪器设备损坏的,根据大连民族学院《仪器设备损坏丢失处理暂行办法》规定进行处理。
实验室内设备在实验过程中不准任意搬动和调换,非本次实验所用仪器设备,未经指导教师允许不得动用。
4.要求每位学生在实验过程中,要具有严谨的学习态度、认真、踏实、一丝不苟的科学作风。
实验过程中学生按照预习的内容进行实验,且重视实验的调试过程,学会如何根据实验现象判断问题所在。
坚持每次实验都要亲自动手,不可“坐车”,每个实验每个学生都要独立完成,不允许抄袭,无特殊原因,中途不得退出实验,否则本次实验无效。
《数字图像处理》实验指导书1
《数字图像处理》实验指导书前言本实验指导书可作为电子信息工程、通信工程、生物医学工程等专业《数字图像处理》课程的实验指导书。
实验指导书共提供了6个实验,要求在VB环境下实现。
实验名称与学时安排详见下表。
实验名称与学时安排表实验教学基本要求:1、在实验前,认真准备,熟悉和掌握相关实验内容的基本算法和程序设计技术。
2、根据实验目的和要求,按时认真完成各实验的上机操作。
3、实验结束后,要及时提交经调试正确的程序源代码、生成的可执行文件、实验报告书等文档。
实验一图象的读取保存及图像的二值化处理一、实验目的1、熟悉《数字图像处理》的实验平台。
2、了解VB对图像进行处理的基本方法。
3、熟悉彩色图像变成灰度图象以及灰度图像转换成二值图像的基本原理及处理过程。
二、实验准备1、复习彩色图像变成灰度图象以及灰度图像的二值化处理的基本原理。
2、阅读下列内容,了解VB对图像进行处理的基本方法。
(1)读取图像通过扫描仪、摄像机等输入计算机以.bmp、.ico或.wmf存储的图像文件,可用LoadPicture函数把图像文件装入窗体、图片框或图像框中,例如:picture1.picture=loadpicture(“c:\image\flower.bmp”)可以把路径为c:\image\flower.bmp的图像文件装入图片框picture1中。
为了使图片框的大小与图像相匹配,应将图片框的autosize属性设置为True。
(2)用Point方法获取彩色图像的颜色值Point方法的功能是获取图像上指定像素的颜色值。
格式为:Object.Point(x,y)其中,Object表示获取颜色的对象名,(x,y)为取得颜色的坐标位置。
Point 方法将指定位置的像素的颜色值返回一个长整形数。
例如,求图片框picture 1中图像在位置(x,y)的像素颜色值(col)时,可写为:dim col as longcol=picture1.Point(x,y)(3)用Pset方法画点Pset方法的功能是在指定的位置画一个指定颜色的点。
河北工业大学《计算机图像处理》实验指导书
实验一 MATLAB数字图像处理基本操作一、实验目的与要求1.熟悉MATLAB软件的开发环境、基本操作以及图像处理工具箱,为编写图像处理程序奠定基础。
2.掌握二值、灰度和彩色图像的读、写和显示方法,以及图像的高、宽、颜色等参数的获取方法。
3.根据实验内容进行问题的简单分析和初步编码。
二、实验相关知识1、Matlab软件Image Processing Toolbox简介MatLab的原文是Matrix Laboratory,它包括若干个工具箱,如Communications Toolbox、Control System Toolbox、Neural Network Toolbox、Wavelet Toolbox等等,其中Image Processing Toolbox图像处理工具箱可以完成Geometric Operations、Enhancement、Color Segmentation、Image Transformation、Image Analysis、Morphological Operations等操作。
在MatLab中,图像就是一个矩阵,在进行处理时当作一个变量即可,因此运算的书写十分简洁,故MatLab有草稿纸式的算法语言之称。
例如:J=I+50; %为原始图像I加上一常数50,并将结果赋予变量J,其效果相当于得到一幅加亮的图像J以此类推可以书写出减法J=I-0.5;乘法J=I*2;除法J=I/3;等等。
利用MatLab提供的imread和imwrite函数可以完成对图像文件的读写操作,它们所支持的一些常用的图像文件格式见表1-1。
MatLab Command窗口的提示符号“>>”下直接键入命令即可运行,如键入:>>clear %执行本命令将会清除内存中的全部变量>> figure(1); %生成一个图像窗口1>> I=imread('e:lena.bmp'); %将硬盘e:根目录上的图像文件lena.bmp的数据读入矩阵变量I中>> imshow(I); %在当前的图像窗口中显示图像矩阵I>> title('原始图像'); %在当前的图像窗口中加上标题但为了能够对程序进行调试和重复应用,我们要求用M文件的方式完成实验中各个程序的编写。
数字图像处理实验指导书-河北工业大学2014实验一
数字图像处理实验指导书河北工业大学计算机科学与软件学院实验一 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) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。
若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。
若图像是double类,则像素取值就是浮点数。
规定双精度型归一化亮度图像的取值范围是[0,1](2) 二值图像一幅二值图像是一个取值只有0和1的逻辑数组。
数字图像处理实验指导书-河北工业大学2014-实验五
数字图像处理实验指导书河北工业大学计算机科学与软件学院实验五 图像频率域平滑和锐化一、实验目的:1.掌握怎样利用傅立叶变换进行频域滤波 2.掌握频域滤波的概念及方法 3.熟练掌握频域空间的各类滤波器 4.利用MATLAB 程序进行频域滤波二、实验原理及知识点频域滤波分为低通滤波和高通滤波两类,对应的滤波器分别为低通滤波器和高通滤波器。
频域低通过滤的基本思想:G(u,v)=F(u,v)H(u,v)F(u,v)是需要钝化图像的傅立叶变换形式,H(u,v)是选取的一个低通过滤器变换函数,G(u,v)是通过H(u,v)减少F(u,v)的高频部分来得到的结果,运用傅立叶逆变换得到钝化后的图像。
频率域平滑:图像的平滑除了在空间域中进行外,也可以在频率域中进行。
由于噪声主要集中在高频部分,为去除噪声改善图像质量,滤波器采用低通滤波器H(u,v)来抑制高频成分,通过低频成分,然后再进行逆傅立叶变换获得滤波图像,就可达到平滑图像的目的。
常用的频率域低滤波器H(u,v)有四种: 1.理想低通滤波器具有传递函数:⎩⎨⎧>≤=00),(0),(1),(D v u D D v u D v u H其中,0D 为指定的非负数,(,)D u v 为(u,v)到滤波器的中心的距离。
0(,)D u v D =的点的轨迹为一个圆。
2. 巴特沃兹低通滤波器(BLPF)(在距离原点0D 处出现截至频率)的传递函数为nn D v u D D v u D v u H 2020]),([414.011]),()[12(11),(+=-+=与理想地通滤波器不同的是,巴特沃兹率通滤波器的传递函数是在0D 处是是连续性衰减,因此采用该滤波器滤波在抑制噪声的同时,图像边缘的模糊程度大大减小,没有振铃效应产生。
3.指数低通滤波器:}]),([347.0exp{}]),()][21exp{[ln(),(00nn D v u D D v u D v u H -==4.梯形低通滤波器⎪⎩⎪⎨⎧>≤<--≤=1101010),(0),()(]),([),(1),(D v u D D v u D D D D D v u D D v u D v u H 频率域锐化 :图像的边缘、细节主要位于高频部分,而图像的模糊是由于高频成分比较弱产生的。
图象处理实验指导书终
实验一图像变换(验证性)1.实验目的熟悉图像的二维离散余弦变换和反变换;熟悉图像的二维离散傅立叶变换和反变换;2.实验内容图像的二维离散余弦变换和反变换及二维离散傅立叶变换和反变换熟悉下列模块函数:rgb2gray - Convert RGB image or colormap to grayscale.uint8 -Convert to unsigned 8-bit integer.dct2 - Compute 2-D discrete cosine transform.idct2 - Compute 2-D inverse discrete cosine transform.fft2 -Two-dimensional discrete Fourier Transformfftshift - Shift zero-frequency component to center of spectrumifftshift - Inverse fftshiftifft2 - Two-dimensional inverse discrete Fourier transform3.原理傅立叶变换是对线性系统进行分析的一个有力工具,它将图像从空域变换到频域,是我们能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪声、显示点等的作用(效应)。
把傅立叶变换的理论同其物理解释相结合,将有助于解决大多数图像处理问题。
在数字图像处理中,输入图像和输出图像通常都是二维的,一般表示成二维数字矩阵,因此,这里直接讨论二维傅立叶变换、二维DFT、二维FFT。
二维M×N的DFT变换和逆DFT变换分别定义如下∑∑-=-=--=101)/2()/2(),(),(M i N k nk N j mi M j e e k i f n m F ππ其中,m=0,1,…,M-1;n=0,1,…,N-1。
∑∑-=-==1010)/2()/2(),(1),(M m N n nk N j miM j e en m F NMk i f ππ其中,m=0,1,…,M-1;n=0,1,…,N-1。
[图象处理算法实验指导书] 实验指导书
[图象处理算法实验指导书] 实验指导书图象处理算法实验指导书实验一静态图像采集一、实验目的 1.了解DSK的工作原理。
2.了解FPGA进行静态图像采集的工作原理。
3.了解DSP的EDMA技术在静态数据采集中的作用。
4.了解DSP的中断技术。
5.了解SDRAM在静态视频数据采集中的作用。
6.了解DSP和FPGA在视频数据采集中的同步原理二、实验设备计算机,6711DSK、视频采集卡、CCS软件、Webpack软件三、实验原理本实验由视频采集卡上的FPGA和DSK共同完成对摄入图像的静态采集和显示,所谓静态采集,就是可以选择采集一幅用户感兴趣的图像,把这幅图像保存到DSK板上的SDRAM中并完成显示。
视频图像由SAA7111进行AD变换和视频解码后输出CCIR 601标准的视频数据流送给FPGA,包括:16位图像数据(高8位为Y信号,低8位为UV信号交叉出现);行同步信号hs(在行消隐期间为高电平,其它时间为低电平);场同步信号vs(在场消隐期间为高电平,其它时间为低电平);行参考信号href(行数据有效期间为高电平)。
在PAL制下,标准的CCIR 601视频数据为864点/行*625行/场*50场,一场分为两帧,分别为奇数行和偶数行。
其中每行有效数据为720个点,即href维持720个点。
FPGA输出给AL250进行视频显示的信号也需要满足这一格式。
根据这一格式,采集时FPGA将有效的视频数据存入OUTFIFO中,同时以行同步信号作为DSP的中断信号通知DSP取走FIFO中一行的数据。
DSP收到中断信号后进入中断处理程序,用EDMA从视频板OUTFIFO中读取一行的数据到SDRAM中,再用EDMA将一行的数据从SDRAM搬到视频板INFIFO中。
FPGA产生显示所需的同步信号和对INFIFO读取的控制信号,控制INFIFO中的数据和同步信号同步送给AL250,完成显示功能。
为此在这个实验前,需要了解以下知识点:1.视频图像格式 2、DSP原理和应用 3、FPGA原理和应用四、实验步骤 1.复习有关图像采集的基础知识2.连接好摄像头、视频卡,FPGA下载电缆、6711DSK并口仿真电缆,上电。
实验一 MATLAB数字图像处理初步-河北工业大学8页word文档
实验一 MATLAB数字图像处理初步网络121 XXX一、实验目的与要求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) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。
若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。
若图像是double类,则像素取值就是浮点数。
规定双精度型归一化亮度图像的取值范围是[0,1](2) 二值图像一幅二值图像是一个取值只有0和1的逻辑数组。
数字图像处理实验指导书-河北工业大学2014-实验六 图像分割
实验六图像分割
一、实验目的
使用MatLab 软件进行图像的分割。
使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响。
二、实验要求
要求学生能够自行评价各主要算子的分割性能。
完成图像的处理并要求正确评价处理结果,能够从理论上作出合理的解释。
三、实验内容与步骤
(1)使用Roberts 算子的图像分割实验
调入并显示图像中图像;使用Roberts 算子对图像进行边缘检测处理; Roberts 算子为一对模板:
(2)使用Roberts 算子的图像分割实验
调入并显示图像中图像;使用Roberts 算子对图像进行边缘检测处理; Roberts 算子为一对模板:
(3)使用Prewitt 算子的图像分割实验
(4)使用Sobel 算子的图像分割实验
(5)使用拉普拉斯算子的图像分割实验
四、实验设备及软件
1.计算机;
2.MATLAB程序;
3.移动式存储器(软盘、U盘等)。
4.记录用的笔、纸。
五、实验报告要求
1.叙述实验过程;
2.提交实验的原始图像和结果图像。
六、思考题/问答题
1. 评价一下Roberts 算子、Prewitt 算子、Sobel 算子对于噪声条件下边界检测的性能。
2. 实验中所使用的五种算子所得到的边界有什么异同?。
数字图像处理实验指导书
实验一数字图像处理编程基础一、实验目的1. 了解MATLAB图像处理工具箱;2. 掌握MATLAB的基本应用方法;3. 掌握MATLAB图像存储/图像数据类型/图像类型;4. 掌握图像文件的读/写/信息查询;5. 掌握图像显示--显示多幅图像、4种图像类型的显示方法;6. 编程实现图像类型间的转换。
二、实验原理略。
三、实验内容1. 实现对图像文件的读/写/信息查询,图像显示--显示多幅图像、4种图像类型的显示方法、图像类型间的转换。
2. 运行图像处理程序,并保存处理结果图像。
四、分析思考归纳总结Matlab各个基本指令。
实验二 图像几何变换实验一、实验目的1.学习几种常见的图像几何变换,并通过实验体会几何变换的效果;2.掌握图像平移、剪切、缩放、旋转、镜像等几何变换的算法原理及编程实现;3.掌握matlab 编程环境中基本的图像处理函数。
二、实验原理1. 初始坐标为(,)x y 的点经过平移00(,)x y ,坐标变为(',')x y ,两点之间的关系为:00''x x x y y y =+⎧⎨=+⎩,以矩阵形式表示为: 00'10'0110011x x x y y y ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦2. 图像的镜像变换是以图象垂直中轴线或水平中轴线交换图像的变换,分为垂直镜像变换和水平镜像变换,两者的矩阵形式分别为:'100'01010011x x y y -⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦ '100'01010011x x y y ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦3. 图像缩小和放大变换矩阵相同:'00'0010011X yx S x y S y ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦当1x S ≤,1y S ≤时,图像缩小;当1x S ≥,1y S ≥时,图像放大。
数字图像处理试验指导书new1
1.1图像点实验1.1.1图像反色实验实验目的1•熟悉视频显示程序的运行过程、控制过程,搞清数据处理、传输途径;2. 结合实例学习如何在视频显示程序中增加图像处理算法;3•了解图像反色的算法和用途;4•了解RF-5程序框架。
1.1.1.2实验内容1. 系统初始化;2. RF-5程序框架实现;3. 反色算法实现。
1.1.1.3实验背景知识将图像按象素进行求反,取得类似照相底片效果。
求反处理的图像与原始图“黑白颠倒”,可以看清原始图中灰黑区域的情况。
求反的图像一般用于数字图像的初步处理。
设D A表示输入图像的灰度,D B表示输出图像的灰度。
灰度变换方程为:D B=f(D A)=255-D A1.1.1.4程序简介1.1.1.4.1程序包含文件介绍1. main.c:实验的主程序。
系统使用到资源、CSL、BIOS以及任务初始化2. appData.c SCOM 模块初始化。
3. tskVideol nput .c:视频输入任务初始化及输入任务处理。
4. tskVideoOutput.c:视频输出任务初始化及输出任务处理。
5. DEC643.ge:系统初始化。
6. *h :程序使用的头文件。
7. *lib :程序使用的库文件。
8.li nk_dm642.cmd: 库文件连接命令文件。
9. VideoReverseloop2.tc:BIOS 配置文件。
10. VideoReverseloop2cfg.cmd DSP存储器及资源分配与程序各段的连接关系。
1.1.1.4.2程序架构简介实验例程采用RF-5 (参考设计框架5)实现视频的采集、处理及显示。
程序使用2个任务模块,视频采集任务以及视频处理输出任务。
系统流程图(一)初始化模块介绍1. 系统初始化模块功能介绍:初始化CSL以及BIOS设置64K 的CACHE ,并将其映射到EMIF 的CE0 及CE1 空间设置DMA 优先级序列,长度2. RF-5 模块初始化初始化RF-5 框架中用于内部单元传递消息的SCOM 模块3. 任务模块初始化启动任务存储空间分配及管理(二)任务模块介绍1. 输入任务输入任务从输入设备驱动程序获得视频图像,使用FVID (视频驱动程序)提供的FVID_exchange 函数调用输入设备按照4:2:2 格式获取一帧视频图像。
计算机图像处理实验
位图文件信息的提取和二值化处理实验步骤:1.拷贝MinGW文件夹至C:(路径为C:\MinGW)2.编辑setc.bat文件,然后运行此批处理以设置路径。
3.编辑hdr.h 和hdr.c文件4.编辑bmphdr.c文件,然后在当前文件路径下,使用DOS命令:gcc -c hdr.c //编译,生成hdr.o目标文件gcc -c bmphdr.c //编译,生成bmphdr.o目标文件gcc -o bmphdr.exe hdr.o bmphdr.o //链接,生成bmphdr.exe执行文件使用bmphdr.exe来提取某一个bmp文件的头信息,例如:bmphdr test.bmp5.编辑 ez.c文件(用于图像的二值化处理),然后gcc -c ez.c //编译,生成ez.o目标文件gcc -o ez.exe hdr.o ez.o //链接,生成ez.exe执行文件使用 ez.exe文件来对某一个bmp文件进行二值化处理。
例如:ez test.bmp result.bmp 108 (对test.bmp文件进行二值化处理,阈值为108,处理的结果为result.bmp文件)hdr.h文件内容:#ifndef __HDR_H__#define __HDR_H__struct bmphdr {char signature[2];int size;short reserved[2];int offset;int hdr_size;int width;int height;short nr_planes;short bits_per_pixel;int compress_type;int data_size;int resol_hori;int resol_vert;int nr_colors;int important_color;char info[1024];};struct bmphdr *get_header(char filename[]);#endifhdr.c文件内容:#include <stdio.h>#include <memory.h>#include "hdr.h"struct bmphdr *get_header(char filename[]){FILE *fp;struct bmphdr *hdr;fp = fopen(filename, "rb");if (!fp) {printf("File open error or such file does not exist!\n");return NULL;}hdr = (struct bmphdr *)malloc(sizeof(struct bmphdr));fread(hdr->signature, 2, 1, fp);if (hdr->signature[0] != 'B' || hdr->signature[1] != 'M') { printf("Not a bmp file!\n");return NULL;}fread(&hdr->size, 4, 1, fp);fread(hdr->reserved, 4, 1, fp);fread(&hdr->offset, 4, 1, fp);fread(&hdr->hdr_size, 4, 1, fp);fread(&hdr->width, 4, 1, fp);fread(&hdr->height, 4, 1, fp);fread(&hdr->nr_planes, 2, 1, fp);fread(&hdr->bits_per_pixel, 2, 1, fp);fread(&hdr->compress_type, 4, 1, fp);fread(&hdr->data_size, 4, 1, fp);fread(&hdr->resol_hori, 4, 1, fp);fread(&hdr->resol_vert, 4, 1, fp);fread(&hdr->nr_colors, 4, 1, fp);fread(&hdr->important_color, 4, 1, fp);if (hdr->offset > 54)fread(&hdr->info, 1024, 1, fp);fclose(fp);return hdr;}bmphdr.c文件内容:#include <stdio.h>struct bmphdr {char signature[2];int size;short reserved[2];int offset;int hdr_size;int width;int height;short nr_planes;short bits_per_pixel;int compress_type;int data_size;int resol_hori;int resol_vert;int nr_colors;int important_color;} header;int main(int argc, char *argv[]){FILE *fp;if (argc != 2) {printf("Usage: %s <filename>\n", argv[0]);exit(1);}fp = fopen(argv[1], "r");if (!fp) {printf("File open error or such file does not exist!\n");exit(1);}fread(header.signature, 2, 1, fp);if (header.signature[0] != 'B' || header.signature[1] != 'M') {printf("Not a bmp file!\n");exit(1);}fread(&header.size, 4, 1, fp);fread(header.reserved, 4, 1, fp);fread(&header.offset, 4, 1, fp);fread(&header.hdr_size, 4, 1, fp);fread(&header.width, 4, 1, fp);fread(&header.height, 4, 1, fp);fread(&header.nr_planes, 2, 1, fp);fread(&header.bits_per_pixel, 2, 1, fp);fread(&press_type, 4, 1, fp);fread(&header.data_size, 4, 1, fp);fread(&header.resol_hori, 4, 1, fp);fread(&header.resol_vert, 4, 1, fp);fread(&header.nr_colors, 4, 1, fp);fread(&header.important_color, 4, 1, fp);fclose(fp);printf("signature %c%c\n", header.signature[0], header.signature[1]);printf("size %d\n", header.size);printf("offset %d\n", header.offset);printf("hdr_size %d\n", header.hdr_size);printf("width %d\n", header.width);printf("height %d\n", header.height);printf("nr_planes %d\n", header.nr_planes);printf("bits_per_pixel %d\n", header.bits_per_pixel);printf("compress_type %d\n", press_type);printf("data_size %d\n", header.data_size);printf("resol_hori %d\n", header.resol_hori);printf("resol_vert %d\n", header.resol_vert);printf("nr_colors %d\n", header.nr_colors);printf("important_color %d\n", header.important_color);printf("\n");return 0;}二值化程序ez.c 文件内容:#include <stdio.h>#include <stdlib.h>#include <memory.h>#include "hdr.h"struct bmphdr *hdr;unsigned char *bitmap, *to;char buf[2048];int main(int argc, char *argv[]){int i, j, k, nr_pixels;FILE *fp, *fpnew;unsigned g;if (argc != 4) {printf("Usage: %s <file_from> <file_to> <threshold>\n", argv[0]);exit(1);}hdr = get_header(argv[1]);if (!hdr) exit(1);fp = fopen(argv[1], "rb");if (!fp) {printf("File open error!\n");exit(1);}fseek(fp, hdr->offset, SEEK_SET);nr_pixels = hdr->width * hdr->height;bitmap = malloc(nr_pixels);fread(bitmap, nr_pixels, 1, fp);fclose(fp);k = atoi(argv[3]);to = malloc(nr_pixels);memset(to, 0, nr_pixels);for (i = 0; i < nr_pixels; i++)to[i] = bitmap[i] > (unsigned char)k ? 255 : 0;fpnew = fopen(argv[2], "wb+");if (!fpnew) {printf("File create error!\n");exit(1);}fwrite(hdr->signature, 2, 1, fpnew);fwrite(&hdr->size, 4, 1, fpnew);fwrite(hdr->reserved, 4, 1, fpnew);fwrite(&hdr->offset, 4, 1, fpnew);fwrite(&hdr->hdr_size, 4, 1, fpnew);fwrite(&hdr->width, 4, 1, fpnew);fwrite(&hdr->height, 4, 1, fpnew);fwrite(&hdr->nr_planes, 2, 1, fpnew);fwrite(&hdr->bits_per_pixel, 2, 1, fpnew);fwrite(&hdr->compress_type, 4, 1, fpnew);fwrite(&hdr->data_size, 4, 1, fpnew);fwrite(&hdr->resol_hori, 4, 1, fpnew);fwrite(&hdr->resol_vert, 4, 1, fpnew);fwrite(&hdr->nr_colors, 4, 1, fpnew);fwrite(&hdr->important_color, 4, 1, fpnew);if (hdr->offset > 54)fwrite(hdr->info, hdr->offset - 54, 1, fpnew);fwrite(to, nr_pixels, 1, fpnew);fclose(fpnew);free(hdr);free(bitmap);return 0;}直方图均衡化直方图均衡化实质上是减少图象的灰度级以换取对比度的加大例如:假设原图的灰度分布级为126(最大为256,也就是从0到255的级上的灰度都有或多或少的出现),经过直方图均衡化后,灰度分布级别将会小于126。
《计算机图形图像处理(设计)》实验报告
《计算机图形图像处理》实验报告册学院:旅游与环境学院专业:地理信息系统教师:肖冰(副教授)组员:周伟(41209163)刘杰(41209165)苟芬(41209190)马芳(41209179)陈家浩(41209166)基于MATLAB图像增强处理实验时间:2015年6月24日实验背景:图像增强处理可以使得处理后的图像对给定的应用比原来的图像更加有效同时可以有效的改善图像质量。
实验目的:1.了解MATLAB 的操作环境和基本功能。
2.掌握MATLAB 中图像增强处理的几种技术的使用。
3.加深理解图像增强处理的实验原理。
实验环境: Windws7MATLAB 7.0二.实验原理数字图像处理是指将图像信号转换成数字格式并利用计算机对其进行处理的过程。
在图像处理中,图像增强技术对于提高图像的质量起着重要的作用。
本文先对图像增强的原理以及各种增强方法进行概述,然后着重对灰度变换、直方图均衡化、平滑和锐化等几种常用的增强方法进行了深入的研究,在学习数字图像的基本表示与处理方法的基础上,针对图像增强的普遍性问题,研究和实现常用的图像增强方法及其算法,通过Matlab 实验得出的实际处理效果来对比各种算法的优缺点,讨论不同的增强算法的适用场合,并对其图像增强方法进行性能评价。
三.实验内容及步骤:实验流程图如下:1. 彩色图像的均衡化步骤:1统计原图像素每个像素的个数2统计原图像<每个灰度级的像素的累积个数3家里灰度级得映射规则4将原图每个像素点的灰度映射到新图1.clear all2.I=imread('F:\computer\哪吒.jpg '); %读入JPG彩色图像文件3.imshow(I) %显示出来4.title('哪吒')5.I_gray = rgb2gray(I); %灰度化后的数据存入数组6.imwrite(I_gray,'灰度图.bmp'); %保存灰度图像7.figure,imshow(I_gray);8.title('灰度图')9.10.[height,width]=size(I_gray); %测量图像尺寸参数11.p=zeros(1,256); %预创建存放灰度出现概率的向量12.for i=1:height13.for j=1:width14. p(I_gray(i,j) + 1) = p(I_gray(i,j) + 1) + 1;15. end16.end17.s=zeros(1,256);18.s(1)=p(1);19.for i=2:25620. s(i)=p(i) + s(i-1); %统计图像中<每个灰度级像素的累积个数,s(i):0,1,```,i-121.end22.23.for i=1:25624. s(i) = s(i)*256/(width*height); %求灰度映射函数25.if s(i) > 25626. s(i) = 256;27. end28.end29.30.%图像均衡化31.I_equal = I;32.for i=1:height33.for j=1:width34. I_equal(i,j) = s( I(i,j) + 1);35. end36.end37.figure,imshow(I_equal) %显示均衡化后的图像38.title('均衡化后图像')39.imwrite(I_equal,'哪吒.bmp');结果显示如下:2对于灰度图的直方图均衡化:有些图像在低值灰度区间上频率较大,使得图像中较暗区域中的细节看不清楚。
数字图像处理实验指导书
实验五:图像压缩一. 实验目的通过调用Matlab有关二维余弦变换和小波变换函数对图像进行压缩与重构, 从而对图像压缩的变换域主要方法和图像压缩的效果有更为直观的认识.二. 实验设备装有Matlab软件的PC机.三. 实验内容和原理1.使用二维离散余弦变换(DCT)进行图像压缩。
显示原图像、DCT系数图像、重构图像与误差图像(原图像与重构图像之差),并计算均方误差MSE。
原始图像被转换成为8⨯8大小的块进行压缩与重构,重构时IDCT仅使用DCT系数的子集。
压缩后,仅保留具有较大方差的若干个DCT系数,丢弃其它的有较小方差的DCT系数,因为它们对重构的影响较小。
压缩应该做到在最合理地近似原图像的情况下使用最少的系数。
MATLAB程序如下:%Exam3%function Exam3(trueImage,Cnum)%trueImage:待压缩的原图像%Cnum:压缩时保留的系数的个数trueImage=double(trueImage)/255;%转化为双精度型figure;imshow(trueImage);title('original image');%显示原始图像%以下为对图像进行DCT变换,%得到图像的DCT系数矩阵及DCT系数方差矩阵dctm=dctmtx(8);%计算DCT矩阵,返回8⨯8DCT变换矩阵imageDCT=blkproc(trueImage,[8 8],'P1*x*P2',dctm,dctm.');%对图像实行不同的块处理DCTvar=im2col(imageDCT,[8 8],'distinct').';%重排图像块为矩阵列%求矩阵的行数DCTvar=(sum(DCTvar.*DCTvar)-(sum(DCTvar)/n).^2)/n;[dum,order]=sort(DCTvar);%排序%以下为显示系数图像%1表示保留的系数,0表示丢弃的系数Cnum=64-Cnum;mask=ones(8,8);%全1矩阵mask(order(1:Cnum))=zeros(1,Cnum);im8x8=zeros(9,9);im8x8(1:8,1:8)=mask;im128x128=kron(im8x8(1:8,1:8),ones(16));%Kronecher张量积figure;imshow(im128x128);title('DCT coefficients');%显示DCT系数图像%以下为重构及显示图像dctm=dctmtx(8);newImage=blkproc(imageDCT,[8 8],'P1*(x.*P2)*P3',dctm.',mask(1:8,1:8),dctm);figure;imshow(newImage);title('reconstructed image');figure;imshow(trueImage-newImage+0.45);title('error image');%显示误差图像error=(trueImage.^2-newImage.^2);MSE=sum(error(:))/prod(size(trueImage))%计算归一化图像的均方误差2. 使用小波变换进行图像压缩利用小波变换进行图像压缩过程如下:(1)对图像进行小波分解。
河北工业大学数字图像处理之matlab实验报告
实验一一、实验要求1、熟悉MATLAB软件的开发环境、基本操作以及图像处理工具箱,为编写图像处理程序奠定基础。
2、掌握二进制(黑白)图像、灰度图像、彩色图像读、写和显示的基本方法,分别选择以上几种类型的图像,观察其图像类型参数。
3、说明以下程序的显示结果为何是一幅几乎全黑的图像。
clear; close all;myi=zeros(20,20);myi(2:2:18,2:2:18)=1;myi=uint8(myi);figure, imshow(myi,'notruesize');编写程序将图一中orangutan_1.tif图片拉伸一倍后形成orangutan_2.tif所示的图片。
4、应用MATLAB(或C)语言编写一幅灰度图像直方图统计程序,并选择一幅图像显示其直方图,将结果与MATLAB图像处理工具箱中提供的灰度直方图函数imhist的处理结果进行比较。
5、利用以上编写的程序,估算图一所示图像iris.tif中的瞳孔半径(以像素为单位)。
orangutan_1.tif orangutan_2.tif iris.tif图一二、实验内容1,通过安装matlab软件,熟悉MATLAB软件的开发环境、基本操作以及图像处理工具箱2,图像的读、写、显示和图像类型参数查看通过 I= imread(FILENAME),读取图像,注意FILENAME=‘图像文件所在的位置+文件名’;1)通过imwrite(a,FILENAME,fmt),可以把a图像写进FILENAME图像,即是替换掉FILENAME,但是文件图像格式不替换。
2)通过imshow(I),可以把I图像显示出来。
3)例如:在matlab软件中,运行如下命令:I = imread('E:\orangutan_2.tif');figure,imshow(I)I1 = imread('E:\iris.tif');figure,imshow(I1)imwrite(I,'E:\iris.tif','tif')I2 = imread('E:\iris.tif');figure,imshow(I2)原图:orangutan_2.tif iris.tif运行结果:可以看到orangutan_2.tif已成功写入 iris.tif中。
数字图像处理实验指导书
实验须知一、预习要求1.实验前认真阅读实验教程中有关内容,明确实验目的、内容和实验任务。
2.每次实验前做好充分的预习,对所需预备知识做到心中有数。
3.实验前应编好源程序,并对调试过程、实验结果进行预测。
二、实验要求1.实验课请勿迟到,缺席。
2.爱护设备,保持清洁,不随意更换设备。
3.认真完成实验任务,实验结果经教师检查。
4.发生事故,应立即切断电源,并马上向教师报告,检查原因,吸取教训。
5.实验完毕,请整理实验设备,再离开实验室。
三、报告要求每次实验后,应递交一份实验报告,报告中应包含下列内容:1.实验名称、实验人姓名、学号、班级,所用设备号。
2.实验目的、任务。
3.写出实验调试情况,包括上机时遇到的问题及解决办法、实验结果分析等,并附上调试好的程序清单(应加适量注释)。
4.总结实验中的心得体会,提出对实验内容、方案等的建议、意见或设想等。
实验一 图像变换算法一、实验目的1、 理解几何运算的基本概念与定义;2、 掌握在MA TLAB 中进行插值的方法3、 运用MATLAB 语言进行图像的插值缩放和插值旋转。
二、实验原理几何运算可改变图像中各物体之间的空间关系。
这种运算可以被看成是将(各)物体在图像内移动。
一个几何运算需要两个独立的算法。
首先,需要一个算法来定义空间变换本身,用它来描述每个像素如何从其初始位置“移动”到终止位置,即每个像素的“运动”。
同时,还需要一个用于灰度插值的算法,这是因为,在一般情况下,输入图像的位置坐标(x,y)为整数,而输出图像的位置坐标为非整数,反过来也如此。
因此插值就是对变换之后的整数坐标位置的像素值进行估计。
MATLAB 提供了一些函数实现这些功能。
插值是常用的数学运算,通常是利用曲线拟合的方法,通过离散的采样点建立一个连续函数来逼近真实的曲线,用这个重建的函数便可以求出任意位置的函数值。
最近邻插值是最简便的插值,在这种算法中,每一个插值输出像素的值就是在输入图像中与其最临近的采样点的值。
《数字图像处理》实验指导书
数字图像处理实验指导书电气信息工程系实验中心2008年8月目 录实验一、数字图像获取实验二、图像的傅立叶变换实验三、图像增强实验四、图像压缩实验一、数字图像获取一、实验目的1.掌握使用扫描仪等数字化设备以及计算机获取数字图像的方法;2.修改图像的存储格式。
二、实验仪器1.计算机;2.扫描仪(或数码相机、数字摄像机)及其驱动程序盘;3.图像处理软件(画图,photoshop, Microsoft photo edit等);4.记录用的笔、纸。
三、 实验内容用扫描仪获取图像也是图像的数字化过程的方法之一,扫描仪按种类可以分为手持扫描仪,台式扫描仪和滚筒式扫描仪(鼓形扫描仪)。
扫描仪的主要性能指标有x、y方向的分辨率、色彩分辨率(色彩位数)、扫描幅面和接口方式等。
各类扫描仪都标明了它的光学分辨率和最大分辨率。
分辨率的单位是dpi,dpi是英文Dot Per Inch的缩写,意思是每英寸的像素点数。
扫描仪工作时,首先由光源将光线照在欲输入的图稿上,产生表示图像特征的反射光(反射稿)或透射光(透射稿)。
光学系统采集这些光线,将其聚焦在CCD上,由CCD将光信号转换为电信号,然后由电路部分对这些信号进行A/D转换及处理,产生对应的数字信号输送给计算机。
当机械传动机构在控制电路的控制下,带动装有光学系统和CCD的扫描头与图稿进行相对运动,将图稿全部扫描一遍,一幅完整的图像就输入到计算机中去了。
图1.1扫描仪的工作原理扫描仪扫描图像的步骤是:首先将欲扫描的原稿正面朝下铺在扫描仪的玻璃板上,原稿可以是文字稿件或者图纸照片;然后启动扫描仪驱动程序后,安装在扫描仪内部的可移动光源开始扫描原稿。
为了均匀照亮稿件,扫描仪光源为长条形,并沿y方向扫过整个原稿;照射到原稿上的光线经反射后穿过一个很窄的缝隙,形成沿x方向的光带,又经过一组反光镜,由光学透镜聚焦并进入分光镜,经过棱镜和红绿蓝三色滤色镜得到的RGB三条彩色光带分别照到各自的CCD上,CCD将RGB光带转变为模拟电子信号,此信号又被A/D变换器转变为数字电子信号。
《计算机图像处理》实习指导任务书-2012
《计算机图像处理》
实习指导任务书
项目一、理解图像的基本概念
目的:通过更改图像的像素、分辨率等操作学习图形图像处理中最基本的概念。
(p1--5)
项目二、抠图练习
目的:通过不同的实例练习各种抠图方法,能够根据图像的特点选用最快捷、最方便的方法。
(p19--47)
步骤:
1、背景单一图像的抠图;
2、复杂图像的抠图;
3、毛发的抠图;
4、半透明图像的抠图;
5、抽出滤镜抠图。
项目三、基本图形绘制
目的:练习使用画笔、路径等工具绘制各种需要的图形。
步骤:
1、绘制卡通桌面;(p73--81)
项目四、修饰图像
目的:练习练习修复工具的使用,改善图片不完善之处,增强图像的视觉效果。
(p92--115)步骤:
1、去除图像瑕疵
2、删除图像中多余内容
3、图像的美化
项目五、图像的色彩与色调调整
目的:练习色彩调整工具的使用,依据色彩调整的需要能够选取合适的操作方法。
(p117-160)步骤:
1、修正图像的偏色;
2、改变图像的颜色;
3、为图像应用特殊色调;
4、黑白照片上色
项目六、特效字体制作
目的:练习通过各种工具、滤镜、图层样式等制作多种文字特效(p161-172)
步骤:
1、制作透明字;
2、制作珠光字;
项目七、图像特效制作
目的:综合运用各种图像处理工具,制作贺卡(p185-201)
项目八、宣传广告与海报设计
目的:综合运用各种图像处理工具,制作公益海报(p260-265)
上交成果:每个项目的最终效果图,存成JPG格式。
《图像处理》实验指导书2016版
调用格式:
C=imdivide(A,B)。
四、参考代码
参考代码中实现了彩色图像的灰度化、旋转、缩放两种几何变换以及镜像及拼接。
Image1=imread('peppers.jpg'); %红绿通道互换 Image2=Image1; Image2(:,:,1)=Image1(:,:,2); Image2(:,:,2)=Image1(:,:,1); imshow(Image2); imwrite(Image2,'changecolor.jpg');
二、实验内容
打开一幅彩色图像 Image1,使用 Matlab 图像处理函数,对其进行下列变换: (1)将 Image1 灰度化为 gray,统计并显示其灰度直方图; (2)对 gray 进行分段线性变换; (3)对 gray 进行直方图均衡化; (4)对 gray 进行伪彩色增强; (5)对 gray 添加噪声并平滑; (6)对 gray 利用 Sobel 算子锐化。
三、Matlab 相关函数介绍
(1)imread 函数 功能:实现多种类型图像文件的读取,如:BMP、GIF、JPEG、PNG、RAS 等。 调用格式:A = imread(filename, fmt)。filename 为图像文件名,可以是灰度图像,也可以是彩色 图像,如果文件不在当前目录或不在 Matlab 目录下,则需要列全文件路径。fmt 为文件的扩展名, 指定文件类型。A 为图像数据矩阵。 (2)imshow 函数 功能:显示图像。 调用格式: imshow(I,n):显示灰度图像 I,n 为要显示图像的灰度等级,整数,默认为 256。 Imshow(I,[LOW HIGH]):以规定的灰度级范围[LOW HIGH]来显示灰度图像 I,低于 LOW 值的 显示为黑,高于 HIGH 值的显示为白,默认按 256 个灰度级显示。 imshow(RGB):显示真彩色图像 RGB。 imshow(BW):显示二值图像 BW。 imshow(X,map):显示索引图像,X 为索引图像的数据矩阵,map 为其颜色映射表。 imshow filename:显示 filename 指定的图像,若文件包括多帧图像,则显示第一幅,且文件必 须在 MATLAB 的当前目录下。 (3)imwrite 函数 功能:实现图像文件的保存。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 MATLAB数字图像处理基本操作一、实验目的与要求1.熟悉MATLAB软件的开发环境、基本操作以及图像处理工具箱,为编写图像处理程序奠定基础。
2.掌握二值、灰度和彩色图像的读、写和显示方法,以及图像的高、宽、颜色等参数的获取方法。
3.根据实验内容进行问题的简单分析和初步编码。
二、实验相关知识1、Matlab软件Image Processing Toolbox简介MatLab的原文是Matrix Laboratory,它包括若干个工具箱,如Communications Toolbox、Control System Toolbox、Neural Network Toolbox、Wavelet Toolbox等等,其中Image Processing Toolbox图像处理工具箱可以完成Geometric Operations、Enhancement、Color Segmentation、Image Transformation、Image Analysis、Morphological Operations等操作。
在MatLab中,图像就是一个矩阵,在进行处理时当作一个变量即可,因此运算的书写十分简洁,故MatLab有草稿纸式的算法语言之称。
例如:J=I+50; %为原始图像I加上一常数50,并将结果赋予变量J,其效果相当于得到一幅加亮的图像J以此类推可以书写出减法J=I-0.5;乘法J=I*2;除法J=I/3;等等。
利用MatLab提供的imread和imwrite函数可以完成对图像文件的读写操作,它们所支持的一些常用的图像文件格式见表1-1。
MatLab Command窗口的提示符号“>>”下直接键入命令即可运行,如键入:>>clear %执行本命令将会清除内存中的全部变量>> figure(1); %生成一个图像窗口1>> I=imread('e:lena.bmp'); %将硬盘e:根目录上的图像文件lena.bmp的数据读入矩阵变量I中>> imshow(I); %在当前的图像窗口中显示图像矩阵I>> title('原始图像'); %在当前的图像窗口中加上标题但为了能够对程序进行调试和重复应用,我们要求用M文件的方式完成实验中各个程序的编写。
2、数字图像的表示和类别根据图像数据矩阵解释方法的不同,MATLAB把其处理为四类:(1) 亮度图像(Intensity images)一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。
若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。
若图像是double类,则像素取值就是浮点数。
规定双精度型归一化亮度图像的取值范围是[0,1]。
(2) 二值图像(Binary images)一幅二值图像是一个取值只有0和1的逻辑数组。
而一幅取值只包含0和1的uint8类数组,在MATLAB 中并不认为是二值图像。
使用logical函数可以把数值数组转化为逻辑数组,其语法为B=logical(A);其中A是由0和1构成的数值数组。
要测试一个数组是否为逻辑数组,可以使用函数islogical(C);若C是逻辑数组,则该函数返回1;否则,返回0。
(3) 索引图像(Indexed images)索引颜色通常也称为映射颜色,在这种模式下,颜色都是预先定义的,并且可供选用的一组颜色也很有限,索引颜色的图像最多只能显示256种颜色。
一幅索引颜色图像在图像文件里定义,当打开该文件时,构成该图像具体颜色的索引值就被读入程序里,然后根据索引值找到最终的颜色。
(4) RGB图像(RGB images)一幅RGB图像就是彩色像素的一个M×N×3数组,其中每一个彩色像素点都是在特定空间位置上相对应的红、绿、蓝三个分量。
按照惯例,形成一幅RGB彩色图像的三个矩阵常称为红、绿或蓝分量图像。
令fR,fG和fB分别代表三种RGB分量图像。
一幅RGB图像就利用cat(级联)操作将这些分量图像组合成彩色图像:rgb_image=cat(3,fR,fG,fB) 在操作中,图像按顺序放置。
3、数据类和图像类型间的转化表1-2中列出了MATLAB和Image Processing Toolbox为表示图像所支持的各种数据类。
表中的前8项称为数值数据类,第9项称为字符类,最后一项称为逻辑数据类。
表1-3列出了工具箱中提供的一些必要函数,以便在图像类和数据类之间进行转化。
4、常用函数和命令(1) 读写图像文件a)imread:用于读入各种图像文件,返回一个矩阵,如:a=imread('d:\p1.jpg')b)whos:用于读取图像的基本信息,如:whos ac)imwrite:用于写入图像文件,如:imwrite(a,'d:\p2.tif',’tif’)d)imfinfo:用于读取图像文件的有关信息,如:imfinfo('d:\p2.tif')(2) 图像的显示a)image:image函数是MATLAB提供的最原始的图像显示函数,如:a=[1,2,3,4;4,5,6,7;8,9,10,11]; image(a);b)imshow:用于图像文件的显示,如:i=imread('d:\p1.jpg');imshow(i);c)colorbar:用于显示图像的颜色条,如:i=imread('d:\p1.jpg');imshow(i);colorbar;d)figure:用于设定图像显示窗口,如:figure(1);figure(2);% n为图形窗口号数e)subplot:把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示,如:subplot(m,n,p)分成m×n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形f)plot:绘制二维图形,如:plot(y);plot(x,y);%x、y可以是向量、矩阵(3) 图像类型转换a)rgb2gray:把真彩图像转换为灰度图像,如:i=rgb2gray(j)b)im2bw:通过阈值化方法把图像转换为二值图像,如:I=im2bw(j,level)Level表示灰度阈值,取值范围0~1,即0.n表示阈值取自原图像灰度范围的n%(4) 其它运算函数a)zeros:生成全0数组或矩阵,如:B=zeros(m,n)或B=zeros([m n]),返回一个m×n的全0矩阵b)取整函数:round四舍五入取整函数;floor最小取整函数;ceil最大取整函数,如:a=[-1.9 -0.2 3.4 5.6 2.4+3.6i]; I=round(a)输出I=[-2 0 3 6 2+4i]三、实验内容1、读入一幅RGB图像(sunset.jpg),分别转换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示这三幅图像,注上文字标题,即“原图像”、“灰度图像”、“二值图像”。
subplot(1,3,1);I=imread('d:\sunset.jpg');imshow(I);title('原图像');subplot(1,3,2);J=rgb2gray(I);imshow(J);title('灰度图像');subplot(1,3,3);Q=im2bw(J,0.5);imshow(Q);title('二值图像');2、说明以下程序的显示结果为何是一幅几乎全黑的图像。
clear; close all;myi=zeros(20,20);myi(2:2:18,2:2:18)=1;myi=uint8(myi);figure, imshow(myi,'notruesize');3、阅读分析下列程序,对每条语句给出注释,运行并解释最终执行结果;若将for循环改为方框中的程序,有何不同?clear all;close all;I=imread('d:\lena512.jpg');[height,width]=size(I);figure;subplot(2,3,1);imshow(I);title('原图像');L=1;for m=1:5 ArrayL=2*L;k=1;n=1;for i=1:L:heightfor j=1:L:widthquartimage(k,n)=I(i,j);n=n+1;endk=k+1;n=1;endsubplot(2,3,m+1);imshow(uint8(quartimage));end4、编写程序将一幅灰度图像(orangutan.tif)每两行之间增加一行,即将图像的高度拉伸一倍、宽度不变,然后将其存储为图像文件。
要求拉伸后图像的奇数行对应原图像的各行,偶数行是原图像相邻两行的灰度平均值(即偶数行由插值得到),并将结果与MATLAB图像处理工具箱中提供的改变图像大小的函数imresize(imresize(I,[m n])将图像I大小调整为m行n列)的处理结果进行比较。
T1=maketform('affine',[1 0 0;0 2 0;0 0 1]);I=imread('c:\orangutan.tif');I1=imtransform(I,T1);imshow(I),figure,imshow(I1)5、熟悉数字图像处理常用函数的使用,调出帮助文档查看其各种不同用法。
MatLab具有完善的帮助系统,包括命令行帮助、联机帮助和演示帮助等,应学会充分利用帮助系统来解决问题。
获得帮助的途径有多种,如:(1) 在MatLab界面中单击工具条上的问号,或单击Help菜单中的MATLAB Help选项;或按F1键打开Help窗口。
(2) 选择函数(函数所在区变暗),点右键弹出菜单,选择Help on Selection;或在command窗口键入help函数名(或工具箱名)。
实验二图像直方图及灰度变换一、实验目的与要求1.掌握图像灰度直方图的概念及其计算方法,编写灰度直方图统计程序。
2.通过对图像直方图的分析,学习应用直方图法解决诸如图像二值化等具体问题。
3.熟悉直方图均衡化的计算过程及其应用。
4.掌握图像灰度变换技术,通过调整图像的对比度和亮度等参数,改善视觉效果。
二、实验相关知识直方图是图像最基本的统计特征,是图像亮度分布的概率密度函数,反映了图像灰度值的分布情况。
直方图是多种空间域处理技术的基础。