<output id="zcubm"></output>
<tt id="zcubm"><button id="zcubm"></button></tt>
      <meter id="zcubm"><delect id="zcubm"><source id="zcubm"></source></delect></meter>
      <listing id="zcubm"></listing>

      1. 你好,游客 登录 注册

        背景:
        阅读内容

        基于FPGA的视频图像处理算法的研究与实现

        [日期:2014-07-03] 来源:  作者:?#21592;?/td> [字体: ]

            内容摘要:为有效提高视频监控应用领域中多屏幕画面显示的清晰度、分辨度等问题,提出了一种基于FPGA的实时视频图像处理算法。文中介绍了系统的整体结构,然后针对FPGA模块介绍了视频图像的缓存及图像分割,并针对视频的输出显示要求,重点介绍了基于双线性插值算法的实现。ModelSim的仿真结果表明,该算法符合多屏幕显示系统的要求。

         

            随着网络信息化的发展,显示设备作为获取信息的直接手段,有着不可或缺的作用。为满足用户对更大屏幕的观看需要以及使信息显示更优化,大屏幕拼接技术应运而生。大屏幕图像尺寸的增大使在普通显示器?#21916;?#26131;察觉的细节暴?#27573;?#36951;,提高了可视化的准确性。高分辨率图形图像数据处理和可视化,用于解决基于单一硬件显示设备无法可视化的高分辨率图形图像。

            而拼接控制器是大屏幕系统中的核心显?#31350;?#21046;设备。拼接控制器的核心是其处理能力和稳定性,基于计算机体系构架的传统控制器,其性能和稳定性完全取决于它所?#35272;?#30340;计算机,无论传统控制器如何改进,最多只能算量的积累,难以获得质的提升。采用大规模FPGA阵列式组合处理构架,全?#24230;朧接?#20214;设计的拼接控制器集视频信号采集、实时高分辨率数字图像处理、二维高?#36164;?#23383;滤波等高端图像处理技术于一身,具有强大的处理能力。

            本文正是在这种背景下,设?#23631;?#19968;种基于FPGA的视频图像处理算法,实现实时数字视频的分割、插值放大,通过并行处理机制,保证了视频的实时处理和画面流畅。

            1 系统总体概述

            文中将完成一路监控摄像头采集的画面在2×2的液晶拼接屏上显示一幅完整大图的效果。

            系统的总体框架图如图1所示。由网络摄像头采集到的视频信号,经过DVI接收器后,发出数据及控制信号供给FPGA。通过FPGA主控芯片对输入的视频信号进行分割、插值放大等处理;视频输出模块将FPGA处理后的数据再通过DVI接口输出到屏幕上。

        基于FPGA的视频图像处理算法的研究与实现

            只要数据读出速度高于写入速度,就不会使图像产生突变现象,从而达到实时处理的目的。

            2 FPGA模块的实现

            FPGA内部系统对视频图像的处理如图2所示。主要分为帧存储模块、分割模块、插?#30340;?#22359;3部分。

        基于FPGA的视频图像处理算法的研究与实现

            2.1 帧模块及存储模块

            DVI接口是将显卡中经过处理的待显示R、G、B数?#20013;?#21495;与水平同步信号(Hsync,行同步信号)、垂直同步信号(Vsync,场同步信号)进行组合,按最小非归零编码,将每个像素点按10 bit(8 bit像素数据和2 bit控制信号)的数?#20013;?#21495;进行并串转换,把编码后的R、G、B数字流与像素时钟4组信号按照最小化传输差?#20013;?#21495;(Transition Minimized Differential Signal,TMDS)方式进行传输。

            FPGA的分时切换逻辑是依据输入视频流的垂直同步控制信号Vsync发生由高电平到低电平的转换,以此作为新数据帧到来的标识,如图3所示。

        基于FPGA的视频图像处理算法的研究与实现

            当FPGA内部的信号控制采集信号为0时,采集系统停?#26500;?#20316;,地址发生器不计数。当其为1时,系统处于采集状态。首先只有Vsync上升沿到来后,才允许Hsync通过,从而保证采集的图像为完整的一帧图像。当Vsync上升沿到来后,对所有计数器及触发器清零。Vsync上升沿后,场消隐延时用来对Hsync计数,场消隐期后,可以采集图像。行同步计数器对Hsync进行计数。在计数的每一行中,当Hsync上升沿到来时,行消隐延时对其计数。行消隐过后,点同步计数器开始对其计数。当行同步计数停止计数时,一帧图像采集完毕,等待下一个Vsync到来。

            数据缓冲区为两片SDRAM,以一帧图像为单位进行切换控制。采用乒乓存储机制完成数据的无缝缓冲与处理。乒乓操作可以通过“输入数据选择控制”和“输出数据选择控制”按节拍、相互配合地进行来回切换,将经过缓冲的数据流没有停顿地送到“后续处理”模块。

            2.2 分割模块

            由于一个像素的输出值只取决于输入图像的相应像素值,因此,可通过对每个输入像素?#26469;?#36827;行处理这种流水化的处理模式,来实现对图像的点操作。由于每个像素是单独处理的,所以点操作很容易并行实现。因此,可?#22253;?#22270;像分割成若干部分,然后再对每个部?#20540;?#29420;进行处理。

            视频分割模块实现单帧视频图像的分割剪裁,得到4路完整格式的子视频像素流,并控制4个子视频的相互时序关系,各个拼接屏幕的像素点的扫描规?#19978;?#21516;,均为逐行扫描?#38382;劍?#24182;且子视频像素点显示同步,即行同步和场同步。

            2.3 双线性插值算法的实现

            实现图片处理的插值方法有很多,例如最近邻插值、双线性插值、双三次插值等。最近邻插值是最简单的插值方式,但当图像中的像素灰度级有细微变化时,该方法会在图像中产生人工的痕迹。双三次插值可以得到更平滑的结果,但在存储管理更复杂,并增加了逻辑资源的消耗。因此,选取了双线性插值方法。

            与点操作的图像分割不同,双线性插值属于几何变换,其输出的像素通常并不是来自同一个输入像素位置。因此需要一些?#38382;?#30340;缓存来处理由几何形状改变而引起的延迟。

            本文采用预载入缓存的方法来缓冲图像数据,并使用双端口RAM来实现行缓冲器的设?#21697;?#26696;。

            采用双口RAM可在一个时钟周期内同时在每一行上提供两个输入像素,即提供了所有的4个像素。然后将数据输送到插值计算模块。而整幅图像的存储将保存在外部的帧缓存中,每个时钟周期只能对其进行一次访问。每个像素应仅从外部存储器中读取一次,然后暂存在片上缓存中用于随后的窗口。将数据预载入缓存,?#30475;?#35775;问时直接从缓存中读取像素,如图4所示。共需计算两次:一次用于载人缓存;一次用于执行插值。输入和输出像素间的?#25104;?#37319;用前向?#25104;洹?/p>


             往下看有更多相关资料

        本网站试开通微、小企业商家广告业务;维修点推荐项目。收费实惠有效果!欢迎在QQ或邮箱联系!

        为何要做网络广告       广告联系

        推荐文章 收藏 推荐 打印 | 整理:gddq | 阅读:
        查看相关资料       FPGA  视频图像处理 
        本文评论   查看全?#31185;?#35770; (0)
        表情: 姓名: 字数
        点评:
               
        评论声明
        • 尊重网?#31995;赖攏?#36981;守中华人民共和国的各项有关法律法规
        • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
        • 本站管理人员有权保留或删除其管辖留言中的任意内容
        • 本站有权在网站内转载或引用您的评论
        • 参与本评论即表明您已经阅读并接受上述条款
        专题文章
        热门评论

        天津快乐十分一定牛
        <output id="zcubm"></output>
        <tt id="zcubm"><button id="zcubm"></button></tt>
            <meter id="zcubm"><delect id="zcubm"><source id="zcubm"></source></delect></meter>
            <listing id="zcubm"></listing>

            1. <output id="zcubm"></output>
              <tt id="zcubm"><button id="zcubm"></button></tt>
                  <meter id="zcubm"><delect id="zcubm"><source id="zcubm"></source></delect></meter>
                  <listing id="zcubm"></listing>