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

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

3天内不再提示

利用FPGA并行处理和计算能力实现图像预处理系统的设计

电子设计 来源:郭婷 作者:电子设计 2019-06-28 08:05 次阅读

由于获取图像的工具或手段的影响,使获取图像无法完全体现原始图像的全部信息。因此,对图像进行预处理就显得非常重要。预处理的目的是改善图像数据,抑制不需要的变形或者增强某些对于后续处理来说比较重要的图像特征。

通常根据预处理目的的不同,把预处理技术归为图像增强技术和图像分割技术两类。图像对比度处理是空间域图像增强的一种方法。由于图像灰度范围狭窄会使图像的对比度不理想,可用对比度增强技术来调整图像灰度值的动态范围。

图像处理通常采用软件或者DSP数字信号处理器)来实现。如果利用软件实现,运行时会耗费较多的PC资源,而且算法越复杂时耗费的资源就越多,对于需要高速处理的情况就不适用了;而如果采用DSP来实现,提高并行性的同时指令执行速度必然会提高,较高的指令速度可能导致系统设计复杂化,并增加功耗和成本。新一代的FPGA集成了CPU或DSP内核,可以在一片FPGA上进行软硬件协同设计,为实现SOPC提供了强大的硬件支持。本文介绍的是利用FPGA并行处理和计算能力,以Altera FPGA Stratix EP1S40为系统控制的核心实现的SOPC。

系统硬件平台

采用基于PCI总线的FPGA开发平台,结构如图1所示。板上主要硬件资源有:PCI桥、FPGA、SRAMSDRAM等其他外设。

PCI桥采用PCI9656桥接芯片实现,用来连接PCI总线与32位/50MHz的板级局部总线;FPGA包括41 250个逻辑单元,14个DSP模块,112个嵌入式乘法器,4个增强型PLL(锁相环)和4个快速型PLL等逻辑资源;SDRAM用来存储图像数据。Avalon总线模块完成整个片上可编程系统组件之间的互连。Avalon总线是SOPC设计中连接片上处理器和其他IP模块的一种简单总线协议,规定了主、从构件之间的端口连接以及通信时序关系,SOPC Builder来完成整个系统(包括Avalon)模块的生成和集成。丰富的板级资源可以满足图像的高速预处理需求。

系统工作原理

设计采用DMA方式快速传输图像数据,这样数据的传输和处理可以并行起来,使得系统的运行效率大为提高。PC与PCI板卡之间建立软件环境,在该环境下利用DMA通道把图像数据从主机通过PCI总线、PCI桥、板级局部总线和Avalon总线传到SDRAM存储起来,然后送入算法逻辑模块进行处理,处理完成后再把图像数据存储到SDRAM中,最后再用DMA通道把图像处理结果传送回主机。

利用FPGA并行处理和计算能力实现图像预处理系统的设计

图1 基于PCI总线的FPGA开发平台

建立片上系统中的关键模块

本文设计的图像对比度增强系统是建立在Stratix EP1S40基础上的SOPC。该设计在Quartus II 5.0中利用SOPC Builder将系统的工作频率设为50MHz,器件系列设为Stratix,调用已经建立的IP模块和算法逻辑模块,并设置各个模块的时钟和基地址,配置生成片上系统。根据任务要求,SOPC结构框图如图2所示。

利用FPGA并行处理和计算能力实现图像预处理系统的设计

图2 SOPC结构框图

图2中,Avalon总线接口分为主(Master)和从(Slave)两类,前者具有相接的Avalon总线的控制权,后者是被动的。自定制的Avalon从外设根据对Avalon总线操作方式的不同分为两类:一类是Avalon从(Slave)外设,只是作为Avalon总线的一个从元件来处理;另一类是Avalon流模式从(Streaming Slave)外设,需要使用Avalon总线的流传输模式,外设的设计更复杂。

● 板级局部总线与Avalon总线桥之间的通信模块

在板级局部总线与FPGA内部Avalon总线桥之间建立通信模块。由于SOPC内部各模块之间的逻辑连接是由Avalon总线完成的,所以可以从主机通过PCI总线和板级局部总线访问SOPC组件。该模块作为Avalon总线的一个主控接口,对其他Avalon从外设和Avalon流模式从外设进行访问和控制。

● 控制模块

