【学术论文】基于Sobel算法图像边缘检测的FPGA实现

摘要:

针对嵌入式软件无法满足数字图像实时处理速度问题,提出用硬件加速器的思想,通过FPGA实现Sobel边缘检测算法。通过乒乓操作、并行处理数据和流水线设计,大大提高算法的处理速度。采用模块的硬件设计,保证了系统的可移植性和系统的扩展性。最后使用Verilog HDL编程实现算法处理,并用Modelsim和MATLAB进行了仿真和验证。

中文引用格式: 杜正聪,宁龙飞. 基于Sobel算法图像边缘检测的FPGA实现[J].电子技术应用,2016,42(10):89-91,95.
英文引用格式: Du Zhengcong,Ning Longfei. Image edge detection based on Sobel algorithm in FPGA implementation[J].Application of Electronic Technique,2016,42(10):89-91,95.

0 引言

图像的边缘检测是数字图像处理领域的一项关键技术,是图像分割、运动检测、目标跟踪、人脸识别等技术的基础[1]。随着电子信息技术的高速发展,图像的边缘检测在航天、工业、医学、军事等领域有着广泛的应用和发展[2]。在这些应用中,通常选用ARM和DSP等作为处理器,通过嵌入式软件来处理信息,但随着待处理信息量越来越大,算法复杂度越来越高,单核处理器处理速度已不能满足某些系统的需求。

本文在研究Sobel算法[3]的基础上,针对嵌入式软件无法满足实时数据处理速度的要求,引入硬件加速器的思想,采用RAM+FPGA硬件结构,通过嵌入式软件提供从机接口,控制加速器进行工作,硬件加速器(FPGA)通过模块化设计,采用流水线设计和乒乓操作大幅提高实时处理数据速度,实现图像的边缘检测。从机接口一般通过嵌入式软件读写寄存器来完成。

1 边缘检测和Sobel算法

边缘检测是分析视频和图像的重要方法,主要检测和确定图像在哪些区域上亮度发生突变,这些亮度突变的区域通常就是物体的边缘。

以灰度图像为例,分辨率为M×N的图像由M×N个像素组成。Sobel 检测法把中心像素点和离它最近的8个像素点每个乘以一个系数后相加,类似卷积的过程来估计每个像素点x、y方向上的导数值。该系数通常用一个卷积表(Convolution Mask)来表示。分别用于计算x和y方向导数值的Sobel卷积表Dx和Dy如下所示[4]

把每个像素值分别乘以卷积表中对应的数,再把相乘得到的9个数相加就得到了x方向和y方向的偏导数值Dx和Dy。然后,利用这两个偏导数值计算中心像素点的导数。

计算公式如下:

由于开平方和平方函数都是单调的,实际计算幅度的最大值、最小值与近似以后计算的最大值、最小值发生在图像的同一个地方。并且,与计算平方和开平方相比,计算绝对值所用的硬件资源少得多。若要找到导数幅值的最大值和最小值,对式(1)作如下简化:

需要重复地计算图像中每个像素位的导数幅值。但是,注意到环绕图像边缘的像素点并没有一个完整的相邻像素组来计算偏导数和导数,所以要对这些像素进行单独处理。最简单的方法就是把图像中边缘像素点的导数值|D|设置为0。

2 Sobel边缘检测法的硬件实现

2.1 Sobel加速器结构

硬件加速实质上是通过增加运算并行性达到加速的目的,常常采用硬件复制和流水线的方法。

边缘检测加速器系统的原理框图如图1所示。视频或图像数字信号通过 I/O 控制器输入,保存在存储器中;在RAM处理器控制下运行的硬件加速器,读入存储器中存储的帧图像(数据),并进行边缘检测算法实现,最后将得到相应的导数图像写入存储器。在实际应用中,选取硬件加速器对时耗大的算法进行加速,大大降低其他处理器(如 DSP、ARM 等)的负担。

I/O控制器和加速器通过DMA(Direct Memory Access)方式直接发起对内存的访问而不通过处理器,大大加快访问内存的速度。为避免多个设备同时访问内存发生冲突,在系统中引入仲裁器。仲裁器的仲裁策略为:唯一申请者获得资源。这样,ARM(CPU)对加速器进行配置,配置待处理数据源地址和目标地址,然后启动加速器,释放总线资源;ACC在接收到启动命令之后,要申请资源,完成算法实现后,用中断的方式反馈给RAM(CPU),同时释放资源。

2.2 基于FPGA的硬件加速器

