《数字图像处理》课内实验_new
数字图像处理实验报告

数字图像处理实验报告1. 引言数字图像处理是使用计算机来处理和优化图像的一种技术。
在本实验中,我们将探索几种常见的数字图像处理方法,并使用Python编程语言和相关库来实现。
2. 实验目的本实验的主要目的是:1.了解图像的基本特性和数字图像处理的基本原理;2.熟悉Python编程语言和相关图像处理库的使用;3.实现常见的图像处理算法并进行实验验证。
3. 实验方法在本实验中,我们使用Python编程语言和以下相关库来实现图像处理算法:•OpenCV:用于图像读取、显示和保存等基本操作;•Numpy:用于图像数据的处理和算术运算;•Matplotlib:用于图像的可视化和结果展示。
以下是实验涉及到的图像处理方法和步骤:1.图像读取和显示:使用OpenCV库读取图像,使用Matplotlib库显示图像;2.图像的灰度化:将彩色图像转换为灰度图像;3.图像的二值化:将灰度图像转换为黑白二值图像;4.图像的平滑处理:使用平滑滤波器对图像进行平滑处理,如均值滤波和高斯滤波;5.图像的边缘检测:使用边缘检测算法对图像进行边缘检测,如Sobel算子和Canny算子;6.图像的直方图均衡化:对灰度图像进行直方图均衡化,增强图像的对比度。
4. 实验过程和结果4.1 图像读取和显示首先,我们使用OpenCV库读取一张图像,并使用Matplotlib库显示该图像:import cv2import matplotlib.pyplot as plt# 读取图像img = cv2.imread('image.jpg')# 显示图像plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) plt.axis('off')plt.show()4.2 图像的灰度化接下来,我们将彩色图像转换为灰度图像:# 灰度化图像gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 显示灰度图像plt.imshow(gray_img, cmap='gray')plt.axis('off')plt.show()4.3 图像的二值化然后,我们将灰度图像转换为黑白二值图像:# 二值化图像_, binary_img = cv2.threshold(gray_img, 128, 255, cv2.THRESH_BINARY)# 显示二值图像plt.imshow(binary_img, cmap='gray')plt.axis('off')plt.show()4.4 图像的平滑处理接下来,我们使用平滑滤波器对图像进行平滑处理,例如使用5x5的均值滤波器和高斯滤波器:# 均值滤波mean_img = cv2.blur(img, (5, 5))# 高斯滤波gaussian_img = cv2.GaussianBlur(img, (5, 5), 0) # 显示平滑处理后的图像plt.figure(figsize=(10, 5))plt.subplot(121)plt.imshow(cv2.cvtColor(mean_img, cv2.COLOR_BGR2R GB))plt.title('Mean Filter')plt.axis('off')plt.subplot(122)plt.imshow(cv2.cvtColor(gaussian_img, cv2.COLOR_B GR2RGB))plt.title('Gaussian Filter')plt.axis('off')plt.show()4.5 图像的边缘检测然后,我们使用边缘检测算法对图像进行边缘检测,例如使用Sobel算子和Canny算子:# 边缘检测sobel_img = cv2.Sobel(gray_img, cv2.CV_8U, 1, 1, ksize=3)canny_img = cv2.Canny(gray_img, 50, 150)# 显示边缘检测结果plt.figure(figsize=(10, 5))plt.subplot(121)plt.imshow(sobel_img, cmap='gray')plt.title('Sobel Operator')plt.axis('off')plt.subplot(122)plt.imshow(canny_img, cmap='gray')plt.title('Canny Operator')plt.axis('off')plt.show()4.6 图像的直方图均衡化最后,我们对灰度图像进行直方图均衡化,以增强图像的对比度:# 直方图均衡化equalized_img = cv2.equalizeHist(gray_img)# 显示直方图均衡化结果plt.imshow(equalized_img, cmap='gray')plt.axis('off')plt.show()5. 实验总结通过本实验,我们熟悉了数字图像处理的基本方法和步骤,并使用Python编程语言和相关库实现了图像的读取、显示、灰度化、二值化、平滑处理、边缘检测和直方图均衡化等操作。
DSP图像处理技术-实验报告模板New1

