数字图像处理技术实验二报告

合集下载

matlab 数字图像处理实验报告(五份)

matlab 数字图像处理实验报告(五份)

《数字图像处理实验报告》实验一图像的增强一.实验目的1.熟悉图像在MATLAB下的读写、输出;2.熟悉直方图;3.熟悉图像的线性指数等;4.熟悉图像的算术运算和几何变换。

二.实验仪器计算机、MATLAB软件三.实验原理图像增强是指根据特定的需要突出图像中的重要信息,同时减弱或去除不需要的信息。

从不同的途径获取的图像,通过进行适当的增强处理,可以将原本模糊不清甚至根本无法分辨的原始图像处理成清晰的富含大量有用信息的可使用图像。

其基本原理是:对一幅图像的灰度直方图,经过一定的变换之后,使其成为均匀或基本均匀的,即使得分布在每一个灰度等级上的像素个数.f=H等或基本相等。

此方法是典刑的图像空间域技术处理,但是由于灰度直方图只是近似的概率密度函数,因此,当用离散的灰度等级做变换时,很难得到完全平坦均匀的结果。

频率域增强技术频率域增强是首先将图像从空间与变换到频域,然后进行各种各样的处理,再将所得到的结果进行反变换,从而达到图像处理的目的。

常用的变换方法有傅里叶变换、DCT变换、沃尔什-哈达玛变换、小波变换等。

假定原图像为f(x,y),经傅立叶变换为F(u,v)。

频率域增强就是选择合适的滤波器H(u,v)对F(u,v)的频谱成分进行处理,然后经逆傅立叶变换得到增强的图像。

四.实验内容及步骤1.图像在MATLAB下的读写、输出;实验过程:>> I = imread('F:\image\624baf9dbcc4910a.jpg');figure;imshow(I);title('Original Image');text(size(I,2),size(I,1)+15, ...'IMG_20170929_130307.jpg', ...'FontSize',7,'HorizontalAlignment','right');Warning: Image is too big to fit on screen; displaying at 25% > In imuitools\private\initSize at 86In imshow at 196Original Image2.给定函数的累积直方图。

数字图像处理实习报告

数字图像处理实习报告

数字图像处理实习报告
本次实习主要任务是进行数字图像处理相关工作,包括图像的预处理、特征提取、图像分割和图像识别等方面的工作。

实习过程中,我主要负责了图像处理算法的编写与优化,以及实验数据的收集与分析。

通过这次实习,我对数字图像处理技术有了更深入的了解,并且提升了自己的编程能力和团队协作能力。

在图像处理算法的编写与优化过程中,我主要使用了Python
语言和常用的图像处理库,如OpenCV和PIL等。

我研究了不同的图像处理算法,并对其进行了实验验证,优化了算法的性能和效果。

通过这些工作,我深入了解了图像处理算法的实现原理和优化方法,提升了自己在图像处理领域的技术水平。

在实验数据的收集与分析过程中,我主要负责了实验数据的采集和整理工作。

我使用了各种图像采集设备,包括相机、摄像头等,对不同场景下的图像进行了采集和整理。

然后我利用Python和Matlab等工具对实验数据进行了分析和结果展示,
为后续的图像处理算法提供了重要的支持和参考。

总的来说,这次实习让我对数字图像处理有了更深入的了解,提升了自己的技术能力和实践能力。

我在实习过程中遇到了不少困难和挑战,但通过团队合作和自我努力,最终都得以克服,取得了一定的成果。

通过这次实习,我深刻地感受到了数字图像处理技术的重要性和广阔的应用前景,也对自己未来的发展方向有了更清晰的认识。

希望通过这次实习的经历,我能够为将来的学习和工作打下坚实的基础。

数字图像处理实验报告

数字图像处理实验报告

目录实验一:数字图像的基本处理操作 (4):实验目的 (4):实验任务和要求 (4):实验步骤和结果 (5):结果分析 (8)实验二:图像的灰度变换和直方图变换 (9):实验目的 (9):实验任务和要求 (9):实验步骤和结果 (9):结果分析 (13)实验三:图像的平滑处理 (14):实验目的 (14):实验任务和要求 (14):实验步骤和结果 (14):结果分析 (18)实验四:图像的锐化处理 (19):实验目的 (19):实验任务和要求 (19):实验步骤和结果 (19):结果分析 (21)实验一:数字图像的基本处理操作:实验目的1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用;2、实现图像的读取、显示、代数运算和简单变换。

3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。

:实验任务和要求1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。

2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。

3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。

4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。

