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

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

3天内不再提示

基于FPGA的图像实时处理系统设计

FPGA设计论坛 来源:未知 2023-06-15 15:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

9186747c-0b4c-11ee-962d-dac502259ad0.png

点击上方蓝字关注我们

由于现场实时测量的需要,机器视觉技术越来越多地借助硬件来完成,如DSP芯片、专用图像信号处理卡等。但是,DSP做图像处理也面临着由于数据存储与处理量大,导致处理速度较慢,系统实时性较差的问题。本文将FPGA的IP核内置缓存模块和乒乓读写结构相结合,实现了图像数据的缓存与提取,节省了存储芯片所占用的片上空间,并且利用图像预处理重复率高,但算法相对简单的特点和FPGA数据并行处理,结合流水线的结构,大大缩短了图像预处理的时间,解决了图像处理实时性差的问题。
1系统架构和流程简介
本系统采用了FPGA与DSP相结合的架构,综合了各自的优点,使系统满足实时性要求的同时,又可以在后续任务中完成复杂算法的处理。系统的整体架构如图1所示。
系统上电后,CCD相机向AD转换芯片TVP5150输入PAL制式模拟图像信号,TVP5150将模拟信号转换成数字信号后,以ITU-R BT656格式传输到FPGA,FPGA对采集到的ITU-R BT656格式的图像数据去消隐化后进行预处理,处理完之后传输到DM642的VP0口,VP0以8位RAW格式接收图像数据,并通过EDMA通道存储到连接在EMIFA接口上的SDRAM中。经过DSP的图像处理后,将SDRAM中的图像数据以ITU-R BT656的格式经DM642的VP2口传输到DA芯片SAA7121,然后SAA7121进行DA转换后,将PAL制式的模拟信号输出到LCD显示器上显示。需要说明的是,TVP5150和SAA7121通过DM642的I2C总线接口配置。

9194ebf6-0b4c-11ee-962d-dac502259ad0.jpg


2 FPGA图像缓存与处理
由于该系统利用FPGA并行性和高速性来缩减图像预处理的时间,因此,FPGA的图像缓存和预处理环节直接影响到系统的实时性,是整个系统的部分,也是本文所要介绍的重点。根据图像预处理的需求和FPGA内部各模块功能的不同,将其分为4个部分:去消隐化、滤波、阈值分割和边缘提取。
2.1去消隐化
FPGA接收TVP5150传输的数字信号为ITUR BT656格式,该格式除了传输4∶2∶2的YCbCr视频数据流外,还包含行、列消隐信号。因此,需要将行列消隐信号剔除掉,以便后期进行图像预处理。
根据BT656的固有结构,编写了Verilog硬件语言程序,用于提取BT656中的720×576个像素点的有效视频数据,由于图像处理过程只需要检测亮度信号(Y分量),因此同时舍去各像素点的色度信号(Cb、Cr分量),仅保留亮度信号作为图像有效数据。在去消隐化过程中,每行起始状态里,检测输入8位数据,如果连续3个输入信号满足FF、00、00结构,则跳入下一个状态,判断下一个8位输入XY信号,是否为有效图像标志信号(80标志该行为偶场图像数据,C7标志该行为奇场图像数据),若判断是,则计数器计数,并采集计数器为偶数时的数据(即亮度信号),为图像有效数据,当采集满720个图像有效数据时,状态机转入初始状态继续等待FF、00、00结构,并依此循环。
2.2滤波
摄像机采集的图像存在各类噪声,从而对目标信息的进一步处理产生不利影响,因此,获取图像后需要对图像进行滤波。考虑到中值滤波在平滑脉冲噪声方面非常有效,并且可以保护图像尖锐的边缘的优点,我们选用3×3中值滤波作为系统的图像滤波算法。中值滤波模块包括3个子模块:乒乓结构读写模块、3×3阵列生成模块和中值滤波算子模块,其流程如图2所示。

91a75584-0b4c-11ee-962d-dac502259ad0.jpg


