0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅析FPGA的图像采集和快速移动物体检测

电子工程师 来源:微型机与应用 作者:李翔翔 2021-05-12 15:29 次阅读

摘 要: 提出了一种图像采集和快速移动物体检测的设计,即通过FPGA实现对摄像头的初始化及数据采集,并通过自定义的传输协议将FPGA缓存中的数据传输给ARM7处理器,实现图像数据的快速传输。根据适用范围,本文提出了自适应二值化阀值及相关的检测算法改进。

这对于小型的、低功耗实用型的监控系统具有一定的实用价值。近年来,计算机技术、通信技术、微电子技术迅猛发展,数字监控系统逐步从传统方式的监控系统走向小型化、多样化和智能化。监控系统的发展首先是从图像采集开始的,本文根据项目需要提出了一种基于FPGA的图像采集和移动物体检测的设计方案,用以实现对特定背景下的图像采集和移动物体快速检测。

1 系统总体设计

本系统主要由摄像头初始化模块、图像采集模块、数据传输模块和运动物体检测模块构成。本系统中所使用的FPGA[1]芯片型号是FUSION系列的AFS600。如果只是完成本文中所要实现的内容,则完全可以选择更低性能的FPGA芯片,例如ProASIC3系列的A3P060;如果所选择的芯片没有片内RAM或者片内RAM很小,需要对本文的设计做适当的调整才能完成相应的功能。

本系统中,由FPGA模拟SCCB对摄像头(OV7670)进行初始化,控制端获取图像时再启动FPGA对一幅图像进行采集,将采集到的数据放入一个双端口的RAM存储器中,并将数据传输给控制端。控制端间隔一段时间就通过FPGA采集一幅图像,通过对这些连续的图像进行处理,判定是否有移动物体出现,如果有则可以启动报警系统。本系统中控制端是ARM7系列开发板,图像采集的相关原理图如图1所示。

10608636146615.gif

2 FPGA图像采集端

2.1 摄像头的初始化

本系统实验所使用的摄像头是OV7670,其感官阵列共656×488个像素。OV7670通过SCCB总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率为8 bit的影响数据。用于VGA图像显示最高可达30帧/s。用户可以完全控制图像质量、数据格式和传输方式。摄像头内部包含伽玛曲线、白平衡、饱和度、色度等,这些设置均通过SCCB总线接口完成。

SCCB是和I2C相同的一个协议。SCCB由一根数据线(SIO_D)和一根时钟线(SIO_C)构成,数据线是双向传输的,时钟线是由主机完全控制的。本系统中主机是由FPGA芯片来担任的,对摄像头初始化的过程只是由主机对摄像头内部的寄存器写入数据,不需要完成从摄像头接收数据的过程,而且对摄像头(OV7670)寄存器写入指令的格式很统一。指令由3 B构成,第1个字节为命令字节,对于本文中的摄像头其内容是0x42;第2个字节是一个8 bit寄存器地址;第3个字节为所要修改的寄存器内容。

根据以上分析,通过FPGA实现摄像头初始化的过程简化了SCCB传输协议,不再考虑接收数据;而且由于发送数据固定为24 bit,如果再加上起始、终止和确认位,总共需要传输的状态位为29 bit,通过状态机机制即可很轻松地编写FPGA代码。本系统中将实验所产生的FPGA信号通过逻辑分析仪提取,结果如图2所示。

10608932236403.gif

2.2 图像采集

图像采集要用到OV7670的3个同步信号,分别为VSYNC(场同步信号)、HREF(行同步信号)和PCLK(像素同步信号),三者的时序关系如图3所示。VSYNC的上升沿表示一帧新图像的到来,下降沿则表示一帧图像数据采集的开始;HREF的上升沿表示一行图像数据的开始,HREF为高电平即可开始有效的数据采集;