:实验步骤和结果1.对实验任务1的实现代码如下:a=imread('d:\');i=rgb2gray(a);I=im2bw(a,;subplot(1,3,1);imshow(a);title('原图像');subplot(1,3,2);imshow(i);title('灰度图像');subplot(1,3,3);imshow(I);title('二值图像');subplot(1,3,1);imshow(a);title('原图像');结果如图所示:图原图及其灰度图像,二值图像2.对实验任务2的实现代码如下:a=imread('d:\');A=imresize(a,[800 800]);b=imread('d:\');B=imresize(b,[800 800]);Z1=imadd(A,B);Z2=imsubtract(A,B);Z3=immultiply(A,B);Z4=imdivide(A,B);subplot(3,2,1);imshow(A);title('原图像 A'); subplot(3,2,2);imshow(B);title('原图像 B'); subplot(3,2,3);imshow(Z1);title('加法图像'); subplot(3,2,4);imshow(Z2);title('减法图像'); subplot(3,2,5);imshow(Z3);title('乘法图像'); subplot(3,2,6);imshow(Z2);title('除法图像');结果如图所示:3.对实验任务3的实现代码如下:s=imread('d:\');i=rgb2gray(s);i=double(i);j=fft2(i);k=fftshift(j); %直流分量移到频谱中心I=log(abs(k)); %对数变换m=fftshift(j); %直流分量移到频谱中心RR=real(m); %取傅里叶变换的实部II=imag(m); %取傅里叶变换的虚部A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=circshift(s,[800 450]);b=rgb2gray(b);b=double(b);c=fft2(b);e=fftshift(c);I=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);title('原图像');subplot(2,2,2);imshow(uint8(b));title('平移图像');subplot(2,2,3);imshow(A);title('离散傅里叶变换频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶变换频谱');结果如图所示:4.对实验任务4的实现代码如下:s=imread('d:\');i=rgb2gray(s);i=double(i);j=fft2(i);k=fftshift(j);I=log(abs(k));m=fftshift(j);RR=real(m);II=imag(m);A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=imrotate(s,-90);b=rgb2gray(b);b=double(b);c=fft2(b);e=fftshift(c);I=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);title('原图像');subplot(2,2,2);imshow(uint8(b));title('平移图像');subplot(2,2,3);imshow(A);title('离散傅里叶频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱');结果如图所示::结果分析对MATLAB软件的操作开始时不太熟悉,许多语法和函数都不会使用,写出程序后,调试运行,最开始无法显示图像,检查原因,是有些标点符号没有在英文状态下输入和一些其他的细节,学会了imread(),imshow(),rgb2gray()等函数。

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

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

数字图像处理实验实验报告(实验一)一、实验目的:1、直方图显示2、计算并绘制图像直方图3、直方图均衡化二.程序脚本clear all;RGB=imread('me.jpg');figure;imshow(RGB);title('图1 彩色图');%========================================================== I=rgb2gray(RGB);figure;imshow(I);title('图2 灰度图');%========================================================= figure;imhist(I);title('灰度直方图');%========================================================= hi=imhist(I);j=1;%为使画出的直方图更好看,在此进行了抽样for(i=1:256)if(mod(i,10)==1)h(j)=hi(i);j=j+1;endendn=0:10:255;figure;stem(n,h);axis([0 255 0 2500]);title('图3.1 stem显示直方图');figure;bar(n,h);axis([0 255 0 2500]);title('图3.2 bar显示直方图');figure;plot(n,h);axis([0 255 0 2500]);title('图3.3 plot显示直方图');%========================================================= I=rgb2gray(RGB);figure;subplot(3,2,1);imshow(I);title('图4.1 原始灰度图');subplot(3,2,2);imhist(I);title('图4.2 原始灰度直方图');%=============================J1=imadjust(I);subplot(3,2,3);imshow(J1);title('调整对比度以后的图');subplot(3,2,4);imhist(J1);title('调整对比度以后的灰度直方图');%=================================J2=histeq(I);subplot(3,2,5);imshow(J2);title('均衡化以后的的图');subplot(3,2,6);imhist(J2);title('均衡化以后的灰度直方图');三.实验结果图1 彩色图图2 灰度图010002000灰度直方图10020010020005001000150020002500图3.1 stem 显示直方图10020005001000150020002500图3.2 bar 显示直方图10020005001000150020002500图3.3 plot 显示直方图图4.1 原始灰度图10002000图4.2 原始灰度直方图0100200调整对比度以后的图010002000调整对比度以后的灰度直方图0100200均衡化以后的的图02000均衡化以后的灰度直方图100200。

数字图像处理实验报告

数字图像处理实验报告

数字图像处理实验报告数字图像处理实验报告数字图像处理实验报告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 bfReserved1bfReserved2bfOffBitsbiSizebiWidthbiHeightbiPlanesbiBitCountbiCompressionbiSizeImagebiXPelsPerMeterbiYPelsPerMeterbiClrUsedbiClrImportant单色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等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。

数字图像处理 实验二 图像增强

数字图像处理 实验二 图像增强

福建农林大学信息工程类实验报告系: 信息与机电工程系 专业: 电子信息工程 年级: 2009级 姓名: 庄建军 学号: 092230069 实验课程: 数字图像处理 实验室号:_ 实验1楼607 实验设备号: F5 实验时间: 2012.6.1 指导教师签字: 成绩:实验二 图像增强一、 实验目的1.掌握灰度直方图的概念及其计算方法;2.熟练掌握直力图均衡化和直方图规定化的计算过程;3.掌握平滑处理的算法和用途,学习使用均值滤波、中值滤波和拉普拉斯锐化进行图像增强处理的程序设计方法;4.了解噪声模型及对图像添加噪声的基本方法;5.利用MATLAB 程序进行图像增强。

二、 实验原理图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。

其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。

图像增强技术主要有直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。

1、直方图均衡化通过点运算将输入图像转换为在每一级上都有相等像素点数的输出图像。

按照图像概率密度函数PDF 的定义:1,...,2,1,0 )(-==L k n n r p k k r通过转换公式获得:1,...,2,1,0 )()(00-====∑∑==L k n n r p r T s k j kj j j r k k2、均值(中值)滤波是指在图像上,对待处理的像素给定一个模板,该模板包括了其周围的临近像素。

将模板中的全体像素的均值(中值)来代替原来像素值的方法。

3、拉普拉斯算子如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--------111181111拉普拉斯算子首先将自身与周围的8个像素相减,表示自身与周围像素的差异,再将这个差异加上自身作为新像素的灰度。

三、 实验步骤1打开计算机,启动MATLAB 程序;程序组中“work ”文件夹中应有待处理的图像文件;2调入待处理的数字图像,并进行计算机均衡化处理;3启动MATLAB 程序,对图像文件分别进行直方图均衡化、均值滤波、中值滤波和拉普拉斯锐化操作;添加噪声,重复上述过程观察处理结果。

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

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

数字图像处理试验报告实验二:数字图像的空间滤波和频域滤波姓名: XX学号: 2XXXXXXX实验日期:2017年4月26日1. 实验目的1. 掌握图像滤波的基本定义及目的。

2. 理解空间域滤波的基本原理及方法。

3. 掌握进行图像的空域滤波的方法。

4. 掌握傅立叶变换及逆变换的基本原理方法。

5. 理解频域滤波的基本原理及方法。

6. 掌握进行图像的频域滤波的方法。

2. 实验内容与要求1. 平滑空间滤波:1) 读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中。