2.2.1乒乓结构读写模块
为了节约芯片成本和电路板的片上空间,图像数据的存储利用FPGA上固有的IP核生成双口RAM来缓存。由于图像数据量较大,而中值滤波只需要持续地提取3×3模块来进行数据处理,因此,仅需生成4片双口RAM,每个用于存储一行的图像数据,通过乒乓读写结构,便可实现数据的缓存。
乒乓读写结构是指将输入数据流通过输入数据选择单元等时地将输入数据分配到两个数据缓存区,并且再写入某一个缓存区的过程中,从另外一个缓存区读出上个缓存周期写入的数据,依此循环,不断往复。在本系统中,选用4片1024×8bit的双口RAM作为缓存区,在每个缓存周期,向其中1片双口RAM中写入图像数据,同时,读控制模块从另外3片双口RAM中读出前三个缓存周期已写入的数据,用于生成3×3阵列。当一行数据缓存完成后,写使能信号跳转到下一个双口RAM,继续进行下一行数据写入,读控制模块继续读取剩余三行所存储数据。
2.2.2 3×3阵列生成模块
3×3阵列生成模块利用了3个并行的24位移位寄存器,如果读使能信号有效,则在每个时钟的上升沿,将3个移位寄存器中的数据左移8位,然后将从3个双口RAM中读取的数据分别填充各自对应移位寄存器的后8位,在每个读取周期内循环,直到读使能信号置低时停止,然后等待下一行数据的循环。这样,就生成了中值滤波所需要的3×3阵列。需要注意的是,每一帧图像的行和一行因为没有相应的上下行数据,因此不能提取3×3阵列,所以需要控制信号将该两行数据的3×3阵列剔除,以满足图像处理的准确性。
在双口RAM的读写过程中,涉及到读写的时序问题,读写时序的控制必须满足建立和保持时间的关系,以满足图像数据准确性的要求。在此,设计了一种新型的读写时序控制方法,首先,在数据传输至写双口RAM模块时,利用一个与双口RAM写时钟频率相同,但是相位相差180°的时钟做同步处理,使数据信号和控制信号的上升沿与该时钟同步,然后,将同步后的数据信号和控制信号传输到双口RAM的写数据端口,则可以将触发采集的写时钟的上升沿,恰好置于数据信号和控制信号的中央部分,以此保证数据写入的稳定性。该读写时序控制图如图5所示,其中,Clk_W为写时钟,Clk_180°为上文所讲的同步时钟,Data_in为同步前数据信号,Data_in1为同步后数据信号,由图可以清楚的显示,利用这种方法,可以将数据信号稳定的写入双口RAM中,减少了时序设计时的计算时间,并且可以节约时序仿真的步骤,大大节省了开发时间。

91cd6d64-0b4c-11ee-962d-dac502259ad0.jpg


2.2.3中值滤波算子模块
中值滤波的原理是把图像中某一点的像素值用该点的一个邻域中各点像素值的中值代替,让该点像素值更加接近真实值,从而消除孤立的噪声点的滤波方法。在本系统中,选用3×3中值滤波模块,其具体算法为将图像某一点及其周围8个点的像素按照大小排列顺序,取9个像素值的中间值作为当前点的像素值,依次滤除整帧图像的杂散信号。
通过FPGA实现9个数大小的排序,为了节省处理时间和芯片片上资源,利用快速中值滤波算法,结合流水线结构,分级排序来选取图像像素的中间值。排序步骤如下:首先对3×3阵列进行列排序,然后行排序,副对角线排序,得到滤波中值。下图4为快速中值滤波示意图,图中的C代表三输入排序器,所用比较器为assign结构,可以节约大量比较所用时间,提高系统的实时性。

91e05096-0b4c-11ee-962d-dac502259ad0.jpg


2.3阈值分割
由于实时图像系统的刷新频率较快(BT656格式每秒刷新25帧图像),每帧图像之间像素灰度均值差别很小,因此,我们可以利用上一帧图像的统计值来计算阈值,为下一帧图像二值化提供阈值,以适应测试环境变化所引起的阈值变化,阈值统计采用直方图的方式。
利用FPGA的IP核生成一个256×9位的DPRAM,用以作为直方图的计数器。以该DPRAM的地址作为图像的像素值,而以DPRAM的内部存储值,作为该帧图像中该像素值的个数,每读出一位相应的像素,对应地址的内部寄存器加1,以此完成整帧图像的像素统计。
整帧图像像素统计完成以后,按照地址从小到大的顺序,依此累加DPRAM中的值,当累加和不小于整帧图像像素数的0.7时,该DPRAM地址,即为直方图法得到的阈值,然后利用该阈值,为下一帧图像做阈值分割。
2.4边缘检测
边缘检测在图像处理中占有很重要的地位,好的边缘检测,可以提高图像的定位精度,减少图像后续处理中的数据量。综合考虑各种滤波算法的优缺点,由于Sobel算法对噪声容抗较大,并且较易在FPGA上实现,因此,选取Sobel算法作为该系统的边缘检测算法。
边缘检测模块类似于滤波模块,同样也包括3个主要部分:乒乓结构存储模块、3×3阵列生成模块和Sobel边缘检测算子模块。前两个部分不再赘述,本文主要介绍Sobel算子模块。
该算子包含两组3×3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。
利用FPGA在硬件并行结构和流水线结构的特点,我们将整个Sobel算子分为4级,、二级分别将首、末行和首、末列按照算子模板参数相加并输出结果,第三级将上级所得到的行列结果分别相减,第四级比较上级所得两个值的,取较小的值作为Sobel检测结果。如此,每个时钟周期每级都执行各自相应的加减法运算,并在下个时钟上升沿将所得数据级级传递,即可完成3×3阵列的Sobel算法,该模块的流水线结构如图5所示。这样,在每个时钟周期,都会输出1个Sobel检测值,即处理每一行图像数据,仅需要n+4个时钟周期的时间,处理整帧图像所需少时间为(n+4)×m×T,其中n为每行像素点个数,m为行数,T为时钟周期。

