APP下载

嵌入式实时Canny边缘检测

2017-10-21南开来傅超斌

网络安全与数据管理 2017年19期
关键词:端点梯度边缘

南开来,傅超斌

(杭州电子科技大学 计算机学院,浙江 杭州 310018)

嵌入式实时Canny边缘检测

南开来,傅超斌

(杭州电子科技大学 计算机学院,浙江 杭州 310018)

基于传统Canny算子,提出CY68013+FPGA的嵌入式硬件架构下的快速实时边缘检测算法。主机通过CY68013 USB接口芯片高速传输图像数据,FGPA从USB口采集图像信息,并使用优化的Canny算法实现边缘提取。该算法针对FPGA的特点进行了优化,包括用模板替代卷积、适当的近似变换、充分利用FPGA的并行特性等,在保持了Canny算子原有的定位准确、单边响应和信噪比高等优点的基础上,提高了边缘提取的计算速度,减小了计算延迟,提高了实时性。

CY68013;FPGA;Canny;嵌入式;边缘检测

0 引言

嵌入式的图像处理在很多领域都具有重要作用,尤其是边缘提取,但是现有的设备普遍计算复杂,等待时间较长,不具备高速实时检测图像边缘的能力,使得生产效率受到了限制。为此,提出一种全新的嵌入式硬件架构CY68013+FPGA,以及针对FPGA优化的Canny边缘检测算法,其可以充分利用USB2.0 高速接口接收图像和FGPA的并行特性检测边缘,大大提高计算速度和实时性,同时解放主机,分担主机的计算压力。

1 数据传输部分

主机通过发送图像数据到现场可编程逻辑门阵列(Field-Programmable Gate Array, FPGA),FPGA对接收到的图像进行处理。为了提高处理的实时性能,选用了通用串行总线(Universal Serial Bus,USB)接口作为数据高速传输接口,为了简化USB协议的设计,选用了USB协议处理芯片CY68013。

1.1CY68013(EZ-USBFX2)

CY68013 (EZ-USB FX2)[1]是Cypress半导体公司的新一代高速USB系列,可以用USB2.0最大数据传输速率传输数据。

EZ-USB FX2芯片会自动处理大部分的USB协议[2],用户只需操作应用层数据。芯片一共有4个端点,以及4个缓冲区用于缓存接收或者发送的数据。

自定义主机端与FPGA端的通信协议,主机端和FPGA端通信数据共分4种类型:

(1)主机端写FPGA端的寄存器;

(2)主机端读取FPGA端的寄存器;

(3)主机端发送图片数据;

(4)主机端接收图片数据。

系统的整体模型如图1所示。配置端点2为命令发送端点,方向为OUT,对FPGA端的寄存器进行读写;配置端点4为图片发送端点,方向为OUT,负责传输图片数据到FPGA;配置端点6为命令返回值接收端点,方向为IN,读取寄存器的值从端点6返回;配置端点8为图片回传端点,方向为IN,负责将FPGA中处理完成的图片数据发回给主机。

图1 主机与FPGA数据交互示意图

所有的数据传输按照如下约定:

(1)发送命令,其格式表如表1所示。

表1 命令格式表

(2)接收命令:只接收32位寄存器值。

(3)发送图片数据:主机先通过端点2将待发送图片相关信息写入对应寄存器,再发送图片数据。发送的图片数据是原始的灰度数据。

(4)接收图片数据:与发送图片数据格式相同。

1.2FPGA端控制读取和发送USB数据

CY68013的4个端点缓冲区,缓存了主机发送给FPGA的数据,再经FPGA发送给主机的数据。FPGA通过从属先进先出缓冲区(Slave First-In-First-Out, Slave FIFO)接口的时序信号、握手信号,读/写信号和输出允许信号等,在接收时从CY68013内部端点中取出应用层的数据,在发送时将待发送数据写入CY68013端点缓冲区。Slave FIFO硬件连接如图2所示。

用于控制USB通信的状态转换过程如图3所示。

图3 FPGA控制Slave FIFO接口的状态转换图

2 Canny算法设计与优化实现

2.1Canny算法的实现框架

Canny算法分5个步骤实现,分别为高斯平滑,梯度分量gx、gy的计算,梯度长度平方计算以及方向编码,非局部最大值抑制,双阈值处理边缘连接。FPGA实现Canny算法整体框图如图4所示。

图4 FPGA实现Canny算法整体框图

2.2高斯平滑去噪

为了减少噪声对边缘提取的影响,先对图像进行平滑[3],图像都是二维的,需要二维的正态分布,即高斯函数来做平滑处理。

以中心点为原点,对上述公式进行离散采样,并进行规范化处理和整数化处理,得到经典的3×3高斯平滑模板,如图5所示。

图5 3×3高斯平滑模板

图像的3×3邻域高斯平滑滤波,需要先生成3×3的数据区,这里使用FPGA内部资源构建了一块3行图像宽度的缓冲区对3×3的像素进行加权平均计算。

2.3计算梯度幅值图像和角度图像

2.3.1梯度

凡是边缘的地方应该是灰度变化比较剧烈的地方,而且有一定的方向性要求。其中,梯度向量是描述灰度变化的剧烈程度和变化方向的重要数学工具。

梯度向量有一个重要的几何性质,它指出了f在位置(x,y)处的最大变化率的方向[4]。

向量的长度表示为M(x,y),即:

它是梯度向量方向变化率的值。

2.3.2梯度分量的离散数学近似