2)对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示。

3)使用函数 imfilter时,分别采用不同的填充方法(或边界选项,如零填充、’ replicate ’、’ symmetric ’、’ circular ’)进行低通滤波,显示处理后的图像。

4) 运用 for 循环,将加有椒盐噪声的图像进行10 次, 20 次均值滤波,查看其特点, 显示均值处理后的图像(提示 : 利用 fspecial 函数的’ average ’类型生成均值滤波器)。

5) 对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同一窗口中显示结果。

6)自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像。

2.锐化空间滤波1) 读出一幅图像,采用3×3 的拉普拉斯算子 w = [ 1, 1, 1; 1 – 81;1,1, 1]对其进行滤波。

2) 编写函数 w = genlaplacian(n) ,自动产生任一奇数尺寸n 的拉普拉斯算子,如 5×5的拉普拉斯算子w = [ 1 1 1 1 11 1 1 1 11 1 -24 1 11 1 1 1 11 1 1 1 1]3) 分别采用5×5,9×9,15×15 和 25×25 大小的拉普拉斯算子对blurry_moon.tif进行锐化滤波,并利用式 g(x, y)2 f (x, y) 完成图像的锐化增强,观察其有何f (x, y)不同,要求在同一窗口中显示。

数字图像处理实验二报告(图像滤波器)

数字图像处理实验二报告(图像滤波器)

实验报告课程名称数字图像处理实验名称图像滤波器姓名学号 20120712 专业班级数媒1202 实验日期 2014 年 10 月 16日成绩指导教师一、实验目的1.继续熟悉仿真工具MATLAB2.巩固图像读取与显示的方法3.掌握给图像添加噪声的方法4.掌握图像空间域的滤波方法5.掌握图像频率域的滤波方法二、实验原理图像的平滑有模糊图像和消除噪声的功能。

图像锐化则是使模糊的图像变清晰,增强图像的边缘细节。

对图的处理像既可以在频率域内进行,又可在空间域进行(一般为模版卷积方式)。

从信号频谱角度来讲,信号缓慢变化的部分(大面积背景区和灰度变化缓慢的区域)在频域表现为低频,迅速变化的部分(图像边缘、跳跃以及噪声等灰度变化剧烈的区域)则表现为高频。

因此,通过低通滤波来实现图像的平滑,而高通滤波可以实现图像的锐化。

三、实验环境Windows XP/ Windows 7Matlab 7.0.1/ Matlab R2008四、实验内容与步骤1.空间平滑域操作读取并显示一幅灰度图像,对原图像分别添加高斯噪声和椒盐噪声,并显示添加噪声之后的图像:调整高斯噪声和椒盐噪声的参数,比较不同参数之间噪声的区别;进行平滑操作,观察、记录并比较实验结果;针对两幅含有噪声的图像,采用中值滤波方法进行平滑处理,观察并记录实验结果,并将之与上一步实验结果相比较,得出结论。

2.空间锐化操作读取并显示一幅灰度图像,分别采用Prewitt水平/垂直边缘检测算子,Sobel水平/垂直边缘检测算子对原图像进行锐化操作,比较实验结果;采用拉普拉斯模板进行锐化处理,与上一步骤实验结果相比较。

3.图形的频域处理1)利用循环语句,自己构建理想低通滤波器;对一幅弧度图像进行傅里叶变换,显示其频谱图;对一幅灰度图像作频率域理想低通滤波,调整滤波器半径,观察并记录不同结果,分析原因;2)利用循环语句,自己构建理想高通滤波器;对同一幅灰度图像作频率域理想高通滤波,调整滤波器半径,观察并记录不同结果,分析原因;五、实验结果与分析(可提供屏幕抓图)1.添加高斯噪声与椒盐噪声:结论:高斯噪声的参数越大,图像变得越模糊,亮度也越亮。

数字图像处理实验二(直方图均衡化)

数字图像处理实验二(直方图均衡化)

数字图像处理实验二直方图均衡化(直方图均衡化实质上是减少图象的灰度级以换取对比度的加大)例如:假设原图的灰度分布级为126(最大为256,也就是从0到255的级上的灰度都有或多或少的出现),经过直方图均衡化后,灰度分布级别将会小于126。

编程的时候请按照直方图均衡化公式进行。

下面给出大致的编程思路和源代码:其中黑框部分需要自己编写源代码1)利用第一次实验课提供的dhc.h 和dhc.c文件以获取位图的高宽以及从文件头到实际的位图数据的偏移字节数,从而实现对位图实际数据的操作。

利用include命令#include <stdio.h>#include <stdlib.h>#include <memory.h>#include "hdr.h"思考问题:#include <*.h> 和#include "*.h"在程序运行中有什么差别?2)定义结构指针struct bmphdr *hdr;定义用于直方图变量unsigned char *bitmap, new_color[256];定义计算灰度分布,灰度累计分布的数组int count[256], acum[256];3)main()函数编写//定义整数i,j 用于函数循环时的,nr_pixels为图像中像素的个数int i, j, nr_pixels;//定义两个文件指针分别用于提取原图像的数据和生成直方图均衡化后的图像FILE *fp, *fpnew;//定义主函数的参数包括:输入的位图文件名和输出的位图文件名,此处内容可以不要,在DOS下执行命令的时候再临时输入也可,为了方便演示,我这里直接把函数的参数确定了。

