数字图像处理实验报告(图像边缘检测)
数字图像处理实验报告——图像分割实验

实验报告课程名称数字图像处理导论专业班级_______________姓名 _______________学号_______________电气与信息学院与谐勤奋求就是创新一.实验目得1.理解图像分割得基本概念;2.理解图像边缘提取得基本概念;3.掌握进行边缘提取得基本方法;4.掌握用阈值法进行图像分割得基本方法.二。
实验内容1.分别用Roberts,Sobel与拉普拉斯高斯算子对图像进行边缘检测。
比较三种算子处理得不同之处;2.设计一个检测图1中边缘得程序,要求结果类似图2,并附原理说明。
3.任选一种阈值法进行图像分割、图1 图2三.实验具体实现1.分别用Roberts,Sobel与拉普拉斯高斯算子对图像进行边缘检测。
比较三种算子处理得不同之处;I=imread(’mri、tif');imshow(I)BW1=edge(I,’roberts’);figure ,imshow(BW1),title(’用Roberts算子’)BW2=edge(I,’sobel’);figure,imshow(BW2),title(’用Sobel算子 ')BW3=edge(I,’log’);figure,imshow(BW3),title(’用拉普拉斯高斯算子’)比较提取边缘得效果可以瞧出,sober算子就是一种微分算子,对边缘得定位较精确,但就是会漏去一些边缘细节.而Laplacian—Gaussian算子就是一种二阶边缘检测方法,它通过寻找图象灰度值中二阶过零点来检测边缘并将边缘提取出来,边缘得细节比较丰富。
通过比较可以瞧出Laplacian-Gaussian算子比sober算子边缘更完整,效果更好。
2.设计一个检测图1中边缘得程序,要求结果类似图2,并附原理说明.i=imread('m83、tif’);subplot(1,2,1);imhist(i);title('原始图像直方图');thread=130/255;subplot(1,2,2);i3=im2bw(i,thread);imshow(i3);title('分割结果’);3.任选一种阈值法进行图像分割、i=imread('trees、tif’);subplot(1,2,1);imhist(i);title('原始图像直方图’);thread=100/255;subplot(1,2,2);i3=im2bw(i,thread);imshow(i3);title('分割结果’)1、分别用Roberts,Sobel与拉普拉斯高斯算子对图像进行边缘检测。
数字图像处理实验报告--边缘检测

数字图像处理实验报告实验名称:边缘检测姓名:班级:学号:09045433专业:电子信息工程(2+2)指导教师:陈华华实验日期:2012年5月17日边缘检测一,原理本实验主要是对图像的边缘进行提取,通过对边缘的分析来分析图像的特征。
首先,了解一些术语的定义:边缘点:图像中具有坐标[i,j]且处在强度显著变化的位置上的点。
边缘段:对应于边缘点坐标[i,j]及其方位 ,边缘的方位可能是梯度角。
边缘检测器:从图像中提取边缘(边缘点和边缘段)集合的算法。
轮廓:边缘列表,或者是一条表示边缘列表的拟合曲线。
边缘连接:从无序边缘表形成有序边缘表的过程,习惯上,边缘表的表示采用顺时针方向来排序。
边缘跟踪:一个用来确定轮廓的图像(指滤波后的图像)搜索过程。
边缘就是图像中包含的对象的边界所对应的位置。
物体的边缘以图像局部特性的不连续性的形式出现的,例如,灰度值的突变,颜色的突变,纹理结构的突变等。
从本质上说,边缘就意味着一个区域的终结和另外一个区域的开始。
图像边缘信息在图像分析和人的视觉中十分重要,是图像识别中提取图像特征的一个重要属性。
边缘检测(edge detection)在图像处理和对象识别领域中都是一个重要的基本问题。
由于边缘的灰度不连续性,可以使用求导数的方法检测到。
最早的边缘检测方法都是基于像素的数值导数的运算。
本实验主要是对图像依次进行Sobel算子,Prewitt算子,Roberts算子,Laplace算子和Canny算子运算,比较处理结果。
边缘检测有三个共性准则,1,好的检测结果,或者说对边缘的误测率尽可能低,就是在图像边缘出现的地方检测结果中不应该没有;另一方面不要出现虚假的边缘。
2,对边缘的定位要准确,也就是我们标记出的边缘位置要和图像上真正边缘的中心位置充分接近。
3,对同一边缘要有尽可能低的响应次数,也就是检测响应最好是单像素的。
二,对图像进行各种算子运算本实验中主要是对图像依次进行Sobel算子,Prewitt算子,Roberts算子,Laplace 算子和Canny算子运算。
数字图像处理实验报告

数字图像处理实验报告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编程语言和相关库实现了图像的读取、显示、灰度化、二值化、平滑处理、边缘检测和直方图均衡化等操作。
数字图像处理实验报告(图像边缘检测)

实验报告实验名称实验三图像边缘检测课程名称数字图像处理某成绩班级学号日期地点备注:1、实验目的(1)了解并掌握使用微分算子进行图像边缘检测的基本原理;(2)编写程序使用Laplacian 算子(二阶导数算子)实现图像锐化,进一步理解图像锐化的实质;(3)掌握使用不同梯度算子(一阶导数算子)进行图像边缘检测的原理、方法,根据实验结果分析各种算子的工作效果;(4)总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。
2、实验环境(1)Windows XP/7(2)Matlab 7.1/7.143、实验方法本次实验要求对256×256大小,256级灰度的数字图像lena.img进行处理。
(1)对该图像进行锐化处理,要求采用Laplacian算子进行锐化,分α=1和α=2两种情况,按如下不同情况进行处理:①g1(m,n)=f(m,n)-α∇f②g2(m,n)=4αf(m,n)-α[f(m-1,n)+f(m+1,n)+f(m,n-1)+f(m,n+1)]I、要对图像进行处理,要先读取该图像,实验代码如下:close all;clear all;fid=fopen('lena.img','r');image=fread(fid,[256,256],'uint8');fclose(fid);II、读取图像后,对该图像的每一像素(不考虑图像的边界部分)进行遍历,根据公式①(公式①相当于做差分)对每一灰度进行计算,将所得的结果存入一矩阵g1中(矩阵g1初始化为该图像的矩阵),代码如下(仅以ɑ=1为例):g1=image;a=1;[x,y]=size(image);for i=2:(x-1)for j=2:(y-1) g1(i,j)=(1+4*a)*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));endendIII、根据公式②对图像的每一个像素(不考虑图像的边界部分)进行计算,将所得之存入矩阵g2中(g2初始化值为该图像的矩阵值),具体方法与上一步类似,代码如下(仅以ɑ=1为例):g2=image;a=1;[x,y]=size(image);for i=2:(x-1)for j=2:(y-1)g2(i,j)=4*a*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));endend(2)分别利用Roberts、Prewitt 和Sobel 边缘检测算子,对原图像进行边缘检测,显示处理前、后图像。
数字图像处理实验报告

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

