基于双线性插值的重映射方法、装置和可编程逻辑器件与流程

文档序号:14941491发布日期:2018-07-13 20:58阅读:275来源:国知局

本发明涉及tft-lcd面板自动光学检测技术领域,具体涉及一种基于双线性插值的重映射方法、装置和可编程逻辑器件。



背景技术:

图像重映射算法(remap)是重要的图像处理算法,在图像变换处理中有着广泛的应用。重映射算法已经成为处理图像缩放,旋转,平移,扭曲等操作的核心算法。在tft-lcd(thinfilmtransistorliquidcrystaldisplaylcd,即薄膜晶体管液晶显示器)面板自动光学检测的过程中,首先需要对工业相机获取的目标图像做畸变校正和几何校正,畸变校正和几何校正的核心操作是对图像进行重映射。

目前,重映射算法一般在cpu或者gpu(图形处理器)上实现,算法需要对ddr(外部存储器)中的图像数据进行大量的随机读取,且一次对整个图像进行处理,时间效率和存储器带宽利用率都很低。



技术实现要素:

为解决上述技术问题,本发明提供了一种效率高、节省存储空间的一种基于双线性插值的重映射方法、装置和可编程逻辑器件。

对于一种基于双线性插值的重映射方法,将目标图像划分为多个图像子块,对各个图像子块进行重映射,根据重映射坐标进行双线性插值,通过寄存器组和并行插值单元进行流水线的并行双线性插值,寄存器组在每个时钟周期从缓存模块读取一个图像子块,同时并行插值单元从寄存器组中读取n个值进行双线性插值,双线性插值得到的结果在下一个时钟周期输出至数据写回模块。

较佳地,通过寄存器组和并行插值单元进行流水线的并行双线性插值采用了并行映射表计算方法,并行地计算目标图像中相邻的a行b列个像素对应的原始图像中的像素的坐标,然后对a行b列个像素进行双线性插值或最邻近插值。

较佳地,并行地计算目标图像中相邻的a行b列个像素对应的原始图像中的像素的坐标的方法包括:

通过坐标映射方程结合a行b列个像素中关键点在原图的坐标,计算得到关键点的映射坐标和关键点的梯度;采用线性近似方法计算出a行b列个像素中其他各个像素点的映射坐标。

较佳地,关键点的映射坐标(x2,y2)是通过坐标映射方程x=f1(u,v),y=f2(u,v)计算得到的,其中(u,v)为关键点在原图的坐标,方程f1和f2为反向映射函数。

较佳地,关键点梯度的计算方法包括:

其中,(u2,v2)为a行b列个像素中关键点的像素点在目标图像坐标系中的坐标。

较佳地,计算出a行b列个像素中其他各个像素点的映射坐标(xmn,ymn)的方法包括:

较佳地,a行b列个像素优选为4行4列。

较佳地,并行插值单元从寄存器组中读取n个值进行双线性插值,其中n优选为64。

对于一种基于双线性插值的重映射装置,包括集成于可编程逻辑器件的中央控制器、重映射模块和外部存储器控制器,重映射模块包括内部控制器、数据载入模块、数据缓存模块、坐标计算模块、双线性插值模块和数据写回模块,重映射模块包括寄存器组和并行插值单元,可编程逻辑器件被配置为执行计算器程序时实现上述一种图像重映射方法。

对于一种可编程逻辑器件,可编程逻辑器件存储有计算机程序,计算机程序被可编程逻辑器件执行时实现上述一种图像重映射方法。

本发明的有益效果:先将图像划分为多个图像块,重映射模块每次将一个图像块通过总线的burst访问载入到模块的内部存储器,然后对内部存储器中的图像进行重映射,同时通过总线burst访问(突发模式内存访问)将映射完成的图像数据写入到ddr。由于图像分块处理,节省了fpga内部存储和逻辑资源,方便后续功能集成;由于ddr访问全部使用burst方式,总线利用率高。乒乓缓存的方式使分块重映射过程和数据写入过程是并行执行的,数据吞吐迅速,重映射速度快。内部各个模块全部通过总线进行控制,调度灵活。插值部分采用了邻域的线性近似算法,降低了逻辑资源占用,并行插值提高了数据处理的速度。

附图说明

图1为本发明基于可编程逻辑器件的图像重映射装置的模块连接图;

图2为图1中重映射模块的内部连接图;

图3为目标图像进行分块示意图;

图4为原始图像与目标图像的图像块对应关系图。

具体实施方式

以下结合附图和具体实施例对本发明作进一步的详细说明:

实施例一

一种基于双线性插值的重映射方法,将目标图像划分为多个图像子块,对各个图像子块进行重映射,根据重映射坐标进行双线性插值。

本实施例所述的重映射方法包括:

第一步,系统复位后,中央控制器通过控制总线给重映射模块的内部控制器发送图像参数和重映射参数。其中,图像参数包括目标图像物理地址、图像的宽、图像的高,其中,图像的宽即为目标图像像素点的列数,图像的高即为目标图像像素点的行数。重映射参数包括镜头畸变参数和透视变换参数,当进行畸变校正时,重映射参数为镜头畸变参数;当进行透视变换时,所述重映射参数为透视变换参数。