argc=3;argv[1]="test.bmp";argv[2]="testzf.bmp";//参数输入出错显示if (argc != 3) {printf("please input the name of input and out bitmap files\n");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);//读取位图数据到bitmap中fread(bitmap, nr_pixels, 1, fp);fclose(fp);memset(count, 0, sizeof(count));//计算每个灰度级上像素的个数结果存入count[]数组中memcpy(acum, count, sizeof(acum));//计算灰度的累计分布for (i = 1; i < 256; i++)acum[i] += acum[i-1];//灰度直方图的均衡化(核心程序部分,请仔细分析)为了方便大家编程实现,这里直接给出了源代码,本实验最核心的部分就在这里//}//对所有的像素灰度值按照均衡化得到的灰度对应规则进行转换,结果存入bitmap[]中//fpnew = fopen(argv[2], "wb+");//由于位图文件的头部信息并没有因直方图均衡化而改变,因此输出图像的头部信息从原位图文件中拷贝即可: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);////关闭fclose(fpnew);//释放内存(优化程序必需)free(hdr);free(bitmap);return 0;}。

数字图像处理实验报告

数字图像处理实验报告

数字图像处理实验报告引言数字图像处理是一门研究如何对图像进行数字化处理的学科,它的应用广泛,涵盖了图像的获取、增强、压缩、分割等多个方面。

本次实验旨在探索数字图像处理的基本原理和常用技术,并通过实践操作加深对数字图像处理的理解。

实验目的1.学习掌握数字图像处理的基本原理;2.熟悉常用的数字图像处理工具和方法;3.实践应用数字图像处理技术解决实际问题。

实验环境在本次实验中,我们使用了以下环境和工具:- 操作系统:Windows 10 - 编程语言:Python - 图像处理库:OpenCV实验步骤步骤一:图像获取与显示首先,我们需要获取一张待处理的图像,并对其进行显示。

在Python中,我们可以使用OpenCV库来实现图像的读取和显示。

以下是示例代码:import cv2# 读取图像image = cv2.imread('image.jpg')# 显示图像cv2.imshow('Image', image)cv2.waitKey(0)cv2.destroyAllWindows()步骤二:图像增强图像增强是数字图像处理中常用的技术之一,旨在改善图像的质量和可视化效果。

常见的图像增强技术包括灰度转换、直方图均衡化、滤波器等。

以下是示例代码:import cv2# 读取图像image = cv2.imread('image.jpg')# 灰度转换gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GR AY)# 直方图均衡化equalized_image = cv2.equalizeHist(gray_image)# 高斯滤波器blurred_image = cv2.GaussianBlur(equalized_image, (5, 5), 0)# 边缘增强enhanced_image = cv2.Canny(blurred_image, 100, 20 0)# 显示图像cv2.imshow('Enhanced Image', enhanced_image)cv2.waitKey(0)cv2.destroyAllWindows()步骤三:图像压缩图像压缩是数字图像处理中的重要话题,旨在减少图像的存储空间和传输带宽。

数字图像处理实验2报告

数字图像处理实验2报告

数字图像处理实验212021133徐姚文电子信息工程电控学院2015年5月17日实验二图像直方图均衡Image Histogram Equalization一、目的与任务学习并掌握图像直方图均衡的基本理论,并通过分析均衡前后的图像验证课堂教学内容,总结直方图均衡的特点。

二、内容、要求与安排方式a) 实验内容对图像 img2 进行直方图均衡(img2为X光片图像)1.对比均衡前后图像的直方图及特点,a)图形显示其直方图以及灰度映射关系b)计算以下参数:概率非零灰度数,概率非零灰度中最大概率、最小概率、最大最小概率之比。

c)统计图像中概率大于平均概率的灰度级数;d)计算非零概率的平均值和方差e)您认为哪些参数能够表现图像直方图分布的均匀程度?试提取相关参数进行测试。

2.找一到两幅图像重复上述实验。