91f98750-0b4c-11ee-962d-dac502259ad0.jpg


3实验结果分析
根据系统硬件结构搭建的实验平台,连接各模块接口,编译并程序,运行系统。在实验室环境下采集图像,并进行滤波和边缘检测等处理,在CCS3.3的view/graph菜单下观测处理图像效果图,实验结果与原图对比如图6所示。由于实验室光线环境较为稳定,图像噪声较少,滤波效果不明显,但是通过图6(c)可以明显看到图像边缘检测效果较好,可以满足图像预处理要求。
针对系统图像预处理速度的评估,我们以Sobel边缘检测算法作为参考。首先利用CCS3.3的计时函数,运行得到DSP对一帧720×576像素的图像边缘提取所用时间为254.83ms,然后通过上文所列公式计算FPGA图像边缘提取所用少时间为15.445ms.通过两种处理方式所用时间的比较,可以明显得出FPGA在图像预处理时的速度优势,完全可以满足图像实时处理的要求,具有很强的实用性。

9217d9da-0b4c-11ee-962d-dac502259ad0.jpg


4结论
本文设计了一种基于FPGA为的图像处理系统,实现了图像的采集、传输、缓储和预处理,经过试验证明,处理速度达到了10ms级别,满足图像处理实时性的要求,有非常广阔的应用前景。

9231d092-0b4c-11ee-962d-dac502259ad0.png

有你想看的精彩 利用FPGA开发板进行ASIC原型开发的技巧基于FPGA实现通用异步收发器基本功能的应用设计使用FPGA实现高效并行实时上采样

923b5fd6-0b4c-11ee-962d-dac502259ad0.jpg

扫码加微信邀请您加入FPGA学习交流群

92533052-0b4c-11ee-962d-dac502259ad0.jpg9261ceaa-0b4c-11ee-962d-dac502259ad0.png

欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!

点个在看你最好看


原文标题:基于FPGA的图像实时处理系统设计

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。


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

    关注

    1655

    文章

    22283

    浏览量

    630181

