您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 图像边缘检测的HDL设计
1图像边缘检测的HDL设计赵毅摘要:边缘检测是数字图像处理的重要内容,是基于边界分割方法的基础。本文首先对边缘检测的原理做了简要的总结和分析并对微分边缘检测方法做了详细的介绍。硬件描述语言在电子系统设计中有明显的优势。用硬件描述语言来实现对图像边缘检测的仿真也是最近电子系统仿真的热门研究方向。本文在分析了图像边缘检测的各种方法和硬件描述语言的特点的基础上应用硬件描述语言简单仿真了边缘检测算法,初步探讨了基于FPGA的图像边缘检测方法。从结果来看,HDL设计方法可以实现图像边缘的检测。关键词:边缘检测;微分算子;硬件描述语言;FPGA由于图像物体中的边缘表现为灰度变化,因此,可通过计算灰度的不连续性来增强和检测边缘。边缘检测的方法很多,目前已经提出了许多种算子,例如Roberts算子、Prewitt算子和Sobel算子等都是比较简单而且常用的边缘检测算子。小波多尺度边缘检测是20世纪90年代随着小波分析的迅速发展而发展起来的图像检测方法,Mallat指出,图像可以从其不同尺度下的边缘信息得到近似重建,重建误差在人的视觉感受范围以外[5]。最新的研究方法是基于数学形态学的边缘检测,将数学形态学用于边缘检测,既能有效地滤除噪声,又可保留图像中的原有细节信息,是边缘检测技术的重大突破。21数字图像处理与边缘检测1.1数字图像与数字图像处理图像是对客观对象的一种相似性的生动的描述或表示。在其自然的形式下,图像并不能直接由计算机进行分析。从人眼的视觉特点看,图像可分为可见图像和不可见图像。其中可见图像又包括生成图(通常称为图形或图片)和光图像两种。按波段多少,图像可分为单波段、多波段和超波段图像。单波段图像在每个点只有一个亮度值;多波段图像上每一个点不止一个特性,例如红、绿、蓝三波段光谱图像或彩色图像在每个点具有红、绿、蓝3个亮度值,这3个值表示在不同光波段上的强度,人眼看来就是不同的颜色。按图像空间坐标和明暗程度的连续性,图像可分为模拟图像和数字图像。模拟图像指空间坐标和明暗程度都是连续变化的计算机无法直接处理的图像。为了能严格地用数学来研究图像的边缘检测(我们只研究灰度图像的边缘检测),我们有必要对数字图像做理论假设:A.图像是一个二元连续函f(x,y):(x,y)∈D。定义域设为D,(x,y)表示二维空间中某个点的坐标,f(x,y)表示(x,y)点的灰度值,值域为V;B.数字图像是对函数f(x,y),(x,y)∈D的离散表示。在空间域D上进行抽样:用有限个像素来表示定义域D,每一个像素表示对应区域的平均灰度值;在值域空间V进行量化:用有限个值代表V;C.由于机器设备等原因像素值都有误差的或者带有随机噪声的。3图1.1数字图像及其矩阵表示D.显然我们得到的是一个矩阵,矩阵中每一个元代表一个像素,像素的取值代表这个像素的灰度值。因此在图像的离散模型中我们也常用M表示图像,使用m(i,j)代表图像的第(i,j)元。所谓数字图像处理就是利用计算机对图像信息进行加工以满足人的视觉心理或者应用需求的行为。图像处理关键的一步就是对含有大量各式各样景物信息的图像进行分解,分解的最终结果是图像被分。41.2边缘及边缘检测边缘是图像的最重要的特征。边缘是指周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。Poggio等[1]曾说:“边缘或许对应着图像中物体(的边界)或许并没有对应着图像中物体(的边界),但是边缘具有十分令人满意的性质,它能大大地减少所要处理的信息但是又保留了图像中物体的形状信息”。常见的边缘点有三种。第一种是阶梯形边缘(Step-edge),即从一个灰度到比它高好多的另一个灰度。第二种是屋顶型边缘(Roof-edge),它的灰度是慢慢增加到一定程度然后慢慢减小。还有一种是线性边缘(Line-edge),它的灰度从一个级别跳到另一个灰度级别之后然后回来。5各种不同的边缘有不同的特征。Nalwa和Binford[6]认为图像中的边缘可以由许多的短直线段(他称之为edgel,我们下面称之为边缘元)来逼近,每一个边缘元都由一个位置和一个角度确定。边缘元对应着图像上灰度曲面阶数的不连续性。如果灰度曲面在一个点的N阶导数是一个Delta函数,那么我们就定义灰度曲面在这个点是N阶不连续的。那么线性边缘是0阶不连续的,阶梯形边缘的一阶不连续的,而屋顶形边缘是2阶不连续的。在大部分情况下,我们都是把图像的边缘全部看作是阶梯形边缘,然后求得检测这种边缘的各种最优滤波器,然后用在实践中。边缘检测“主要是(图像的)灰度变化的度量、检测和定位”[1]。有很多种不同的边缘检测方法,同一种方法使用的滤波器也不尽相同。边缘检测就是研究更好的边缘检测方法和检测算子。检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点,其大部分工作集中在寻找能够用于实际图像的梯度数字逼近。由于实际的图像经过了摄像机光学系统和电路系统(带宽限制)固有的低通滤波器的平滑,因此,图像中的阶跃边缘不是十分陡立。图像也受到摄像机噪声和场景中不希望的细节的干扰。图像梯度逼近必须满足两个要求:1)逼近必须能够抑制噪声;2)必须尽量精确地确定边缘的位置。抑制噪声和边缘精确定位是无法同时得到满足的,也就是说,边缘检测算法通过图像平滑算子去除了噪声的同时却增加了边缘定位的不确定性,降低了边缘检测算子对边缘的敏感性。62边缘检测的原理边缘反应了图像局部区域内特征的差别,它表示为图像信息的某种不连续典型(如灰度突变,纹理以及色彩的变化等)。著名的“马赫带效应”指出:人的视觉对物体光度变化的部分有特殊的增强效应,即在不同光强度周围引起“过量调整”。物体边缘特征是与图像中发生灰度跳变的部分相对应的。因此,基于灰度不连续性特征检测的方法也成为图像边缘检测的主要方法之一。现有的边缘检测方法也分为两大类:一类是基于某种固定的局部算法,如微分法,拟合法等,它们属于经典的边缘检测算法;另一类则是以能量最小化为准则的全局检测方法,其特征是运用严格的数学方法对此问题进行分析,给出函数作为最优检测的依据,从全局最优的观点提取边缘,如松弛法,神经网络法等。根据图像中边缘区域的灰度在空间中的变化形式,边缘一般可以分为三种类型:阶跃型、屋脊型和线条型,分别如图2.1(a)、2.1(b)、2.1(c)所示,其中阶跃型边缘一般对应着物体的反射边缘,是最常见,最典型的边缘类型。图2.1三种常见边缘类型图2.1(a)是理想的边缘,而在现实中,图像的灰度都有一个7渐变的过程,如图2.2所示,下面两个分别是它的一阶导数和二阶导数,在灰度不变的区域,一阶导数为零。在边缘与黑色一边相关的跃变点二阶导数为正,在边缘与亮色一边相关的阶跃点二阶导数为负,沿着斜坡以及灰度为常数的区域为零[7]。边缘检测并不是最终的目的,而在边缘检测之前也还有很多前期的图像处理工作要做,如去除部分噪声,增强图像的边缘等,因此,图像的边缘检测一般分为以下四个步骤:1)滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测方法的性能。需要指出,大多数滤波器在降低噪声的同时也导致了边缘强度的损失。因此边缘增强和降低图像噪声之间需要取得一种平衡。2)增强:增强边缘的基础是确定图像中各点领域强度的变化值。增强算法可以突出领域强度值有显著变化的点。边缘增强一般是通过计算梯度幅值来完成的。3)检测:在图像中有许多点的梯度幅值比较大,而这些点并不一定都是边缘,所以应该用某种方法来确定哪些点是边缘点。最简单的边缘检测判据是梯度幅值阈值判据。4)定位:确定边缘所在的像素,如果要更加精确地确定边缘位置,也可以在子像素分辨率上来估计边缘位置,边缘的方向也可以被估计出来[8]。在边缘检测算法中,前三个步骤用得十分普遍。这是因为在大多8数情况下,仅仅需要边缘检测指出边缘出现在图像某一点像素的附近,而没有必要指出边缘的精确位置或方位。边缘检测误差通常是指边缘误分类误差,即把假边缘误判为真边缘加以保留,或者是把真边缘当成假边缘去除。边缘估计误差是使用概率统计模型来描述边缘的位置和方向误差的。为了实现多尺度滤波条件下多分辨率图像边缘检测,很多时候需要把多尺度滤波同边缘检测算法结合起来使用,通常能得到比单尺度更精确的边缘。93基于FPGA的Sobel算子边缘响应算法实现基于Sobel算子的边缘检测算法流程图如图3.9所示,可通过六个步骤实现。(1)采用8个方向的Sobel检测算子分别与灰度图像f(x,y)进行卷积,取最大的结果作为边缘响应(卷积结果作归一化处理),其对应的得到边缘响应图像g(x,y)和对应的梯度方向图dir(x,y)。(2)对边缘响应图像g(x,y)作直方图统计,结果存入直方图数组Count(256)中。图3.9基于Soble算子的边缘检测算法流程图10(3)对边缘响应图像g(x,y)作“非最大值抑制(non—maximumsuppression)”处理,得到修正后的边缘响应图像hg(x,y)。“非最大值抑制”处理说明如下:对边缘响应图像g(x,y)的每个非0像素点,从对应的dir(x,y)中找到其梯度方向,在此方向上考察两个相邻像素的边缘强度。如果其中至少有一个边缘强度超过当前像素的边缘强度,则当前像素的边缘强度g(x,Y)被置为0。同时对直方图数组Count(256)作修正(Count(g(x,y))=Count(g(x,y))~1)。(4)对修正后的直方图数组Count(256)中的所有非0像素进行平均,得出均值Th0。由于图像hg(x,y)中大部分非0像素为非边缘响应,所以低于均值Th0的像素都可视为非边缘像素。(5)对于所有高于均值Th0的像素,仍然会包含有非边缘响应。通过选取一合适的阈值TH来加以排除。对于本算法而言,最困难的是阈值TH的选取,因此作了一些备选方案。利用软件仿真,对备选方案进行了评估和测试,目前采用的分割阈值选取方法为基于全局门限的“最大距离法”。(6)对整帧边缘响应图像hg(x,y)作阈值分割,高于TH的边缘响应视为真正边缘,低于TH的边缘响应视为背景。红外图像边缘较为模糊,简单的二值化不会提供理想的单像素宽的连续边界。常用的边缘细化方法有许多种,大多数方法需要对二值图像作扫描,并考虑每个非0像素邻域内的连通性,实施起来较为复杂。考虑到“非最大值抑制”已经矫正了Sobel算子使边缘变粗的影响,本算法利用边缘梯度方向信息,在作阈值分割时,对每个高于门11限TH的像素hg(x,y),考虑其梯度方向上相邻像素是否高过门限TH,如果高于TH,则像素hg(x,y)置0,最后得到边缘二值图像sg(x,y)。图像sg(x,y)虽然不能保证线条宽度全为1,但对于后续的Hough变换影响不大。实时信号处理系统要求必须具有处理大数据量的能力,以保证系统的实时性;其次对系统的体积、功耗、稳定性等也有较严格的要求。实时信号处理算法中经常用到对图像的求和、求差运算,二维梯度运算,图像分割及区域特征提取等不同层次、不同种类的处理,其中有的运算本身结构比较简单,但是数据量大,计算速度要求高,例如基于Sobel算子的“边缘响应计算”和“非最大值抑制”。实时信号处理技术中各种算法的实现,传统的方法都是采用通用信号处理器(DSP)芯片或专用DSP芯片,其中通用DSP芯片开发简便,使用灵活,但处理速度较低,而且必须配上许多外围器件。专用DSP芯片虽然体积小,速度高,但功能固定使用不灵活。随着FPGA技术的不断发展,可以对数据进行并行处理的特点使其更适用于数据量大,计算简单的运算,并能达到很高的取样速率。FPGA+DSP方案被广泛用于处理实时信号,下面详细介绍如何用FPGA实现“边缘响应计算”和“非最大值抑制”,其原理图见图3.10。各个模块原理分析如下:(1)数据存储模块A由一个双端口RAM,一个数据存取控制模块和一个数据并行输出模块构成。“数据存取控制模块”将串行的数据写入双端口RAM,并从RAM中读出。在此处为了尽量少地占用FPGA的存储资源,并满足模板计算所需数据的特殊位置,定义双端口RAM的存12储
本文标题:图像边缘检测的HDL设计
链接地址:https://www.777doc.com/doc-2558617 .html