3.通过实验结果对比,能得出什么结论?三、实验源程序#include "stdio.h"typedef struct{unsigned char B,G,R;}pixel_RBG;#define H (158)#define W (200)#define Z_H (200)#define Z_W (300)int main(){FILE *fp,*fp2,*fp3,*fp4,*fp5;fp=fopen("hand1.bmp","rb");fp2=fopen("result.bmp","wb");fp3=fopen("1.bmp","rb");fp4=fopen("zft.bmp","wb");fp5=fopen("zft2.bmp","wb");unsigned char wenjiantou[54],wjt[54];pixel_RBG Pixel[H][W];pixel_RBG zft[Z_H][Z_W];long dsR[256]={0},dsG[256]={0},dsB[256]={0};double paR[256]={0},paG[256]={0},paB[256]={0};fread(wenjiantou,1,54,fp);fread(wjt,1,54,fp3);fread(Pixel,3,W*H,fp);int i,j;for(i=0;i<H;i++)for(j=0;j<W;j++){dsR[Pixel[i][j].R]++;dsG[Pixel[i][j].G]++;dsB[Pixel[i][j].B]++;}//灰度级的累计概率分布paR[0]=dsR[0]*(1.0/(W*H));paG[0]=dsG[0]*(1.0/(W*H));paB[0]=dsB[0]*(1.0/(W*H));for(i=1;i<256;i++){paR[i]=paR[i-1]+dsR[i]*(1.0/(W*H));paG[i]=paG[i-1]+dsG[i]*(1.0/(W*H));paB[i]=paB[i-1]+dsB[i]*(1.0/(W*H));}//灰度映射for(i=0;i<H;i++)for(j=0;j<W;j++){Pixel[i][j].R=(unsigned char)(255*paR[Pixel[i][j].R]+0.5);Pixel[i][j].G=(unsigned char)(255*paG[Pixel[i][j].G]+0.5);Pixel[i][j].B=(unsigned char)(255*paB[Pixel[i][j].B]+0.5);}printf("灰度映射关系:gk=255*fk+0.5\n");fwrite(wenjiantou,1,54,fp2);fwrite(Pixel,3,W*H,fp2);//////a、画原图直方图for(i=0;i<Z_H;i++)for(j=0;j<Z_W;j++){zft[i][j].B=255;zft[i][j].G=255;zft[i][j].R=255;} //画白色图纸for(i=10-1;i<=10;i++)for(j=10-1;j<=260+10;j++){zft[i][j].B=0;zft[i][j].G=0;zft[i][j].R=0;}for(j=10-1;j<=10;j++)for(i=10;i<=150;i++){zft[i][j].B=0;zft[i][j].G=0;zft[i][j].R=0;} //画坐标轴int max=0;for(i=0;i<256;i++){if(dsR[i]>max)max=dsR[i];}int m=0;for(j=10,m=0;j<=(255+10);j++,m++)for(i=10;i<=(10+(100*dsR[m]/max));i++){zft[i][j].B=0;zft[i][j].G=0;zft[i][j].R=255;} //直方图fwrite(wjt,1,54,fp4);fwrite(zft,3,Z_W*Z_H,fp4);//////b、求原图灰度概率double P[256]={0},maxP=0,minP=1;int count=0;for(i=0;i<256;i++){P[i]=(unsigned char)dsR[i]*(1.0/(W*H));if(P[i]!=0)count++;}for(i=0;i<256;i++){if(P[i]>maxP)maxP=P[i];if(P[i]<minP&&P[i]!=0)minP=P[i];}printf("###原图###\n概率非零灰度数:%d\n最大概率:%f\n最小概率:%f\n最大最小概率之比:%f\n",count,maxP,minP,maxP/minP);//////c、求原图概率大于平均概率的灰度级数double EP=0;for(i=0;i<256;i++){EP=EP+P[i];}EP=EP/255;printf("概率大于平均概率(%f)的灰度级数:\n",EP);for(i=0;i<256;i++){if(P[i]>EP)printf("%d\t",i);}printf("\n");//////d、计算原图非零概率的平均值和方差EP=0;double Var=0;for(i=0;i<256;i++){if(P[i]!=0)EP=EP+P[i];}EP=EP/count;for(i=0;i<256;i++){if(P[i]!=0)Var=Var+(P[i]-EP)*(P[i]-EP);}Var=Var/count;printf("非零概率的平均值:%f\t方差:%f\n",EP,Var); //重新计算灰度值的数量for(i=0;i<H;i++)for(j=0;j<W;j++){dsR[Pixel[i][j].R]++;dsG[Pixel[i][j].G]++;dsB[Pixel[i][j].B]++;}//////a、画直方图均衡后的直方图for(i=0;i<Z_H;i++)for(j=0;j<Z_W;j++){zft[i][j].B=255;zft[i][j].G=255;zft[i][j].R=255;} //画白色图纸for(i=10-1;i<=10;i++)for(j=10-1;j<=260+10;j++){zft[i][j].B=0;zft[i][j].G=0;zft[i][j].R=0;}for(j=10-1;j<=10;j++)for(i=10;i<=150;i++){zft[i][j].B=0;zft[i][j].G=0;zft[i][j].R=0;} //画坐标轴max=0;for(i=0;i<256;i++){if(dsR[i]>max)max=dsR[i];}for(j=10,m=0;j<=(255+10);j++,m++)for(i=10;i<=(10+(100*dsR[m]/max));i++){zft[i][j].B=0;zft[i][j].G=0;zft[i][j].R=255;} //直方图fwrite(wjt,1,54,fp5);fwrite(zft,3,Z_W*Z_H,fp5);//////b、求处理后图灰度概率maxP=0;minP=1;count=0;for(i=0;i<256;i++){P[i]=(unsigned char)dsR[i]*(1.0/(W*H));if(P[i]!=0)count++;}for(i=0;i<256;i++){if(P[i]>maxP)maxP=P[i];if(P[i]<minP&&P[i]!=0)minP=P[i];}printf("###结果图###\n概率非零灰度数:%d\n最大概率:%f\n最小概率:%f\n最大最小概率之比:%f\n",count,maxP,minP,maxP/minP);//////c、求结果图概率大于平均概率的灰度级数EP=0;for(i=0;i<256;i++){EP=EP+P[i];}EP=EP/255;printf("概率大于平均概率(%f)的灰度级数:\n",EP);for(i=0;i<256;i++){if(P[i]>EP)printf("%d\t",i);}printf("\n");//////d、计算结果图非零概率的平均值和方差EP=0;Var=0;for(i=0;i<256;i++){if(P[i]!=0)EP=EP+P[i];}EP=EP/count;for(i=0;i<256;i++){if(P[i]!=0)Var=Var+(P[i]-EP)*(P[i]-EP);}Var=Var/count;printf("非零概率的平均值:%f\t方差:%f\n",EP,Var);五、显示结果图像及对应参数原始图像:直方图均衡后图像:原图直方图:均衡后的直方图:对应参数:(由程序计算得出,运行结果截图如下)原始图像参数均衡后图像参数换一幅图像,重新实验:原始图像:直方图均衡后图像:原图直方图:均衡后的直方图:对应参数:(由程序计算得出,运行结果截图如下)原始图像参数12021133徐姚文均衡后图像参数六、实验结果分析及结论通过实验结果可知,当图像的有用数据的对比度相当接近的时候,通过直方图均衡化后,均衡化后的图像亮度可以更好地在直方图上分布。

数字图像处理实验报告 (2)

数字图像处理实验报告 (2)

数字图像处理实验报告实验一数字图像基本操作及灰度调整一、实验目得1)掌握读、写图像得基本方法。

2)掌握MATLAB语言中图像数据与信息得读取方法。

3)理解图像灰度变换处理在图像增强得作用。

4)掌握绘制灰度直方图得方法,理解灰度直方图得灰度变换及均衡化得方法。

二、实验内容与要求1.熟悉MATLAB语言中对图像数据读取,显示等基本函数特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure()函数。

1)将MA TLAB目录下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]得图像反转可由下式获得2)对数运算:有时原图得动态范围太大,超出某些显示设备得允许动态范围,如直接使用原图,则一部分细节可能丢失。