第二步,图像参数和重映射参数发送完成之后,中央控制器给内部控制器发送启动命令,并等待内部控制器反馈的完成中断信号。接收到启动信号后,重映射模块内的各个模块开始运行。内部控制器根据图像参数和图像分块规则将目标图像划分为多个图像块。

假设现在要将宽为w1个像素,高为h1个像素的原始图片image1重映射到宽为w2个像素,高为h2个像素的目标图片image2中。分块规则定义每一个图像块的宽为w0个像素,高为h0个像素。

进行分块时,将目标图像image2划分为网格状,使除最后一行和最后一列的图像块外,其余图像块像素点的宽均为w0,高均为h0。如图3所示即为目标图像划分为m行,n列,共m*n个图像块的示意图。若目标图像像素点的宽w2能被图像块像素点的宽w0整除,则最后一列图像块像素点的宽即为w0,若目标图像像素点的宽w2不能被图像块像素点的宽w0整除,则最后一列图像块像素点的宽小于w0;若目标图像像素点的高h2能被图像块像素点的宽h0整除,则最后一行图像块像素点的高为h0,若目标图像像素点的高h2不能被图像块像素点的宽h0整除,则最后一行图像块像素点的高小于h0。

第三步,图像分块后,重映射模块的内部控制器根据图像的分块信息计算图像块的载入行地址和写回行地址。

根据图像的位深度depth(即每个像素点的字节数)和图像块像素点的宽w0计算目标图像中图像块aij的四个顶点坐标:

左上:x1=j*depthy1=i*w0*depth

左下:x2=j*depthy2=(i+1)*w0*depth

右上:x3=(j+1)*depthy3=i*w0*depth

右下:x4=(j+1)*depthy4=(i+1)*w0*depth

如图4所示,利用坐标映射方法,根据图像块aij的四个顶点坐标计算出原始图像中对应图像块的四个顶点坐标(x5,y5)、(x6,y6)、(x7,y7)、(x8,y8);

根据原始图像中对应图像块的四个顶点坐标求得原始图像中对应图像块的外接矩形的区域参数,包括该区域像素点的宽w、高h和左上角的坐标(x,y),设x5、x6、x7、x8中的最大值和最小值分别为xmax和xmin,y5、y6、y7、y8中的最大值和最小值分别为ymax和ymin,则:区域像素点的宽w=xmax-xmin,高h=ymax-ymin,左上角的坐标(x,y)即为(xmin,ymin)。

根据原始图像中对应图像块的外接矩形的左上角坐标(x,y)计算外接矩形图块的首地址:base=image1base+(y*w1+x)*depth,其中,image1base为原始图像的首地址,w1为原始图像像素点的宽、h1为原始图像像素点的高;

根据外接矩形图块的首地址base计算该外接矩形图块的行地址:image1blockbase=base+k*w1*depth,其中k为该外接矩形图块的第k行,所述外接矩形图块的行地址即为图像块的载入行地址。

计算目标图像image2中处在第i行、j列的图像块aij的首地址:aij_base=image2base+(i*h0*w2+j*w0)*depth,其中depth为图像的位深度,image2base为目标图像image2的首地址,h0和w0分别为图像块像素点的高和宽,w2为目标图像image2像素点的宽;

根据图像块aij的首地址计算该图像块的写回行地址image2blockbase=aij_base+k*w2*depth,其中k为图像块的第k行。

第四步,根据图像块的分块信息(即图像块的首地址、图像块的位置和大小)和载入行地址,载入一个图像块进行插值处理,本实施例进行双线性插值方法包括:

通过寄存器组和并行插值单元进行流水线的并行双线性插值,寄存器组在每个时钟周期从缓存模块读取一个图像子块,同时并行插值单元从寄存器组中读取n个值进行双线性插值,双线性插值得到的结果在下一个时钟周期输出至数据写回模块。其中n必须为2的幂次方,本实施例中优选n的值为64。

通过寄存器组和并行插值单元进行流水线的并行双线性插值采用了并行映射表计算方法,并行地计算目标图像中相邻的a行b列个像素对应的原始图像中的像素的坐标,然后对a行b列个像素进行双线性插值或最邻近插值。本实施例中优选a和b的值为4,其中a行b列中总的像素个数小于n的值

并行地计算目标图像中相邻的4行4列个像素对应的原始图像中的像素的坐标的方法包括:

通过坐标映射方程结合4行4列个像素中关键点在原图的坐标,计算得到关键点的映射坐标和关键点的梯度;采用线性近似方法计算出4行4列个像素中其他各个像素点的映射坐标。

关键点的映射坐标(x2,y2)是通过坐标映射方程x=f1(u,v),y=f2(u,v)计算得到的,其中(u,v)为关键点在原图的坐标,方程f1和f2为反向映射函数。

关键点梯度的计算方法包括:

