一种对图像进行二维傅立叶变换或反变换的方法及装置的制造方法

xiaoxiao2021-2-25  190

一种对图像进行二维傅立叶变换或反变换的方法及装置的制造方法
【技术领域】
[0001]本发明涉及TFT-LCD面板自动光学检测技术领域,具体涉及一种对图像进行二维傅立叶变换或反变换的方法及装置。
【背景技术】
[0002]在图像处理过程中,经常需要进行借助于傅立叶变换进行频域滤波的操作。经常采用的方式是二维快速傅立叶变换(二维FFT),将图像变换到频域,进行滤波处理后,再通过二维快速傅立叶反变换(二维IFFT)到时域,从而得到滤波处理后的图像。
[0003]图像处理领域往往对处理的实时性要求很高,而二维FFT/IFFT运算这种运算量大的模块,经常是系统速度的瓶颈所在。目前二维FFT/IFFT运算在FPGA(现场可编程门阵列)、DSP(数字信号处理)、GPU(图形处理器)、CPU等硬件平台上都有实现。
[0004]如图1所示,由于二维FFT在结果上等效于分别沿图片的行方向和列方向做一维FFT运算,因此其常用处理方法是:
[0005]1、对图片每行做一次一维FFT运算
[0006]2、将图片沿对角线进行翻转
[0007]3、再次对图片每行做一次一维FFT运算
[0008]4、再次将图片沿对角线进行翻转
[0009]由于图片在外部存储器(DDR)中存储时,整张图片的像素存储地址是连续递增的,即第n+1行的第一个像素紧挨着第η行最后一个像素存储。所以在DDR里面进行行列转换时,如果按行读取图片,则读地址连续递增;如果按列写图片,则写地址时,每写一个数据其变化量为一行数据的长度,这样一来DDR访问效率就会非常低。
[0010]因此,对于比较大的图片,如4ΚΧ4Κ像素的图片,在兼顾资源和速度的前提下,如何实现高速的二维FFT/IFFT处理是一个难题。

【发明内容】