西安**大学通信与信息工程学院《DSP数字图像处理技术》课内实验报告(2016/ 2017 学年第 2学期)学生姓名: 88888专业班级: 7777学号: 0000指导教师: 0000目录实验1:Code Composer Studio入门实验 0一、实验目的 0二、实验原理 0三、实验内容(调试好的程序,实验结果与分析) (1)四、实验小结 (1)实验2:编写一个以C语言为基础的DSP程序 (4)一、实验目的 (4)二、实验原理 (4)三、实验内容(调试好的程序,实验结果与分析) (4)四、实验小结 (6)实验3:图像灰度化实验 (7)一、实验目的 (7)二、实验原理 (7)三、实验内容(调试好的程序,实验结果与分析) (7)四、实验小结 (8)实验4:图像平滑实验 (10)一、实验目的 (10)二、实验原理 (10)三、实验内容(调试好的程序,实验结果与分析) (12)四、实验小结 (15)实验5:图像锐化实验 (16)一、实验目的 (16)二、实验原理 (16)三、实验内容(调试好的程序,实验结果与分析) (16)四、实验小结 (18)实验6:图像灰度变换实验 (21)一、实验目的 (21)二、实验原理 (21)三、实验内容(调试好的程序,实验结果与分析) (21)四、实验小结 (22)实验7:图像均衡化实验 (24)一、实验目的 (24)二、实验原理 (24)三、实验内容(调试好的程序,实验结果与分析) (24)四、实验小结 (24)实验8:图像边缘检测实验 (28)一、实验目的 (28)二、实验原理 (28)三、实验内容(调试好的程序,实验结果与分析) (28)四、实验小结 (30)实验总结与心得体会 (36)实验1:Code Composer Studio入门实验一、实验目的1、学习创建工程和管理工程的方法2、了解基本的编译和调试功能3、学习使用观察窗口4、了解图像功能的使用二、实验原理开发 TMS320C6xxx 应用系统一般需要以下几个调试工具来完成:1. 软件集成开发环境(CCS):完成系统的软件开发,进行软件和硬件的仿真调试,它是硬件调试的辅助工具。
数字图像处理实验报告

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

《数字图像处理》实验报告数字图像处理是一门将图像进行数字化处理的学科,它通过计算机算法和技术手段对图像进行分析、增强、压缩和重建等操作。
在本次实验中,我们学习了数字图像处理的基本概念和常用算法,并通过实验来探索其应用和效果。
首先,我们进行了图像的读取和显示实验。
通过使用Python中的OpenCV库,我们能够轻松地读取图像文件,并将其显示在屏幕上。
这为我们后续的实验奠定了基础。
同时,我们还学习了图像的像素表示方法,了解了图像由像素点组成的原理。
这使我们能够更好地理解后续实验中的算法和操作。
接下来,我们进行了图像的灰度化实验。
灰度化是将彩色图像转换为灰度图像的过程。
在实验中,我们使用了不同的算法来实现灰度化操作,包括平均值法、最大值法和加权平均法等。
通过比较不同算法得到的灰度图像,我们发现不同算法对图像的处理效果有所差异,这使我们深入理解了灰度化的原理和应用。
随后,我们进行了图像的直方图均衡化实验。
直方图均衡化是一种用于增强图像对比度的方法。
在实验中,我们使用了直方图均衡化算法来对图像进行处理,并观察了处理前后的效果变化。
通过实验,我们发现直方图均衡化能够显著提高图像的对比度,使图像更加清晰和鲜明。
在进一步探索图像处理技术的过程中,我们进行了图像的滤波实验。
滤波是一种常用的图像处理操作,它通过对图像进行卷积操作来实现。
在实验中,我们学习了不同类型的滤波器,包括均值滤波器、高斯滤波器和中值滤波器等。
通过比较不同滤波器对图像的处理效果,我们发现每种滤波器都有其适用的场景和效果。
此外,我们还进行了图像的边缘检测实验。
边缘检测是一种用于提取图像边缘信息的方法。
在实验中,我们学习了不同的边缘检测算法,包括Sobel算子、Canny算子和Laplacian算子等。
通过比较不同算法对图像的处理效果,我们发现每种算法都有其独特的特点和应用。
最后,我们进行了图像的压缩实验。
图像压缩是一种将图像数据进行压缩以减小文件大小的方法。
《数字图像处理》实验教案