华南师范大学实验报告一、实验目的1、.掌握边缘检测的Matlab实现方法2、了解Matlab区域操作函数的使用方法3、了解图像分析和理解的基本方法4、了解纹理特征提取的matlab实现方法二、实验平台计算机和Matlab软件环境三、实验内容1、图像边缘检测2、图像纹理特征提取四、实验原理1、图像边缘检测图像理解是图像处理的一个重要分支,它研究的是为完成某一任务需要从图像中提取哪些有用的信息,以及如何利用这些信息解释图像。
边缘检测技术对于处理数字图像非常重要,因为边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。
在图像中,边界表明一个特征区域的终结和另一个特征区域的开始,边界所分开区域的内部特征或属性是一致的,而不同的区域内部的特征或属性是不同的,边缘检测正是利用物体和背景在某种图像特性上的差异来实现的,这些差异包括灰度,颜色或者纹理特征。
边缘检测实际上就是检测图像特征发生变化的位置。
由于噪声和模糊的存在,检测到的边界可能会变宽或在某些点处发生间断,因此,边界检测包括两个基本内容:首先抽取出反映灰度变化的边缘点,然后剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线。
边缘检测的方法大多数是基于方向导数掩模求卷积的方法。
导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值比较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方法,提取边界点集。
一阶导数fx∂∂与fy∂∂是最简单的导数算子,它们分别求出了灰度在x和y方向上的变化率,而方向α上的灰度变化率可以用下面式子计算:cos sin (cos sin )f f f G i j x yααααα∂∂∂=+=+∂∂∂ 对于数字图像,应该采用差分运算代替求导,相对应的一阶差分为:(,)(,)(1,)(,)(,)(,1)x y f i j f i j f i j f i j f i j f i j ∆=--∆=--方向差分为: (,)(,)cos (,)sin x y f i j f i j f i j ααα∆=∆+∆函数f 在某点的方向导数取得最大值的方向是1tan /f f y x α-⎡⎤∂∂=⎢⎥∂∂⎣⎦,方向导数的最大值是1222f f G x y ⎡⎤⎛⎫∂∂⎛⎫=+⎢⎥ ⎪ ⎪∂∂⎝⎭⎢⎥⎝⎭⎣⎦称为梯度模。
数字图像处理实验报告

数字图像处理实验报告——彩色图像边缘的提取概述图像的边缘包含了图像最重要的信息。
什么是边缘?一般是指图像灰度变化率最大的位置。
图像边缘检测是图像处理与计算机视觉共同的基本课题,1960年以来,相继发展了一系列采用梯度算子和拉普拉斯算子的边缘检测技术;为了降低图像噪声对边缘检测算法的干扰,1980年以来,又建立了高斯低通滤波与拉普拉斯算子复合的过零点检测Marr-Hildreth 理论;在另一个方向上,1980年代初期,Canny 从信号处理的角度出发,使边缘检测算法更具有实用性。
由于课程学习的限制,本次实验参考的是课件第七章中的算法内容,其实验原理如下。
实验目的1.通过实验体会一些主要的分割算子对彩色图像边缘的提取的效果;2.使用MatLab 软件进行彩色图像的边缘的检测;了解分割算子对彩色图像边缘的检测的原理;4.完成规定彩色图像的边缘检测并要求正确评价处理结果,能够从理论上作出合理的解释。
实验原理:b x f g x f r x f u B G R ∂∂+∂∂+∂∂=byf g y f r y f v B G R∂∂+∂∂+∂∂=222xf x f x f u u u ug B G RT xx∂∂+∂∂+∂∂=∙=∙= 222y f y f y fv v v v g BG R T yy ∂∂+∂∂+∂∂=∙=∙= yf x f yf x f yf x f v u v ug BB G G R R T xy ∂∂∂∂+∂∂∂∂+∂∂∂∂=∙=∙= ]2arctan[21),(yyxx xy g g g y x -=θ2/1]2sin 22cos )()[(21),(⎭⎬⎫⎩⎨⎧+-++=θθθxy yy xx yy xx g g g g g y x F实验程序:f=imread('D:\bmp.bmp');bw1=[-1,0,1;-1,0,1;-1,0,1];bw2=[-1,-1,-1;0,0,0;1,1,1];a=f(:,:,1);b=f(:,:,2);c=f(:,:,3);%figure,imshow(f);%figure,imshow(a);%figure,imshow(b);%figure,imshow(c);%l1=filter(bw1,a);l1=filter2(bw1,a);l2=filter2(bw1,b);l3=filter2(bw1,c);m1=filter2(bw2,a);m2=filter2(bw2,b);m3=filter2(bw2,c);%[m1 m2 m3]=filter2(bw2,f);p1=l1.*l1+l2.*l2+l3.*l3;p2=m1.*m1+m2.*m2+m3.*m3;p3=l1.*m1+l2.*m2+l3.*m3;h=2*p3./((p1-p2)+exp(-50));r=0.5*atan(h);w=real(sqrt(0.5*((p1+p2)+(p1-p2).*cos(2*r)+2*p3.*sin(2*r)))); w=mat2gray(w);imshow(w);figure,imshow(f);试验结果:实验小结通过这么多次的数字图像处理实验我学习到了很多,首先是对matlab软件的更加熟练的运用,然后通过一些验证性试验使我对课本上数字图像处理的一些原理有了更加深刻的理解,在实际的操作中学会了图像的一些基本的处理,总体来说还不错。
详细的图像分割之边缘检测实验报告

边缘检测实验报告一、实验目的通过课堂的学习,已经对图像分割的相关理论知识已经有了全面的了解,知道了许多图像分割的算法及算子,了解到不同的算子算法有着不同的优缺点,为了更好更直观地对图像分割进行深入理解,达到理论联系实际的目的,特制定如下的实验。
二、实验原理:图像处理有两大类目的:1.改善像质(增强、恢复);2.图像分析:对图像内容作出描述;其一般的图像处理过程如下:图像分割的算法有:(1)阈值分割原理:(,)(,)(,)EBLf x y Tg x y L f x y T≥⎧=⎨<⎩(2)边缘检测:梯度对应一阶导数,对于一个连续图像函数f(x,y):梯度矢量定义:梯度的幅度:梯度的方向:a) Roberts 算子b) Sobel 算子Roberts 算子[]TTyxy f x f G G y x f ⎦⎤⎢⎣⎡∂∂∂∂==∇),(122)()),((),(y x G G y x f mag y x f +=∇=∇)arctan(),(x y G y x =φ()()()[]()()[]{}21221,,11,1,,+-++++-=j i f j i f j i f j i f j i gc) Prewitt 算子d) Kirsch 算子由K 0~K 7八个方向模板组成,将K0~K7的模板算法分别与图像中的3×3区域乘,选最大一个值,作为中央像素的边缘强度(3)区域分割1 区域生长法 算法描述先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素有相似性质的像素合并到种子像素所在的区域中。
将这些新像素当作新的种子像素继续进行上面的过程,直到再没有满足条件的像素可被包括进来。
2 分裂合并法实际中常先把图像分成任意大小且不重叠的区域,然后再合并或分裂这些区域以满足分割的要求,即分裂合并法.一致性测度可以选择基于灰度统计特征(如同质区域中的方差),假设阈值为T ,则算法步骤为:① 对于任一Ri ,如果 ,则将其分裂成互不重叠的四等分; ② 对相邻区域Ri 和Rj ,如果 ,则将二者合并; ③ 如果进一步的分裂或合并都不可能了,则终止算法。
数字图像处理实验报告3