原文标题:基于FPGA的图像实时处理系统设计

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式实时操作系统的特点

    操作系统具备高效的中断处理机制,能够快速响应和处理系统的中断事件。 资源管理:实时嵌入式操作系统提供有效的资源管理机制,包括内存管理、设备驱
    发表于 11-13 06:30

    基于FPGA利用sm4进行实时图像加密

    求一份在fpga上利用sm4进行实时图像加密的文件
    发表于 09-15 19:05

    10CX150YF672E5G现场可编程门阵列(FPGA)芯片

    。汽车电子l 自动驾驶系统实时处理雷达、监控摄像头数据,保障安全驾驶。l 车载娱乐:兼容多屏互动与高清音频处理,提高驾乘体验。
    发表于 08-21 09:15

    友思特方案 | FPGA 加持,友思特图像采集卡高速预处理助力视觉系统运行提速增效

    分拣等系统快速决策。针对高速接口及实时 / 大数据量场景,该采集卡是必备组件,可在 FPGA 上完成去拜耳化、HDR 等预处理,为视觉系统
    的头像 发表于 08-20 09:18 596次阅读
    友思特方案 | <b class='flag-5'>FPGA</b> 加持,友思特<b class='flag-5'>图像</b>采集卡高速预<b class='flag-5'>处理</b>助力视觉<b class='flag-5'>系统</b>运行提速增效

    FPGA 加持,友思特图像采集卡高速预处理助力视觉系统运行提速增效

    图像处理图像处理关键环节,可优化数据传输、减轻主机负担,其算法可在FPGA等硬件上执行。友思特FPG
    的头像 发表于 08-13 17:41 771次阅读
    <b class='flag-5'>FPGA</b> 加持,友思特<b class='flag-5'>图像</b>采集卡高速预<b class='flag-5'>处理</b>助力视觉<b class='flag-5'>系统</b>运行提速增效

    恩智浦S32Z和S32E实时处理器产品介绍

    恩智浦的S32Z和S32E实时处理器专为应对软件定义汽车(SDV)转型和动力系统电气化增长带来的挑战而设计,提供高性能实时计算能力,可满足电气化和现代汽车架构的需求。
    的头像 发表于 08-13 17:40 3686次阅读
    恩智浦S32Z和S32E<b class='flag-5'>实时处理</b>器产品介绍

    大电流起弧试验仪中的高速数据采集与实时处理方案

    在大电流起弧试验仪的运行过程中,电弧现象的变化极为迅速,相关数据的高速采集与实时处理是准确把握试验状态、保障测试精度的关键。​ 一、高速数据采集的硬件支撑​ 选用高灵敏度传感器 :为捕捉电弧瞬间
    的头像 发表于 08-01 08:59 338次阅读
    大电流起弧试验仪中的高速数据采集与<b class='flag-5'>实时处理</b>方案

    边缘计算 + 工控一体机:如何实现工业数据实时处理与本地化决策?

    在工业 4.0 和智能制造蓬勃发展的时代,工业数据的高效处理与决策的及时性成为提升企业竞争力的关键因素。边缘计算与工控一体机的结合,为实现工业数据实时处理与本地化决策提供了强有力的解决方案,正深刻地
    的头像 发表于 06-07 15:03 622次阅读
    边缘计算 + 工控一体机:如何实现工业数据<b class='flag-5'>实时处理</b>与本地化决策?

    匠芯创科技M76P00_M73P00_Datasheet中文数据手册免费下载 RISC-V内核 主频552MHz的DSP实时处理

    匠芯创科技M76P00_M73P00_Datasheet中文数据手册免费下载 RISC-V内核 主频552MHz的DSP实时处理
    的头像 发表于 05-14 16:40 1090次阅读
    匠芯创科技M76P00_M73P00_Datasheet中文数据手册免费下载  RISC-V内核 主频552MHz的DSP<b class='flag-5'>实时处理</b>器

    匠芯创科技M7000系列选型表分享 RISC-V内核的高性能DSP实时处理器 适配机器人

    匠芯创科技M7000系列选型表分享 RISC-V内核的高性能DSP实时处理器 适配机器人
    的头像 发表于 05-14 16:15 953次阅读
    匠芯创科技M7000系列选型表分享  RISC-V内核的高性能DSP<b class='flag-5'>实时处理</b>器 适配机器人

    AI MPU# 瑞萨RZ/V2H 四核视觉 ,采用 DRP-AI3 加速器和高性能实时处理

    器,以及双核 Cortex ^®^ -R8 (800MHz) 实时处理器。 此外,RZ/V2H 还包括另一个动态、可重配置处理器 (DRP)。 这款处理器可加速图像
    的头像 发表于 03-15 11:50 1929次阅读
    AI MPU# 瑞萨RZ/V2H 四核视觉 ,采用 DRP-AI3 加速器和高性能<b class='flag-5'>实时处理</b>器

    芯有灵犀智创未来,基于中科亿海微FPGA实现图像处理系统及应用——第九届集创赛中科亿海微杯赛题解析

    进行定制化配置。中科亿海微FPGA图像处理系统具有并行计算能力和可重构特性,在实时图像处理领域
    的头像 发表于 02-21 17:26 1948次阅读
    芯有灵犀智创未来,基于中科亿海微<b class='flag-5'>FPGA</b>实现<b class='flag-5'>图像</b><b class='flag-5'>处理系统</b>及应用——第九届集创赛中科亿海微杯赛题解析

    国产FPGA SOC 双目视觉处理系统开发实例

    1.系统架构解析本系统基于米尔MYC-YM90X构建,搭载安路DR1FPGASOC创新型异构计算平台,充分发挥其双核Cortex-A35处理器与可编程逻辑(PL)单元的协同优势。通过
    的头像 发表于 02-20 08:05 2142次阅读
    国产<b class='flag-5'>FPGA</b> SOC 双目视觉<b class='flag-5'>处理系统</b>开发实例

    FPGA图像处理基础----实现缓存卷积窗口

    像素行与像素窗口 一幅图像是由一个个像素点构成的,对于一幅480*272大小的图片来说,其宽度是480,高度是272。在使用FPGA进行图像处理时,最关键的就是使用
    的头像 发表于 02-07 10:43 1413次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>图像</b><b class='flag-5'>处理</b>基础----实现缓存卷积窗口

    基于FPGA实现图像直方图设计

    简单,单采用FPGA来实现直方图的统计就稍显麻烦。若使用Xilinx和Altera的FPGA芯片,可以使用HLS来进行图像的加速处理。但这暂时不是我的重点。 用C语言实现直方图统计:u
    的头像 发表于 12-24 10:24 1196次阅读
    基于<b class='flag-5'>FPGA</b>实现<b class='flag-5'>图像</b>直方图设计