一种图像实时电子消旋的FPGA实现方法与流程

文档序号:17469864发布日期:2019-04-20 05:45阅读:846来源:国知局
一种图像实时电子消旋的FPGA实现方法与流程

本发明涉及图像处理、计算机视觉、视频监控等领域,尤其是一种电子消旋的fpga实现方法。



背景技术:

电子消旋(旋转)是为解决由于传感器旋转导致视频画面旋转的一种数字信号处理解决方法。双线性插值法在数字图像处理中最常用,插值效果好且易实现。求取图像目的地址(x’,y’)的像素点灰度时需要先得到对应的四个原始图像像素点坐标,通过坐标读取原始图像像素灰度值,再对其进行双线性插值求取显示图像对应像素灰度值。

将原始图像与消旋后图像置于同一直角坐标系下,图像中心置于坐标系原点处,以图像中心为旋转中心,由图像目的地址(x’,y’)索引原始图像像素点坐标(x,y)的映射,称为逆向映射,反之成为正向映射,正向映射与逆向映射互为反函数,正向映射坐标关系如下:

x′=x*cos(th)-y*sin(th)+w/2

y′=x*sin(th)+y*cos(th)+h/2

其中:(x,y)为原始图像点坐标,(x’,y’)为消旋后对应图像点坐标,(th)为图像正向映射旋转角度,w、h为图像坐标偏移量。

图像坐标经过映射后常常会映射到相邻两坐标之间(坐标带小数),如图1所示,再进行插值处理得到整数点坐标的灰度值。

基于正向映射的消旋方法称为正向消旋,正向映射方法消旋延迟小,不需要缓存原始图像。

基于逆向映射的消旋方法称为逆向消旋,逆向消旋实现简单,但是需要原始图像缓存完成后才能进行消旋处理,逆向坐标映射如图2所示。

目前工程化应用的图像消旋都是基于逆向消旋方法,插值方法多采用双线性插值法,传统的逆向消旋算法需要多次访问同一原始图像坐标点,这样图像消旋就需要使用多倍于原始像素时钟的处理时钟,或者缓存多倍于原始图像数据的数据存储,在遇到高分辨率高帧频图像处理时硬件资源消耗激增。



技术实现要素:

为了克服现有技术的不足,本发明提供一种图像实时电子消旋的fpga实现方法:

本发明解决其技术问题所采用的技术方案的详细步骤如下:

步骤1:采用fpga+双口ram为平台,将fpga与双口ram连接,其中fpga作为主处理芯片,ram作为图像现存;

步骤2:输入图像数据流:原始视频图像数据流;

步骤3:输入参数:原始图像旋转的角度参数,即输入消旋角th,对原始图像旋转消旋角th后得到目标图像;

步骤4:原始视频图像像素点坐标p根据消旋参数进行坐标映射,计算公式如下:

x′=x*cos(th)-y*sin(th)+w/2

y′=x*sin(th)+y*cos(th)+h/2(1)

其中:(x,y)为原始图像点坐标,(x′,y′)为消旋后对应图像点坐标,th为图像旋转角度,w,h分别为原始图像到目标图像的坐标偏移量;

由此得到消旋后图像即目标图像所对应的像素点坐标位置p′,取整后得到h′;

步骤5:对h′进行坐标反映射得到p点相近的坐标h,计算公式如下:坐标h未取整;

x=x′*cos(-th)-y′*sin(-th)+w'/2

y=x′*sin(-th)+y′*cos(-th)+h'/2(2)

步骤6:取h周围四点像素灰度进行双线性差值得到灰度作为h′点灰度;

步骤7:对h′相邻四点(h′(x,y),h′(x+1,y),h′(x+2,y),h′(x+3,y))同时进行步骤5和步骤6操作,得到目标图像的相邻四点灰度,将相邻四点灰度同时存储到32bitram中,当所有的像素点都消旋过后,一幅图像消旋完成。

本发明的有益效果是通过模型设计、仿真、验证形成模块化的ip产品,实现高带宽输入图像的实时电子消旋。实现的图像电子消旋软核实时性强且可灵活移植,便于三化管理。

附图说明

图1是本发明单点正向映射图。

图2是本发明单点逆向映射图。

图3是本发明硬件架构。

图4是本发明单点正向逆向结合的映射图。

图5是本发明逻辑接口设计。

图6是本发明逻辑框架设计。

图7是本发明逻辑架构框图。

具体实施方式

下面结合附图和实施例对本发明进一步说明。