其中,(u2,v2)为4行4列个像素中关键点的像素点在目标图像坐标系中的坐标。

计算出4行4列个像素中其他15个像素点的映射坐标(xmn,ymn)的方法包括:

其中,m=0,1,2……3;n=0,1,2……3。

内部控制器将图像块的分块信息、载入行地址和载入控制信号发送给数据载入模块,数据载入模块根据接收到的信息从外部存储器中载入一个图像块。当数据载入模块载入一个图像块的所有图像数据后,存储至缓存模块,并向内部控制器反馈载入完成信号。内部控制器开始计算下一个图像块的分块信息和载入行地址,同时向坐标计算模块发送坐标计算控制信号,坐标计算模块计算重映射坐标并发送给双线性插值模块。双线性插值模块读取坐标计算模块发送的关键点重映射坐标和梯度,根据关键点重映射坐标和梯度进行双线性插值。

其中,缓存模块为一组乒乓缓存,当数据载入模块向第一缓存模块写入一个图像块的图像数据时,双线性插值模块从第二缓存模块内读取另一个图像块的图像数据,当数据载入模块向第二缓存模块写入一个图像块的图像数据时,双线性插值模块从第一缓存模块内读取另一个图像块的图像数据。

第五步,外部存储器控制器控制数据写回模块按照图像卡块的写回行地址将重映射完毕的图像块数据写回至外部存储器。当数据写回模块写回一个图像块的所有图像数据后,向内部控制器反馈写回完成信号,内部控制器接收到写回完成信号后,计算下一个图像块的写回行地址和图像的分块信息。

重复第三至第五步,知道图像中的所有分块全部重映射完毕。

其中,图像的载入和写回的过程中,每载入或写回一行数据时,使用一次突发模式内存访问。

该方法可以应用于tft-lcd面板自动光学检测系统中的几何校正环节,即对图像进行倾斜校正和缩放(透视变换)、图像采集的镜头畸变校正环节,即对图像进行扭曲校正、以及3d显示应用中对纹理图片进行透视变换中。

实施例二

本实施例提供一种基于双线性插值的重映射装置,包括集成于可编程逻辑器件的中央控制器、重映射模块和外部存储器控制器,重映射模块包括内部控制器、数据载入模块、数据缓存模块、坐标计算模块、双线性插值模块和数据写回模块,重映射模块包括寄存器组和并行插值单元,可编程逻辑器件被配置为执行计算器程序时实现如实施例一所述的一种图像重映射方法。

中央控制器:用于对重映射模块下发图像参数和重映射参数;

重映射模块:用于接收中央控制器下发的图像参数和重映射参数,并计算图像的分块信息和图像块的载入行地址和写回行地址,根据图像块的载入行地址从外部存储器内载入图像块进行重映射处理,根据写回行地址将重映射完毕的图像块数据写回至外部存储器;

外部存储器控制器:用于控制重映射模块将重映射完毕的图像块数据写回至外部存储器;

外部存储器:用于存储原始图像数据和重映射完毕的图像数据;

数据总线:用于在载入和写回图像块数据时对图像块数据进行传输;

控制总线:用于传输中央控制器下发的图像参数和重映射参数。

本实施例采用的可编程逻辑器件为可编程门阵列fpga,fpga仅为优选方案,并不对本发明的保护范围进行限定,可以理解的是能够实现本发明所述功能的任意可编程逻辑器件均应落于本发明的保护范围内。

重映射模块包括:

内部控制器:用于接收中央控制器下发的图像参数和重映射参数,计算图像的分块信息和图像块的载入行地址和写回行地址,将图像的分块信息、载入行地址和载入控制信号发送给数据载入模块,将图像的分块信息、写回行地址和写回控制信号发送给数据写回模块,同时发送坐标计算控制信号给坐标计算模块;

数据载入模块:用于接收内部控制器发送的图像分块信息、载入行地址和载入控制信号,根据载入控制信号从外部存储器中载入图像块;

数据缓存模块:用于对载入的图像块数据进行缓存,其包括第一缓存模块和第二缓存模块,两个缓存模块组成一组乒乓缓存,当向第一缓存模块写入一个图像块的图像数据时,从第二缓存模块内读取另一个图像块的图像数据进行重映射,当向第二缓存模块写入一个图像块的图像数据时,从第一缓存模块内读取另一个图像块的图像数据进行重映射;

坐标计算模块:接收内部控制器发送的坐标计算控制信号,计算重映射坐标并发送给双线性插值模块;

双线性插值模块:读取重映射坐标,根据重映射坐标进行双线性插值,将插值后的数据发送给数据写回模块;

数据写回模块:根据外部存储器控制器将重映射完毕的图像块数据写回外部存储器。

实施例三

本实施例提供一种可编程逻辑器件,可编程逻辑器件包括如实施例二所述的各个部件,并存储有计算机程序,计算机程序被可编程逻辑器件执行时实现如实施例一所述的一种图像重映射方法。

以上所述,仅为本发明的具体实施方式,应当指出,任何熟悉本领域的技术人员在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

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