数字图像处理实验报告

数字图像处理实验报告

数字图像处理实验报告一、引言数字图像处理是一门涉及图像获取、图像处理和图像分析的重要学科,广泛应用于计算机科学、电子工程、通信技术等领域。

本报告旨在介绍并总结我所进行的数字图像处理实验,讨论实验的目的、方法、结果和分析。

二、实验目的通过本次实验,旨在掌握和理解数字图像处理的基本原理和常见技术,包括灰度变换、空间域滤波、频域滤波等,以及层次分割、边缘检测和形态学处理等高级应用技术。

三、实验方法1. 寻找合适的图像在实验中,我选用了一张自然风景图像作为处理对象。

这张图像包含丰富的纹理和颜色信息,适合用于多种图像处理方法的验证和比较。

2. 灰度变换灰度变换是数字图像处理中常见的基础操作,可以通过对图像的像素灰度值进行线性或非线性变换,来调整图像的对比度、亮度等特征。

在实验中,我利用线性灰度变换方法将原始彩色图像转换为灰度图像,并进行对比度的调整,观察处理结果的变化。

3. 空间域滤波空间域滤波是一种基于像素邻域的图像处理方法,常用于图像去噪、边缘增强等应用。

我使用了平滑滤波和锐化滤波两种方法,并针对不同的滤波算子和参数进行了实验和比较,评估其对图像细节和边缘保留的影响。

4. 频域滤波频域滤波是一种基于图像的频谱特征的图像处理方法,广泛应用于图像增强、去噪和特征提取等方面。

我利用傅里叶变换将图像从空间域转换到频域,采用理想低通滤波器和巴特沃斯低通滤波器进行图像的模糊处理,并进行了实验对比和分析。

5. 高级应用技术在实验中,我还研究了数字图像处理中的一些高级应用技术,包括层次分割、边缘检测和形态学处理。

通过应用不同的算法和参数,我实现了图像区域分割、提取图像边缘和形态学形状变换等效果,评估处理结果的准确性和稳定性。

四、实验结果与分析通过对以上实验方法的实施,我获得了一系列处理后的图像,并进行了结果的比较和分析。

在灰度变换实验中,我发现线性变换对图像的对比度有较大影响,但对图像的细节变化不敏感;在空间域滤波实验中,平滑滤波可以有效降噪,但会导致图像细节损失,而锐化滤波可以增强图像的边缘效果,但也容易引入噪声;在频域滤波实验中,理想低通滤波对图像的模糊效果明显,而巴特沃斯低通滤波器可以在一定程度上保留图像的高频细节信息;在高级应用技术实验中,边缘检测和形态学处理对提取图像边缘和形状变换非常有效,但参数的选择会对结果产生较大影响。

数字图像处理实验报告

数字图像处理实验报告

数字图像处理实验报告数字图像处理实验报告一、引言数字图像处理是计算机科学与工程领域中的一个重要研究方向。

通过使用数字化技术,对图像进行采集、传输、存储和处理,可以实现对图像的增强、恢复、分析和识别等功能。

本实验旨在通过对数字图像处理算法的实践应用,探索图像处理的原理和方法。

二、实验目的本实验的主要目的是掌握数字图像处理的基本概念和算法,并通过实际操作加深对图像处理原理的理解。

具体目标包括:1. 学习使用图像处理软件,如Photoshop或Matlab等。

2. 掌握图像增强的方法,如直方图均衡化、滤波和锐化等。

3. 理解图像压缩和编码的原理,如JPEG和PNG等格式。

4. 了解图像分割和边缘检测的基本算法,如阈值分割和Canny边缘检测等。

三、实验过程1. 图像增强图像增强是指通过一系列算法和技术,改善图像的质量和视觉效果。

在实验中,我们可以使用直方图均衡化算法来增强图像的对比度和亮度。

该算法通过将图像的像素值映射到一个更大的范围内,使得图像的亮度分布更加均匀。

2. 图像滤波图像滤波是指通过一系列滤波器对图像进行处理,以实现去噪、平滑和锐化等效果。

在实验中,我们可以使用平滑滤波器(如均值滤波器和高斯滤波器)来去除图像中的噪声。

同时,我们还可以使用锐化滤波器(如拉普拉斯滤波器和Sobel滤波器)来增强图像的边缘和细节。

3. 图像压缩和编码图像压缩是指通过减少图像的数据量来减小图像文件的大小,从而实现存储和传输的效率提升。

在实验中,我们可以使用JPEG和PNG等压缩算法来对图像进行压缩和编码。

JPEG算法通过对图像的频域进行离散余弦变换和量化,实现对图像的有损压缩。

而PNG算法则采用无损压缩的方式,通过对图像的差值编码和哈夫曼编码,实现对图像的高效压缩。

4. 图像分割和边缘检测图像分割是指将图像分成若干个区域,以实现对图像的目标提取和图像分析的目的。

而边缘检测是指通过检测图像中的边缘和轮廓,实现对图像的形状分析和目标识别。

数字图像处理实验报告

数字图像处理实验报告

数字图像处理实验报告数字图像处理实验报告第一章总论数字图像处理是计算机图形学、数字信号处理等学科交叉的一门学科。

它是基于数字计算机对图像信号进行数字处理的一种方法。

数字图像处理技术已广泛应用于医学影像诊断、遥感图像处理、图像识别、安防监控等领域,在当今社会中具有不可替代的重要作用。

本次实验主要介绍了数字图像处理的基本方法,包括图像采集、图像增强、图像恢复、图像分割、图像压缩等几个方面。

在实验过程中,我们采用了一些常用的数字图像处理方法,并通过 Matlab 图像处理工具箱进行实现和验证。

第二章实验过程2.1 图像采集在数字图像处理中,图像采集是一个重要的步骤。

采集到的图像质量直接影响到后续处理结果的准确性。