《数字图像处理》实验教案一、实验目的1. 使学生了解和掌握数字图像处理的基本概念和基本算法。
2. 培养学生运用数字图像处理技术解决实际问题的能力。
3. 提高学生使用相关软件工具进行数字图像处理操作的技能。
二、实验内容1. 图像读取与显示:学习如何使用相关软件工具读取和显示数字图像。
2. 图像基本操作:学习图像的旋转、缩放、翻转等基本操作。
3. 图像滤波:学习使用不同类型的滤波器进行图像去噪和增强。
4. 图像分割:学习利用阈值分割、区域增长等方法对图像进行分割。
5. 图像特征提取:学习提取图像的边缘、角点等特征信息。
三、实验环境1. 操作系统:Windows或Linux。
2. 编程语言:Python或MATLAB。
3. 图像处理软件:OpenCV、ImageJ或MATLAB。
四、实验步骤1. 打开相关软件工具,导入图像。
2. 学习并实践图像的基本操作,如旋转、缩放、翻转等。
3. 学习并实践图像滤波算法,如均值滤波、中值滤波等。
4. 学习并实践图像分割算法,如全局阈值分割、局部阈值分割等。
5. 学习并实践图像特征提取算法,如Canny边缘检测算法等。
五、实验要求1. 每位学生需独立完成实验,并在实验报告中详细描述实验过程和结果。
2. 实验报告需包括实验目的、实验内容、实验步骤、实验结果和实验总结。
3. 实验结果要求清晰显示每个步骤的操作和效果。
4. 实验总结部分需对本次实验的学习内容进行归纳和总结,并提出改进意见。
六、实验注意事项1. 实验前请确保掌握相关软件工具的基本使用方法。
3. 在进行图像操作时,请尽量使用向量或数组进行处理,避免使用低效的循环结构。
4. 实验过程中如需保存中间结果,请使用合适的文件格式,如PNG、JPG等。
5. 请合理安排实验时间,确保实验报告的质量和按时提交。
七、实验评价1. 实验报告的评价:评价学生的实验报告内容是否完整、实验结果是否清晰、实验总结是否到位。
2. 实验操作的评价:评价学生在实验过程中对图像处理算法的理解和运用能力。
数字图像处理图像变换实验报告

实验报告实验名称:图像处理姓名:刘强班级:电信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、图像正交变换的基本原理及编程实现步骤数字图像的处理方法主要有空域法与频域法,点运算与几何变换属于空域法。
数字图像处理实验

数字图像处理实验实验总学时:10学时实验目的:本实验的目的是通过实验进一步理解和掌握数字图像处理原理和方法。
通过分析、实现现有的图像处理算法,学习和掌握常用的图像处理技术。
实验内容:数字图像处理的实验内容主要有三个方面:(1) 对图像灰度作某种变换,增强其中的有用信息,抑制无用信息,使图像的视在质量提高,以便于人眼观察、理解或用计算机对其作进一步的处理。
(2) 用某种特殊手段提取、描述和分析图像中所包含的某些特征和特殊的信息,主要的目的是便于计算机对图像作进一步的分析和理解,经常作为模式识别和计算机视觉的预处理。
这些特征包括很多方面,例如,图像的频域特性、灰度特征、边界特征等。
(3) 图像的变换,以便于图像的频域处理。
实验一图像的点处理实验内容及实验原理:1、灰度的线性变换灰度的线性变换就是将图像中所有的点的灰度按照线性灰度变换函数进行变换。
该线性灰度变换函数是一个一维线性函数:灰度变换方程为:其中参数为线性函数的斜率,函数的在y轴的截距,表示输入图像的灰度,表示输出图像的灰度。
要求:输入一幅图像,根据输入的斜率和截距进行线性变换,并显示。
2、灰度拉伸灰度拉伸和灰度线性变换相似。
不同之处在于它是分段线性变换。
表达如下:其中,(x1,y1)和(x2,y2)是分段函数的转折点。
要求:输入一幅图像,根据选择的转折点,进行灰度拉伸,显示变换后的图像。
3、灰度直方图灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标表示该灰度出现的频率(象素的个数)。
要求:输入一幅图像,显示它的灰度直方图,可以根据输入的参数(上限、下限)显示特定范围的灰度直方图。
4、直方图均衡:要求1 显示一幅图像pout.bmp的直方图;2 用直方图均衡对图像pout.bmp进行增强;3 显示增强后的图像。
实验二:数字图像的平滑实验内容及实验原理:1.用均值滤波器(即邻域平均法)去除图像中的噪声;2.用中值滤波器去除图像中的噪声3. 比较两种方法的处理结果 实验步骤:用原始图象lena.bmp 或cameraman.bmp 加产生的3%椒盐噪声图象合成一幅有噪声的图象并显示;1. 用均值滤波器去除图像中的噪声(选3x3窗口);2. f (x 0,y 0)=Med {f (x,y )∨x ∈[x 0−N,x 0+N ],y ∈[y 0−N,y 0+N ]}用中值滤波器去除图像中的噪声(选3x3窗口做中值滤波);3. 将两种处理方法的结果与原图比较,注意两种处理方法对边缘的影响。
数字图像处理实验报告(五个实验全)

