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

文档序号:9728007阅读:551来源:国知局
一种对图像进行二维傅立叶变换或反变换的方法及装置的制造方法
【技术领域】
[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区域,直至完成整张图
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1