PCLK下降沿表明数据的产生,PCLK每出现一个下降沿,OV7670 摄像头便传输一个像素数据。最后,当下一个VSYNC信号上升沿到来,表明一帧图像输出结束,同时表示下一帧图像输出开始。从图3中可以看出,当PCLK下降沿到来时摄像头就会更新输出下一个数据;要通过FPGA采集图像数据就要选定一个稳定的图像数据采样点,通过分析图像可知,在PCLK为上升沿时最适合图像数据的采样。

10609023187167.gif

本系统中,FPGA采样得到的数据暂存于一个双端口的内部RAM缓冲存储器中。当收到采集图像命令时,系统首先复位双端口RAM的写地址,每当PCLK上升沿到来时FPGA将数据总线上的数据保存下来,接着再将获得的数据写入双端口缓冲区中,每写完一个数据便对写地址做加1的操作。

其主要流程如图4所示,在用Verilog语言实现对图像数据采集时,检测PCLK上升沿并将总线数据保存到寄存器是在一个周期内完成的,将寄存器中的数据存入双端口RAM是在下一个周期完成的,即如果输入时钟为48 MHz,则通过FPGA可以对24 MHz的像素频率(PCLK)的输出图像进行采集。其采集频率即使对640×480的图像也能达到30帧/s以上的速度。提高图像采集的速度瓶颈关键在图像从FPGA传输到控制端的过程中,因此提高数据的传输速度显得非常重要。

10609230668632.gif

2.3 数据传输

本系统通过一个双端口RAM存储器来做缓冲,与使用外部SRAM相比,其好处是实现简单、不需要外接SRAM芯片,同时作为FPGA内部RAM,其处理速度很快可以达到350 MHz。但是RAM缓冲区的大小有限,不能够存储一幅完整的图像,如果控制端读取数据太慢,可能会使原有的缓冲数据被覆盖。从图3中可以看出,在每一行数据传输结束后都有很长一段行同步时间,通过使用缓冲区可以有效利用这段时间来传输数据。

数据传输过程的实现流程如图5所示,该数据传输过程中使用4根控制线和8根数据线。4根控制线分别是开始(start)、结束(finish)、接收状态(R_ready)和发送状态(S_ready)。图5(a)为FPGA发送端的控制流程,图5(b)为数据接收端的控制流程。发送端中rdata为从RAM缓冲区中读出的数据,raddress为双端口读地址,waddress为双端口写地址,数据采集完毕为采集过程结束的标志。

10609409283052.gif

3 处理器控制端

3.1 移动物体检测研究现状

目前比较常用的运动物体检测的方法主要有3种,分别是光流法、背景差法和帧差法。光流法的基本原理是给图像中的每一个像素分配一个速度矢量,根据各个像素的速度矢量特征,对图像进行动态分析[2],但光流计算方法相当复杂,且抗噪性能差;帧差法的基本原理是利用图像序列相邻两帧之间的差异计算出变化的像素[3];背景差法的主要思想是通过对序列图像建立一个背景模型,估算出当前的最优背景图像,再通过对前景图像与背景图像的差分来判断场景中的运动物体[4]。

3.2 移动物体检测

由于处理速度和资源都十分有限,本系统需要通过无线网络来传输图像,在这样的硬件条件下难以完成视频采集,如果使用帧差法前后两帧之间的差异可能会很大;并且本系统主要起到监控报警的功能,通常所监控的环境移动物体很少,所以选用背景差法进行运动物体检测。

3.2.1 移动物体检测流程

首先要获取初始图像,系统上电后将第一次获取的图像作为初始背景,初始背景并不一定准确,但是随着时间的推移,在自适应背景更新的过程中背景将会越来越趋近于真实的背景;接下来,将采集到的图像与背景做差,得到背景差图像,再对背景差图像做中值滤波处理;之后,对中值滤波后的背景差图像做二值化,从而提取出移动物体即背景差图中的白色部分,在对图像二值化过程中,本系统根据实际应用环境采用自适应的二值化阈值。

3.2.2 中值滤波