数字图像处理实验报告(五个实验全)实验⼀ Matlab图像⼯具的使⽤1、读图I=imread('lena.jpg');imshow(I);2、读⼊⼀幅RGB图像,变换为灰度图像和⼆值图像,并在同⼀个窗⼝内分成三个⼦窗⼝来分别显⽰RGB图像和灰度图像。
a=imread('lena.jpg')i = rgb2gray(a)I = im2bw(a,0.5)subplot(3,1,1);imshow(a);subplot(3,1,2);imshow(i);subplot(3,1,3);imshow(I);原图像灰度图像⼆值图像实验⼆图像变换1、对⼀幅图像进⾏平移,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与平移后傅⾥叶频谱的对应关系。
s=imread('beauty.jpg');i=rgb2gray(s)i=double(i)j=fft2(i);k=fftshift(j); 原图像原图的傅⾥叶频谱l=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);l=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);subplot(2,2,2);imshow(uint8(b));subplot(2,2,3);imshow(A);subplot(2,2,4);imshow(B);2、对⼀幅图像进⾏旋转,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与旋转后傅⾥叶频谱的对应关系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数字图像处理》课内实验实验一 直方图均衡一、实验题目:直方图均衡二、实验目的:在学习图像直方图的概念、计算方法、性质和相关使用基础上,生成、绘制图像的直方图,并使用MATLAB 编程实现图像直方图均衡化程序。
三、实验内容:(1)计算并绘制图像直方图;(2)编程实现图像的直方图均衡化处理,显示均衡前后的直方图和图像;四、预备知识:(1)熟悉图像读写和显示; (2)理解图像直方图的概念及用途;(3)理解直方图均衡化的概念及使用背景;五、实验原理:在对图像进行处理之前,了解图像整体或局部的灰度分布情况非常必要。
对图像的灰度分布进行分析的重要手段就是建立图像的灰度直方图(Density Histogram ),利用图像灰度直方图,可以直观地看出图像中的像素亮度分布情况;通过直方图均衡化,可以对图像的质量进行调整。
(1)生成并绘制图像的直方图假设一幅数字图像的像素总数为N ,在范围[0,G]内共有L 个灰度级,其直方图定义为离散函数()k k n r h =,其中,r k 是区间[0,G]内的第K 级的亮度,n k 是灰度级为r k 的图像中的像素数。
对于uint 8类图像,G 的值为255;对于uint 16类图像,G 的值为65535;对于double 类图像,G 的值为1.0。
记住,MATLAB 中的索引不能为0,故r 1相当于灰度级0,r 2相当于灰度级1,如此等等,r L 相当于灰度级G 。
其中,uint 8类图像或uint 16类图像中G=L-1。
通常,会用到归一化直方图,即用所有元素h(r k )除以图像中的像素总数N 所得到的图形:P(r k )表示灰度级r k 出现的频数。
MATLAB 图像处理工具箱提供了imhist 函数来计算和显示图像的直方图,其调用格式为:imhist(I,b)[COUNTS,X] = imhist(I)其中I 为输入图像,b 为指定的灰度级数目,默认值为256。
[COUNTS,X]=imhist(…)返回直方图统计的数据和相应的灰度级向量X 。
使用表达式p= imhist(I,b)/N 就可简单地获得归一化直方图,这里N 为图像中的像素总数。
显示图像’lean.bmp ’的直方图及归一化直方图,如图1.2.1所示。
(a) 原图 (b) 直方图 (c) 归一化直方图图1.2.1 灰度图像的直方图及归一化直方图如果图像的灰度分别集中在较窄的区间,从而引起图像细节的模糊,为了增强图像,可通过改善各部分亮度的比例关系,即通过直方图的方法来实现。
这种方法是以概率论为基础的,常用的方法有直方图均衡化和直方图匹配(规定化)。
(2) 直方图均衡化直方图均衡化也叫做直方图均匀化,是将一已知灰度概率密度分布的图像,经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像,此时图像的熵最大,图像所包含的信息量最大,且扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果。
设一幅图像总像元数为N ,灰度级的个数为L ,第K 个灰度级r k 出现的频数为n k ,则第k 灰度级出现的概率为()()1,...,1,0,10-=≤≤=L k r Nn r p k kk r此时变换函数可表示为()()()1,...,1,0,100-=≤≤===∑∑==L k r Nn r p r T s k kj j k j j r k k()()Lk N nN r h r p k k k ,...,2,1,===根据原图像的直方图统计值就可算出均衡化后各像元的灰度值。
直方图上灰度分布较密的部分被拉伸;灰度分布较稀疏的部分被压缩,使图像对比度总体上得到增强。
MATL AB 图像处理工具箱提供了直方图均衡函数histeq 。
其调用格式为:J = histeq(I,n); [J,T] = histeq(I,…);其中,n 是均衡化后的灰度级数目,是一个可选参数,缺省值是64。
[J,T]=histeq(I,…)返回能从图像I 的灰度直方图变换成图像J 的直方图的变换函数T 。
显示图像’RSImg.gif ’的直方图均衡化前后的图像及对应的直方图,如图2-3所示。
(a)原图像 直方图均衡化后图像 (b)(c) 原图的直方图 (d) 均衡化后的直方图图1.2.3直方图均衡化前后的图像及其直方图经过均衡化后,原图中较暗区域中的一些细节更清晰。
六、实验步骤:(1)打开一幅灰度图像,利用MATLAB 工具箱所提供的函数计算并绘制图像的直方图和归一化直方图;(2)利用相应的MATLAB 函数对灰度图像进行直方图均衡化,显示均衡化后的图像及对应的直方图,分析均衡化后图像有何变化,均衡化后的直方图有何特点;七、思考题(1) 灰度直方图可以反映一幅图像的哪些特征? (2) 均衡化后的直方图有何特点?八、实验程序代码:(1)生成并绘制灰度图像的直方图及归一化直方图clear all ;I=imread('lena_gray_256.tif '); %打开一幅灰度图像 [m,n]=size(I);p=m*n;J=imhist(I)./p; %计算图像的归一化直方图subplot(1,3,1),imshow(I);subplot(1,3,2),imhist(I,64);subplot(1,3,3),plot(J);(2)直方图均衡化clear all;Im=imread('region.jpg');J=histeq(Im); %均衡化subplot(2,2,1);imshow(Im);title('原图'); %显示原图subplot(2,2,2);imhist(Im);title('原图直方图'); %显示原图的直方图subplot(2,2,3);imshow(J);title('均衡化结果'); %显示均衡化后的图像subplot(2,2,4);imhist(J);title('均衡化结果的直方图'); %显示均衡化后的直方图实验二频域图像增强一、实验题目:频域图像增强二、实验目的:掌握基于频域的图像增强方法。
三、实验内容:(1)编程实现图像的理想低通和高通滤波;(2)编程实现图像的巴特沃斯低通和高通滤波。
四、预备知识:(1)熟悉MATLAB 图像输入输出操作; (2)熟悉图像的频域变换处理; (3)熟悉二维频谱的显示方法。
五、实验原理:图像增强是对图像进行加工,以得到视觉效果更好或更有用的新图像。
图像增强在处理方法上可分为基于空域的图像增强和基于频域的图像增强。
频域图像增强的步骤:首先将图像变换到频域,然后在频域进行需要的滤波,即和滤波器转移函数相乘,最后反变换回时域得到增强的图像。
常用的频域增强方法有低通滤波、高通滤波、带通和带阻滤波和同态滤波。
2-D 理想滤波器转移函数:低通:⎩⎨⎧=01),(v u H 00),(),(D v u D D v u D >≤, 高通:⎩⎨⎧=01),(v u H 0),(),(D v u D D v u D ≤> (1.6.1)0D 是非负数,22(,)D u v u v =+(,)u v 到频率平面原点的距离。
阶数为n ,截断频率为0D 的2-D 巴特沃斯滤波器转移函数:201(,)1[(,)/]nH u v D u v D =+低通:高通: []nv u D D v u H 20),(/11),(+=(1.6.2) 六、 实验步骤:(1) 读入图像;(2) 实现图像的理想低通和高通滤波; (3) 实现图像的巴特沃斯低通和高通滤波。
七、 思考题目:分析为什么图像通过低通滤波器后变得模糊?为什么通过高通滤波器后得到锐化结果?八、 实验程序代码:图像频域滤波可用fft2函数把图像变换到频域,在频域按公式(1.6.1)、(1.6.2)分别实现频域的理想高低通滤波和频域的巴特沃斯高低通滤波,最后用ifft2反变换到时域得到最后结果。
二维频谱的显示可用函数mesh 完成。
用巴特沃斯滤波器对图像进行低通和高通滤波的例子见图1.6.1。
图1.6.1 图像频率滤波完整的代码:%%%%理想低通和高通clc;clear;data4=imread('lena.gif');subplot(3,2,1);imshow(data4);title('原图');i=fft2(data4);subplot(3,2,2);i=fftshift(i);z=log(abs(i));x=0:1:255;y=0:1:255;[x,y]=meshgrid(x,y);mesh(z); %以三维坐标显示该图像频谱图title('原图频谱');[n,m]=size(i); %对该图进行低通滤波for k=1:1:nfor l=1:1:mif (k^2+l^2)>=190^2 %选取D=190result(k,l)=0;else result(k,l)=i(k,l);endendendsubplot(3,2,4);z=log(abs(result)); %三维方式显示低通滤波后的频谱图x=0:1:255;y=0:1:255;[x,y]=meshgrid(x,y);mesh(z);title('理想低通滤波后的频谱');subplot(3,2,3); %新建图像显示窗口result=fftshift(result); %滤波后的数据去中心化b=ifft2(result); %逆傅里叶变换imshow(uint8(abs(b)));title('理想低通滤波后的图像');subplot(3,2,6); %新建图像显示窗口% [n,m]=size(c); %对原图进行高通滤波for k=1:1:nfor l=1:1:mif (k^2+l^2)<=190^2 %选取D=190result(k,l)=0;else result(k,l)=i(k,l);endendendz=log(abs(result));x=0:1:255; %三维方式显示高通滤波前的频谱图y=0:1:255;[x,y]=meshgrid(x,y);mesh(z);title('理想高通滤波后的频谱');subplot(3,2,5);result=fftshift(result); %滤波后的数据去中心化d=ifft2(result); %逆傅里叶变换imshow(uint8(abs(d)));title('理想高通滤波后的图像');%频域增强(巴特沃斯原型)%二阶巴特沃斯(Butterworth)低通滤波器%clc;%clear;Figure;J1=imread('lena.gif');subplot(3,2,1);imshow(J1);title('原图');f=double(J1);g=fft2(f); % 傅立叶变换g=fftshift(g); % 转换数据矩阵subplot(3,2,2);x=0:1:255;y=0:1:255;[x,y]=meshgrid(x,y);z=log(abs(g)); %取幅度mesh(z); %以三维坐标显示该图像频谱图title('原图频谱');[M,N]=size(g);nn=2; % 二阶巴特沃斯(Butterworth)低通滤波器d0=20;m=fix(M/2); n=fix(N/2);for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数 result(i,j)=h*g(i,j);endendsubplot(3,2,4);x=0:1:255;y=0:1:255;[x,y]=meshgrid(x,y);z=log(abs(result)); %取幅度mesh(z); %以三维坐标显示该图像频谱图title('低通滤波后的频谱');result=ifftshift(result);J2=ifft2(result);J3=uint8(abs(J2));subplot(3,2,3);imshow(J3);title('低通滤波后的图像');%利用二阶巴特沃斯(Butterworth)高通滤波器nn=2; % 二阶巴特沃斯(Butterworth)高通滤波器d0=5;m=fix(M/2);n=fix(N/2);for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);if (d==0)h=0;elseh=1/(1+0.414*(d0/d)^(2*nn));% 计算传递函数 endresult(i,j)=h*g(i,j);endendsubplot(3,2,6);x=0:1:255;y=0:1:255;[x,y]=meshgrid(x,y);z=log(abs(result)); %取幅度mesh(z); %以三维坐标显示该图像频谱图title('高通滤波后的频谱');result=ifftshift(result);J2=ifft2(result);J3=uint8(abs(J2));subplot(3,2,5);imshow(J3);title('高通滤波后的图像');实验三图像边缘检测和连接一、实验题目:图像边缘检测和连接二、实验目的:掌握图像边缘检测的主要原理和常用方法;依据边缘检测理论,实现灰度图像一阶和二阶边缘检测方法;编程实现Hough变换提取直线;启发学生依据边缘特征进行图像分析和识别,提高学生图像处理和分析能力和实际动手能力。