[0011]为解决上述技术问题,本发明提供了一种可兼顾资源和速度的对图像进行二维傅立叶变换或反变换的方法及装置。
[0012]对于本发明一种对图像进行二维傅立叶变换或反变换的方法,其技术方案为:
[0013]从外部存储器的Α区域中一次取一行图片数据,做一维傅立叶变换或反变换,并将每行图片数据变换后的结果按行顺序存储至外部存储器的B区域,直至完成整张图片的一维傅立叶变换或反变换;
[0014]对外部存储器的B区域内的图像数据进行分块,按行方向每次从外部存储器的域取一个图像块存入随机存储器中;
[0015]读取随机存储器中的各个图像块数据,并将读取出的各个图像块之间按列的方向依次写回外部存储器的A区域;
[0016]从外部存储器的A区域中一次取一行图片数据,做第二次一维傅立叶变换或反变换,并将每行图片数据变换后的结果按行顺序存储至外部存储器的B区域,直至完成整张图片的二维傅立叶变换或反变换;
[0017]对外部存储器的B区域内的图像数据进行分块,按行方向每次从外部存储器的域取一个图像块存入随机存储器中;
[0018]读取随机存储器中的各个图像块数据,并将读取出的各个图像块之间按列的方向依次写回外部存储器的A区域,即完成整张图片的二维傅立叶变换或反变换;
[0019]其中,单个图像块内部的数据从随机存储器中读出的方向相对于存入随机存储器的方向进行了一次翻转。
[0020]进一步的,所述单个图像块内部的数据从随机存储器中读出的方向相对于存入随机存储器的方向进行一次翻转的方式为:单个图像块内部的数据按行方向从外部存储器的B区域读出,同时按行方向存入随机存储器中,然后按列方向从随机存储器中读出,同时按行方向写回外部存储器的A区域。
[0021]进一步的,所述单个图像块内部的数据从随机存储器中读出的方向相对于存入随机存储器的方向进行一次翻转的方式为:单个图像块内部的数据按行方向从外部存储器的B区域读出,同时按列方向存入随机存储器中,然后按行方向从随机存储器中读出,同时按行方向写回外部存储器的A区域。
[0022]进一步的,所述外部存储器包括第一外部存储器和第二外部存储器,两个外部存储器对图像数据进行交替读写;
[0023]所述交替读写即从第一外部存储器中读取数据,做傅立叶变换或反变换后的结果存入第二外部存储器,从第二外部存储器中取出数据经所述随机存储器翻转后写回第一外部存储器。
[0024]进一步的,将所述随机存储器中的第η-1个图像块数据写回至外部存储器完成后,再将所述随机存储器中的第η个图像块数据写回至外部存储器,同时从外部存储器中读取第n+1个图像块数据。
[0025]进一步的,多个所述随机存储器对外部存储器内的多个图像块进行并行读取和并行写回处理。
[0026]进一步的,所述图像块为图片按行方向和列方向等分而成,所述图像块的大小根据等分的数量进行确定。
[0027]进一步的,所述随机存储器的大小为外部存储器的1/1000?1/10,每个所述随机存储器的大小不小于一个图像块的大小。
[0028]对于本发明一种对图像进行二维傅立叶变换或反变换的装置,其技术方案为,包括:
[0029]外部存储器:用于对图像数据进行存储;
[0030]随机存储器:用于暂存外部存储器中读出的图像块数据;
[0031 ]傅立叶运算模块:用于实现一维傅立叶运算;
[0032]傅立叶运算模块读DDR接口模块:用于将图像数据以行为单位从外部存储器中取出,并送入傅立叶运算模块;
[0033]傅立叶运算模块写DDR接口模块:用于将图像数据以行为单位从傅立叶运算模块取出,并存入外部存储器中;
[0034]分块内部翻转模块:以随机存储器为媒介,实现分块内部图像数据的翻转;
[0035]图片分块翻转读DDR接口模块:用于将图片分成多个大小相同的图像块,并按行方向从DDR取图像块,顺序送入分块内部翻转模块;
[0036]图片分块翻转写DDR接口模块:用于将分块内部翻转模块输出的,已经完成了分块内部翻转的图像块,按列方向写回外部存储器。
[0037]进一步的,所述随机存储器的大小为外部存储器的1/1000?1/10,每个所述随机存储器的大小不小于一个图像块的大小。
[0038]本发明的有益效果:使用外部存储器存储数据,使用随机存储器对图片进行翻转,FPGA资源消耗少,支持大的图像数据,存储容量仅受限于外部存储器。对图片进行分块读写,图像块间和图像块内部均进行翻转,DDR地址仅在图像块内部行与行之间,图像块与图像块之间才进行跳变,从而大大提升了 DDR图片读写的效率。采用两片外部存储器进行交替读写,可以充分利用每个外部存储器的带宽。采用乒乓机制和并行机制,进一步提升了处理速度。
【附图说明】
[0039]图1为沿图片的行方向和列方向做一维FFT运算,并沿对角线进行翻转的示意图;
[0040]图2为从外部存储器A中读取图片数据,进行一维FFT运算后存储至外部存储器B的示意图;
[0041 ]图3为外部存储器B中图像块读的顺序;
[0042]图4为外部存储器A中图像块写的顺序;
[0043]图5为图像块内部翻转的第一种实施方式示意图;
[0044]图6为图像块内部翻转的第二种实施方式示意图。
【具体实施方式】
[0045]以下结合附图和具体实施例对本发明作进一步的详细说明:
[0046]首先将图片数据从整型转化为浮点型复数,包括实部和虚部,然后按行方向(先存图片第一行,再存图片第二行……)存储在FPGA外接的DDR里面,DDR的存储地址从起始存储地址开始连续递增。
[0047]对图像数据进行二维傅立叶变换或反变换运算的过程如下:
[0048]如图2所示,从外部存储器的A区域中一次取一行图片数据,做一维傅立叶变换或反变换,并将每行图片数据变换后的结果按行顺序存储至外部存储器的B区域,直至完成整张图片的一维傅立叶变换或反变换。
[0049]对外部存储器的B区域内的图像数据进行分块,按行方向每次从外部存储器的域取一个图像块存入随机存储器RAM中,其中随机存储器的大小为外部存储器的1/1000?1/10,且其存储空间应不小于一个图像块的大小。本实施例以大小为4096*4096像素的图片、将图片等分成16块为例进行说明。如图3所示,每个图像块的大小即为4096/16 = 256行,4096/16 = 256列。每次从外部存储器的B区域取一个图像块存入随机存储器中,即首先从外部存储器的B区域中读取图像块0,利用随机存储器RAM进行翻转后,存入外部存储器的A区域中;然后从外部存储器的B区域中读取图像块1,利用RAM进行翻转后,存入外部存储器的A区域中……依次进行,直到完成全部16个图像块,这样就完成了图像块间的翻转操作。实际运行时,系统可以让几个图像块的翻转同时进行,加快整张图片翻转的速度,代价是消耗更多的RAM资源。
[0050]读取随机存储器中的各个图像块数据,并将读取出的各个图像块之间按列的方向依次写回外部存储器的A区域。如图4所示,图像块按编号0?15的顺序依次从随机存储器写回外部存储器的A区域。
[0051]从外部存储器的A区域中一次取一行图片数据,做第二次一维傅立叶变换或反变换,并将每行图片数据变换后的结果按行顺序存储至外部存储器的B区域,直至完成整张图 片的二维傅立叶变换或反变换;
[0052]对外部存储器的B区域内的图像数据进行分块,按行方向每次从外部存储器的域取一个图像块存入随机存储器中;
[0053]读取随机存储器中的各个图像块数据,并将读取出的各个图像块之间按列的方向依次写回外部存储器的A区域,即完成整张图片的二维傅立叶变换或反变换。
[0054]除需要进行图像块间翻转,还需要进行图像块内部翻转,即单个图像块内部的数据从随机存储器中读出的方向相对于存入随机存储器的方向进行了一次翻转,以下采用两个实施例对图像块内部翻转进行解释。
[0055]如图4所示为第一种实施方式进行图像块内部翻转的示意图,单个图像块内部的数据按行方向从外部存储器的B区域读出,同时按行方向存入随机存储器中,然后按列方向从随机存储器中读出,同时按行方向写回外部存储器的A区域。
[0056]如图5所示为第二种实施方式进行图像块内部翻转的示意图,单个图像块内部的数据按行方向从外部存储器的B区域读出,同时按列方向存入随机存储器中,然后按行方向从随机存储器中读出,同时按行方向写回外部存储器的A区域。
[0057]按照图4和图5进行图像块内部翻转后,在每个图像块内部,每行的范围内,DDR地址是连续递增的。只在图像块内部行与行之间,块与块之间,地址才会跳变,从而大大提升了 DDR图片读写的效率。单个图像块的大小越大,DDR连续读写的数据量就越大,读写效率就越尚。
[0058]当采用一个外部存储器进行读写时,需要将外部存储器划分为A、B两个区域,按照上述描述进行读写。但为了充分的利用外部存储器的读写带宽,本实施例采用A、B两个外部存储器对图像数据进行交替读写,将外部存储器A当作外部存储器的A区域,外部存储器B当作外部存储器的B区域,按照上述描述进行图像的运算。
[0059]读DDR和写RAM的过程是同时进行的,读RAM和写DDR的过程也是同时进行的,但读RAM要等与RAM完成后才能开始进彳丁。为进一步提升速度,引入兵兵机制和并彳丁机制。以并行度为2的情况为例进行说明:首先,编号为0,1的分块进行写RAM操作;然后编号为2,3的分块进行写RAM操作,同时编号为0,1的分块进行读RAM操作;接着编号为4,5的分块进行写RAM操作,同时编号为2,3的分块进行读RAM操作……最后,编号为14,15的分块进行读RAM操作。并行度为N(N为正整数)的情况,需要2 X N个片内RAM同时工作。
[0060]在上述方案中,根据FPGA的型号、图片的大小以及对二维FFT处理延迟的要求,可选择不同的行/列方向分块数,分块大小,以及分块执行的并行度。更高的速度需要消耗更多的FPGA资源,要根据实际需求进行选取。
[0061]本发明还提供一种对图像进行二维傅立叶变换或反变换的装置,它包括:
[0062]外部存储器:用于对图像数据进行存储;
[0063]随机存储器:用于暂存外部存储器中读出的图像块数据,所述随机存储器的大小为外部存储器的1/1000?1/10,每个所述随机存储器的大小不小于一个图像块的大小;
[0064]傅立叶运算模块:用于实现一维傅立叶运算;
[0065]傅立叶运算模块读DDR接口模块:用于将图像数据以行为单位从外部存储器中取出,并送入傅立叶运算模块;
[0066]傅立叶运算模块写DDR接口模块:用于将图像数据以行为单位从傅立叶运算模块取出,并存入外部存储器中;
[0067]分块内部翻转模块:以随机存储器为媒介,实现分块内部图像数据的翻转;
[0068]图片分块翻转读DDR接口模块:用于将图片分成多个大小相同的图像块,并按行方向从DDR取图像块,顺序送入分块内部翻转模块;
[0069]图片分块翻转写DDR接口模块:用于将分块内部翻转模块输出的,已经完成了分块内部翻转的图像块,按列方向写回外部存储器。
[0070]以上所述,仅为本发明的【具体实施方式】,应当指出,任何熟悉本领域的技术人员在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
【主权项】
1.一种对图像进行二维傅立叶变换或反变换的方法,其特征在于: 从外部存储器的A区域中一次取一行图片数据,做一维傅立叶变换或反变换,并将每行图片数据变换后的结果按行顺序存储至外部存储器的B区域,直至完成整张图片的一维傅立叶变换或反变换; 对外部存储器的B区域内的图像数据进行分块,按行方向每次从外部存储器的B区域取一个图像块存入随机存储器中; 读取随机存储器中的各个图像块数据,并将读取出的各个图像块之间按列的方向依次写回外部存储器的A区域; 从外部存储器的A区域中一次取一行图片数据,做第二次一维傅立叶变换或反变换,并将每行图片数据变换后的结果按行顺序存储至外部存储器的B区域,直至完成整张图片的二维傅立叶变换或反变换; 对外部存储器的B区域内的图像数据进行分块,按行方向每次从外部存储器的B区域取一个图像块存入随机存储器中; 读取随机存储器中的各个图像块数据,并将读取出的各个图像块之间按列的方向依次写回外部存储器的A区域,即完成整张图片的二维傅立叶变换或反变换; 其中,单个图像块内部的数据从随机存储器中读出的方向相对于存入随机存储器的方向进行了一次翻转。2.根据权利要求1所述的对图像进行二维傅立叶变换或反变换的方法,其特征在于,所述单个图像块内部的数据从随机存储器中读出的方向相对于存入随机存储器的方向进行一次翻转的方式为:单个图像块内部的数据按行方向从外部存储器的B区域读出,同时按行方向存入随机存储器中,然后按列方向从随机存储器中读出,同时按行方向写回外部存储器的A区域。3.根据权利要求1所述的对图像进行二维傅立叶变换或反变换的方法,其特征在于,所述单个图像块内部的数据从随机存储器中读出的方向相对于存入随机存储器的方向进行一次翻转的方式为:单个图像块内部的数据按行方向从外部存储器的B区域读出,同时按列方向存入随机存储器中,然后按行方向从随机存储器中读出,同时按行方向写回外部存储器的A区域。4.根据权利要求2或3所述的对图像进行二维傅立叶变换或反变换的方法,其特征在于:所述外部存储器包括第一外部存储器和第二外部存储器,两个外部存储器对图像数据进行交替读与; 所述交替读写即从第一外部存储器中读取数据,做傅立叶变换或反变换后的结果存入第二外部存储器,从第二外部存储器中取出数据经所述随机存储器翻转后写回第一外部存储器。5.根据权利要求1所述的对图像进行二维傅立叶变换或反变换的方法,其特征在于:将所述随机存储器中的第η-1个图像块数据写回至外部存储器完成后,再将所述随机存储器中的第η个图像块数据写回至外部存储器,同时从外部存储器中读取第n+1个图像块数据。6.根据权利要求1所述的对图像进行二维傅立叶变换或反变换的方法,其特征在于:多个所述随机存储器对外部存储器内的多个图像块进行并行读取和并行写回处理。7.根据权利要求1所述的对图像进行二维傅立叶变换或反变换的方法,其特征在于:所述图像块为图片按行方向和列方向等分而成,所述图像块的大小根据等分的数量进行确定。8.根据权利要求7所述的对图像进行二维傅立叶变换或反变换的方法,其特征在于:所述随机存储器的大小为外部存储器的1/1000?1/10,每个所述随机存储器的大小不小于一个图像块的大小。9.一种对图像进行二维傅立叶变换或反变换的装置,其特征在于,包括: 外部存储器:用于对图像数据进行存储; 随机存储器:用于暂存外部存储器中读出的图像块数据; 傅立叶运算模块:用于实现一维傅立叶运算; 傅立叶运算模块读DDR接口模块:用于将图像数据以行为单位从外部存储器中取出,并送入傅立叶运算模块; 傅立叶运算模块写DDR接口模块:用于将图像数据以行为单位从傅立叶运算模块取出,并存入外部存储器中; 分块内部翻转模块:以随机存储器为媒介,实现分块内部图像数据的翻转; 图片分块翻转读DDR接口模块:用于将图片分成多个大小相同的图像块,并按行方向从DDR取图像块,顺序送入分块内部翻转模块; 图片分块翻转写DDR接口模块:用于将分块内部翻转模块输出的,已经完成了分块内部翻转的图像块,按列方向写回外部存储器。10.如权利要求9所述的对图像进行二维傅立叶变换或反变换的装置,其特征在于,所述随机存储器的大小为外部存储器的1/1000?1/10,每个所述随机存储器的大小不小于一个图像块的大小。
【专利摘要】本发明涉及TFT-LCD面板自动光学检测技术领域,具体涉及一种对图像进行二维傅立叶变换或反变换的方法及装置。从外部存储器的A区域中一次取一行图片数据,做一维傅立叶变换或反变换,并将运算结果按行顺序存储至外部存储器的B区域,直至完成整张图片的一维傅立叶变换或反变换;对外部存储器的B区域内的图像数据进行分块,按行方向每次从外部存储器的B区域取一个图像块存入随机存储器中,进行图像块内部翻转后按列的方向依次写回外部存储器的A区域。重复上述过程直至完成整张图片的二维傅立叶变换或反变换。采用图像块间翻转结合图像块内部翻转,FPGA资源消耗少,图像数据读写效率高。
【IPC分类】G06T1/60
【公开号】CN105488753
【申请号】CN201510853217
【发明人】汪舟, 欧昌东, 董文忠, 梅林海, 简平超
【申请人】武汉精测电子技术股份有限公司
【公开日】2016年4月13日
【申请日】2015年11月27日

最新回复(0)