由于噪声和运动的相关性,会出现一部分残留的噪声和运动物体内部空洞的现象,需要利用形态学中开和闭运算进行必要的后处理。在众多预处理方法中,中值滤波作为一种常用的图像预处理方法,能够有效地去除噪声、平滑图像,并能够有效地保留图像的边缘信息,所以本系统采用中值滤波来处理图像。

本系统所采用的是快速中值滤波[5]。快速中值滤波的处理过程为:首先获得需要中值滤波处理的像素及其周围像素,结果为一个3×3矩阵;然后分别计算每一行中3个数据的最大值max、中值med和最小值min;再在上面求得的3个最小值中求最大值max_of_min,最大值中求最小值min_of_max,中值中求中值med_of_med;最后在max_of_min、min_of_max和med_of_med中求中值middle,middle即为所求,把3×3矩阵的中间值换成middle就完成了对Data5的中值滤波处理。

3.2.3 自适应阈值

由于阈值的大小对移动物体的检测主要表现在:当阈值定得较大时,会忽略背景差图中的一些微小变化;当阈值定得太小,又会导致出现太多的移动物体,造成错误的移动物体检测。因此,可以根据经验给移动物体个数规定一个上限和一个下限。当检测到的移动物体个数大于所规定的上限时就适当的增大阈值,当移动物体个数小于所设置的下限时就适当地增大阈值。

阈值的变化不是无限的,而是在所容忍的范围之内变化的。本系统经过上述一系列处理后得到的结果如图6、图7所示:图6为包含移动物体及背景的图像,图7为经过一系列处理后得到的对移动物体二值化处理后的结果,其中白色部分为移动物体。

3.2.4 背景自适应更新

现实环境中,即使是固定不变的背景也会因为天气和光照条件的变化、周围环境的影响、物体的经过以及摄像机的轻微抖动等因素而发生变化。因此在长期运行的运动检测系统中背景的更新至关重要。背景更新一般有统计平均法和加权平均法两种方法。统计平均即取几帧图像的平均值作为背景,其公式如下:

本系统采用的更新策略为加权平均,FK表示采集的图像中扣除被判定为移动物的那部分图像,对于移动物体部分,将会保留其原来的背景像素值。

本文重点介绍了图像采集和移动物体检测,系统主要着眼于对一个简单实用型监控系统的研究,为此提出了一些有效的方法。随着硬件技术的发展和芯片价格的下降,系统在日后可以作更大的改进和完善。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1600

    文章

    21279

    浏览量

    592846
  • 图像采集
    +关注

    关注

    2

    文章

    279

    浏览量

    41069