实验三图像分割实验一.实验目的1. 掌握基本的图像分割方法2.观察图像分割的效果3.加深对边缘提取的理解二.实验原理1.边缘检测:图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。
图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位。
2.灰度阈值分割即是先确定一个处于图像灰度取值范围内的灰度阈值,然后将图像中各个像素的灰度值与这个阈值相比较:划分成像素灰度大于阈值的一类和小于阈值的一类。
3. 双峰法的原理及其简单:它认为图像由前景和背景组成,在灰度直方图上,前后二景都形成高峰,在双峰之间的最低谷处就是图像的阈值所在三.实验内容1.实验步骤1.打开matlab编程环境;2.利用“imread”函数导入图像数据;3.利用“imshow”显示所读入的图像数据;4.进行图像分割处理;5.记录和整理实验报告;2. 按下面要求编写程序并运行结果1. 用sobel方法对一幅灰度图像进行边缘提I=imread('cameraman.bmp');R=double(I(:,:,1));G=double(I(:,:,2));B=double(I(:,:,3));[rows,cols]=size(R);I=0.299*R+0.587*G+0.114*B;[H,W]=size(I);M=double(I);J=M;for i=2:H-1for j=2:W-1J(i,j)=abs(M(i-1,j+1)-M(i-1,j-1)+2*M(i,j+1)-2*M(i,j-1)+M(i+1,j+1)-M(i+1,j-1))+abs(M(i-1,j-1)-M(i+1,j-1)+2*M(i-1,j)-2*M(i+1,j)+M(i-1,j+1)-M(i+1,j+1));end;end;for i=2:H-1for j=2:W-1if J(i,j)>254J(i,j)=255;elseJ(i,j)=0;endendendsubplot(1,2,1);imshow(uint8(I));title('原图');subplot(1,2,2);imshow(uint8(J));title('Sobel 处理后');2.用 Laplacian-Gaussian方法对一幅灰度图像进行边缘提取I = imread('cameraman.bmp');R=double(I(:,:,1));G=double(I(:,:,2));B=double(I(:,:,3));[rows,cols]=size(R);I=0.299*R+0.587*G+0.114*B;s=fftshift(fft2(I));[M,N]=size(s);n=2;d0=400;n1=floor(M/2);n2=floor(N/2);for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);h=1*exp(-1/2*(d^2/d0^2));s(i,j)=h*s(i,j);endends=ifftshift(s);s=uint8(real(ifft2(s))); subplot(1,2,1),imshow(s);title('GLPF滤波');s=double(s);[r,c]= size(s);R=zeros(r,c);core1=[-1 -1 -1;-1 8 -1;-1 -1 -1];core2=[0 -1 0;-1 4 -1;0 -1 0];for x=2:r-1for y=2:c-1Z=[s(x-1,y-1) s(x-1,y) s(x-1,y+1);s(x,y-1) s(x,y) s(x,y+1);s(x+1,y-1) s(x+1,y) s(x+1,y+1)];A=core1*Z;B=core2*Z;R(x,y)=max(abs(sum(sum(A))),abs(sum(sum(B))));endendfor x=2:r-1for y=2:c-1if R(x,y)>250R(x,y)=255;elseR(x,y)=0;endendendsubplot(1,2,2),imshow(uint8(R));title('拉普拉斯处理后 ');3. 利用双峰法对一幅灰度图像进行灰度分割处理I = imread('lena.bmp');I=double(I);sum_obj=0;obj_counter=0;sum_backgnd=0;backgnd_counter=0;[rows,cols]=size(I);cols_c=floor(cols/20);rows_c=floor(rows/20);corners=[I(1:rows_c,1:cols_c);I(1:rows_c,(end-cols_c+1):end);I((en d-rows_c+1):end,1:cols_c);I((end-rows_c+1):end,(end-cols_c+1):end) ];threshold=mean(mean(corners));while 1for i=1:rowsfor j=1:colsif(I(i,j)>threshold)sum_obj=sum_obj+I(i,j);obj_counter=obj_counter+1;elsesum_backgnd=sum_backgnd+I(i,j);backgnd_counter=backgnd_counter+1;endendendnew_threshold=((sum_backgnd/backgnd_counter)+(sum_obj/obj_counter))/2 ;if(abs(threshold-new_threshold)<=0.01)break;endthreshold=new_threshold;endfor i=1:rowsfor j=1:colsIf(I(i,j)<=threshold)I(i,j)=0;elseI(i,j)=255;endendendimshow(I);四.实验结果及分析1. sobel边缘提取placian-Gaussian方法边缘提取3.双峰法对一幅灰度图像进行灰度分割处理五.实验小结与体会1.本次实验以图像分割为主线,涉及边缘提取2. 通过实验结果的比较,对课堂上的理论有了直观的认识,也为更好的理解理论奠定了基础,培养了兴趣。
图像的边缘检测实验报告

图像的边缘检测实验报告
《图像的边缘检测实验报告》
图像的边缘检测是计算机视觉领域中的重要技术之一,它可以帮助我们识别图
像中物体的边缘和轮廓,从而实现图像分割、特征提取和目标识别等应用。
在
本次实验中,我们将对几种常用的边缘检测算法进行比较和分析,以评估它们
在不同场景下的性能和适用性。
首先,我们使用了Sobel算子进行边缘检测。
Sobel算子是一种基于梯度的边缘检测方法,它通过对图像进行卷积操作来寻找像素值变化最大的地方,从而找
到图像中的边缘。
实验结果显示,Sobel算子在一些简单场景下表现良好,但
在复杂背景和噪声干扰较大的情况下效果不佳。
接着,我们尝试了Canny边缘检测算法。
Canny算法是一种多阶段的边缘检测
方法,它通过对图像进行高斯滤波、计算梯度、非极大值抑制和双阈值处理等
步骤来检测图像中的边缘。
实验结果显示,Canny算法在复杂场景下表现出色,能够有效地抑制噪声并找到图像中的真实边缘。
最后,我们还尝试了Laplacian算子和Prewitt算子等其他边缘检测算法,并对
它们的性能进行了比较和分析。
实验结果显示,不同的边缘检测算法在不同场
景下表现出各自的优势和劣势,需要根据具体的应用需求来选择合适的算法。
总的来说,本次实验对图像的边缘检测算法进行了全面的比较和分析,为我们
进一步深入理解和应用这些算法提供了重要的参考和指导。
希望通过这些实验
结果,我们能够更好地利用边缘检测技术来解决实际的图像处理问题,为计算
机视觉领域的发展做出更大的贡献。
数字图像处理实验

数字图像处理实验实验总学时: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. 将两种处理方法的结果与原图比较,注意两种处理方法对边缘的影响。
数字图像实验报告三图像的边缘检测

实验三图像的边缘检测一、实验目的1.理解图像边缘检测的概念;2.掌握图像边缘检测的目的及意义;3.学会利用matlab编程实现图像的边缘检测。
二、实验内容1. 利用matlab语言直接编程实现sobel算子检测图像边缘;2. 利用matlab语言直接编程实现prewitt算子检测图像边缘3. 利用matlab语言直接编程实现laplace算子检测图像边缘。
三、实验步骤(一)利用matlab语言直接编程实现sobel算子检测图像边缘实验代码如下:u=imread('E:\实验报告\数字图像处理实验报告\数字图像实验报告三通信五班韩奇20110803520\fangzi.jpg');u=rgb2gray(u);imwrite(u,'fangzi灰度图.bmp');f=u;F=double(f);U=double(u);[H,W]=size(u);uSobel=u;for i=2:H-1for j=2:W-1Gx=(U(i+1,j-1)+ U(i+1,j)+F(i+1,j+1))-(U(i-1,j-1)+U(i-1,j)+F(i-1,j+1));Gy=(U(i-1,j+1)+U(i,j+1)+F(i+1,j+1))-(U(i-1,j-1)+U(i,j-1)+F(i+1,j-1));uSobel(i,j)=sqrt(Gx^2+Gy^2);endendfigure(1);imshow(f);title('原图');figure(2);imshow(im2uint8(uSobel)); title('Sobel边缘检测');生成图像如下:从图中可以看出,利用sobel算子能够提取出原图的边缘,且效果较好。
sobel算子能检测边缘点,且能进一步抑制噪声的影响,但检测的边缘较宽。
(二)利用matlab语言直接编程实现laplace算子检测图像边缘实验代码如下:[I,map]=imread('E:\实验报告\数字图像处理实验报告\数字图像实验报告三通信五班韩奇20110803520\fangzi.jpg');I=rgb2gray(I);[H,W]=size(I);M=double(I);J=M;for i=2:H-1for j=2:W-1J(i,j)=abs(M(i-1,j+1)-M(i-1,j-1)+M(i,j+1)-M(i,j-1)+M(i+1,j+1)-M(i+1,j-1))+abs(M(i+1,j-1)-M(i-1 ,j-1)+M(i+1,j)-M(i-1,j)+M(i+1,j+1)-M(i-1,j+1));end;end;figure(1);imshow(I);title('原图');figure(2);imshow(uint8(J));title('Prewitt处理后'); 生成图像如下:prewitt算子为在检测边缘的同时减少噪声的影响,从加大边缘检测算子的模板大小出发,由2*2扩大到3*3来计算差分算子,采用prewitt算子能检测到边缘点,还可以抑制噪声。
图像边缘检测实验报告

图像边缘检测实验报告图像边缘检测实验报告引言:图像边缘检测是计算机视觉领域中一项重要的任务,它在许多应用中都起到关键作用。
边缘是图像中不同区域之间的分界线,它们包含了图像中物体的轮廓和形状信息。
因此,准确地检测和提取图像边缘对于目标识别、图像分割和特征提取等任务至关重要。
实验目的:本实验旨在通过实践探索和理解常用的图像边缘检测算法,并对其性能进行评估。
我们将使用不同的算法对一组测试图像进行边缘检测,并比较它们的结果,以了解它们的优缺点和适用场景。
实验方法:1. 数据准备:我们从公开的图像数据库中选择了一组具有不同特征和复杂度的测试图像。
这些图像包括自然风景、人物肖像和建筑物等多种场景,以覆盖不同的应用场景。
2. 算法选择:我们选择了三种常用的图像边缘检测算法进行实验:Sobel算子、Canny算子和Laplacian算子。
这三种算法在实践中被广泛应用,并且具有不同的特点和适用范围。
3. 实验步骤:a) Sobel算子:我们首先将测试图像转换为灰度图像,然后使用Sobel算子对其进行边缘检测。
Sobel算子是一种基于梯度的算法,它通过计算图像中每个像素点的梯度值来检测边缘。
b) Canny算子:接下来,我们使用Canny算子对同一组测试图像进行边缘检测。
Canny算子是一种基于多阶段处理的算法,它首先使用高斯滤波器对图像进行平滑处理,然后计算梯度和非最大抑制,最后进行边缘连接和阈值处理。
c) Laplacian算子:最后,我们使用Laplacian算子对测试图像进行边缘检测。
Laplacian算子是一种基于二阶导数的算法,它通过计算图像中每个像素点的二阶导数值来检测边缘。
实验结果:通过对实验图像的边缘检测,我们得到了以下结果:1. Sobel算子产生了较为明显的边缘线,但在一些复杂场景下容易产生噪声,并且边缘线有时会断裂。
2. Canny算子在平滑处理后能够准确地检测到图像中的边缘,并且能够消除噪声和断裂的边缘线。
实验9图像边缘检测