具体实施过程如下:

步骤1:采用fpga+双口ram为平台,将fpga与双口ram连接,如图3所示,其中fpga作为主处理芯片,ram作为图像现存;

步骤2:输入图像数据流:原始视频图像数据流;

步骤3:输入参数:原始图像旋转的角度参数,即输入消旋角th,对原始图像旋转消旋角th后得到目标图像;

步骤4:原始视频图像像素点坐标p根据消旋参数进行坐标映射,计算公式如下:

x′=x*cos(th)-y*sin(th)+w/2

y′=x*sin(th)+y*cos(th)+h/2(1)

其中:(x,y)为原始图像点坐标,(x′,y′)为消旋后对应图像点坐标,th为图像旋转角度(由原始图像旋转到目标图像的旋转角,相应地,目标图像旋转-th后可以得到原始图像),w,h分别为原始图像到目标图像的坐标偏移量;

由此得到消旋后图像即目标图像所对应的像素点坐标位置p′,取整后得到h′(如图1所示);

步骤5:对h′进行坐标反映射得到p点相近的坐标h,计算公式如下:坐标h未取整,如图2);

x=x′*cos(-th)-y′*sin(-th)+w'/2

y=x′*sin(-th)+y′*cos(-th)+h'/2(2)

步骤6:取h周围四点像素灰度进行双线性差值得到灰度作为h′点灰度;

步骤7:对h′相邻四点(h′(x,y),h′(x+1,y),h′(x+2,y),h′(x+3,y))同时进行步骤5和步骤6操作,得到目标图像的相邻四点灰度,将相邻四点灰度同时存储到32bitram中,当所有的像素点都消旋过后,一幅图像消旋完成。

本发明采用fpga+双口ram为硬件平台,如图3所示(其中fpga作为主处理芯片,ram作为图像显存),使用fpga内部基本的bram、dsp等资源,采用标准的hdl语言完成整个设计,采用多位宽大容量的双口ram。

本发明采用32bit位宽的ram作为图像缓存(本发明通过目标图像相邻四点灰度(8bit)同时计算并存储解决了32bit位宽ram的读写问题),大大降低了ram的读写时钟频率,在高速图像应用中有力地降低了图像显存ram读写带宽风险,提高了模块的通用性和可靠性。

本发明采用参数化设置图像输入输出尺寸,接口化图像消旋参数,大大提高了模块的通用性和移植性。

所述的一种图像实时电子消旋的fpga实现方法按照步骤1~7形成不同模块,在电子消旋应用中对不同模块进行调用,从而提高了整个设计的灵活性和可靠性。

本发明的图像实时电子消旋的fpga实现方法,采用正逆向映射相结合的图像电子消旋法,先根据原始图像的坐标点映射出目的坐标(依据公式1的逆函数),再根据目的坐标反映射出原始图像坐标相邻点灰度(依据公式1),然后将反映射出的原始图像坐标(h1,h2,h3,h4)对应的原始图像灰度进行双线性插值,即得到目的坐标h’对应的灰度,如图4所示。

1.图像电子消旋模块接口设计:

基于fpga+双口ram的硬件平台,如图3所示,设计一种通用性、可移植性强的电子消旋模块,需要设计常用视频接口。输入视频接口设计为帧同步、行有效、原始图像灰度值;输入参数接口设计为读取外部参数ram接口,参数信息反应当前图像的消旋角度;输出信号接口为数据有效、消旋后点坐标、消旋后坐标点灰度值,电子消旋模块接口如图5所示。

2.电子消旋模块架构设计

设计一种合理的、有流处理能力的逻辑架构如图6所示,图像数据先进行行缓存,行缓存用于后面逆向消旋时使用,后进行正向坐标映射,正向映射的目的是找出当前行缓存图像能够映射到的目的图像位置,再根据目的图像坐标(除四取整后的坐标)进行反向映射,因为要进行目标图像像素点数据拼接(目标图像相邻4个8bit灰度拼成32bit格式存储到ram的一个地址),这里需要同时产生相邻的4个目的图像坐标灰度,同时进行双线性插值得到灰度,8bit灰度图像数据拼接成的32bit数据读写时钟将降为像素点时钟的四分之一。

一种图像实时电子消旋的fpga实现方法,按照上述架构设计将图7中的流程图实现,可以得到图像实时电子消旋的硬件电路,算数运算单元采用fpga内部dsp实现。中间变量的缓存使用fpga内部bram实现,最后的消旋结果图像缓存至外部ram。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1