图像边缘检测数据具有数据量大,可并行处理及重复操作等特点,用FPGA可实现硬件并行处理信息;通过流水线设计技术和乒乓操作的架构设计,可以进一步提高实现算法组合逻辑处理速度和系统处理信息的吞吐量,因此FPGA对处理图像边缘检测数据有着天然的优势。本文采用面向流处理的加速器处理按照顺序到达的数据流。

系统基于Altera公司的Cyclone IV系列FPGA,采用从顶向下模块化设计方法,利用攀岩法建模,具有良好的移植性和系统扩展性。图2为边缘检测实时处理图。

图3为硬件加速器模块设计图。设计中将系统数据流和控制流分开进行,这样在设计数据流时就不必在意数据何时输入何时输出的问题,而把这些问题转移到控制流设计阶段中去。在控制流设计阶段系统地考虑数据流的控制,将使得电路设计更加系统,修改更加方便。控制流的设计一般借助于状态机(FSM)。

以实现分辨率600×400的8 bit灰度图片为例,系统设计数据总线位宽32 bit,通过总线分时复用,分别从memory取数据,放置32 bit*_row_reg寄存器,为减少产生无效数据,增加硬件设计的复杂性,等待数据分别装满*_row_reg寄存器,才开始移位计算Sobel算子结果,这就造成移位时不能写入数据,写入数据时不能移位,产生大量的等待时间。本文通过插入*_row移位寄存器,把写数据和移位分开处理,实现系统的全线流水。

对于Sobel算法单元,为了节约资源和提高处理速度,有些设计采用分布式算法,利用查找表代替乘法器进行乘法运算[5],这样无法做到对任意随机数据的处理。本文为避免使用乘法器,通过移位实现乘法运算。数据流水进入产生的无效数据设置为左边界,数据流水排除的无效数据设置为右边界,顶行和末行为无效行设置上下边界。图4为Sobel算法架构图。

3 系统仿真和结果分析

本文采用600×400的灰度图像作为研究对象,仿真和验证结果如图5所示。

通过MATLAB将灰度图片imag1.bmp(任意格式)处理转换成imag.txt文件,存储在Memory中,用Verilog实现Sobel算法,Modelsim仿真数据生成data.txt文件,再利用MATLAB将data.txt文件通过门限处理转换成图片tes.bmp。用MATLAB直接调用Sobel函数处理初始灰度模式图片,生成图片imag2.bmp,比较两图片,验证FPGA处理的正确性。

从仿真结果和实验所得图像来看,该设计很好地完成了Sobel算法的边缘检测任务,使用RAM+FPGA加速器结构,以50 MHz(实验仿真使用值)时钟驱动为例,处理一幅600×400图像,所需时间为19.2 ms,每秒可处理图像208幅,满足实时系统要求,解决单核处理器运算时间长的问题。解放控制单元去实现更复杂的控制和功能。

4 结论

本文基于FPGA引用硬件加速器思想,解决嵌入式软件无法满足信息的实时性处理问题,用Verilog编程硬件实现图像数字信号读写、Sobel算法实现,完成图像边缘检测;通过FPGA乒乓操作、并行处理和流水线设计完成数据量大、重复率高的图像边缘检测数据处理,大大提高了系统效率,达到了实时性要求。同时引用模块化的设计方法,自顶向下利用攀岩法建模,使得设计具有良好的可移植性和系统可扩展性,具有极大的实用价值。

参考文献

[1] 何俊峰.基于视觉原理的图像边缘检测算子研究[D].武汉:华中科技大学,2006.

[2] Yu Yuanhui,Chang Chinchen.A new edge detection approach based on image context analysis[J].SCI,Image and Vision Computing,2006,24:1090-1102.

[3] 林伟,周剑扬.图像边缘检测高速数字滤波器设计与实现研究[J].现代电子技术,2006(6):26-29.

[4] 吴海彬,何祖恩,李文锦.基于改进Sobel算子的图像边缘检测及其嵌入式实现[J].机床与液压,2009,37(10):133-136.

[5] 叶敏,周文晖,顾伟康.基于FPGA的实时图像滤波及边缘检测方法[J].传感技术学报,2007,20(3):623-627.

 

(0)