本次实验使用的图像是一张 TIF 格式的彩色图像,通过 Matlab 读取图像文件并显示,代码如下:```Matlabim = imread('test.tif');imshow(im);```执行代码后,可以得到如下图所示的图像:![image_1.png](./images/image_1.png)2.2 图像增强图像增强是指利用某些方法使图像具有更好的视觉效果或者变得更适合某种应用。

本次实验我们主要采用直方图均衡化、灰度变换等方法进行图像增强。

2.2.1 直方图均衡化直方图均衡化是一种常用的增强方法,它可以增加图像的对比度和亮度,使图像更加清晰。

代码实现如下:```Matlabim_eq = histeq(im);imshow(im_eq);```执行代码后,会得到直方图均衡化后的图像,如下图所示:![image_2.png](./images/image_2.png)可以看出,经过直方图均衡化处理后,图像的对比度和亮度得到了明显提高。

2.2.2 灰度变换灰度变换是一种用于调整图像灰度级别的方法。

通过变换某些像素的灰度级别,可以增强图像的视觉效果。

本次实验我们采用对数变换和幂函数变换两种方法进行灰度变换。

数字媒体实验报告文档(3篇)

数字媒体实验报告文档(3篇)

第1篇一、实验目的本次实验旨在通过实践操作,让学生掌握数字媒体的基本处理方法,了解数字媒体技术的应用领域,并能够运用所学知识进行简单的数字媒体创作。

二、实验内容1. 数字图像处理实验一:图像的获取与格式转换目的:学习使用图像采集设备获取图像,并了解常见的图像格式。

内容:使用数码相机拍摄一张照片,了解其图像格式,并使用图像处理软件进行格式转换。

实验二:图像的基本编辑操作目的:掌握图像的基本编辑操作,如裁剪、旋转、调整亮度等。

内容:使用图像处理软件对实验一获取的图像进行裁剪、旋转、调整亮度等操作。

实验三:图像滤波与锐化目的:学习图像滤波与锐化的方法,提高图像质量。

内容:使用图像处理软件对实验一获取的图像进行滤波与锐化处理。

2. 数字音频处理实验一:音频信号的获取与格式转换目的:学习使用音频采集设备获取音频,并了解常见的音频格式。

内容:使用麦克风录制一段音频,了解其音频格式,并使用音频处理软件进行格式转换。

实验二:音频的基本编辑操作目的:掌握音频的基本编辑操作,如剪切、合并、调整音量等。

内容:使用音频处理软件对实验一获取的音频进行剪切、合并、调整音量等操作。

实验三:音频效果处理目的:学习音频效果处理方法,如混响、回声等。

内容:使用音频处理软件对实验一获取的音频进行混响、回声等效果处理。

3. 数字视频处理实验一:视频信号的获取与格式转换目的:学习使用视频采集设备获取视频,并了解常见的视频格式。

内容:使用摄像机录制一段视频,了解其视频格式,并使用视频处理软件进行格式转换。

实验二:视频的基本编辑操作目的:掌握视频的基本编辑操作,如剪切、合并、调整播放速度等。

内容:使用视频处理软件对实验一获取的视频进行剪切、合并、调整播放速度等操作。

实验三:视频特效处理目的:学习视频特效处理方法,如慢动作、快动作等。

内容:使用视频处理软件对实验一获取的视频进行慢动作、快动作等特效处理。

三、实验步骤1. 准备实验环境安装数字媒体处理软件,如Adobe Photoshop、Adobe Audition、Adobe Premiere等。

《数字图像处理》实验二报告

《数字图像处理》实验二报告

成绩:数字图像处理实验报告实验一:数字图像的matlab实现学号:0967118202姓名:张建波同组人:电脑编号:实验时间:2012年06月06日星期三数字图像处理实验报告一、实验名称图像处理的Matlab 实现二、实验目的1、了解Matlab 及其工具箱的基本使用方法2、掌握使用Matlab 打开各种图像文件的方法3、掌握使用Matlab 进行简单图像处理的方法三、实验平台Windows XP 、Matlab四、实验内容1、编写一个可实现直方图均衡化的程序2、编写一个可实现图像对比度增强的程序3、编写一个可使用邻域平均法进行图像处理的程序五、实验原理1、直方图均衡化直方图均衡化处理可将图像的灰度范围拉开,让灰度直方图在较大的动态范围内趋于一致。