由于处理的是数字量,因此需要求出关于一点的邻域上的偏导数的数字近似。这里使用3×3模板来达到处理效果,3×3像素编号如图6所示。

图6 3×3模板像素编号

为了使图像变得更平滑,消除噪声对于边缘提取的影响,将中间的系数取为2,得到图7所示的模板[4]。

图7 左右分别为x方向和y方向的偏导模板

其近似偏导数的简单的数字近似由下式给出:

2.3.3FPGA实现梯度幅值和角度计算

整体框图中,梯度分量计算模块的作用是为了从图中求得梯度分量,即gx和gy,根据上述近似方法以及推导好的近似3×3模板对图像进行整体滤波即可求得。

同样的,α(x,y)如果按照公式求反三角函数的话会消耗掉大量的FPGA资源,价值不高,可以采用近似算法,根据gx和gy的比值关系以及gx和gy的符号正负,将梯度向量的方向近似地划分到8个区域中,如图8所示。这些区域以0°、45°、90°、135°为中心角度,每个方向±22.5°。对于整个坐标系而言,梯度向量的方向共分为8类,但是对于非局部最大值抑制的实现,利用中心对称原理,只需要4个方向。采用这样的近似策略,能够在几乎不损失精度的情况下,大大减少FPGA的资源消耗。另外方向划分需要用到除法,在FPGA中除法所需要消耗的资源和时钟数远远大于乘法,为了进一步减少资源的消耗,需要将两者商的比较转换为一个数与另两个数的乘积的比较。

(1)当gy

(2)当gy>gx×tan22.5° 并且gy

(3)当gy>gx×tan67.5°,则为竖直边缘,梯度方向为水平,编码“02”。

(4)当gy>gx×tan22.5° 并且gy

梯度方向的编码如图9所示。

图8 梯度方向划分为8类

图9 梯度方向的编码

其中,两个三角函数的值可以事先计算出来,可以将不等式两边都放大1 024倍,由于1 024为2的幂,乘积运算可以转成移位计算,效率非常高,而且又能等效地保留较多的小数位数,保证了精确度。

2.4对梯度幅值图像应用非最大值抑制

仅仅得到全局的梯度并不足以确定边缘,为确定边缘,必须保留局部梯度最大的点,而抑制非极大值。非局部极大值抑制模块,首先取出3×3邻域像素值,即正方形区域的9个像素值,根据中心点所划分的梯度方向,判断该中心点的像素的梯度长度的平方Msquare是否为该3×3邻域该梯度方向上的极大值,如果是则保留,如果不是则舍弃。

2.5双阈值处理及边缘连接

3 实验结果

图10从上至下从左至右依次是原图、灰度图、OpenCV软件处理结果和FPGA硬件处理结果,实验结果表明CY68013+FPGA的架构可以实时对图像提取较为精准的边缘。

图10 实验结果图

4 结论

本文通过USB2.0高速接口进行图像数据传输,基于对传统Canny算法的分析,结合硬件实现的特点对算法进行了改进,并在FPGA上实现,实现FPGA接收图像,经Canny边缘提取然后高速将处理完的图片传回主机。实验结果表明在CY68013+FGPA的架构下,该算法可以按照预期实时地提取出图像的边缘。

[1] Cypress Semiconductor. EZ-USB technical reference manual[EB/OL].(2014-04-24)[2014-08-06].http://www.cypress.com.

[2] 钱峰. EZ-USB FX2单片机原理、编程及应用[M].北京:北京航空航天大学出版社,2006.

[3] 王植,贺赛先. 一种基于Canny理论的自适应边缘检测方法[J].中国图像图形学报,2004,9(8): 957-958.

[4] Gonzalez, Woods著. 数字图像处理[M].阮秋琦,阮宇智,等译. 北京:电子工业出版社, 2011.

Embedeed real-time Canny edge detection

Nan Kailai, Fu Chaobin

(College of Computer, Hangzhou Dianzi University, Hangzhou 310018, China)

Based on traditional Canny operator, a high speed and real-time edge detector based on embedded hardware architecture of CY68013 and FPGA is proposed. USB interface chip CY68013 is used to transmit the image data in high speed and FPGA is used to receive the image data from USB and realize edge detection by method of improved Canny algorithm. The proposed algorithm based on traditional Canny algorithm is improved in various aspects, including using the calculated template instead of convolution, appropriate approximate transformation, making full use of the parallel speciality. It not only keeps the advantages of traditional Canny algorithm, such as accurate positioning, unilateral response and high signal to noise ratio, but also speeds up the calculation of edge detection, decreases the latch, increases the real-time property.

CY68013; FPGA; Canny; embedded; edge detection

TP751

A

10.19358/j.issn.1674- 7720.2017.19.013

南开来,傅超斌.嵌入式实时Canny边缘检测[J].微型机与应用,2017,36(19):45-47,51.

2017-03-12)

南开来(1992-),通信作者,男,硕士研究生,主要研究方向:基于可编程逻辑阵列的图像处理。E-mail:379838266@qq.com。傅超斌(1993-),男,硕士研究生,主要研究方向:LD-VHDL的并行编译。

猜你喜欢

端点梯度边缘
非特征端点条件下PM函数的迭代根
一个带重启步的改进PRP型谱共轭梯度法
一个改进的WYL型三项共轭梯度法
一种自适应Dai-Liao共轭梯度法
不等式求解过程中端点的确定
一个具梯度项的p-Laplace 方程弱解的存在性
一张图看懂边缘计算
基丁能虽匹配延拓法LMD端点效应处理
在边缘寻找自我
走在边缘