图像边缘检测的HDL设计.docx

上传人:b****6 文档编号:12821865 上传时间:2023-06-08 格式:DOCX 页数:11 大小:107.09KB
下载 相关 举报
图像边缘检测的HDL设计.docx_第1页
第1页 / 共11页
图像边缘检测的HDL设计.docx_第2页
第2页 / 共11页
图像边缘检测的HDL设计.docx_第3页
第3页 / 共11页
图像边缘检测的HDL设计.docx_第4页
第4页 / 共11页
图像边缘检测的HDL设计.docx_第5页
第5页 / 共11页
图像边缘检测的HDL设计.docx_第6页
第6页 / 共11页
图像边缘检测的HDL设计.docx_第7页
第7页 / 共11页
图像边缘检测的HDL设计.docx_第8页
第8页 / 共11页
图像边缘检测的HDL设计.docx_第9页
第9页 / 共11页
图像边缘检测的HDL设计.docx_第10页
第10页 / 共11页
图像边缘检测的HDL设计.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

图像边缘检测的HDL设计.docx

《图像边缘检测的HDL设计.docx》由会员分享,可在线阅读,更多相关《图像边缘检测的HDL设计.docx(11页珍藏版)》请在冰点文库上搜索。

图像边缘检测的HDL设计.docx

图像边缘检测的HDL设计

图像边缘检测的HDL设计

赵毅

摘要:

边缘检测是数字图像处理的重要内容,是基于边界分割方法的基础。

本文首先对边缘检测的原理做了简要的总结和分析并对微分边缘检测方法做了详细的介绍。

硬件描述语言在电子系统设计中有明显的优势。

用硬件描述语言来实现对图像边缘检测的仿真也是最近电子系统仿真的热门研究方向。

本文在分析了图像边缘检测的各种方法和硬件描述语言的特点的基础上应用硬件描述语言简单仿真了边缘检测算法,初步探讨了基于FPGA的图像边缘检测方法。

从结果来看,HDL设计方法可以实现图像边缘的检测。

关键词:

边缘检测;微分算子;硬件描述语言;FPGA

由于图像物体中的边缘表现为灰度变化,因此,可通过计算灰度的不连续性来增强和检测边缘。

边缘检测的方法很多,目前已经提出了许多种算子,例如Roberts算子、Prewitt算子和Sobel算子等都是比较简单而且常用的边缘检测算子。

小波多尺度边缘检测是20世纪90年代随着小波分析的迅速发展而发展起来的图像检测方法,Mallat指出,图像可以从其不同尺度下的边缘信息得到近似重建,重建误差在人的视觉感受范围以外[5]。

最新的研究方法是基于数学形态学的边缘检测,将数学形态学用于边缘检测,既能有效地滤除噪声,又可保留图像中的原有细节信息,是边缘检测技术的重大突破。

1数字图像处理与边缘检测

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.由于机器设备等原因像素值都有误差的或者带有随机噪声的。

图1.1数字图像及其矩阵表示

D.显然我们得到的是一个矩阵,矩阵中每一个元代表一个像素,像素的取值代表这个像素的灰度值。

因此在图像的离散模型中我们也常用M表示图像,使用m(i,j)代表图像的第(i,j)元。

所谓数字图像处理就是利用计算机对图像信息进行加工以满足人的视觉心理或者应用需求的行为。

图像处理关键的一步就是对含有大量各式各样景物信息的图像进行分解,分解的最终结果是图像被分。

1.2边缘及边缘检测

边缘是图像的最重要的特征。

边缘是指周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。

Poggio等[1]曾说:

“边缘或许对应着图像中物体(的边界)或许并没有对应着图像中物体(的边界),但是边缘具有十分令人满意的性质,它能大大地减少所要处理的信息但是又保留了图像中物体的形状信息”。

常见的边缘点有三种。

第一种是阶梯形边缘(Step-edge),即从一个灰度到比它高好多的另一个灰度。

第二种是屋顶型边缘(Roof-edge),它的灰度是慢慢增加到一定程度然后慢慢减小。

还有一种是线性边缘(Line-edge),它的灰度从一个级别跳到另一个灰度级别之后然后回来。

 

各种不同的边缘有不同的特征。

Nalwa和Binford[6]认为图像中的边缘可以由许多的短直线段(他称之为edgel,我们下面称之为边缘元)来逼近,每一个边缘元都由一个位置和一个角度确定。

边缘元对应着图像上灰度曲面阶数的不连续性。

如果灰度曲面在一个点的N阶导数是一个Delta函数,那么我们就定义灰度曲面在这个点是N阶不连续的。

那么线性边缘是0阶不连续的,阶梯形边缘的一阶不连续的,而屋顶形边缘是2阶不连续的。

在大部分情况下,我们都是把图像的边缘全部看作是阶梯形边缘,然后求得检测这种边缘的各种最优滤波器,然后用在实践中。

边缘检测“主要是(图像的)灰度变化的度量、检测和定位”[1]。

有很多种不同的边缘检测方法,同一种方法使用的滤波器也不尽相同。

边缘检测就是研究更好的边缘检测方法和检测算子。

检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点,其大部分工作集中在寻找能够用于实际图像的梯度数字逼近。

由于实际的图像经过了摄像机光学系统和电路系统(带宽限制)固有的低通滤波器的平滑,因此,图像中的阶跃边缘不是十分陡立。

图像也受到摄像机噪声和场景中不希望的细节的干扰。

图像梯度逼近必须满足两个要求:

1)逼近必须能够抑制噪声;2)必须尽量精确地确定边缘的位置。

抑制噪声和边缘精确定位是无法同时得到满足的,也就是说,边缘检测算法通过图像平滑算子去除了噪声的同时却增加了边缘定位的不确定性,降低了边缘检测算子对边缘的敏感性。

2边缘检测的原理

边缘反应了图像局部区域内特征的差别,它表示为图像信息的某种不连续典型(如灰度突变,纹理以及色彩的变化等)。

著名的“马赫带效应”指出:

人的视觉对物体光度变化的部分有特殊的增强效应,即在不同光强度周围引起“过量调整”。

物体边缘特征是与图像中发生灰度跳变的部分相对应的。

因此,基于灰度不连续性特征检测的方法也成为图像边缘检测的主要方法之一。

现有的边缘检测方法也分为两大类:

一类是基于某种固定的局部算法,如微分法,拟合法等,它们属于经典的边缘检测算法;另一类则是以能量最小化为准则的全局检测方法,其特征是运用严格的数学方法对此问题进行分析,给出函数作为最优检测的依据,从全局最优的观点提取边缘,如松弛法,神经网络法等。

根据图像中边缘区域的灰度在空间中的变化形式,边缘一般可以分为三种类型:

阶跃型、屋脊型和线条型,分别如图2.1(a)、2.1(b)、2.1(c)所示,其中阶跃型边缘一般对应着物体的反射边缘,是最常见,最典型的边缘类型。

图2.1三种常见边缘类型

图2.1(a)是理想的边缘,而在现实中,图像的灰度都有一个渐变的过程,如图2.2所示,下面两个分别是它的一阶导数和二阶导数,在灰度不变的区域,一阶导数为零。

在边缘与黑色一边相关的跃变点二阶导数为正,在边缘与亮色一边相关的阶跃点二阶导数为负,沿着斜坡以及灰度为常数的区域为零[7]。

边缘检测并不是最终的目的,而在边缘检测之前也还有很多前期的图像处理工作要做,如去除部分噪声,增强图像的边缘等,因此,图像的边缘检测一般分为以下四个步骤:

1)滤波:

边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测方法的性能。

需要指出,大多数滤波器在降低噪声的同时也导致了边缘强度的损失。

因此边缘增强和降低图像噪声之间需要取得一种平衡。

2)增强:

增强边缘的基础是确定图像中各点领域强度的变化值。

增强算法可以突出领域强度值有显著变化的点。

边缘增强一般是通过计算梯度幅值来完成的。

3)检测:

在图像中有许多点的梯度幅值比较大,而这些点并不一定都是边缘,所以应该用某种方法来确定哪些点是边缘点。

最简单的边缘检测判据是梯度幅值阈值判据。

4)定位:

确定边缘所在的像素,如果要更加精确地确定边缘位置,也可以在子像素分辨率上来估计边缘位置,边缘的方向也可以被估计出来[8]。

在边缘检测算法中,前三个步骤用得十分普遍。

这是因为在大多数情况下,仅仅需要边缘检测指出边缘出现在图像某一点像素的附近,而没有必要指出边缘的精确位置或方位。

边缘检测误差通常是指边缘误分类误差,即把假边缘误判为真边缘加以保留,或者是把真边缘当成假边缘去除。

边缘估计误差是使用概率统计模型来描述边缘的位置和方向误差的。

为了实现多尺度滤波条件下多分辨率图像边缘检测,很多时候需

 

要把多尺度滤波同边缘检测算法结合起来使用,通常能得到比单尺度更精确的边缘。

 

