CN112184565B - 一种多窗口串行的图像锐化方法 - Google Patents
一种多窗口串行的图像锐化方法 Download PDFInfo
- Publication number
- CN112184565B CN112184565B CN202010874515.XA CN202010874515A CN112184565B CN 112184565 B CN112184565 B CN 112184565B CN 202010874515 A CN202010874515 A CN 202010874515A CN 112184565 B CN112184565 B CN 112184565B
- Authority
- CN
- China
- Prior art keywords
- image
- memory
- level
- data
- filter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003707 image sharpening Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000015654 memory Effects 0.000 claims abstract description 185
- 230000000903 blocking effect Effects 0.000 claims abstract description 9
- 238000004364 calculation method Methods 0.000 claims description 140
- 238000001914 filtration Methods 0.000 description 7
- 230000002146 bilateral effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/73—Deblurring; Sharpening
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
本发明提供了图像处理技术领域的一种多窗口串行的图像锐化方法,包括如下步骤:步骤S10、设定一大小为a列×b行像素的分块尺寸,基于所述分块尺寸将待锐化的图像进行分块,生成若干块原始图像;步骤S20、分别创建大小均等于所述分块尺寸的一第一memory、一第二memory、一第三memory以及一第四memory;步骤S30、设定一一级滤波器、一二级滤波器以及一三级滤波器;步骤S40、利用所述一级滤波器、二级滤波器、三级滤波器、第一memory、第二memory、第三memory以及第四memory分别对各原始图像进行轮转锐化,输出三级锐化图像;步骤S50、将所述三级锐化图像叠加至原始图像上,完成图像的锐化。本发明的优点在于:极大的降低了图像锐化对硬件资源的占用。
Description
技术领域
本发明涉及图像处理技术领域,特别指一种多窗口串行的图像锐化方法。
背景技术
图像锐化(image sharpening)是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,突出图像上地物的边缘、轮廓,或某些线性目标要素的特征,使图像变得清晰。在图像锐化处理算法中,获得的图像梯度信息越细腻,其锐化的效果也会越好,因为锐化在让图像变清晰的同时,也会放大平坦区域的噪声,所以会采用比较大的窗口把噪声平滑掉,如果锐化选取的窗口过大,计算出的边界梯度也会非常大,这个时候叠加回原图会出现一种很难看的白边(shoot现象),为了平衡shoot、噪声和锐化力度这三者的关系,计算图像梯度的时候会采用不同大小的窗口,或者是好几个窗口串行起来多做几次处理,达到平坦区域不被处理,边界区域不会出现shoot的锐化效果,即通过多级滤波器(窗口)串行对图像进行锐化。
然而,多级滤波器串行需要大容量的memory,硬件上无法实现,即使实现性价比也非常低。例如通过三级滤波器对图像进行锐化,先对图像做一个5x5的高斯滤波,然后在高斯滤波的结果上做一个17x17的双边滤波,最后在双边滤波的结果上做一个3x3的中值滤波;由于硬件处理时像素是一行一行输入的,如果窗口是5x5,那么就要先把前4行数据存下来,等第5行数据到达,再读出来拼成5x5大小做处理,因此,5x5的窗口需要4行memory,17x17需要16行memory,3x3需要2行memory,即共需要22行的memory;而目前支持的图像宽度最大到5120,假设一个像素的位宽是8bit,如果是22行的memory,共需要5120*22*8bit/8/1024=110KByte的memory才能实现。众所周知,芯片的面积越大,价格越高,而这样的memory面积已经无法通过硬件实现。
因此,如何提供一种多窗口串行的图像锐化方法及***,实现降低图像锐化对硬件资源的占用,成为一个亟待解决的问题。
发明内容
本发明要解决的技术问题,在于提供一种多窗口串行的图像锐化方法,实现降低图像锐化对硬件资源的占用。
本发明提供了一种多窗口串行的图像锐化方法,包括如下步骤:
步骤S10、设定一大小为a×b像素的分块尺寸,基于所述分块尺寸将待锐化的图像进行分块,生成若干块原始图像;
步骤S20、分别创建大小均等于所述分块尺寸的一第一memory、一第二memory、一第三memory以及一第四memory;
步骤S30、设定一一级滤波器、一二级滤波器以及一三级滤波器;
步骤S40、利用所述一级滤波器、二级滤波器、三级滤波器、第一memory、第二memory、第三memory以及第四memory分别对各原始图像进行轮转锐化,输出三级锐化图像;
步骤S50、将所述三级锐化图像叠加至原始图像上,完成图像的锐化。
进一步地,所述步骤S30中,所述一级滤波器包括一大小为N1×N1的一级计算窗口、一大小为((a+N1-1)×N1)的一级二维寄存器以及一大小为(N1-1)×(b+N1-1)的一级中间memory;所述二级滤波器包括一大小为N2×N2的二级计算窗口、一大小为((a+N2-1)×N2)的二级二维寄存器以及一大小为(N2-1)×(b+N2-1)的二级中间memory;所述三级滤波器包括一大小为N3×N3的三级计算窗口、一大小为((a+N3-1)×N3)的三级二维寄存器以及一大小为(N3-1)×(b+N3-1)的三级中间memory;其中N1、N2、N3、a以及b均为正整数;所述一级计算窗口、二级计算窗口以及三级计算窗口的大小均对应1个像素点。
进一步地,所述步骤S40具体包括:
步骤S41、将第1块、第2块、第3块和第4块所述原始图像分别存储至第一memory、第二memory、第三memory以及第四memory中;
步骤S42、所述一级滤波器分别读取第一memory以及第二memory中的原始图像进行计算分别生成一级锐化图像,并将两块所述一级锐化图像输入二级滤波器;
步骤S43、所述二级滤波器分别对两块一级锐化图像进行计算生成两块二级锐化图像,并将所述二级锐化图像输入三级滤波器;
步骤S44、所述三级滤波器分别对两块二级锐化图像进行计算生成两块三级锐化图像。
进一步地,所述步骤S42具体为:所述一级滤波器读取第一memory中的原始图像,将所述原始图像最顶端的a×N1大小的数据置于一级二维寄存器的最右边,利用所述一级计算窗口对一级二维寄存器中存储的数据进行从左往右的计算,并将所述一级二维寄存器最右边N1-1列的原始数据存储至一级中间memory中,将所述一级二维寄存器从原始图像下移1行继续进行计算,直至完成b行数据的计算,生成第1块的一级锐化图像并传输给二级滤波器;
所述一级滤波器读取第二memory中的原始图像,将所述原始图像最顶端的a×N1大小的数据置于一级二维寄存器的最右边,读取所述一级中间memory中N1-1列的原始数据置于一级二维寄存器的最左边,利用所述一级计算窗口对一级二维寄存器中存储的数据进行从左往右的计算,并将所述一级二维寄存器最右边N1-1列的计算数据存储至一级中间memory中,将所述一级二维寄存器从原始图像下移1行继续进行计算,直至完成b行数据的计算,生成第2块的一级锐化图像并传输给二级滤波器。
进一步地,所述步骤S43具体为:所述二级滤波器读取第1块一级锐化图像,将所述一级锐化图像最顶端的a×N2大小的数据置于二级二维寄存器的最右边,利用所述二级计算窗口对二级二维寄存器中存储的数据进行从左往右的计算,并将所述二级二维寄存器最右边N2-1列的一级锐化图像的数据存储至二级中间memory中,将所述二级二维寄存器从一级锐化图像下移1行继续进行计算,直至完成b行数据的计算,生成第1块的二级锐化图像并传输给三级滤波器;
所述二级滤波器读取第2块一级锐化图像,将所述一级锐化图像最顶端的a×N2大小的数据置于一级二维寄存器的最右边,读取所述二级中间memory中N2-1列的一级锐化图像的数据置于二级二维寄存器的最左边,利用所述二级计算窗口对二级二维寄存器中存储的数据进行从左往右的计算,并将所述二级二维寄存器最右边N2-1列的计算数据存储至二级中间memory中,将所述二级二维寄存器从一级锐化图像下移1行继续进行计算,直至完成b行数据的计算,生成第2块的二级锐化图像并传输给三级滤波器。
进一步地,所述步骤S44具体为:所述三级滤波器读取第1块二级锐化图像,将所述二级锐化图像最顶端的a×N3大小的数据置于三级二维寄存器的最右边,利用所述三级计算窗口对三级二维寄存器中存储的数据进行从左往右的计算,并将所述三级二维寄存器最右边N3-1列的二级锐化图像的数据存储至三级中间memory中,将所述三级二维寄存器从二级锐化图像下移1行继续进行计算,直至完成b行数据的计算,生成第1块的三级锐化图像;
所述三级滤波器读取第2块二级锐化图像,将所述二级锐化图像最顶端的a×N3大小的数据置于三级二维寄存器的最右边,读取所述三级中间memory中N3-1列的二级锐化图像的数据置于三级二维寄存器的最左边,利用所述三级计算窗口对三级二维寄存器中存储的数据进行从左往右的计算,并将所述三级二维寄存器最右边N3-1列的计算数据存储至三级中间memory中,将所述三级二维寄存器从二级锐化图像下移1行继续进行计算,直至完成b行数据的计算,生成第2块的三级锐化图像。
进一步地,所述步骤S50具体为:
将两块所述三级锐化图像分别叠加至第一memory以及第二memory中的原始图像上,将第5块所述原始图像存储至第一memory中,读取第二memory以及第三memory中的原始图像,进行第2块未完成部分以及第3块所述原始图像的锐化,以此类推,直至完成整张图像的锐化。
本发明的优点在于:
1、通过将待锐化的图像按设定的分块尺寸进行分块生成若干块原始图像,再利用一级滤波器、二级滤波器、三级滤波器、第一memory、第二memory、第三memory以及第四memory分别对各原始图像进行轮转锐化,输出三级锐化图像,最终将三级锐化图像叠加至原始图像上,完成图像的锐化,极大的降低了图像锐化对硬件资源的占用。
同样是三级窗口串行(N1×N1、N2×N2、N3×N3的三个窗口),传统上需要5120×[(N1-1)+(N2-1)+(N3-1)]×8bit/8/1024=5(N1+N2+N3-3)KByte;本发明需要4个memory(第一memory、第二memory、第三memory以及第四memory)以及3个中间memory即可,4个memory的大小为4×a×b×8bit/8/1024,3个中间memory的大小分别为(N1-1)×(b+N1-1)×8bit/8/1024、
(N2-1)×(b+N2-1)×8bit/8/1024以及(N3-1)×(b+N3-1)×8bit/8/1024,加总起来共需要[4×a×b+(N1-1)(b+N1-1)+(N2-1)(b+N2-1)+(N2-1)(b+N2-1)]/1024KByte;为了便于理解,设N1=5,N2=17,N3=3,a=32,b=64,传统上需要110KByte,本发明只需9.65KByte,远小于传统所需容量。
2、由于图像分块锐化计算涉及到左右扩边,而窗口又是串行的,以窗口大小为5x5、分块尺寸为32x64为例,当前32x64算出的5x5滤波结果的最右边的4列和下一个32x64最左边的4列结果是一样的,计算的次数越多,重复计算的内容也越多,功耗就越大;另外,如果芯片要求性能是每时钟计算两个pixel,这时候就需要两套计算模块(一级滤波器、二级滤波器、三级滤波器),如果每个32x64都要多计算,加上扩边每次要算36个点,一行是32个pixel,要在16cycle做完,36个点开2套计算模块不够,开3套计算模块又浪费,不方便硬件扩展;因此在一级滤波器、二级滤波器、三级滤波器内分别设置一中间memory,分别存储三个窗口最右边N1-1列、N2-1列以及N3-1列的计算结果,即存储图像块和图像块之间重复利用的那部分数据,在下一次计算时读出来用,不必重复计算,进而极大的节约了计算工作量,节约了计算功耗,方便硬件扩展。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1是本发明一种多窗口串行的图像锐化方法的流程图。
图2是本发明一种多窗口串行的图像锐化方法的流程示意图。
图3是本发明滤波器的结构示意图。
图4是本发明32列×64行分块尺寸的分块示意图。
具体实施方式
本申请实施例中的技术方案,总体思路如下:对带锐化的图像进行分块,利用三级滤波器以及四个memory对分块后的图像分别进行轮转锐化,输出三级锐化图像,锐化的过程中将图像块和图像块之间重复利用的那部分数据存储于中间memory内供下一图像块的计算使用,最终将三级锐化图像叠加至原始图像上,完成图像的锐化。
请参照图1至图4所示,本发明一种多窗口串行的图像锐化方法的较佳实施例之一,包括如下步骤:
步骤S10、设定一大小为a×b像素的分块尺寸,基于所述分块尺寸将待锐化的图像进行分块,生成若干块原始图像;其中a表示列像素,b表示行像素,且均为正整数;
步骤S20、分别创建大小均等于所述分块尺寸的一第一memory、一第二memory、一第三memory以及一第四memory;
步骤S30、设定一用于高斯滤波计算的一级滤波器、一用于双边滤波计算的二级滤波器以及一用于中值滤波计算的三级滤波器;
步骤S40、利用所述一级滤波器、二级滤波器、三级滤波器、第一memory、第二memory、第三memory以及第四memory分别对各原始图像进行轮转锐化计算,输出三级锐化图像;
步骤S50、将所述三级锐化图像叠加至原始图像上,完成图像的锐化。
所述步骤S30中,所述一级滤波器包括一大小为N1×N1的一级计算窗口、一大小为((a+N1-1)×N1)的一级二维寄存器以及一大小为(N1-1)×(b+N1-1)的一级中间memory;所述二级滤波器包括一大小为N2×N2的二级计算窗口、一大小为((a+N2-1)×N2)的二级二维寄存器以及一大小为(N2-1)×(b+N2-1)的二级中间memory;所述三级滤波器包括一大小为N3×N3的三级计算窗口、一大小为((a+N3-1)×N3)的三级二维寄存器以及一大小为(N3-1)×(b+N3-1)的三级中间memory;其中N1、N2、N3、a以及b均为正整数;所述一级计算窗口、二级计算窗口以及三级计算窗口的大小均对应1个像素点。memory以及二维寄存器分别属于缓存的一个类别。所述一级计算窗口、二级计算窗口、三级计算窗口、一级二维寄存器、二级二维寄存器以及三级二维寄存器均为滑动窗口。
所述步骤S40具体包括:
步骤S41、将第1块、第2块、第3块和第4块所述原始图像分别存储至第一memory、第二memory、第三memory以及第四memory中;
步骤S42、所述一级滤波器分别读取第一memory以及第二memory中的原始图像进行计算分别生成一级锐化图像,并将两块所述一级锐化图像输入二级滤波器;
步骤S43、所述二级滤波器分别对两块一级锐化图像进行计算生成两块二级锐化图像,并将所述二级锐化图像输入三级滤波器;
步骤S44、所述三级滤波器分别对两块二级锐化图像进行计算生成两块三级锐化图像。
在具体实施时,不必等所述一级锐化图像、二级锐化图像以及三级锐化图像完全生成才进入下一个环节,数据是边生成边传输的,只要数据量达到计算窗口的大小即可开始进行计算。
所述步骤S42具体为:所述一级滤波器读取第一memory中的原始图像,将所述原始图像最顶端的a×N1大小的数据置于一级二维寄存器的最右边,利用所述一级计算窗口对一级二维寄存器中存储的数据进行从左往右的计算,并将所述一级二维寄存器最右边N1-1列的原始数据存储至一级中间memory中,将所述一级二维寄存器从原始图像下移1行像素继续进行计算,直至完成b行数据的计算,生成第1块的一级锐化图像并传输给二级滤波器;
所述一级滤波器读取第二memory中的原始图像,将所述原始图像最顶端的a×N1大小的数据置于一级二维寄存器的最右边,读取所述一级中间memory中N1-1列的原始数据置于一级二维寄存器的最左边,利用所述一级计算窗口对一级二维寄存器中存储的数据进行从左往右的计算,并将所述一级二维寄存器最右边N1-1列的计算数据存储至一级中间memory中,将所述一级二维寄存器从原始图像下移1行像素继续进行计算,直至完成b行数据的计算,生成第2块的一级锐化图像并传输给二级滤波器。
对于二维寄存器来说,每做完一个块,当前块最左上角的数据就没用了,前一级的数据就会把这个数据覆盖掉,每做完一行数据,第一行的数据就已经被前级算出的新数据全部覆盖,往下移动一行,原来的第2行变成第1行,第1行变成第5行,动态不间断的做下去。
所述步骤S43具体为:所述二级滤波器读取第1块一级锐化图像,将所述一级锐化图像最顶端的a×N2大小的数据置于二级二维寄存器的最右边,利用所述二级计算窗口对二级二维寄存器中存储的数据进行从左往右的计算,并将所述二级二维寄存器最右边N2-1列的一级锐化图像的数据存储至二级中间memory中,将所述二级二维寄存器从一级锐化图像下移1行像素继续进行计算,直至完成b行数据的计算,生成第1块的二级锐化图像并传输给三级滤波器;
所述二级滤波器读取第2块一级锐化图像,将所述一级锐化图像最顶端的a×N2大小的数据置于一级二维寄存器的最右边,读取所述二级中间memory中N2-1列的一级锐化图像的数据置于二级二维寄存器的最左边,利用所述二级计算窗口对二级二维寄存器中存储的数据进行从左往右的计算,并将所述二级二维寄存器最右边N2-1列的计算数据存储至二级中间memory中,将所述二级二维寄存器从一级锐化图像下移1行像素继续进行计算,直至完成b行数据的计算,生成第2块的二级锐化图像并传输给三级滤波器。
所述步骤S44具体为:所述三级滤波器读取第1块二级锐化图像,将所述二级锐化图像最顶端的a×N3大小的数据置于三级二维寄存器的最右边,利用所述三级计算窗口对三级二维寄存器中存储的数据进行从左往右的计算,并将所述三级二维寄存器最右边N3-1列的二级锐化图像的数据存储至三级中间memory中,将所述三级二维寄存器从二级锐化图像下移1行像素继续进行计算,直至完成b行数据的计算,生成第1块的三级锐化图像;
所述三级滤波器读取第2块二级锐化图像,将所述二级锐化图像最顶端的a×N3大小的数据置于三级二维寄存器的最右边,读取所述三级中间memory中N3-1列的二级锐化图像的数据置于三级二维寄存器的最左边,利用所述三级计算窗口对三级二维寄存器中存储的数据进行从左往右的计算,并将所述三级二维寄存器最右边N3-1列的计算数据存储至三级中间memory中,将所述三级二维寄存器从二级锐化图像下移1行像素继续进行计算,直至完成b行数据的计算,生成第2块的三级锐化图像。
将最右边N1-1列、N2-1列以及N3-1列的计算数据分别存储到所述一级中间memory、二级中间memory以及三级中间memory中,是因为所述一级计算窗口、二级计算窗口以及三级计算窗口的大小无法恰好满足分块尺寸;例如分块尺寸为32×64,一级计算窗口大小为5×5,当一级计算窗口在原始图像上从左往右依次滑动1个像素进行计算,仅能完成30个窗口30列数据的计算,最右边的2列无法完成计算,要等下一个32×64再计算;即每次计算时,图像的第一列的32×64只能算出30个数据,最右边的2个数据要等第二列的32×64,从第二列开始,每次可以算出32列数据,只不过这32列中最左边的2列是上一个块的遗留下来的,而本块最右边的2列还得等下一块;将一级二维寄存器的大小设为36×5,即在最左边补上前一次计算的最右边4列数据,即可完成之前无法完成的2列数据的计算,而前一次已经计算过的数据不必再次计算,直接利用即可,节约算力。
而处理第1块原始图像时,所述一级中间memory中并未存储数据,一级计算窗口在原始图像上从左往右进行计算无法完成最右边2列数据的计算(最左边的2列数据可以复制边界2次以计算原始图像最左边的第1列像素),因此从左往右计算,并将最右边的4列原始数据进行存储,供后续计算使用,而从第2块原始图像开始,所述一级中间memory中存储有前一次已经计算过的最右边4列的计算数据,将一级中间memory中存储的4列计算数据填充至一级二维寄存器中,让一级计算窗口从左往右进行计算即可。
简而言之,将二维寄存器当作一个窗口在原始图像上至上而下移动,计算窗口在二维寄存器内从左往右移动进行锐化计算,并在二维寄存器的最左边填充前一次锐化计算最右边N-1列的计算数据,避免二维寄存器最左边的数据因不满足计算窗口的大小而无法进行计算。
所述步骤S50具体为:
将两块所述三级锐化图像分别叠加至第一memory以及第二memory中的原始图像上,将第5块所述原始图像存储至第一memory中,读取第二memory以及第三memory中的原始图像,进行第2块未完成部分以及第3块所述原始图像的锐化,以此类推,直至完成整张图像的锐化。即第一次利用第一memory进行锐化计算(因为最右边(N1-1)/2列凑不到1个像素无法进行计算,因此凑到第二次进行计算),第二次利用第一memory以及第二memory进行锐化计算,第三次利用第二memory以及第三memory进行锐化计算,第四次利用第三memory以及第四memory进行锐化计算,以此类推进行轮转锐化。
例如一级计算窗口的大小为5x5,对应1个像素,当原始图像的大小为32x64时,最右边的2列凑不到1个像素,所以最右边的2列做不了,此时读取第二memory以及第三memory,开始计算第2块最右边2列和第3块原始图像的锐化,此时第一memory就空出来了,可以继续往里面写第5块原始图像,一个块全计算完成之后,读取第三memory以及第四memory,开始计算第3块最右边的2列和第4块原始图像的锐化,及每做完一块就右移读下一块,已经用完的memory会有新数据写进去覆盖掉原来的旧数据,不断轮转。
本发明一种多窗口串行的图像锐化方法的较佳实施例之二,包括如下步骤:
步骤S10、设定一大小为32×64像素的分块尺寸,基于所述分块尺寸将待锐化的图像进行分块,生成若干块原始图像;
步骤S20、分别创建大小均等于32×64的一第一memory、一第二memory、一第三memory以及一第四memory;
步骤S30、设定一用于高斯滤波计算的一级滤波器、一用于双边滤波计算的二级滤波器以及一用于中值滤波计算的三级滤波器;
所述一级滤波器包括一大小为5×5的一级计算窗口、一大小为((32+5-1)×5)的一级二维寄存器以及一大小为(5-1)×(64+5-1)的一级中间memory;所述二级滤波器包括一大小为17×17的二级计算窗口、一大小为((32+17-1)×17)的二级二维寄存器以及一大小为(17-1)×(64+17-1)的二级中间memory;所述三级滤波器包括一大小为3×3的三级计算窗口、一大小为((32+3-1)×3)的三级二维寄存器以及一大小为(3-1)×(64+3-1)的三级中间memory;
步骤S40、利用所述一级滤波器、二级滤波器、三级滤波器、第一memory、第二memory、第三memory以及第四memory分别对各原始图像进行轮转锐化计算,输出三级锐化图像;
步骤S50、将所述三级锐化图像叠加至原始图像上,完成图像的锐化。
所述步骤S40具体包括:
步骤S41、将第1块、第2块、第3块和第4块所述原始图像分别存储至第一memory、第二memory、第三memory以及第四memory中;
步骤S42、所述一级滤波器读取第一memory中的原始图像,将所述原始图像最顶端的a×5大小的数据置于一级二维寄存器的最右边,利用所述一级计算窗口对一级二维寄存器中存储的数据进行从左往右的计算,并将所述一级二维寄存器最右边4列的原始数据存储至一级中间memory中,将所述一级二维寄存器从原始图像下移1行继续进行计算,直至完成64行数据的计算,生成第1块的一级锐化图像并传输给二级滤波器;
所述一级滤波器读取第二memory中的原始图像,将所述原始图像最顶端的32×5大小的数据置于一级二维寄存器的最右边,读取所述一级中间memory中4列的原始数据置于一级二维寄存器的最左边,利用所述一级计算窗口对一级二维寄存器中存储的数据进行从左往右的计算,并将所述一级二维寄存器最右边4列的计算数据存储至一级中间memory中,将所述一级二维寄存器从原始图像下移1行继续进行计算,直至完成64行数据的计算,生成第2块的一级锐化图像并传输给二级滤波器。
步骤S43、所述二级滤波器读取第1块一级锐化图像,将所述一级锐化图像最顶端的32×17大小的数据置于二级二维寄存器的最右边,利用所述二级计算窗口对二级二维寄存器中存储的数据进行从左往右的计算,并将所述二级二维寄存器最右边16列的一级锐化图像的数据存储至二级中间memory中,将所述二级二维寄存器从一级锐化图像下移1行继续进行计算,直至完成64行数据的计算,生成第1块的二级锐化图像并传输给三级滤波器;
所述二级滤波器读取第2块一级锐化图像,将所述一级锐化图像最顶端的32×17大小的数据置于一级二维寄存器的最右边,读取所述二级中间memory中16列的一级锐化图像的数据置于二级二维寄存器的最左边,利用所述二级计算窗口对二级二维寄存器中存储的数据进行从左往右的计算,并将所述二级二维寄存器最右边16列的计算数据存储至二级中间memory中,将所述二级二维寄存器从一级锐化图像下移1行继续进行计算,直至完成64行数据的计算,生成第2块的二级锐化图像并传输给三级滤波器。
步骤S44、所述三级滤波器读取第1块二级锐化图像,将所述二级锐化图像最顶端的32×3大小的数据置于三级二维寄存器的最右边,利用所述三级计算窗口对三级二维寄存器中存储的数据进行从左往右的计算,并将所述三级二维寄存器最右边2列的二级锐化图像的数据存储至三级中间memory中,将所述三级二维寄存器从二级锐化图像下移1行继续进行计算,直至完成64行数据的计算,生成第1块的三级锐化图像;
所述三级滤波器读取第2块二级锐化图像,将所述二级锐化图像最顶端的32×3大小的数据置于三级二维寄存器的最右边,读取所述三级中间memory中2列的二级锐化图像的数据置于三级二维寄存器的最左边,利用所述三级计算窗口对三级二维寄存器中存储的数据进行从左往右的计算,并将所述三级二维寄存器最右边2列的计算数据存储至三级中间memory中,将所述三级二维寄存器从二级锐化图像下移1行继续进行计算,直至完成64行数据的计算,生成第2块的三级锐化图像。
所述步骤S50具体为:
将两块所述三级锐化图像分别叠加至第一memory以及第二memory中的原始图像上,将第5块所述原始图像存储至第一memory中,读取第二memory以及第三memory中的原始图像,进行第2块未完成部分以及第3块所述原始图像的锐化,以此类推,直至完成整张图像的锐化。
综上所述,本发明的优点在于:
1、通过将待锐化的图像按设定的分块尺寸进行分块生成若干块原始图像,再利用一级滤波器、二级滤波器、三级滤波器、第一memory、第二memory、第三memory以及第四memory分别对各原始图像进行轮转锐化,输出三级锐化图像,最终将三级锐化图像叠加至原始图像上,完成图像的锐化,极大的降低了图像锐化对硬件资源的占用。
同样是三级窗口串行(N1×N1、N2×N2、N3×N3的三个窗口),传统上需要5120×[(N1-1)+(N2-1)+(N3-1)]×8bit/8/1024=5(N1+N2+N3-3)KByte;本发明需要4个memory(第一memory、第二memory、第三memory以及第四memory)以及3个中间memory即可,4个memory的大小为4×a×b×8bit/8/1024,3个中间memory的大小分别为(N1-1)×(b+N1-1)×8bit/8/1024、
(N2-1)×(b+N2-1)×8bit/8/1024以及(N3-1)×(b+N3-1)×8bit/8/1024,加总起来共需要[4×a×b+(N1-1)(b+N1-1)+(N2-1)(b+N2-1)+(N2-1)(b+N2-1)]/1024KByte;为了便于理解,设N1=5,N2=17,N3=3,a=32,b=64,传统上需要110KByte,本发明只需9.65KByte,远小于传统所需容量。
2、由于图像分块锐化计算涉及到左右扩边,而窗口又是串行的,以窗口大小为5x5、分块尺寸为32x64为例,当前32x64算出的5x5滤波结果的最右边的4列和下一个32x64最左边的4列结果是一样的,计算的次数越多,重复计算的内容也越多,功耗就越大;另外,如果芯片要求性能是每时钟计算两个pixel,这时候就需要两套计算模块(一级滤波器、二级滤波器、三级滤波器),如果每个32x64都要多计算,加上扩边每次要算36个点,一行是32个pixel,要在16cycle做完,36个点开2套计算模块不够,开3套计算模块又浪费,不方便硬件扩展;因此在一级滤波器、二级滤波器、三级滤波器内分别设置一中间memory,分别存储三个窗口最右边N1-1列、N2-1列以及N3-1列的计算结果,即存储图像块和图像块之间重复利用的那部分数据,在下一次计算时读出来用,不必重复计算,进而极大的节约了计算工作量,节约了计算功耗,方便硬件扩展。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (6)
1.一种多窗口串行的图像锐化方法,其特征在于:包括如下步骤:
步骤S10、设定一大小为a×b像素的分块尺寸,基于所述分块尺寸将待锐化的图像进行分块,生成若干块原始图像;
步骤S20、分别创建大小均等于所述分块尺寸的一第一memory、一第二memory、一第三memory以及一第四memory;
步骤S30、设定一一级滤波器、一二级滤波器以及一三级滤波器;
步骤S40、利用所述一级滤波器、二级滤波器、三级滤波器、第一memory、第二memory、第三memory以及第四memory分别对各原始图像进行轮转锐化,输出三级锐化图像;
步骤S50、将所述三级锐化图像叠加至原始图像上,完成图像的锐化;
所述步骤S30中,所述一级滤波器包括一大小为N1×N1的一级计算窗口、一大小为((a+N1-1)×N1)的一级二维寄存器以及一大小为(N1-1)×(b+N1-1)的一级中间memory;所述二级滤波器包括一大小为N2×N2的二级计算窗口、一大小为((a+N2-1)×N2)的二级二维寄存器以及一大小为(N2-1)×(b+N2-1)的二级中间memory;所述三级滤波器包括一大小为N3×N3的三级计算窗口、一大小为((a+N3-1)×N3)的三级二维寄存器以及一大小为(N3-1)×(b+N3-1)的三级中间memory;其中N1、N2、N3、a以及b均为正整数;所述一级计算窗口、二级计算窗口以及三级计算窗口的大小均对应1个像素点。
2.如权利要求1所述的一种多窗口串行的图像锐化方法,其特征在于:所述步骤S40具体包括:
步骤S41、将第1块、第2块、第3块和第4块所述原始图像分别存储至第一memory、第二memory、第三memory以及第四memory中;
步骤S42、所述一级滤波器分别读取第一memory以及第二memory中的原始图像进行计算分别生成一级锐化图像,并将两块所述一级锐化图像输入二级滤波器;
步骤S43、所述二级滤波器分别对两块一级锐化图像进行计算生成两块二级锐化图像,并将所述二级锐化图像输入三级滤波器;
步骤S44、所述三级滤波器分别对两块二级锐化图像进行计算生成两块三级锐化图像。
3.如权利要求2所述的一种多窗口串行的图像锐化方法,其特征在于:所述步骤S42具体为:所述一级滤波器读取第一memory中的原始图像,将所述原始图像最顶端的a×N1大小的数据置于一级二维寄存器的最右边,利用所述一级计算窗口对一级二维寄存器中存储的数据进行从左往右的计算,并将所述一级二维寄存器最右边N1-1列的原始数据存储至一级中间memory中,将所述一级二维寄存器从原始图像下移1行继续进行计算,直至完成b行数据的计算,生成第1块的一级锐化图像并传输给二级滤波器;
所述一级滤波器读取第二memory中的原始图像,将所述原始图像最顶端的a×N1大小的数据置于一级二维寄存器的最右边,读取所述一级中间memory中N1-1列的原始数据置于一级二维寄存器的最左边,利用所述一级计算窗口对一级二维寄存器中存储的数据进行从左往右的计算,并将所述一级二维寄存器最右边N1-1列的计算数据存储至一级中间memory中,将所述一级二维寄存器从原始图像下移1行继续进行计算,直至完成b行数据的计算,生成第2块的一级锐化图像并传输给二级滤波器。
4.如权利要求2所述的一种多窗口串行的图像锐化方法,其特征在于:所述步骤S43具体为:所述二级滤波器读取第1块一级锐化图像,将所述一级锐化图像最顶端的a×N2大小的数据置于二级二维寄存器的最右边,利用所述二级计算窗口对二级二维寄存器中存储的数据进行从左往右的计算,并将所述二级二维寄存器最右边N2-1列的一级锐化图像的数据存储至二级中间memory中,将所述二级二维寄存器从一级锐化图像下移1行继续进行计算,直至完成b行数据的计算,生成第1块的二级锐化图像并传输给三级滤波器;
所述二级滤波器读取第2块一级锐化图像,将所述一级锐化图像最顶端的a×N2大小的数据置于一级二维寄存器的最右边,读取所述二级中间memory中N2-1列的一级锐化图像的数据置于二级二维寄存器的最左边,利用所述二级计算窗口对二级二维寄存器中存储的数据进行从左往右的计算,并将所述二级二维寄存器最右边N2-1列的计算数据存储至二级中间memory中,将所述二级二维寄存器从一级锐化图像下移1行继续进行计算,直至完成b行数据的计算,生成第2块的二级锐化图像并传输给三级滤波器。
5.如权利要求2所述的一种多窗口串行的图像锐化方法,其特征在于:所述步骤S44具体为:所述三级滤波器读取第1块二级锐化图像,将所述二级锐化图像最顶端的a×N3大小的数据置于三级二维寄存器的最右边,利用所述三级计算窗口对三级二维寄存器中存储的数据进行从左往右的计算,并将所述三级二维寄存器最右边N3-1列的二级锐化图像的数据存储至三级中间memory中,将所述三级二维寄存器从二级锐化图像下移1行继续进行计算,直至完成b行数据的计算,生成第1块的三级锐化图像;
所述三级滤波器读取第2块二级锐化图像,将所述二级锐化图像最顶端的a×N3大小的数据置于三级二维寄存器的最右边,读取所述三级中间memory中N3-1列的二级锐化图像的数据置于三级二维寄存器的最左边,利用所述三级计算窗口对三级二维寄存器中存储的数据进行从左往右的计算,并将所述三级二维寄存器最右边N3-1列的计算数据存储至三级中间memory中,将所述三级二维寄存器从二级锐化图像下移1行继续进行计算,直至完成b行数据的计算,生成第2块的三级锐化图像。
6.如权利要求2所述的一种多窗口串行的图像锐化方法,其特征在于:所述步骤S50具体为:
将两块所述三级锐化图像分别叠加至第一memory以及第二memory中的原始图像上,将第5块所述原始图像存储至第一memory中,读取第二memory以及第三memory中的原始图像,进行第2块未完成部分以及第3块所述原始图像的锐化,以此类推,直至完成整张图像的锐化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010874515.XA CN112184565B (zh) | 2020-08-27 | 2020-08-27 | 一种多窗口串行的图像锐化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010874515.XA CN112184565B (zh) | 2020-08-27 | 2020-08-27 | 一种多窗口串行的图像锐化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112184565A CN112184565A (zh) | 2021-01-05 |
CN112184565B true CN112184565B (zh) | 2023-09-29 |
Family
ID=73925105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010874515.XA Active CN112184565B (zh) | 2020-08-27 | 2020-08-27 | 一种多窗口串行的图像锐化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112184565B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06195457A (ja) * | 1992-08-26 | 1994-07-15 | Minolta Camera Co Ltd | 画像処理装置 |
CN102037491A (zh) * | 2008-05-19 | 2011-04-27 | 三菱电机株式会社 | 提高图像锐度的图像处理 |
CN107533750A (zh) * | 2015-04-23 | 2018-01-02 | 谷歌公司 | 虚拟图像处理器指令集架构(isa)和存储器模型与具有二维移位阵列结构的示例性目标硬件 |
CN108038833A (zh) * | 2017-12-28 | 2018-05-15 | 福州瑞芯微电子股份有限公司 | 一种梯度相关性检测的图像自适应锐化方法和存储介质 |
-
2020
- 2020-08-27 CN CN202010874515.XA patent/CN112184565B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06195457A (ja) * | 1992-08-26 | 1994-07-15 | Minolta Camera Co Ltd | 画像処理装置 |
CN102037491A (zh) * | 2008-05-19 | 2011-04-27 | 三菱电机株式会社 | 提高图像锐度的图像处理 |
CN107533750A (zh) * | 2015-04-23 | 2018-01-02 | 谷歌公司 | 虚拟图像处理器指令集架构(isa)和存储器模型与具有二维移位阵列结构的示例性目标硬件 |
CN108038833A (zh) * | 2017-12-28 | 2018-05-15 | 福州瑞芯微电子股份有限公司 | 一种梯度相关性检测的图像自适应锐化方法和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112184565A (zh) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108133270B (zh) | 卷积神经网络加速方法及装置 | |
JP5376920B2 (ja) | コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置 | |
JP2018073102A (ja) | 演算回路、その制御方法及びプログラム | |
JP2021100247A (ja) | 歪んだドキュメント画像の矯正方法及び装置 | |
CN110989920B (zh) | 能量高效的存储器***和方法 | |
CN112991142B (zh) | 图像数据的矩阵运算方法、装置、设备及存储介质 | |
CN110519603B (zh) | 一种实时视频缩放的硬件电路及其缩放方法 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN108932715B (zh) | 一种基于深度学习的冠状动脉造影图分割的优化方法 | |
CN111967582B (zh) | 一种cnn卷积层运算方法及cnn卷积层运算加速器 | |
CN112633470A (zh) | 优化神经网络卷积残差结构的方法、***、设备及介质 | |
CN108764182B (zh) | 一种优化的用于人工智能的加速方法和装置 | |
CN112184565B (zh) | 一种多窗口串行的图像锐化方法 | |
CN111047037B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN112183732A (zh) | 卷积神经网络加速方法、装置和计算机设备 | |
CN110569684B (zh) | 一种小容量缓存的图像二值化方法 | |
CN204440489U (zh) | 一种用于红外图像处理的可配置多功能数据路径结构 | |
CN112163612B (zh) | 基于fpga的大模板卷积图像匹配方法、装置及*** | |
JP3860545B2 (ja) | 画像処理装置及び画像処理方法 | |
CN110570802A (zh) | 数字伽马校正***及包括该校正***的显示驱动芯片 | |
CN116150046B (zh) | 一种高速缓存电路 | |
CN101431637B (zh) | 帧数据处理的装置及方法 | |
CN113887720B (zh) | 一种上采样逆向分块映射方法 | |
CN110570444B (zh) | 一种基于Box Filter算法的阈值计算方法 | |
US20220269752A1 (en) | Execution method for convolution computation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |