基于改进Canny算法的实时边缘检测系统设计与硬件实现

2018-05-11 00:53赵安才周强
电子设计工程 2018年7期
关键词:像素点梯度边缘

赵安才,周强

(北京航空航天大学自动化科学与电气工程学院,北京100191)

图像的边缘通俗讲是指图像中前景与背景之间的分割界线,这些分割界线是由一系列的像素点构成的,且其有一个共同点,即其领域内的颜色灰度存在阶跃变化。由于其隐含着相当一部分的图像信息,是图像的分割,乃至更深层次的理解及识别的重要特征。因而对图像边缘的检测提取一直都是计算机识别中非常重要的图像处理手段,能否准确、快速进行边缘的提取也将影响高层次图像处理如理解、识别的效果和性能。

图像边缘检测的主要目标是要把图像中的边界从图像中分离开来,一般是通过分析边界部分与其他地方的区别和特点,并运用一定的数学手段判断构成边界的像素的位置,进而达到提取的目的。针对这个目的,广大研究者提出开发了很多的算法,这些算法虽然多种多样,各有侧重点,但有个共同点,即都是利用微分运算这一数学手段实现的,对图像每个像素点领域内颜色灰度进行一阶或者二阶微分运算,通过其变化规律对边缘像素点进行定位和提取。比较常见的边缘检测算法有Roberts算法、Sobel算法、Prewitt算法、拉普拉斯算法等[1]。上述这些检测算子大多流程较为简单,处理速度快,但也存在定位精度不足或者对干扰敏感的缺点,而1986年由John F.Canny提出的Canny边缘检测算法则很好的克服了这些缺点,目前已经被广泛采用,成为了图像边缘检测领域中一种经典算法。

在视频应用中,强调对信号的实时处理,而且对实时性的要求越来越高,传统用软件实现算法的方式由于其使用通用处理器的特点,对于复杂的算法,很难大幅度提高其运算速度。随着FPGA的不断发展及其并行处理的优势,人们开始尝试把一些算法移植到FPGA平台上,通过硬件的方式实现所需的功能,实际效果也表明这种方式能够大大加快运算的速度,更适合对实时性要求高的应用。

1 传统Canny算法的原理及其特点

1.1 传统Canny边缘检测算法的原理

Canny算法设计有如下特点:首先,要最大程度检测到图像的实际边缘;其次,检测到边缘的位置要最大程度接近其实际位置;最后,系统对伪边缘的响应要尽可能少[2]。

算法的实施主要有如下4个步骤:

1)选取合适的高斯滤波函数,对图像进行平滑处理,以消除采集过程受到的干扰;

2)利用Sobel梯度模板计算图像每个像素点I(x,y)的梯度。其中,x方向和y方向的偏导数dx和dy分别为:

则梯度幅值为:

梯度方向为:

3)进行非极大值抑制:遍历图像,将每个像素的梯度值和其梯度方向上邻近两个像素的梯度值进行比较,若不是最大,则将其剔除[3];

4)双阈值化处理:选取两个阈值—高阈值TH和低阈值TL(一般取TL=0.4TH),对上一步骤输出的图像遍历,若某像素点的梯度值大于TH则一定是边缘;若小于TL则一定不是边缘;若大于TL且又小于TH,则此时如果该点的8邻域内有梯度值大于TH的边缘像素,则判定为边缘,否则就不是边缘[4-6]。

1.2 传统Canny边缘检测算法的缺点

比较其它边缘检测算法而言,传统的Canny算法有着更好的检测效果,但仍存在不足之处[7],比如边缘连接中的阈值是提前选取的固定值,当外界环境如光线等发生变化时,待检测图像也会发生变化,此时阈值就需要重新调整,因而自适应能力较差。因而本文采用了一种新的算法,其针对性地做了一些改进。

2 改进的Canny算法介绍

在传统方法中,基于双阈值的边缘连接需要针对特定的图像提前设置好对应的阈值,如果待检测对象出现变化或者由于检测对象所处的外界环境如光线等发生变化,则又需要重新设置阈值,显然这不能很好的满足自动化的需求。本文运用OSTU算法(最大类间方差法),也称大津法,来确定适合图像的阈值,从而能够很好的解决上述所说问题。

自从OSTU算法提出之后,就被广泛应用于图像处理领域,尤其是图像二值化[8]。其思想同样适用于边缘连接阈值的选取。按照最大类间方差法的思想,类间方差即表征着两个类之间的差别,并且成正相关。对于大小为M×N的图像I(x,y),令目标和背景的分割阈值为T,目标包含N0个像素点,所占比例记为ω0,其平均灰度记为μ0;背景包含N1个像素点,所占比例为ω1,其平均灰度为μ1。记μ为图像的总平均灰度,g为目标和背景的类间方差[9-10]。则有:

由上述各式整理可得到等价公式:

每一种可能的阈值T都对应可计算出g,比较可得g的最大值,此时对应的阈值T,即为所求。

3 系统设计及其硬件实现

本文所设计的系统以FPGA芯片为核心,辅以外围电路,一起构成了实时图像边缘检测系统。系统硬件部分由OV7670摄像头模块、FPGA最小系统、SDRAM模块电路和显示器组成。另外在FPGA内部通过编程实现I2C配置、图像采集、SDRAM控制、Canny边缘检测、VGA控制等功能单元电路,也是本文所要探讨的核心内容。系统的总体框图如图1所示。

其中I2C配置模块实现与摄像头模块的通信,并对其工作方式等进行配置[11];图像采集模块用于接收摄像头模块传来的图像原始数据,并进行相应的转换,输出可供使用的图像数据;SDRAM控制模块实现将图像数据转存到存储芯片中的读写控制[12];边缘检测模块实现图像边缘的检测并输出相应数据;最后在VGA控制模块的控制下送往显示器显示。

图1 实时视频边缘检测系统总体框图

3.1 I2C配置模块

I2C总线包括两根线:串行数据线SDA和串行时钟线SCL,主要用于主从机之间的通信,本文通过I2C总线写寄存器的方式设置OV7670摄像头模块的工作模式和参数,如图像格式、分辨率和白平衡等。配置模块设计的基本思路是通过系统时钟分频得到频率为10 kHz的时钟作为SCL信号输出,并将OV7670模块的设备地址、子地址和数据存储在位宽为24 bit的寄存器中,最后按照I2C的工作时序将数据逐位输出到SDA上。

3.2 图像采集模块

摄像头模块输出的数据为原始数据,无法直接使用,因而需要进行必要的转换和筛选。图像采集单元完成上述的转换和筛选功能,可根据摄像头模块的输出时序来设计。一方面接收有效的图像数据,并剔除消隐行、开始以及结束标志位数据;另一方面,通过帧计数器控制过滤摄像头模块工作不稳定时期的图像数据。

3.3 SDRAM控制模块

采集到的图像数据需要转存到SDRAM芯片中,这个读写的过程需要控制模块来完成。该模块包括BANK切换控制,SDRAM读写控制和FIFO缓存模块。BANK切换控制是为了实现“乒乓”操作以解决时钟速率不匹配的问题,进而实现图像的实时传输。

3.4 Canny边缘检测模块的设计

本文通过verilog语言编程实现了改进Canny算法边缘检测模块的设计,图像数据经过处理即可得到相应的边缘数据。该部分包括高斯滤波、梯度计算、非极大值抑制、阈值计算和边缘连接等子模块[13],其总体框图如图2所示。下面将分别讨论各个子模块的设计。

图2 Canny边缘检测模块的总体框图

3.4.1 高斯滤波

摄像头采集得到的图像数据往往包含着大量的噪声,因而需要通过高斯滤波对图像进行平滑处理,滤除噪声。为简化设计,高斯滤波模块可由开窗电路和高斯模板卷积运算组成。硬件框图如图3所示,高斯模板可选择3×3或者5×5大小[14],这里我们选择 3×3的模板,可利用 IP核 ShifRegister(RAM based)对图像数据进行缓存,。模板卷积运算可利用IP核ALTMULT_ADD和PARALLEL_ADD来实现。

图3 高斯滤波模块的硬件框图

3.4.2 梯度计算

该过程类似于高斯滤波,可通过模板简化设计,本文选用Sobel梯度算子,但需要X,Y两个方向的梯度模板[15],分别计算两个方向的梯度,记为GX,GY,则梯度幅值,梯度方向,通过上述两个公式虽然可以计算出更为精确的梯度,但鉴于开方运算和反正切运算在实现时比较占用硬件资源,同时会增加延迟时间,因而实际设计中可以采用一些简化设计,如梯度幅值G≈|GX|+|GY|;对于梯度方向而言,由于在进行非极大值抑制时,我们仅仅需要确定法向方向在哪一条线上,并不需要确定具体指向哪个方向[16],因此可以通过判断GX和GY以估计其方向,判别的准则如图4所示,整个坐标系共分为八类,但是利用对称性的特点,只需要Ⅰ~Ⅳ4个方向即可。

3.4.3 非极大值抑制

非极大值抑制的目的是把虚假边缘从响应结果中剔除掉,以达到最小响应的准则要求,通过在某个邻域内把每个像素点的梯度值和相应梯度方向上的邻近像素点梯度值进行比较,根据是否为局部最大值,来判断其是否为边缘点[17]。可以通过FIFO缓冲器和3级D触发器截取以当前像素为中心的3×3窗口,从而进行相应的比较。其中开窗电路实现框图如图5所示。

图4 梯度方向判别依据

图5 开窗电路实现框图

3.4.4 阈值计算

在原始的Canny算法中,边缘连接使用的阈值是提前选取的固定值,本文使用最大类间方差法,根据图像梯度数据自适应计算得到合适的阈值。首先用双口RAM进行图像梯度直方图的统计,然后从令分类阈值i=0开始,循环统计ω0,ω1,μ0和μ1,计算类间方差g,并将g为最大时i的值记录在某个寄存器中,待循环结束将该值输出,就是我们所要的阈值T。阈值计算的流程图如图6所示。

图6 阈值计算的流程图

3.4.5 边缘连接

边缘连接是为解决某些边缘部分没有响应而出现的边缘不连续的问题而提出的,其思路是基于双阈值实现的。取上述计算得到的T值作为高阈值TH,则相应的低阈值TL=0.4TH。令该模块的输入为图像g,遍历g中的每个像素,将其梯度值分别和阈值TH、TL比较,若高于阈值,则置 1,否则置 0,比较处理后分别得到图像g1和g2,同时遍历图像g1和g2,如果g1为 1,则判定相应点为边缘点,若g1为 0,g2为 1,此时如果g1的8领域内有为1的点,则记为边缘点,否则为非边缘点。需要说明一点,因为需要根据一幅图像的数据才能计算出阈值,因而,对当前图像的操作使用前一幅图像计算的阈值。硬件实现原理图如图7所示。

图7 边缘连接硬件实现原理图

3.5 VGA控制模块

图像边缘的显示只有严格按照显示器的扫描刷新时序进行才行,因而需要有相应的控制模块对这一过程进行控制。本文中所处理的图像分辨率为640×480,显示器的刷新频率是60 Hz,经过计算应该需要25 MHz的时钟频率配合,可通过系统时钟分频得到。该模块的设计包括行同步信号和场同步信号的产生输出,同时根据时序把图像数据正确的输出到R、G、B 3个通道。

图8 实验结果

4 实验结果及分析

本文选择以Altera EP4CE6F17为核心的FPGA开发板作为平台,进行了系统相关模块的编写实现,最终经过采集、处理得到的图像边缘能够实时地在显示器上显示。实验结果如图8所示,其中图(a)为原始灰度图像,图(b)为外界光线改变时的灰度图像,图(c)、(d)分别为(a)、(b)经过本系统处理得到的边缘图像,由图(c)、图(d)不难发现,本文实现的实时边缘检测系统,在外界环境发生变化时,不需要做出调整,仍然能够很好的检测到图像的边缘,而且能够在一定程度上抵抗噪声的干扰。

5 结论

本文基于改进的Canny边缘检测算法在FPGA上设计实现了实时视频边缘检测系统,能够实时准确的对图像的边缘进行提取,同时,相比传统算法,能够自适应外界光线环境变化,正确的输出图像的边缘数据。本系统在安防监控、工业生产、目标追踪等领域具有一定的应用前景。

参考文献:

[1]陈一虎.图像边缘检测方法综述[J].宝鸡文理学院学报:自然科学版,2013,33(1):16-21.

[2]吉玲,杨亚,付珊珊,等.一种改进的Canny边缘检测算法[J].微处理机,2015(1):40-43.

[3]王文涛,朱顺安,唐菀.一种自适应非极大值抑制边缘检测算法及FPGA设计实现[J].小型微型计算机系统,2014,35(8):1926-1930.

[4]苏连成,王东卫.一种改进的Canny边缘检测算子[J].燕山大学学报,2012,36(5):413-416.

[5]张帆,彭中伟,蒙水金.基于自适应阈值的改进Canny边缘检测方法[J].计算机应用,2012,32(8):2296-2298.

[6]焦圣喜,杨文明,王以纯,等.改进Canny边缘检测算法研究[J].电子制作,2015(5):40.

[7]潘长安.图像边缘检测技术分析[J].黑龙江科技信息,2015(32):64-65.

[8]刘松涛,殷福亮.基于图割的图像分割方法及其新进展[J].自动化学报,2012,38(6):911-922.

[9]殷苏民,朱锦萍,王祖声,等.基于顶帽变换和最大类间方差法的图像分割方法研究[J].科学技术与工程,2014,14(7):60-64.

[10]钱卫星,黄丽亚.二维Otsu自适应阈值快速算法的改进[J].华侨大学学报:自然版,2015,36(4):427-431.

[11]程光伟,李建乐.基于FPGA的视频采集系统设计[J].计算机与数字工程,2013,41(8):1287-1290.

[12]潘明,陈元枝,李强.基于FPGA的图像采集系统的设计[J].国外电子测量技术,2012,31(3):58-61.

[13]李平阳,孙志毅.一种提升Canny算子的自适应边缘检测方法[J].太原科技大学学报,2013,34(3):171-174.

[14]王福强.基于FPGA超分辨率图像放大算法研究及实现[D].绵阳:西南科技大学,2012.

[15]沈德海,侯建,鄂旭.基于改进的Sobel算子边缘检测算法[J].计算机技术与发展,2013(11):22-25.

[16]徐畅.基于FPGA的单目标跟踪系统设计[D].南京:南京理工大学,2016.

[17]Wang J,Wang H,Xiang M,et al.Subpixel accuracy central location of circle target based on nonmaximum suppression[J].Chinese Journal of Scientific Instrument,2012,33(7):1460-1468.

猜你喜欢
像素点梯度边缘
一个改进的WYL型三项共轭梯度法
基于局部相似性的特征匹配筛选算法
一种自适应Dai-Liao共轭梯度法
一类扭积形式的梯度近Ricci孤立子
基于5×5邻域像素点相关性的划痕修复算法
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
一张图看懂边缘计算
地温梯度判定地热异常的探讨
在边缘寻找自我