图像边缘检测系统设计
- 格式:doc
- 大小:448.50 KB
- 文档页数:20
农机快速导航系统设计——基于图像边缘检测和3D深度视频帧内编码郑冰;赵阳;葛东林【期刊名称】《农机化研究》【年(卷),期】2018(040)005【摘要】在农机多行作业时,其作业效率主要受到导航精度和系统响应速度的制约.为了解决农机多行作业导航精度和时效性的问题,基于边缘检测方法和3D视频编码技术,引入了一种深度帧内编码方法,用于实时导航视频的获取,有效提高了导航的时效性和导航精度.在实时图像的垄位置标定和导航线提取时, 基于特征点匹配计算量大、误匹配概率高及实时性不强的确定,提出了导航线检测的Sobel算子,有效提高了导航线获取的精度.最后,利用样机对快速导航系统进行了测试.测试结果表明:基于图像边缘检测和3D深度视频帧内编码的农机导航方法,可以实时准确地标定作物垄的导航线,满足了农机快速导航系统的设计要求.【总页数】5页(P181-184,189)【作者】郑冰;赵阳;葛东林【作者单位】河南工业职业技术学院,河南南阳 473000;河南工业职业技术学院,河南南阳 473000;河南中光学集团有限公司,河南南阳 473000【正文语种】中文【中图分类】S127;TP273【相关文献】1.3D-HEVC深度图像帧内编码单元划分快速算法 [J], 张洪彬;伏长虹;苏卫民;陈锐霖;萧允治2.3D-HEVC深度视频快速帧内编码算法 [J], 韩慧敏;彭宗举;蒋刚毅;陈芬3.基于多类支持向量机的3D-HEVC深度视频帧内编码快速算法 [J], 刘晟;彭宗举;陈嘉丽;陈芬;郁梅;蒋刚毅4.3D-HEVC深度图帧内编码快速算法 [J], 韩雪;冯桂;曹海燕5.基于高速DSP深度视频帧内编码的农机导航系统设计 [J], 伍坪;秦彩杰因版权原因,仅展示原文概要,查看原文内容请购买。
基于CCS的图像边缘检测和提取设计作者:王年应骏来源:《现代电子技术》2012年第10期摘要:Matlab对数字图像的处理在工程化方面存在一定的不足。
针对这一不足,利用硬件仿真平台CCS,采用数字图像灰度梯度最大值法、Sobel算子边缘检测算法对数字图像进行检测,实现了数字图像的边缘提取。
实验表明,Sobel算子边缘检测算法对数字图像进行边缘检测和提取的效果比较理想,且为图像处理提供了一种硬件实现方法。
关键词:边缘检测;梯度; Sobel算子; CCS中图分类号:文献标识码:A 文章编号:边缘包含了物体最基本的信息,是图像分割、识别及分析中抽取物体特征的重要属性。
在图像分析中借助边缘部分能大大地减少所要处理的信息,又保留了图像中物体的形状信息。
边缘能勾画出目标物体,使观察者一目了然,而且边缘蕴含着丰富的内在信息(方向,形状等)。
从本质上说,图像边缘是图像局部特征不连续性(灰度突变、颜色突变、纹理结构突变等)的反应,它标志着一个区域的结束和另一个区域的开始[1]。
两个具有不同灰度值的相邻区域之间必定存在边缘,边缘是灰度值不连续的结果,这种不连续性通常可以利用求导数的方法方便地检测到,因此边缘检测一般利用图像一阶导数的极值或者二阶导数的过零点信息来提供判断边缘点的基本依据[2]。
经典的边缘检测方法是对原始图像中像素的某小邻域来构造边缘检测算子[3]。
边缘检测的设计大多是基于Matlab软件设计的,这与工程化有一定的距离。
针对这一不足,提出基于CCS(Code Composer Studio)的数字图像边缘检测设计,为图像处理提供一种硬件设计方法。
1 Sobel算法描述Sobel算子是一个梯度算子,一幅数字图像的一阶导数是基于各种二维梯度的近似值[],该算法就是通过2个3×3的模板,对选定的二维图像中同样大小的窗口进行卷积,得到图像的梯度,通过梯度值的大小与设定的阈值进行比较,如果得到的结果大于阈值,就是边缘部分,把3×3图像窗口中央的像素灰度值用255来代替。
基于matlab的图像边缘检测算法研究和仿真目录第1章绪论 11.1 序言 11.2 数字图像边缘检测算法的意义 1第2章传统边缘检测方法及理论基础 2 2.1 数字图像边缘检测的现状与发展 22.2 MATLAB和图像处理工具箱的背景知识 32.3 数字图像边缘检测关于边缘的定义 42.4 基于一阶微分的边缘检测算子 42.5 基于二阶微分的边缘检测算子 7第3章编程和调试 103.1 edge函数 103.2 边缘检测的编程实现 11第4章总结 13第5章图像边缘检测应用领域 13附录参考文献 15第1章绪论§1.1 序言理解图像和识别图像中的目标是计算机视觉研究的中心任务,物体形状、物体边界、位置遮挡、阴影轮廓及表面纹理等重要视觉信息在图像中均有边缘产生。
图像边缘是分析理解图像的基础,它是图像中最基本的特征。
在Marr的计算机视觉系统中,图像边缘提取占据着非常重要位置,它位于系统的最底层,为其它模块所依赖。
图像边缘提取作为计算机视觉领域最经典的研究课题,长期受到人们的重视。
图像边缘主要划分为阶跃状和屋脊状两种类型。
阶跃状边缘两侧的灰度值变化明显,屋脊状边缘则位于灰度增加与减少的交界处。
传统的图像边缘检测方法大多是从图像的高频分量中提取边缘信息,微分运算是边缘检测与提取的主要手段。
由于传统的边缘检测方法对噪声敏感,所以实际运用效果有一定的局限性。
近年来,越来越多的新技术被引入到边缘检测方法中,如数学形态学、小波变换、神经网络和分形理论等。
Canny于1986年提出基于最优化算法的边缘检测算子,得到了广泛的应用,并成了与其它实验结果作比较的标准。
其原因在于他最先建立了优化边缘检测算子的理论基础,提出了迄今为止定义最为严格的边缘检测的三个标准。
另外其相对简单的算法使得整个过程可以在较短的时间实现。
实验结果也表明,Canny算子在处理受加性高斯白噪声污染的图像方面获得了良好的效果[1]。
图像处理系统的设计与实现引言随着数字技术的发展,图像处理已经成为了计算机科学领域中的一个重要分支。
图像处理系统可以对图像进行各种操作,包括图像的增强、滤波、分割、特征提取等,广泛应用于医学影像、遥感、安防监控、视频处理等领域。
为了满足实际应用的需求,我们设计并实现了一套图像处理系统,以满足不同领域的图像处理需求。
系统设计图像处理系统主要包括图像输入模块、图像处理模块、图像输出模块三大部分。
图像输入模块图像输入模块负责将外部图像文件导入系统,并进行图像格式的转换。
在实际应用中,图像数据可能以不同的格式存在,如JPEG、PNG、BMP等,因此图像输入模块需要支持不同的图像格式,并能够将其转换为系统支持的统一格式。
该模块还需要支持图像输入设备,如摄像头、扫描仪等,以便实时获取图像数据。
图像处理模块图像处理模块是整个系统的核心部分,它包括图像的处理算法和处理流程的设计。
该模块以图像数据为输入,对图像进行各种处理操作,包括图像增强、滤波、边缘检测、特征提取等。
在设计该模块时,需要根据实际应用的需求选择合适的图像处理算法,并设计合理的处理流程,以提高图像处理的效率和效果。
图像输出模块图像输出模块负责将处理后的图像数据输出到外部设备或保存为文件。
在实际应用中,可能需要将处理后的图像数据显示在屏幕上,或者保存为特定格式的文件,以便后续的处理或分析。
图像输出模块需要支持不同的输出方式,并能够将图像数据转换为特定格式的文件。
系统实现在系统设计完成后,我们选择了C++作为主要的编程语言,使用OpenCV和Qt作为主要的开发库,实现了一套图像处理系统。
下面以图像增强为例,介绍系统的实现过程。
图像增强图像增强是图像处理的基本操作之一,其目的是通过对图像的亮度、对比度、色彩等进行调整,以提高图像的质量和清晰度。
在我们的系统中,图像增强包括亮度调整、直方图均衡化、对比度增强等操作。
亮度调整亮度调整是通过调整图像的亮度值来改变图像的整体亮度。
基于MATLAB的图像识别与处理系统设计图像识别与处理是计算机视觉领域的重要研究方向,随着人工智能技术的不断发展,基于MATLAB的图像识别与处理系统设计变得越来越受到关注。
本文将介绍如何利用MATLAB进行图像识别与处理系统设计,包括系统架构、算法选择、性能优化等方面的内容。
一、系统架构设计在设计基于MATLAB的图像识别与处理系统时,首先需要考虑系统的整体架构。
一个典型的系统架构包括以下几个模块:图像采集模块:负责从各种来源获取原始图像数据,可以是摄像头、传感器等设备。
预处理模块:对采集到的图像数据进行预处理,包括去噪、灰度化、尺寸调整等操作,以便后续的处理。
特征提取模块:从预处理后的图像中提取出有用的特征信息,这些特征将用于后续的分类和识别。
分类器模块:采用机器学习或深度学习算法对提取到的特征进行分类和识别,输出最终的结果。
结果展示模块:将分类和识别结果展示给用户,可以是文字描述、可视化界面等形式。
二、算法选择与优化在基于MATLAB进行图像识别与处理系统设计时,算法选择和优化是至关重要的环节。
以下是一些常用的算法和优化技巧:图像处理算法:MATLAB提供了丰富的图像处理工具箱,包括滤波、边缘检测、形态学操作等功能,可以根据具体需求选择合适的算法。
特征提取算法:常用的特征提取算法包括HOG(Histogram of Oriented Gradients)、SIFT(Scale-Invariant Feature Transform)等,选择合适的算法可以提高系统性能。
分类器算法:MATLAB中集成了多种机器学习和深度学习算法,如SVM(Support Vector Machine)、CNN(Convolutional Neural Network)等,可以根据数据特点选择最适合的分类器。
性能优化:在实际应用中,为了提高系统性能和响应速度,可以采用并行计算、GPU加速等技术对算法进行优化。
三、实例分析为了更好地理解基于MATLAB的图像识别与处理系统设计过程,我们以一个实例进行分析:假设我们需要设计一个人脸识别系统,首先我们需要收集大量人脸图像数据,并对这些数据进行预处理和特征提取。
基于D M642的农产品图像边缘检测系统设计周胜灵,丁珠玉(西南大学工程与技术学院,重庆400716)摘要:基于D M642和cPLD架构实现农产品图像的采集与处理,并利用c姗y算子检测农产品图像边缘信息。
针对农产品种类丰富、外形多样、边缘信息复杂且图像在采集过程中容易受到外界因素影响的特点,采用一种新的调试技术,将M at l ab和D s P两者结合起来,充分利用两者特长,在线调节c粕ny算子阈值,简化系统开发的分析、调试和验证过程,并使系统具有更强的通用性,满足不同农产品边缘检测需要。
关键词:边缘检测;C粕ny算子;D M642;C C SL i nk;农产品中图分类号:T P391.41文献标识码:A文章编号:1003—188×(2012)03一0102—040引言随着图像处理技术的日益专业化与处理器硬件成本下降和速度提高,机器视觉技术在农业自动化领域中的应用也越来越广泛。
农产品在生产过程中由于受到人为和自然等复杂因素的影响,产品外形多样、边缘信息复杂,其边缘检测结果常作为农产品自动化采摘、分类和品质检测的重要依据。
国内外学者从20世纪70年代开始研究机器视觉对水果、蔬菜等农产品自动进行检测、分级的技术,并在这一领域取得了一定的研究成果。
例如,S.hyl i n等(2002)利用Sobel算子检测西红柿轮廓边缘…。
B enneds en等(2005)运用Sobel、Rober t和L apl aci粕算子进行边缘检测,对表面受伤的苹果加以分类,实验效果良好旧J。
应义斌等(2000)研究水果图像的背景分割和边缘检测时,利用Sobel算子、Lapl aci舳算子等识别黄花梨轮廓旧J。
周志宇等(2008)根据柑橘图像边缘梯度信息,改进传统C anny算子,利用信息熵来自适应确定C蛐.ny算子的高、低阈值,提高柑橘边缘检测的自动化程度H J。
杨飞等(2008)提出了基于机器视觉的花椒外观品质检测方法,开发出花椒外观品质计算机视觉检测系统软件,实现了对颗粒均匀度、椒籽率、闭眼率和果穗梗率指标值的检测∞J。
FPGA图像处理系统设计与优化随着科技的不断发展,图像处理技术在各个领域中得到了广泛的应用。
而在图像处理中,FPGA(现场可编程逻辑门阵列)已经成为了一种可行的硬件平台,用于实现快速、高效的图像处理算法。
本文将讨论FPGA图像处理系统的设计与优化。
一、介绍FPGA是一种可编程的数字电路,可以在设备上实现所需的逻辑功能。
相比于CPU或GPU,FPGA具有更高的并行性和灵活性,适合处理大规模的图像数据。
由于FPGA能够并行处理多个指令,因此在图像处理中,能够提供更高的实时性和效率。
二、图像处理算法设计在FPGA图像处理系统的设计中,首先需要明确所需实现的图像处理算法。
常见的图像处理算法包括图像滤波、边缘检测、图像增强等。
根据具体需求,选择并设计适合的算法,将其转化为FPGA上的硬件电路。
1. 图像滤波算法图像滤波是一种常用的图像处理技术,用于去除噪声、平滑图像或增强图像细节。
常见的图像滤波算法有均值滤波、中值滤波、高斯滤波等。
在设计FPGA图像滤波算法时,需要考虑算法的复杂度和延迟,并优化算法以提高处理速度和效果。
2. 边缘检测算法边缘检测是一种用于检测图像边缘的图像处理技术。
常见的边缘检测算法有Sobel算子、Canny算法等。
在FPGA图像边缘检测算法的设计中,需要考虑算法的准确性和实时性,并选择适当的算法进行实现。
3. 图像增强算法图像增强是一种用于提升图像质量或改善图像视觉效果的技术。
常见的图像增强算法有直方图均衡化、灰度拉伸、锐化等。
在FPGA图像增强算法的设计中,需要结合图像特点和需求,优化算法以提高图像的清晰度和对比度。
三、FPGA系统优化在设计FPGA图像处理系统时,除了算法设计,还需要考虑系统的优化。
以下是几个常见的FPGA系统优化方法。
1. 并行化设计FPGA的并行性是其与其他硬件平台的重要区别。
通过充分利用FPGA的并行计算能力,可以实现多个像素的同时处理,提高系统的处理能力和速度。
基于图像处理的自动化故障检测系统设计随着科技的不断发展,现代工业生产中的机器设备也越来越智能化。
然而,即使是最先进的机器设备也会存在一些故障,而这些故障不仅会影响生产效率,还会影响产品质量和安全。
因此,如何及早发现并解决这些故障,成为了现代工业生产中必须面对的问题之一。
针对这一问题,基于图像处理的自动化故障检测系统应运而生。
该系统可以对机器设备进行实时监测,并及时发现故障并报警。
本文将会从以下几个方面详细介绍该系统的设计原理和实现方法。
一、系统的设计框架基于图像处理的自动化故障检测系统主要由硬件和软件两部分组成。
硬件部分包括机器设备、CCD摄像机、采集卡、电脑等。
软件部分则主要包括图像处理软件和故障检测软件。
图像处理软件主要负责对CCD摄像机拍摄到的图像进行处理,包括图像去噪、亮度调整、锐度增强等,以提高图像的质量。
故障检测软件则负责对处理后的图像进行分析和检测,以实现故障的诊断和预警功能。
二、系统的设计原理基于图像处理的自动化故障检测系统的设计原理主要基于机器视觉技术。
该技术通过对机器设备拍摄到的图像进行分析和处理,以实现故障的检测和诊断。
具体来说,系统的设计包括了以下几个步骤:(1)采集图像:CCD摄像机会对机器设备的工作状态进行实时拍摄,并将图像传输到电脑端。
(2)图像处理:将传输到电脑端的图像进行处理,包括去噪、亮度调整、锐度增强等操作,以提高图像质量。
(3)特征提取:对处理后的图像进行特征提取,包括边缘检测、形状分析等操作,以获取故障相关的信息。
(4)故障诊断:根据特征提取结果进行故障诊断,判断机器设备是否存在故障,以及故障的类型和严重程度。
(5)报警通知:如果检测出故障,则通过声音、灯光等方式进行报警,并将故障信息发送给维修人员,以便及时修复。
三、系统的实现方法基于图像处理的自动化故障检测系统的实现方法主要包括以下几个方面:(1)硬件部分的配备:必须选配适合的CCD摄像机和采集卡等硬件设备,以确保图像采集的质量和稳定性。
图像边沿检测(Imageedgedetection)最近在做⼀个项⽬,涉及到边沿检测。
边缘检测,设计到两个问题两个重要问题:(1)整体图像训练和预测;(2)多尺度,多层次的特征学习。
计算边缘检测的历史⾮常丰富,重点介绍⼀些具有实践意义的代表性作品。
⼴义上讲,可以分为⼏类,例如:I早期的开创性⽅法,例如Sobel探测器,零交叉和⼴泛采⽤的Canny探测器。
II驱动的⽅法:通过精⼼的⼿动设计得出功能之上的信息论,例如统计边缘,Pb和gPb; III:基于学习的⽅法仍然依赖于⼈类设计的特征,例如BEL,多尺度,Sketch Tokens和结构化边缘。
另外,最近出现了使⽤卷积神经⽹络的开发浪潮,该浪潮强调⾃动分层层次特征学习的重要性,包括N4-Fields,Deep-Contour ,DeepEdge和CSCNN。
在深度学习取得爆炸性发展之前,结构化边缘⽅法(通常缩写为SE)成为最著名的边缘检测系统之⼀,这要归功于其在BSD500数据集上的最新性能。
(例如F分数为.746)及其每秒2.5帧的实际有效速度。
最近的基于CNN的⽅法已证明有希望的F分数性能优于SE。
但是,这些基于CNN的⽅法在F分数性能和速度⽅⾯仍有很⼤的改进空间-⽬前,做出预测的时间范围从⼏秒钟到⼏⼩时(甚⾄使⽤现代GPU时)。
在这⾥,介绍⼀个端到端边缘检测系统(Holistically-Nested Edge Detection),即整体嵌套边缘检测(HED),该系统可以⾃动学习丰富的层次结构类型,这对于要接近⼈类⾃然解决歧义的能⼒⾄关重要图像边缘和对象边界检测。
使⽤术语“整体”是因为HED尽管未明确建模结构化输出,但旨在以图像到图像的⽅式训练和预测边缘。
通过“嵌套”,强调了作为侧⾯输出⽣成的继承的和渐进完善的边缘图-我们打算表明做出每个预测的路径对于这些边缘图都是相同的,⽽连续的边缘图则更加简洁。
这种对层次特征的综合学习与以前的多尺度⽅法不同,在先前的多尺度⽅法中,尺度空间边缘场既不是⾃动学习的,也不是层次连接的。
学号数字图像处理课程设计说明书图像边缘检测系统设计起止日期:2016年12月5日至2016年12月9日学生某班级13电信科1班成绩指导教师(签字)计算机与信息工程学院电子信息工程系2016年12月9日课程设计任务书2016—2017学年第一学期计算机与信息工程学院电子信息与科学技术专业1班级课程设计名称:数字图像处理课程设计设计题目:图像边缘检测系统设计完成期限:自2016年12月5日至2016年12月9日共1周一、课程设计依据在掌握数字图像处理基本算法的基础上,利用MATLAB、VC++、Java等编程语言设计具有指定功能的图形用户界面。
二、课程设计内容1、设计一个实现图像边缘检测功能的界面2、界面可以采用MATLAB、VC++、Java等编程语言设计3、要求界面能够读入并显示图片,通过各种控件选择并进行图像的边缘检测操作,操作结果在对比窗口中显示4、图像边缘检测功能至少包括单方向一阶微分检测(水平/垂直方向)、无方向微分检测(Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子)等,每项功能可采用一个或多个算法实现三.课程设计要求1、要求每个同学独立完成设计任务。
2、课程设计说明书封面格式要求见《课程设计说明书格式要求》。
3、课程设计的说明书要求简洁、通顺,图像表达内容完整、清楚、规X。
4、课程设计说明书要求:1)说明题目的设计原理和思路、采用方法及设计流程。
2)可采用图表或文字对图形用户界面各子模块的功能以及各子模块之间的关系做较详细的描述。
3)详细说明代码的编写流程。
4)采用图像及文字详细说明各功能的演示结果。
指导教师(签字):系主任(签字):批准日期:2016年12月1日目录第1章总体设计 (1)1.1 设计目的 (1)1.2 设计方案 (1)第2章GUI界面设计 (3)2.1 启动GUI界面 (3)2.2 控件设计 (4)第3章运行结果及主要程序 (8)3.1 边缘检测的步骤及结果 (8)3.2 主要程序 (10)总结 (15)参考文献 (16)第1章总体设计1.1 设计目的设计一个实现图像边缘检测功能的界面,通过各种控件选择并进行图像的边缘检测操作,操作结果在对比窗口中显示,完成一个简单的图片处理。
1.2 设计方案先通过GUI可视化界面窗口设计一个对用户使用起来相对方便的界面布局,然后针对界面上的每一个控件进行脚本函数的编写,以实现每一个控件的相应功能。
需要实现的功能:图片的读取与显示,图片的对比显示和存储,彩色图片到灰度图像的转换,图片的各种算子边缘检测并显示(Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子等),并增加了退出程序按钮,最终生成一个可执行软件。
软件的总体设计界面布局如图1-1所示,主要分为2个部分:显示区域与操作区域。
显示区域:显示载入原图,以及通过处理后的图像。
操作区域:通过功能键实现对图像的各种处理。
在截图中可见,左部为一系列功能按键有“读取图片”、“二值化”、“灰度化”三个按钮。
界面右部分为图片显示部分,下方有“存储图片”、“退出”功能键。
界面中间方为系列功能切换选择组包括单方向一阶微分检测(水平/垂直方向)、无方向微分检测(Roberts 算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子)等。
图1-1 设计界面图第2章GUI界面设计2.1 启动GUI界面通过单击MATLAB菜单项“Home”-->“New”-->“Graphical User Interface”,显示GUI 开发环境的启动窗口,也可在命令窗口输入命令:guide——打开GUIDE启动界面,如下图2-1所示。
弹出GUIDE Quick Start对话框,如图2-2所示。
选择Blank GUI,打开版图编程器如图2-3。
图2-1 命令窗口图2-2 GUI启动窗口图2-3 版图编辑器2.2控件设计1.button按钮利用版图编辑器在布局区添加按钮,双击控件调出属性编辑器,对其进行属性设计。
String表示控件的显示信息,Tag表示控件的唯一标识符。
图2-4按钮控件的设置右击button选择“Callback”选项,定位该控件的回调函数。
如下图所示。
图2-5查看button回调函数回调函数初始代码:function pushbutton3_Callback(hObject, eventdata, handles)pushbutton3_Callback是按钮的回调函数,Callback函数是当用户每次触发GUI对象时执行的回调函数;hObject为当前回调函数对应的GUI对象的句柄;eventdata表示事件代码;handles为当前GUI所有数据的结构体,包含所有GUI对象的句柄和用户定义的数据。
2.按钮组为方便编程,采用按钮组进行算法实现,利用版图编辑器的按钮组,添加单选按钮到按钮组。
如图2-6所示。
图2-6按钮组右击按钮组选择SelectionChangeF选项,定位该控件的回调函数,如图2-7所示。
图2-7查看按钮组回调回调函数初始代码:function uipanel1_SelectionChangeF(hObject, eventdata, handles),程序代码见附录。
搭建结果界面截图如2-6所示。
图2-8 设计界面图设计完成后运行的软件界面如图2-9所示,点击按钮组里算法选项可看到程序运行结果,程序见附录。
图2-9 运行界面图第3章运行结果及主要程序3.1边缘检测的步骤及结果一般来说,边缘检测的算法有如下四个步骤:1)滤波:边缘检测算法主要是基于图像增强的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。
2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。
增强算法可以将邻域(或局部)强度之有显著变化的点突显出来。
边缘增强一般都是通过计算梯度幅值来完成的。
3)检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些是边缘点。
最简单的边缘检测判据是梯度幅值阈值判据。
4)定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。
图3-1 算子运行结果(1)图3-2 算子运行结果(2)1.一阶微分作为坐标点(x ,y )处的灰度倾斜度的一阶微分值,可以用具有大小和方向的向量表示如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡∂∂∂∂==y f x f f f y x f y x ],[)],([G 其中,x f 为x 方向的微分,y f 为y 方向的微分。
x f 和y f 在数字图像中是用下式计算的:⎩⎨⎧-+=-+=),()1,(),(),1(y x f y x f f y x f y x f f yx 微分值x f 和y f 被求出后,由以下的公式就能算出边缘的强度与方向。
强度:22y x f f +或者 y x f f +,方向:向量)(y x f f ,的朝向。
2. Roberts算子,边缘定位精度较高,但容易丢失一部分边缘,同时图像没经过平滑处理,所以不具备抑制噪声的能力。
该算子适用于具有陡峭边缘且含噪声少的图像。
3. Sobel算子和Prewitt算子,对噪声具有一定抑制能力,但不能完全排除虚假边缘。
定位效果不错但容易产生多像素边缘。
4.LOG算子,抑制噪声会将尖锐的边缘平滑掉而无法被检测到。
当高斯滤波器宽度参数取值较小时,边缘定位精度高,但图像平滑作用较弱;增大取值时,又导致模板增大,使边缘位置偏移严重,且运动量增加。
5.Canny算子,当弱边缘和强边缘相连时,才输出弱边缘,检测效果要比LOG算子好。
6.拉普拉斯算子,不依赖于边缘方向的二阶微分算子,定位准确,对噪声非常敏感,使噪声加强,从而使部分信息丢失,造成一些不连续的边缘。
由上可知,算子不同,结果存在明显差异,但是在原始图像上边缘明显的部分都被有效的提取出来了。
Roberts算子检测出的边缘线比较清晰,但噪声大多也同时提取出来了。
对于模糊部分取差分间隔宽的Sobel算子和Prewitt算子似乎有效。
Canny算子可以检测到弱边缘,但受阴影的影响较大。
LoG算子易于强化噪声,更适用于点状物的检测和图像锐化。
3.2主要程序1.读取图片程序,定义可读取“.jpg.bmp.gif.png”属性的图片,读取图片到axes1坐标轴中显示。
function pushbutton1_Callback(hObject, eventdata, handles)global im[filename,pathname] = ...uigetfile({'*.jpg';'*.bmp';'*.gif';'*.png';},'选择图片');str=[pathname filename];im=imread(str);axes(handles.axes1);imshow(im);2.存储图片程序,存储axes2坐标轴的结果图像到自定义路径,可选择存储属性为“.bmp.tif.png”。
function pushbutton4_Callback(hObject, eventdata, handles)global im %定义全局变量[filename,pathname,filterindex]=...uiputfile({'*.bmp';'*.tif';'*.png'},'save?picture');%存储图片路径if isequal(filename,0)||isequal(pathname,0)return%如果取消操作,返回else str=[pathname filename];%合成路径+文件名axes(handles.axes2);%使用第二个axesim=getimage(handles.axes2);imwrite(im,str);%写入图片信息,即保存图片end3.关闭窗口程序。
function pushbutton5_Callback(hObject, eventdata, handles)close(gcf)%关闭当前Figure窗口句柄4.按钮组功能,当选择按钮组中不同算法变换时,用switch语句进行算法的选择进行图像变换,显示结果在axes2坐标轴中。
function uipanel1_SelectionChangeF(hObject, eventdata, handles)global im[m,n,o]=size(im);if o>1im=rgb2gray(im);R=double(im)/255;elseR=double(im)/255;endstr=get(hObject,'string');axes(handles.axes2);switch strcase 'Initial'imshow(im)case 'directionX'a=[-1 -2 -1;0 0 0;1 2 1]/256;b=[-1 0 1; -2 0 2; -1 0 1]/256;BW=conv2(im,a,'same');BW=abs(BW);%处理水平方向算子的结果imshow(BW);case 'directionY'a=[-1 -2 -1;0 0 0;1 2 1]/256;b=[-1 0 1; -2 0 2; -1 0 1]/256;BW=conv2(im,b,'same');BW=abs(BW);%处理垂直方向算子的结果imshow(BW);case 'directionXY'a=[-1 -2 -1;0 0 0;1 2 1]/256;b=[-1 0 1; -2 0 2; -1 0 1]/256;BW1=conv2(im,a,'same');BW1=abs(BW1);%处理水平方向算子的结果??BW2=conv2(im,b,'same');BW2=abs(BW2);%处理垂直方向算子的结果??BW=max(BW1,BW2);%取水平及垂直方向上的大值imshow(BW);case 'Roberts'BW = edge(im,'Roberts');imshow(BW);case 'Sobel'BW = edge(im,'Sobel');imshow(BW);case 'Prewitt'BW = edge(im,'Prewitt');imshow(BW);case 'LoG'BW = edge(im,'LoG');imshow(BW);case 'Canny'BW = edge(im,'Canny');imshow(BW);case 'Laplacian'a=[0 1 0;1 -4 1;0 1 0]/56;BW=conv2(im,a,'same');BW=abs(BW);imshow(BW);end5.图像二值化,利用2bw进行图像二值化转化,并将转换结果在axes2 坐标轴中显示。