相关推荐

  • 使用OpenCV+Python进行Canny边缘检测

    重磅干货,第一时间送达 如果我们环顾房间,我们会看到大量的物体,每一个都很容易区分,并有自己独特的边缘.我们区分物体的先天能力部分来自于我们的视觉系统检测边缘的能力.检测边缘是视觉的一项基本任务,尽管 ...

  • 使用 Python 的基于边缘和基于区域的分割

    重磅干货,第一时间送达 在这篇文章中,我将重点介绍基于边缘和基于区域的分割技术,在进入细节之前,我们需要了解什么是分割以及它是如何工作的. 分割 图像分割是一种将数字图像分割成各种图像对象的技术. 一 ...

  • 【有三说图像】边缘检测(上)

    02 这是有三说图像第2期,边缘检测上篇 言有三 毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人 作者 | 言有三(微信号Longlongtogo) 编辑 | 言有三 这是<有三说图 ...

  • 图像特征提取(颜色,纹理,形状)

    来源:新机器视觉 来自:小白学视觉公众号 编辑:王萌(深度学习冲鸭公众号) 著作权归作者所有,本文仅作学术分享,若侵权,请联系后台删文处理 后台回复西瓜手推获得西瓜书手推笔记 后台回复CV入坑必备获得 ...

  • Xilinx 7系列FPGA入门级图像处理-完整版V1

    将之前的各个文章合起来,形成一个PDF,主要目录如下: 1 基于FPGA的HDMI显示 1.1 HDMI简介 1.2基于FPGA的HDMI接口设计 1.3 HDMI时序分析 1.4基于FPGA的720 ...

  • 【学术论文】Kalman-FOPID算法在数控恒流源中的控制研究

    摘要: 光学测量领域中,光源对恒流源的要求较高,现有的恒流源系统存在着系统噪声与测量噪声,影响了电流的输出精度.将Kalman滤波算法与FOPID控制策略相结合,构建Kalman-FOPID控制器,在 ...

  • 【学术论文】窄带噪声主动控制系统的FPGA实现

    摘要: 基于FPGA的窄带噪声主动控制系统,采用并行计算能力强的FPGA作为核心处理器,能够应对多频率.多通道情况下计算量成倍增加的情况:系统实现了并联结构的窄带前馈FxLMS算法,可以针对噪声中的不 ...

  • 【学术论文】基于JPEG2000算法的图像编码装置的设计

    摘要 针对遥感图像分辨率的不断提高以及传输通道带宽限制的问题,提出了一种FPGA控制的专用JPEG2000标准算法集成电路的高帧频图像编码装置.原始图像数据通过LVDS接口接收,再经过乒乓缓存后传给压 ...

  • 【学术论文】基于CORDIC的高速Sobel算法实现

    摘要: 为提高图像边缘检测的处理速度,提出一种基于CORDIC的高速Sobel算法实现.在FPGA平台上,在并行处理数据和流水线操作的基础上,使用扩展数据位和覆盖所有角度的流水线型CORDIC,提高S ...

  • 【学术论文】基于深度学习的复杂分拣图像快速识别方法研究

       摘 要 : 训练速度更快.识别精准度更高的图像识别技术一直是智能技术的研究热点及前沿.针对物流分拣仓库环境复杂.照明度不高以及快递外包装区别不明显的特点,对基于深度学习的分拣图像快速识别进行了研 ...

  • 【学术论文】基于DDR2的高速图像数据传输系统设计

       摘 要 : 在高速图像数据传输系统中,针对图像数据"高吞吐量"与"大容量"数据缓存的应用需求,提出了一种基于DDR2 SDRAM的高速图像数据传输系统设计 ...

  • 【学术论文】基于半边结构的STL文件快速拓扑算法

       摘 要 : 针对三维模型转换为STL文件后会丢失三角面间的拓扑关系,在对STL格式文件进行读取和分析时,提出了一种基于半边结构和哈希表的快速拓扑重构算法.在读取数据过程中,通过哈希表建立无重复位 ...

  • 【学术论文】基于非对称算法的工控核心区内嵌认证技术

    导读: 特约主编:林荣恒 博士,北京邮电大学网络与交换技术国家重点实验室副教授,中国计算机学会服务计算专委会专委委员.长期从事云计算与大数据等的研究,研究方向集中在行业特别是工业大数据等方面,先后完成 ...

  • 【学术论文】基于目标多区域分割的抗干扰跟踪算法研究

    摘要: 针对视频序列中运动目标跟踪过程中可能出现的目标旋转.遮挡.形变等原因造成的跟踪失败问题,提出了一种基于目标多区域分割的跟踪方法.主要通过将目标划分为多个部分相互重叠的区域,然后选择跟踪过程中相 ...