实验9图像边缘检测实验9 图像边缘检测⼀、实验⽬的通过本实验使学⽣掌握图像边缘检测的基本⽅法,加深对图像分割的理解。
⼆、实验原理本实验师基于数字图像处理课程中的图像分割理论来设计的。
三、实验内容(⼀)图像锐化读取lena_gray.bmp图像,(1)使⽤prewitt算⼦对图像进⾏锐化,同屏显⽰原图像和锐化后的图像,并解释结果。
(2)使⽤sobel算⼦对图像进⾏锐化,同屏显⽰原图像和锐化后的图像,并解释结果。
(3)使⽤LoG算⼦对图像进⾏锐化,同屏显⽰原图像和锐化后的图像,并解释结果。
(4)对⽐上述锐化结果,说明三个算⼦的优缺点。
程序:close allclearclc%程序如下所⽰:?J=imread('F:\lena_gray.bmp');subplot(2,3,1);imshow(J);title('(a)原始图像');subplot(2,3,2);imshow(J);title('(b)灰度图');K=imadjust(J,[40/255 1]);%调整灰度值?subplot(2,3,3)imshow(K);title('(c)调整灰度后的图');I1=edge(K,'sobel');subplot(2,3,4);imshow(I1);title('(d)Sobel算⼦');I2=edge(K,'prewitt');subplot(2,3,5);imshow(I2);title('(e)Prewitt算⼦');I4=edge(K,'log');subplot(2,3,6);imshow(I4);title('(g)Laplace算⼦');(a)原始图像(b)灰度图(c)调整灰度后的图(d)Sobel算⼦(e)Prewitt算⼦(g)Laplace算⼦实验结果分析:由实验结果可知,prewitt和sobel算⼦能提取对⽐度强的边缘,⽽LOG算⼦能提取对⽐度较弱的边缘,边缘定位精度⾼。
图像的边缘检测实验处理报告