控制模块的工作时钟独立于系统时钟,如图3所示。包括两个模块的设计:(1)用于对SDRAM存储资源做合理分配的流模式存储管理器模块,它作为Avalon流模式从外设,读写端口的数量可配置,这些读写端口可以以流传输模式把图像数据读出或写入SDRAM。(2)存储器控制模块,它作为Avalon总线的另一主控接口,对作为Avalon总线从控接口的SDRAM控制器进行控制。

利用FPGA并行处理和计算能力实现图像预处理系统的设计

图3 控制模块

● 图像对比度增强算法及VHDL实现

在图像对比度处理方法中,可以设计出不同的转换函数。本系统是针对锯齿形函数转换设计的,锯齿形转换可以把几段较窄灰度区间拉伸到较宽的灰度范围内,这种处理可以把灰度变化较平缓的区域也较鲜明地显示出来,从而增强图像中感兴趣的特征。

该设计对一帧3008×2000像素、数据宽度为8位的灰度图像进行处理,图像共有2000行、3008列像素点,行和列均从0开始计起。在系统时钟上升沿、行有效信号与数据有效信号均有效时,把图像数据读入进来,对其做相应处理。每个系统时钟上升沿读入一个图像数据,在第N行像素点处理完后,第N+1行有效信号与数据有效信号必须同时有效才能继续处理,在对第1999行、3007列像素点处理完毕后,行有效信号与数据有效信号置为无效,此时整帧图像处理完毕。算法逻辑模块中需要帧有效计数器和行有效计数器各一个,分别用来对帧和行进行计数,还需要一个像素计数器对某行像素做计数统计。由于该算法逻辑模块是基于SOPC技术,能够在SOPC Builder工具中作为自定制模块调用,需设置两个寄存器,分别是帧有效计数寄存器和行有效计数寄存器,它们根据Avalon总线地址的不同,同时作为Avalon总线的读或写寄存器,从而使自定义模块可以和Avalon总线进行通信。每输入一个像素点判断其灰度值满足设置的哪个区间范围并做相应转换,从而实现一帧图像的对比度增强处理。根据算法需求,采用VHDL语言对算法逻辑建模,并以Avalon总线从外设的方式在SOPC Builder 中调用。VHDL实现如下。

entity enhancement is

port (iLVAL : in std_logic;

iDVAL : in std_logic;

iFVAL : in std_logic := ‘1’;

iCLK : in std_logic;

iDATA : in std_logic_vector(7 downto 0);

oLVAL : out std_logic; oDVAL : out std_logic;

oFVAL : out std_logic;

oDATA : out std_logic_vector (7 downto 0)

);

end enhancement;

这里iFVAL被置为“1”,说明是对一帧图像进行处理;iDATA与oDATA是图像输入、输出二进制数据,宽度为8位。

图像预处理系统的实现

用标准化硬件描述语言VHDL建立FPGA模块实现。按照自顶向下的设计方法生成各设计阶层,将设计任务分解为不同的功能元件,每个元件具有专门定义的输入输出端口并执行各自的逻辑功能。该SOPC设计通过以下步骤实现。

(1)利用SOPC Builder工具编译生成用户自定制模块,调用已建立的IP模块并设置参数,配置生成片上系统;

(2)在顶层VHDL文件中调用模块并示例化,进行信号连接;

(3)对整个系统进行管脚等约束设置,全编译并进行行为和时序验证;

(4)下载和硬件调试完成。

结束语

该系统对实验室在光线较弱情况下所拍的一帧3008×2000灰度图像进行对比度增强处理,处理前后如图4、5所示。在SOPC系统时钟为50MHz时,对于输入大小为3008×2000像素点的灰度图像,每一帧的处理时间为T=(1/(50×106))×3008×2000=0.120 32s。

图4 原图像

图5 处理后图像

而在3GHz Pentium 4、256MB内存的PC上通过Matlab用代码实现则需0.9850s。该设计采用FPGA实现图像预处理系统,与利用软件处理图像的方法比较起来,可以更快速地实现对图像的预处理。同时系统构成灵活,设计中模块的可重复开发性降低了生产成本、缩短了生产周期,提高了工作效率。


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

    关注

    552

    文章

    7958

    浏览量

    347844
  • FPGA
    +关注

    关注

    1624

    文章

    21608

    浏览量

    601075
  • 总线
    +关注

    关注

    10

    文章

    2856

    浏览量

    87888