收藏 人收藏

    评论

    相关推荐

    使用RCWL-0516运动传感器构建的智能路灯电路

    这种简单而高度复杂的智能LED路灯电路在检测到路灯下方移动物体时,会自动将路灯从低亮度切换到高亮度。
    的头像 发表于 02-25 13:53 514次阅读
    使用RCWL-0516运动传感器构建的智能路灯电路

    基于RCWL-0516的安全报警电路

    该安全报警电路使用 RCWL-0516 微波雷达运动传感器,将检测限制区域内的任何移动物体并打开警报声。
    的头像 发表于 02-25 13:48 253次阅读
    基于RCWL-0516的安全报警电路

    实现稳定物体检测所需的光电传感器选择方法和使用方法

    使用反射型传感器时,应用上的各种要素将会影响光电传感器的物体检测。尤其对于黑色物体、光泽物体及透明物体等,使用传统光电传感器难以实现稳定的检测
    的头像 发表于 01-13 08:23 292次阅读
    实现稳定<b class='flag-5'>物体检测</b>所需的光电传感器选择方法和使用方法

    线扫相机速度和行频的关系

    线扫相机是一种常见的工业视觉设备,通常用于快速捕捉运动物体图像。与常规相机不同的是,线扫相机使用一个相对较短的曝光时间和一个类似扫描的技术来捕捉整个图像。这种扫描方式可以帮助减少运
    的头像 发表于 12-15 10:34 1470次阅读

    使用傅里叶叠层成像对运动物体进行高分辨率成像

    傅里叶叠层成像技术将相位恢复算法与合成孔径技术相结合,实现物体的高分辨率成像,可应用于微观和宏观成像领域。然而,其应用主要集中在静止物体上,在实际场景中对运动物体的高分辨率成像留下了空白。
    的头像 发表于 12-10 10:05 383次阅读
    使用傅里叶叠层成像对运<b class='flag-5'>动物体</b>进行高分辨率成像

    ADAS系统中的可行使区域Freespace到底如何检测

    自动驾驶有可能大大减少交通事故、道路拥堵以及相关的经济损失。安全的自动驾驶需要检测周围的障碍物、移动物体并识别可驾驶区域。
    的头像 发表于 11-15 15:53 227次阅读
    ADAS系统中的可行使区域Freespace到底如何<b class='flag-5'>检测</b>?

    基于fpga图像采集与显示

    图像采集是指将现实世界中的光信号或者其他形式的物理量转换为数字形式的图像。这个过程通常通过图像传感器(如数码相机、摄像机等)来完成。图像
    发表于 10-25 16:05 524次阅读
    基于<b class='flag-5'>fpga</b>的<b class='flag-5'>图像</b>的<b class='flag-5'>采集</b>与显示

    CCD图像传感器和CMOS图像传感器的区别详解

    传感器?CCD(ChargeCoupledDevice),即“电荷耦合器件”,它是数字和机器视觉相机中用于捕捉静止和移动物体的一种传感器,以百万像素为单位。数码相机规
    的头像 发表于 10-11 08:08 895次阅读
    CCD<b class='flag-5'>图像</b>传感器和CMOS<b class='flag-5'>图像</b>传感器的区别详解

    基于ARM和FPGA设计高速图像数据采集传输系统

    点击上方 蓝字 关注我们 1.概述 随着图像处理技术的快速发展,图像采集处理系统在提高工业生产自动化程度中的应用越来越广泛。本文结合实际系统中的前端
    的头像 发表于 09-27 10:45 845次阅读

    机器视觉检测系统的工作原理及检测流程介绍

    发现,传感器会向PLC控制器发送“探测到被检测物体”的电脉冲信号,PLC控制器经过计算得出何时物体移动到CCD工业相机的采集,然后准确地向
    发表于 09-19 06:34

    图像采集卡的性能参数有哪些需要注意的?

    采集卡每秒能够采集和传输的图像帧数。较高的帧率可以提供更流畅的图像显示,对于实时应用和高速运动物体的捕捉非常重要。位深度:位深度表示每个像素
    的头像 发表于 08-02 16:07 550次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡的性能参数有哪些需要注意的?

    华为云ModelArts入门开发(完成物体分类、物体检测)

    利用ModelArts框架可以完成图像分类、物体检测、预测分析、声音分类、文本分类等功能。介绍如何使用ModelArts完成图像分类、物体检测、自我学习等功能运用。
    的头像 发表于 07-10 16:26 1280次阅读
    华为云ModelArts入门开发(完成<b class='flag-5'>物体</b>分类、<b class='flag-5'>物体检测</b>)

    基于FPGA的实时图像边缘检测系统设计(附代码)

    、 广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。2008年北京奥运会的主舞台中——画卷就用到了4000个FPGA芯片,这是FPGA图像领域中的应用;FPGA在人脸、车牌
    发表于 06-21 18:47

    物体检测人工智能机器人

    电子发烧友网站提供《物体检测人工智能机器人.zip》资料免费下载
    发表于 06-19 14:38 1次下载
    <b class='flag-5'>物体检测</b>人工智能机器人

    基于多普勒效应的运动检测器电路

    本文中介绍的运动传感器电路的工作原理是利用多普勒频移原理,通过从运动物体反射的连续变化的频率来检测运动目标。
    的头像 发表于 04-29 09:43 967次阅读
    基于多普勒效应的运动<b class='flag-5'>检测</b>器电路