3基于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算子的边缘检测算法流程图

(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算子使边缘变粗的影响,本算法利用边缘梯度方向信息,在作阈值分割时,对每个高于门限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的存储深度为320×4。

写入地址按计数器正常累加即可,读出时地址要根据Sobel算子模板的要求每次按3×3的矩阵位置依次取出9个数。

为了避免数据重复取出,在新的一行数据写入完毕后给出指令,在收到指令后进行对三行数据的读出操作。

读出三行数据需要2862个时钟周期,为了使写数和读数的等待时间不至于过长,这里设计写数时钟为10M,读数时钟为100M。

“数据并行输出模块”将从双端口RAM中取出的9个一组的数据依次赋给9个变量,然后在一个周期内将这9个数据送给后面的模板做边缘响应计算。

在数据的存人和取出的设计中尽量少地使用存储空间,并要兼顾存人的数据不会覆盖未被取出的数据和避免数据重复取出的情况是设计的难点。

图3.10FPGA实现“边缘响应计算”和“非最大值抑制”的原理图

(2)“Sobel检测算子”计算模块中主要包括一个模板计算模块,一个判断模块和三个比较模块。

对计算模块的设计要求在尽量少的时钟周期里计算出边缘响应结果及找出其所对应的边缘方向,观察8个方向的Sobel检测算子之问系数位置的特点,计算结果应该是两两互为相反数,因此只需将其中的4个模板与存储模块送来的9个并行数据进行卷积计算即可。

模板中系数包括-2,-1,0,1,2五种,在VHDL语言设计中乘2相当于数据位左移一位,负数可以用其相反数取反加1来表示。

如果将9个数据依次和四个模板计算一遍仍需耗费大量的时钟周期,这里利用VHDL语句并行处理可在一个时钟周期内将9个数据与可能遇到的系数相乘的结果全部计算出来,再分别和四个模板的系数位置相对应。

这样仅需要五个时钟周期即可得到9个数据与四个模板计算的结果,大大节省了计算时间。

在比较模块中将四个计算结果两两比较,比较结果及对应的模板号送入判断模块中。

由于每个计算结果对应两个模板号,在判断模块中做标记后,再将前两次比较后大的两个再次比较,得到最大值及其所对应的模板号。

这个最大值即为边缘响应结果,其对应的模板号即为边缘方向。

这个结果以19位数据形式输出,低16位为数据位,高3位为模板号。

(3)数据存储模块B与数据存储模块A功能相同,存储的数据是边缘响应的结果(低16位)并带边缘方向(高3位),数据宽度为19位。

数据的存入和取出的设计中仍需注意尽量少地使用存储空间,并要兼顾存入的数据不会覆盖未被取出的数据和避免数据重复取出的情况。

(4)在“非最大值抑制”模块中,首先将输入的除中间数据外的8个数据分别和中间数据作比较,将8个比较结果送给“抑制结果判断模块”,同时将中间数据及其梯度方向直接送给“抑制结果判断模块”。

在判断模块中观察梯度方向上两个数据与中间数据的比较结果,如果至少有一个边缘强度超过当前像素的边缘强度,则当前数据的边缘强度被置为0,如果中间数据的边缘强度最大,则该数据保留。

最后将比较结果和梯度方向输出,即完成了“非最大值抑制”。

参考文献

[1]曾繁泰,陈美金等VHDL程序设计[M].北京:

清华大学出版社.2001.1~2

[2]龚声蓉,刘纯平,王强等数字图像处理与分析[M].北京:

清华大学出版社.

[3]傅晓薇,方康玲,一种改进的快速模糊边缘检测算法[.武汉科技大学报

[4]幻万力一种基于cann祺法的边缘提取改善方法[J].计算机技术与自动化

[5]赵西安,李德仁.小波多尺度影像边缘聚焦算法[J].遥感学报.

[6]杨福生小波变换的工程分析与应用[M].北京:

科学出版社.2000.11

[7]崔景泰小波分析导论[M].西安:

西安交通大学出版社.1995.

[8]程正兴小波分析算法与应用[M].西安:

西安交通大学出版社.1998.

[9]秦前清,杨宗凯.实用小波分析[M].西安:

西安电子科技大学出版社.1995.

[10]杨煊,基于图像信息测度的多尺度边缘检测方法研究[J].西安交通大学.

[11]闭辛春艳.VHDL硬件描述语言[M].北京:

国防工业出版社.202.6-7

[12]于凤,张丽英,寥宗建.可编程逻辑器件应用技术[M].北京:

科学出版社.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2