收藏 人收藏

    评论

    相关推荐

    FPGA图像处理领域的优势有哪些?

    单元和可编程互联线,可以实现高度并行的数据处理。在图像处理任务中,如图像
    发表于 10-09 14:36

    单片FPGA图像预处理系统的设计与实现

    单片FPGA图像预处理系统的设计与实现采用单片FPGA设计与实现
    发表于 09-19 09:26

    基于FPGA的视频图像处理系统

    基于FPGA的视频图像处理系统
    发表于 05-27 20:34

    基于FPGA+DSP的三维图像信息处理系统设计

    数据量特别大、运算复杂,单纯依靠通用PC很难达到实时性要求,不能满足现行高速三维图像处理应用。  本系统中,采用FPGA实现底层的信号
    发表于 06-24 06:11

    如何预处理Bayer格式图像

    处理的数据量少,算法结构复杂,适于运算速度快,寻址灵活的DSP数字信号处理器进行处理。这里提出了一种FPGA+DSP相结合的实时图像
    发表于 10-16 07:14

    怎样去设计一种图像预处理系统

    请问怎样去设计一种图像预处理系统
    发表于 05-06 10:31

    基于FPGA的高速图像预处理系统设计

    介绍了一种用单片FPGA实现的实时、多任务、高速图像处理系统。该系统承担着提高信噪比、压缩数据量、Stokes参数观测和仪器及观测模式控制等
    发表于 11-20 11:57 15次下载

    基于FPGA的玻璃缺陷图像采集预处理系统设计

    基于FPGA的玻璃缺陷图像采集预处理系统设计
    发表于 08-30 15:10 14次下载

    基于FPGA和DSP的高速图像处理系统

    基于FPGA和DSP的高速图像处理系统
    发表于 10-19 13:43 20次下载
    基于<b class='flag-5'>FPGA</b>和DSP的高速<b class='flag-5'>图像</b><b class='flag-5'>处理系统</b>

    基于TIDSP的红外图像采集预处理系统的软硬件实现

    基于TIDSP的红外图像采集预处理系统的软硬件实现
    发表于 10-21 09:13 9次下载
    基于TIDSP的红外<b class='flag-5'>图像</b>采集<b class='flag-5'>预处理系统</b>的软硬件<b class='flag-5'>实现</b>

    多DSP图像并行处理系统分析

    随着多媒体图像处理应用的迅速发展,体积小、重量轻、结构灵活、处理能力强的嵌入式数字图像处理系统
    发表于 10-24 11:39 0次下载
    多DSP<b class='flag-5'>图像</b><b class='flag-5'>并行</b><b class='flag-5'>处理系统</b>分析

    嵌入式多DSP图像并行处理系统解析

    随着多媒体图像处理应用的迅速发展,体积小、重量轻、结构灵活、处理能力强的嵌入式数字图像处理系统
    发表于 11-03 10:47 0次下载
    嵌入式多DSP<b class='flag-5'>图像</b><b class='flag-5'>并行</b><b class='flag-5'>处理系统</b>解析

    一种基于DSP+FPGA视频图像采集处理系统的设计与实现

    本文主要介绍了一种基于DSP+FPGA视频图像采集处理系统的设计与实现,DSP-BF561作为主处理器,负责整个算法的调度和数据流的控制,完
    发表于 12-25 10:39 4868次阅读
    一种基于DSP+<b class='flag-5'>FPGA</b>视频<b class='flag-5'>图像</b>采集<b class='flag-5'>处理系统</b>的设计与<b class='flag-5'>实现</b>

    如何使用FPGA进行图像实时处理系统的设计

    FPGA的IP核内置缓存模块和乒乓读写结构相结合,实现图像数据的缓存与提取,节省了存储芯片所占用的片上空间,并且利用图像
    发表于 10-23 17:34 17次下载
    如何使用<b class='flag-5'>FPGA</b>进行<b class='flag-5'>图像</b>实时<b class='flag-5'>处理系统</b>的设计

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

    系统实时性较差的问题。本文将FPGA的IP核内置缓存模块和乒乓读写结构相结合,实现图像数据的缓存与提取,节省了存储芯片所占用的片上空间,并且利用
    的头像 发表于 06-15 15:20 1301次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>图像</b>实时<b class='flag-5'>处理系统</b>设计