用图像),(y x f 的直方图代替灰度的分布密度函数)(f p f ,则直方图均衡化后的图像g 为:⎰==ff du u p f Tg 0)(][ 对于数字图像,设原图像的像素总数为N ,灰度级的个数为L ,第k 个灰度级出现的频数为k n 。

若原图像),(y x f 在像素点),(y x 处的灰度为k r ,则直方图均衡化后的图像),(y x g 在),(y x 处的灰度k s 为:∑===kl l k k N n r T s 0][ MATLAB 图像处理工具箱提供了用于直方图均衡化的函数histep 。

histep 函数的语法格式为:J=histep(I ,hgram)J=histep(I ,n)[J ,T]=histep(I ,…)newmap=histep(X ,map ,hgram)newmap=histep(X ,map)[newmap ,T]=histep(X ,…)其中J=histep(I ,hgram)将原始图像I 的直方图变成用户指定的向量hgram ,hgram 中的各元素值域为[0,1]。

J=histep(I ,n)指定直方图均衡化后的灰度级数n ,默认值为64。

数字图像处理 实验报告(完整版)

 数字图像处理 实验报告(完整版)

数字图像处理实验报告(完整版)正文第一篇:数字图像处理实验报告(完整版)数字图像处理实验一 MATLAB数字图像处理初步一、显示图像1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像;实验结果如下图:源代码:>>I=imread('lily.tif') >> whos I >> imshow(I)二、压缩图像4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。

6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。

7.用imread()读入图像Sunset.jpg和Winter.jpg; 8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小;9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。

其中9的实验结果如下图:源代码:4~6(接上面两个)>>I=imread('lily.tif')>> imfinfo 'lily.tif';>> imwrite(I,'lily.jpg','quality',2021>> imwrite(I,'lily.bmp'); 7~9>>I=imread('Sunset.jpg');>>J=imread('Winter.jpg')>>imfinfo 'Sunset.jpg'>> imfinfo 'Winter.jpg'>>figure(1),imshow('Sunset.jpg')>>figure(2),imshow('Winter.jpg')三、二值化图像10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow 显示出来观察图像的特征。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

方法、步骤:
生成一个 Window 运行程序 使用 Visual C++的参考步骤: 1) 打开 VC++编译环境 2) 点击 File 菜单项 3) 点击 New 4) 选择 Application[必须先输入 project name,如 BmpIO] 5) 再选择 A typical “Hello World!” Application 最后打开 C 源程序[ImageProcessing.cpp],编写各个函数 编写好各函数和菜单项后,按“! ” ,即可生成 Parent.exe 运行程序。
附件:ImageProcessing.cpp // ImageProcessing.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "resource.h" #define MAX_LOADSTRING 100 // Global Variables: HINSTANCE hInst; TCHAR szTitle[MAX_LOADSTRING]; text TCHAR szWindowClass[MAX_LOADSTRING];
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. MSG msg; HACCEL hAccelTable; // Initialize global strings LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_IMAGEPROCESSING, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); // Perform application initialization: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_IMAGEPROCESSING);
// // BOOL ReadImage(LPSTR ImageFileName, char *oImage, int wImage, int hImage) //读取图像信息并保存在 Image[][]中 { OFSTRUCT of; HFILE Image_fp; Image_fp = OpenFile(ImageFileName, &of, OF_READ); if (Image_fp == HFILE_ERROR) { MessageBox(NULL, ImageFileName, "打开文件出错信息", MB_OK); return FALSE; } _lread(Image_fp, oImage, wImage*hImage); _lclose(Image_fp); return TRUE; } void ShowImage(char *Image,int wImage,int hImage,int xPos,int yPos) { int i,j; for (i=0; i<hImage; i++) { for (j=0; j<wImage; j++) { SetPixel(hWinDC, j+yPos, i+xPos, RGB(Image[i*wImage+j], Image[i*wImage+j], Image[i*wImage+j])); } } } void ShowImageRect(char *Image, int wImage, int hImage, int xPos, int yPos, RECT ShowRect) { int i,j; int r, g, b; for (i=ShowRect.top; i<ShowRect.bottom; i++) { for (j=ShowRect.left; j<ShowRect.right; j++) { r = g = b = (BYTE) Image[i*wImage+j]; SetPixel(hWinDC, j+yPos, i+xPos, RGB(r,g,b)); }}} void ShowLeftRightOpen(char *Image, int wImage, int hImage, int xPos, int yPos) { int i; RECT ShowRect; InvalidateRgn(hWind, NULL, TRUE); UpdateWindow(hWind); // 清空窗口
深 圳 大 学 实 验 报 告
课程名称:
数字图像处理
实验项目名称:
实验二
图像特效显示实验
学院:
计算机与软件学院
专业:
软件工程
指导教师:
沈琳琳
报告人:
文成
学号: 2011150259
班级: 02
实验时间:
2014-04-01
实验报告提交时间:
2014-04-01
教务部制
实验目的:
掌握图像特效显示原理 掌握开/关门特效显示实现方法 掌握百叶窗特效显示实现方法 掌握淡入/出特效显示实现方法
变量说明 HDC hWinDC; //图像显示区域 char OrgImage[1024*1024]; //图像数据 #define IMAGEWIDTH 256 //默认图像宽度 #define IMAGEHEIGHT 256 //默认图像高度 #define XPOS 100 //默认图像显示位置 #define YPOS 100 #define SHUTTERNUM 10 #define GRAYCHANGENUM 5 HWND hWind; //窗口句柄 显示图像部分(矩形)区域函数:
// current instance // The title bar //
The title bar text // Foward declarations of functions included in this code module: ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM); HDC hWinDC; //图像显示区域 char OrgImage[1024*1024]; //图像数据 #define IMAGEWIDTH 256 //默认图像宽度 #define IMAGEHEIGHT 256 //默认图像高度 #define XPOS 100 //默认图像显示位置 #define YPOS 100 #define SHUTTERNUM 10 #define GRAYCHANGENUM 5 HWND hWind; //窗口句柄
实验要求: 熟悉 C++语言编程 熟练使用 C++语言实现图像文件的读取操作 熟练使用 C++语言实现无格式 RAW 图像显示方法
实验内容: 1、显示图像部分(矩形)区域函数 2、实现开/关门特效显示函数 由中间向左右(开门)显示 由左右向中间(关门)显示 由中间向上下(开门)显示 由上下向中间(关门)显示 3、实现百叶窗特效显示函数 向右显示 向左显示 向下显示 向上显示 4、实现淡入/淡出特效显示函数ຫໍສະໝຸດ 由中间向左右(开门)显示函数
由上向下百叶窗显示函数
淡入显示函数
实验结果: 程序主函数:
做出的图像特效:
先显示图片
淡入效果
淡出效果
向左右开门
图像从中间向两边显示。 同理上下开门只需要修改函数
由上向下百叶窗
因为图像是分成 7 个区域显示的,会出现线条,有白色线条的部分没有显示出来 同理由左向右百叶窗的函数
wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL); return RegisterClassEx(&wcex); } // // FUNCTION: InitInstance(HANDLE, int) // // PURPOSE: Saves instance handle and creates main window // // COMMENTS: // // In this function, we save the instance handle in a global variable and // create and display the main program window. // BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; hInst = hInstance; // Store instance handle in our global variable hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } // // // // // // // //
相关文档
最新文档