数字视频图像处理与通信实验实验项目:图像的边缘检测指导老师:***班级:姓名:学号:图像的边缘检测实验报告一;实验目的:1.掌握图像边缘检测的基本概念以及边缘检测的基本方法;2.通过matlab 实验的具体操作来具体掌握空间图像边缘检测的方法;3.通过matlab 实验来验证所学知识,达到学以致用;4.通过matlab 实验来理解roberts 、sobel 、canny 、log 几种算子的原理以及各个算法的优缺点,并加以比较。
二;实验原理:图像的边缘是图像最基本的特征之一。
所谓边缘(或边沿)是指周围像素灰度有阶跃性变化或“屋顶”变化的那些像素的集合。
边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间,因此它是图像分割依赖的重要特征。
图像边缘对图像识别和计算机分析十分有用,边缘能勾划出目标物体,使观察者一目了然;边缘蕴含了丰富的内在信息(如方向、阶跃性质、形状等)。
从本质上说,图像边缘是图像局部特性不连续性(灰度突变、颜色突变、纹理结构突变等)的反应,它标志着一个区域的终结和另一个区域的开始。
边缘检测技术是所有基于边界分割的图像分析方法的第一步,首先检测出图像局部特性的不连续性,再将它们连成边界,这些边界把图像分成不同的区域,检测出边缘的图像就可以进行特征提取和形状分析,但各算子有自己的优缺点和适用领域。
Roberts 算子Roberts 算子是一种利用局部差分算子寻找边缘的算子,由下式给出: g(x,y)={[y x f ,(-)1,1(++y x f ]2+[y x f ,(- )1,1(++y x f ]2}21 ,其中f(x,y)是具有整数像素坐标的输入图像,平方根运算使该处理类似于在人类视觉系统中发生的过程。
Roberts 算子边缘定位准,但是对噪声敏感。
适用于边缘明显而且噪声较少的图像分割,在应用中经常用Roberts 算子来提取道路。
Prewitt 边缘算子Prewitt 边缘算子的卷积和如图所示,图像中的每个像素都用这两个核做卷积,取最大值作为输出,也产生一幅边缘幅度图像。
数字图像处理-边缘检测算子与锐化算子(含MATLAB代码)

数字图像处理实验五15生医一、实验内容对某一灰度图像,进行如下处理:(1)分别用Roberts、Prewitt和Sobel边缘检测算子进行边缘检测;(2)将Roberts、Prewitt和Sobel边缘检测算子修改为锐化算子,对原图像进行锐化,同屏显示原图像、边缘检测结果和锐化后图像,说明三者之间的关系。
一灰度图像的二值化。
二、运行环境MATLAB R2014a三、运行结果及分析运行结果如图所示:可以观察出原图像、边缘检测结果和锐化后图像三者之间的关系为:原图像+边缘检测结果=锐化后图像四、心得体会通过MATLAB编程更加熟悉了课本上关于锐化与边缘检测的相关知识点,对二者的关系也有了具体的认识。
同时,对MATLAB图像导入函数、图像边缘检测函数、锐化窗口矩阵卷积函数的调用及实现机理也有所掌握,比如后边附的程序中会提到的“%”标注的思考。
五、具体程序size=512;Img_rgb=imread('E:\lena.jpg'); %读取图像Img_gray=rgb2gray(Img_rgb); %进行RGB到灰度图像的转换(虽然原来在网上下载的lena就是黑白图像,但是这一步必须要有!否则处理结果不正确)figure(1);subplot(2,3,1);imshow(Img_gray);title('原图像');Img_edge=zeros(size);a={'roberts','prewitt','sobel'};for i=1:3Img_edge=edge(Img_gray,a{i});figure(1);subplot(2,3,i+1);imshow(Img_edge);axis image;title(a(i));endA=imread('E:\lena.jpg');B=rgb2gray(A);B=double(B);Window=[-1-1-1;-19-1;-1-1-1]; %八邻域拉普拉斯锐化算子(α取1)C=conv2(B,Window,'same');Img_sharp=uint8(C);subplot(2,3,5);imshow(Img_sharp);title('sharp');THANKS !!!致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考。
数字图像处理实验报告

数字图像处理实验报告一、引言数字图像处理是一门涉及图像获取、图像处理和图像分析的重要学科,广泛应用于计算机科学、电子工程、通信技术等领域。
本报告旨在介绍并总结我所进行的数字图像处理实验,讨论实验的目的、方法、结果和分析。
二、实验目的通过本次实验,旨在掌握和理解数字图像处理的基本原理和常见技术,包括灰度变换、空间域滤波、频域滤波等,以及层次分割、边缘检测和形态学处理等高级应用技术。
三、实验方法1. 寻找合适的图像在实验中,我选用了一张自然风景图像作为处理对象。
这张图像包含丰富的纹理和颜色信息,适合用于多种图像处理方法的验证和比较。
2. 灰度变换灰度变换是数字图像处理中常见的基础操作,可以通过对图像的像素灰度值进行线性或非线性变换,来调整图像的对比度、亮度等特征。
在实验中,我利用线性灰度变换方法将原始彩色图像转换为灰度图像,并进行对比度的调整,观察处理结果的变化。
3. 空间域滤波空间域滤波是一种基于像素邻域的图像处理方法,常用于图像去噪、边缘增强等应用。
我使用了平滑滤波和锐化滤波两种方法,并针对不同的滤波算子和参数进行了实验和比较,评估其对图像细节和边缘保留的影响。
4. 频域滤波频域滤波是一种基于图像的频谱特征的图像处理方法,广泛应用于图像增强、去噪和特征提取等方面。
我利用傅里叶变换将图像从空间域转换到频域,采用理想低通滤波器和巴特沃斯低通滤波器进行图像的模糊处理,并进行了实验对比和分析。
5. 高级应用技术在实验中,我还研究了数字图像处理中的一些高级应用技术,包括层次分割、边缘检测和形态学处理。
通过应用不同的算法和参数,我实现了图像区域分割、提取图像边缘和形态学形状变换等效果,评估处理结果的准确性和稳定性。
四、实验结果与分析通过对以上实验方法的实施,我获得了一系列处理后的图像,并进行了结果的比较和分析。
在灰度变换实验中,我发现线性变换对图像的对比度有较大影响,但对图像的细节变化不敏感;在空间域滤波实验中,平滑滤波可以有效降噪,但会导致图像细节损失,而锐化滤波可以增强图像的边缘效果,但也容易引入噪声;在频域滤波实验中,理想低通滤波对图像的模糊效果明显,而巴特沃斯低通滤波器可以在一定程度上保留图像的高频细节信息;在高级应用技术实验中,边缘检测和形态学处理对提取图像边缘和形状变换非常有效,但参数的选择会对结果产生较大影响。
数字图像处理实验报告

数字图像处理实验报告数字图像处理实验报告一、引言数字图像处理是计算机科学与工程领域中的一个重要研究方向。
通过使用数字化技术,对图像进行采集、传输、存储和处理,可以实现对图像的增强、恢复、分析和识别等功能。
本实验旨在通过对数字图像处理算法的实践应用,探索图像处理的原理和方法。
二、实验目的本实验的主要目的是掌握数字图像处理的基本概念和算法,并通过实际操作加深对图像处理原理的理解。
具体目标包括:1. 学习使用图像处理软件,如Photoshop或Matlab等。
2. 掌握图像增强的方法,如直方图均衡化、滤波和锐化等。
3. 理解图像压缩和编码的原理,如JPEG和PNG等格式。
4. 了解图像分割和边缘检测的基本算法,如阈值分割和Canny边缘检测等。
三、实验过程1. 图像增强图像增强是指通过一系列算法和技术,改善图像的质量和视觉效果。
在实验中,我们可以使用直方图均衡化算法来增强图像的对比度和亮度。
该算法通过将图像的像素值映射到一个更大的范围内,使得图像的亮度分布更加均匀。
2. 图像滤波图像滤波是指通过一系列滤波器对图像进行处理,以实现去噪、平滑和锐化等效果。
在实验中,我们可以使用平滑滤波器(如均值滤波器和高斯滤波器)来去除图像中的噪声。
同时,我们还可以使用锐化滤波器(如拉普拉斯滤波器和Sobel滤波器)来增强图像的边缘和细节。
3. 图像压缩和编码图像压缩是指通过减少图像的数据量来减小图像文件的大小,从而实现存储和传输的效率提升。
在实验中,我们可以使用JPEG和PNG等压缩算法来对图像进行压缩和编码。
JPEG算法通过对图像的频域进行离散余弦变换和量化,实现对图像的有损压缩。
而PNG算法则采用无损压缩的方式,通过对图像的差值编码和哈夫曼编码,实现对图像的高效压缩。
4. 图像分割和边缘检测图像分割是指将图像分成若干个区域,以实现对图像的目标提取和图像分析的目的。
而边缘检测是指通过检测图像中的边缘和轮廓,实现对图像的形状分析和目标识别。
图像的边缘检测实验报告

图像的边缘检测实验报告图像的边缘检测实验报告一、引言图像处理是计算机科学领域中的一个重要研究方向,而边缘检测作为图像处理的基础任务之一,具有广泛的应用价值。
边缘是图像中灰度或颜色变化较为剧烈的地方,通过检测图像中的边缘可以提取出物体的轮廓、形状等重要信息,从而为后续的图像分析和识别提供基础。
二、实验目的本次实验旨在探究不同的边缘检测算法在图像处理中的应用效果,并通过实验结果分析和比较各算法的优缺点,从而为图像处理领域的研究和应用提供参考。
三、实验方法1. 实验环境:使用Python编程语言,结合OpenCV图像处理库进行实验。
2. 实验数据:选择了包含多种物体和复杂背景的图像作为实验数据,以保证实验的可靠性和准确性。
3. 实验步骤:(1) 读取图像数据,并将其转化为灰度图像。
(2) 对图像进行预处理,如降噪、平滑等操作,以提高边缘检测的效果。
(3) 使用不同的边缘检测算法对图像进行处理,如Sobel算子、Canny算法等。
(4) 分析和比较不同算法的实验结果,评估其优缺点。
四、实验结果与分析1. Sobel算子:Sobel算子是一种基于梯度的边缘检测算法,通过对图像进行卷积操作,提取出图像中的边缘信息。
实验结果显示,Sobel算子能够较好地检测出图像中的边缘,但对于噪声较多的图像效果较差。
2. Canny算法:Canny算法是一种经典的边缘检测算法,通过多步骤的处理过程,包括高斯滤波、计算梯度、非极大值抑制和双阈值处理等,最终得到清晰准确的边缘信息。
实验结果显示,Canny算法能够有效地检测出图像中的边缘,并具有较好的抗噪性能。
3. 其他算法:除了Sobel算子和Canny算法外,还有许多其他的边缘检测算法,如拉普拉斯算子、Roberts算子等,它们各自具有不同的特点和适用范围。
在实验中,我们也对这些算法进行了尝试和比较,发现它们在不同的图像场景下有着各自的优势和局限性。
五、实验总结与展望通过本次实验,我们对图像的边缘检测算法进行了探究和比较。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告实验名称实验三图像边缘检测课程名称数字图像处理某成绩班级学号日期地点备注:1、实验目的(1)了解并掌握使用微分算子进行图像边缘检测的基本原理;(2)编写程序使用Laplacian 算子(二阶导数算子)实现图像锐化,进一步理解图像锐化的实质;(3)掌握使用不同梯度算子(一阶导数算子)进行图像边缘检测的原理、方法,根据实验结果分析各种算子的工作效果;(4)总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。
2、实验环境(1)Windows XP/7(2)Matlab 7.1/7.143、实验方法本次实验要求对256×256大小,256级灰度的数字图像lena.img进行处理。
(1)对该图像进行锐化处理,要求采用Laplacian算子进行锐化,分α=1和α=2两种情况,按如下不同情况进行处理:①g1(m,n)=f(m,n)-α∇f②g2(m,n)=4αf(m,n)-α[f(m-1,n)+f(m+1,n)+f(m,n-1)+f(m,n+1)]I、要对图像进行处理,要先读取该图像,实验代码如下:close all;clear all;fid=fopen('lena.img','r');image=fread(fid,[256,256],'uint8');fclose(fid);II、读取图像后,对该图像的每一像素(不考虑图像的边界部分)进行遍历,根据公式①(公式①相当于做差分)对每一灰度进行计算,将所得的结果存入一矩阵g1中(矩阵g1初始化为该图像的矩阵),代码如下(仅以ɑ=1为例):g1=image;a=1;[x,y]=size(image);for i=2:(x-1)for j=2:(y-1) g1(i,j)=(1+4*a)*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));endendIII、根据公式②对图像的每一个像素(不考虑图像的边界部分)进行计算,将所得之存入矩阵g2中(g2初始化值为该图像的矩阵值),具体方法与上一步类似,代码如下(仅以ɑ=1为例):g2=image;a=1;[x,y]=size(image);for i=2:(x-1)for j=2:(y-1)g2(i,j)=4*a*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));endend(2)分别利用Roberts、Prewitt 和Sobel 边缘检测算子,对原图像进行边缘检测,显示处理前、后图像。
I、同(1)中I,不再赘述。
II、对图像进行边缘检测,要对图像的每一像素(不考虑图像的边界部分)的灰度进行遍历,分别用公式对图像的水平和垂直方向的边缘进行检测,并分别存储,在进行合成。
采用不同的算子时,变换的公式有所不同。
在合成时可以采用三种算法(街区法、棋盘法、欧式几何法),本次实验中均又采用,所以得到三层图像。
代码如下(仅以街区法的Roberts 算子为例):[x,y]=size(image);g1=image;gh1=image;gv1=image;for i=2:(x-1)for j=2:(y-1)gh1(i,j)=image(i,j)-image(i-1,j-1);gv1(i,j)=image(i,j-1)-image(i-1,j);g1(i,j)=abs(gh1(i,j))+abs(gv1(i,j));endend4、实验结果分析(1)、图像锐化图像锐化结果如图a和图b(注:图a为情况①结果;图b为情况②结果):图a图b由图a和图b对比可知,图像的锐化实质就是原图像与梯度信息进行叠加,相对于原图像而言,图像的边缘信息得到了加强。
由图b中不同ɑ值所得图像对比可知,ɑ越大,边界越清晰,同时对比图a中不同ɑ值所得图像可知,ɑ的大小决定梯度信息与原图像叠加时所占的比例。
(2)、图像边缘检测街区法、棋盘法、欧式距离法的不同检测算子结果分别入图c、图d和图e:图c图d图e由图c、图d和图e对比可知,采用街区法所得的边界清晰度最高,欧式几何法其次,棋盘法最差。
对比同一X图中的不同子图可知,Sobel算子的性能更好,Prewitt算子其次,Roberts算子最差。
5、实验结论本次实验是对图像进行锐化和边缘检测,通过这次实验,我对数字图像处理中图像的锐化和边缘检测有了更加深刻的了解。
加深了图像锐化和边缘检测的原理,掌握了图像边缘检测的不同方法。
学会了使用Laplacian算子(二阶导数算子)实现图像锐化的程序编写;掌握了使用不同梯度算子(一阶导数算子)进行图像边缘检测的原理、方法。
6、源代码(1)图像锐化(g1)close all;clear all;fid=fopen('lena.img','r');image=fread(fid,[256,256],'uint8');fclose(fid);subplot(221);imshow(uint8(image),[]);title('原图像');%采用拉普拉斯算子g1=image;a=1;[x,y]=size(image);for i=2:(x-1)for j=2:(y-1)g1(i,j)=(1+4*a)*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));endendsubplot(222);imshow(uint8(g1),[]);title('a=1时g1的图像');g1=image;a=2;[x,y]=size(image);for i=2:(x-1)for j=2:(y-1)g1(i,j)=(1+4*a)*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));endendsubplot(223);imshow(uint8(g1),[]);title('a=2时g1的图像');(2)图像锐化(g2)close all;clear all;fid=fopen('lena.img','r');image=fread(fid,[256,256],'uint8');fclose(fid);subplot(221);imshow(uint8(image),[]);title('原图像');%采用拉普拉斯算子g2=image;a=1;[x,y]=size(image);for i=2:(x-1)for j=2:(y-1)g2(i,j)=4*a*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));endendsubplot(222);imshow(uint8(g2),[]);title('a=1时g2的图像');g2=image;a=2;[x,y]=size(image);for i=2:(x-1)for j=2:(y-1)g2(i,j)=4*a*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));endendsubplot(223);imshow(uint8(g2),[]);title('a=2时g2的图像');(3)边缘检测close all;clear all;fid=fopen('lena.img','r');image=fread(fid,[256,256],'uint8');fclose(fid);figure('Name','街区法','NumberTitle','off');subplot(221);imshow(uint8(image),[]);title('原图像');[x,y]=size(image);g1=image;gh1=image;gv1=image;for i=2:(x-1)for j=2:(y-1)gh1(i,j)=image(i,j)-image(i-1,j-1);gv1(i,j)=image(i,j-1)-image(i-1,j);g1(i,j)=abs(gh1(i,j))+abs(gv1(i,j));endendsubplot(222);imshow(uint8(g1),[]);title('Roberts算子');g2=image;gh2=image;gv2=image;for i=2:(x-1)for j=2:(y-1)gh2(i,j)=((image(i+1,j-1)+image(i+1,j)+image(i+1,j+1))/3)-((image(i-1,j-1)+image(i-1,j)+im age(i-1,j+1))/3);gv2(i,j)=((image(i-1,j+1)+image(i,j+1)+image(i+1,j+1))/3)-((image(i-1,j-1)+image(i,j-1)+im age(i+1,j-1))/3);g2(i,j)=abs(gh2(i,j))+abs(gv2(i,j));endendsubplot(223);imshow(uint8(g2),[]);title('Prewitt算子');g3=image;gh3=image;gv3=image;for i=2:(x-1)for j=2:(y-1)gh3(i,j)=(image(i+1,j-1)+2*image(i+1,j)+image(i+1,j+1)-image(i-1,j-1)-2*image(i-1,j)-imag e(i-1,j+1))/4;gv3(i,j)=(image(i-1,j+1)+2*image(i,j+1)+image(i+1,j+1)-image(i-1,j-1)-2*image(i,j-1)-imag e(i+1,j-1))/4;g3(i,j)=abs(gh3(i,j))+abs(gv3(i,j));% g3(i,j)=max(gh3(i,j),gv3(i,j));% g3(i,j)=sqrt(gh3(i,j)*gh3(i,j)+gv3(i,j)*gv3(i,j));endendsubplot(224);imshow(uint8(g3),[]);title('Sobel算子');% subplot(235)% imshow(uint8(gh3),[]);% title('检测水平边界');% subplot(236);% imshow(uint8(gv3),[]);% title('检测竖直边界');figure('Name','棋盘法','NumberTitle','off');subplot(221);imshow(uint8(image),[]);title('原图像');[x,y]=size(image);g1=image;gh1=image;gv1=image;for i=2:(x-1)for j=2:(y-1)gh1(i,j)=image(i,j)-image(i-1,j-1);gv1(i,j)=image(i,j-1)-image(i-1,j);% g1(i,j)=abs(gh1(i,j))+abs(gv1(i,j));g1(i,j)=max(gh1(i,j),gv1(i,j));endendsubplot(222);imshow(uint8(g1),[]);title('Roberts算子');g2=image;gh2=image;gv2=image;for i=2:(x-1)for j=2:(y-1)gh2(i,j)=((image(i+1,j-1)+image(i+1,j)+image(i+1,j+1))/3)-((image(i-1,j-1)+image(i-1,j)+im age(i-1,j+1))/3);gv2(i,j)=((image(i-1,j+1)+image(i,j+1)+image(i+1,j+1))/3)-((image(i-1,j-1)+image(i,j-1)+im age(i+1,j-1))/3);% g2(i,j)=abs(gh2(i,j))+abs(gv2(i,j));g2(i,j)=max(gh2(i,j),gv2(i,j));endendsubplot(223);imshow(uint8(g2),[]);title('Prewitt算子');g3=image;gh3=image;gv3=image;for i=2:(x-1)for j=2:(y-1)gh3(i,j)=(image(i+1,j-1)+2*image(i+1,j)+image(i+1,j+1)-image(i-1,j-1)-2*image(i-1,j)-imag e(i-1,j+1))/4;gv3(i,j)=(image(i-1,j+1)+2*image(i,j+1)+image(i+1,j+1)-image(i-1,j-1)-2*image(i,j-1)-imag e(i+1,j-1))/4;g3(i,j)=abs(gh3(i,j))+abs(gv3(i,j));g3(i,j)=max(gh3(i,j),gv3(i,j));% g3(i,j)=sqrt(gh3(i,j)*gh3(i,j)+gv3(i,j)*gv3(i,j));endendsubplot(224);imshow(uint8(g3),[]);title('Sobel算子');figure('Name','欧式几何法','NumberTitle','off');subplot(221);imshow(uint8(image),[]);title('原图像');[x,y]=size(image);g1=image;gh1=image;gv1=image;for i=2:(x-1)for j=2:(y-1)gh1(i,j)=image(i,j)-image(i-1,j-1);gv1(i,j)=image(i,j-1)-image(i-1,j);% g1(i,j)=abs(gh1(i,j))+abs(gv1(i,j));% g1(i,j)=max(gh1(i,j),gv1(i,j));g1(i,j)=sqrt(gh1(i,j)*gh1(i,j)+gv1(i,j)*gv1(i,j));endendsubplot(222);imshow(uint8(g1),[]);title('Roberts算子');g2=image;gh2=image;gv2=image;for i=2:(x-1)for j=2:(y-1)gh2(i,j)=((image(i+1,j-1)+image(i+1,j)+image(i+1,j+1))/3)-((image(i-1,j-1)+image(i-1,j)+im age(i-1,j+1))/3);gv2(i,j)=((image(i-1,j+1)+image(i,j+1)+image(i+1,j+1))/3)-((image(i-1,j-1)+image(i,j-1)+im age(i+1,j-1))/3);% g2(i,j)=abs(gh2(i,j))+abs(gv2(i,j));% g2(i,j)=max(gh2(i,j),gv2(i,j));g2(i,j)=sqrt(gh2(i,j)*gh2(i,j)+gv2(i,j)*gv2(i,j));endendsubplot(223);imshow(uint8(g2),[]);title('Prewitt算子');g3=image;gh3=image;gv3=image;for i=2:(x-1)for j=2:(y-1)gh3(i,j)=(image(i+1,j-1)+2*image(i+1,j)+image(i+1,j+1)-image(i-1,j-1)-2*image(i-1,j)-imag e(i-1,j+1))/4;gv3(i,j)=(image(i-1,j+1)+2*image(i,j+1)+image(i+1,j+1)-image(i-1,j-1)-2*image(i,j-1)-imag e(i+1,j-1))/4;% g3(i,j)=abs(gh3(i,j))+abs(gv3(i,j));% g3(i,j)=max(gh3(i,j),gv3(i,j));g3(i,j)=sqrt(gh3(i,j)*gh3(i,j)+gv3(i,j)*gv3(i,j));endendsubplot(224);imshow(uint8(g3),[]);title('Sobel算子');。