CN112154475A - 图像处理方法、装置及移动设备 - Google Patents

图像处理方法、装置及移动设备 Download PDF

Info

Publication number
CN112154475A
CN112154475A CN201980033764.1A CN201980033764A CN112154475A CN 112154475 A CN112154475 A CN 112154475A CN 201980033764 A CN201980033764 A CN 201980033764A CN 112154475 A CN112154475 A CN 112154475A
Authority
CN
China
Prior art keywords
image
read
original pixels
filter
cycle
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.)
Pending
Application number
CN201980033764.1A
Other languages
English (en)
Inventor
仇晓颖
韩彬
吴迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SZ DJI Technology Co Ltd
Original Assignee
SZ DJI Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SZ DJI Technology Co Ltd filed Critical SZ DJI Technology Co Ltd
Publication of CN112154475A publication Critical patent/CN112154475A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)

Abstract

一种图像处理方法、装置以及移动设备,所述图像处理方法应用于向量处理单元,所述向量处理单元包括乘法器,所述方法包括:读取图像的Pread个原像素,其中,Pread的值根据对应所述向量处理单元的访存位宽确定;读取滤波器的N个系数,N的值根据所述向量处理单元的乘法器的个数确定,所述滤波器用于对所述图像进行滤波处理;通过所述乘法器,将所述N个系数中的每一系数和所述Pread个原像素分别相乘,得到多个乘积结果,所述乘积结果用于计算滤波后图像中像素点的像素值。

Description

图像处理方法、装置及移动设备
技术领域
本公开涉及图像处理领域,尤其涉及一种图像处理方法、装置及移动设备。
背景技术
滤波广泛应用于图像处理领域。图像处理装置在执行滤波算法时,先从片外存储器读取图像的原像素,再利用运算单元对原像素进行滤波处理。
现有技术中,在每个运算周期,通常是读取几个原像素,就由几个运算单元对原像素进行处理。这样,当运算单元的数量数倍于每次读取的原像素个数时,就会有部分运算单元在滤波过程中闲置,得不到充分利用。
例如,图像处理装置具有八个运算单元,如果每个运算周期只能读取四个原像素,只有四个运算单元参与运算,其余四个运算单元不能得到利用,导致图像滤波的整体性能受限,影响图像处理效率。
发明内容
本公开提供了一种图像处理方法,所述方法应用于向量处理单元,所述向量处理单元包括乘法器,所述方法包括:读取图像的Pread个原像素,其中,Pread的值根据对应所述向量处理单元的访存位宽确定;读取滤波器的N个系数,N的值根据所述向量处理单元的乘法器的个数确定,所述滤波器用于对所述图像进行滤波处理;通过所述乘法器,将所述N个系数中的每一系数和所述Pread个原像素分别相乘,得到多个乘积结果,所述乘积结果用于计算滤波后图像中像素点的像素值。
本公开还提供了一种图像处理装置,包括:外部存储单元,存储有图像和滤波器;向量处理单元,包括:乘法器;所述向量处理单元用于读取所述图像的Pread个原像素,其中,Pread的值根据对应所述向量处理单元的访存位宽确定,读取所述滤波器的N个系数,N的值根据所述向量处理单元的乘法器的个数确定,所述滤波器用于对所述图像进行滤波处理;所述乘法器用于将所述N个系数中的每一系数和所述Pread个原像素分别相乘,得到多个乘积结果,所述乘积结果用于计算滤波后图像中像素点的像素值。
本公开还提供了一种移动设备,其中,包括:上述图像处理装置。
本公开在每个运算周期读取滤波器的N个系数,读取的所述系数的个数N根据向量处理单元的乘法器的个数确定;所述N个系数分别和每一所述原像素相乘,得到乘积结果;现对于现有技术,使更多的乘法器参与滤波运算,运算资源得到充分利用,有效提高了图像滤波的整体性能,改善了图像处理效率。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为本公开实施例的图像处理方法的流程图。
图2的(a)、(b)、(c)分别是第1-3个运算周期的运算示意图。
图3的(a)、(b)、(c)、(d)、(e)分别是第4-8个运算周期的运算示意图。
图4的(a)、(b)、(c)、(d)、(e)分别是第9-18个运算周期的运算示意图。
图5的(a)、(b)分别是第19、23个运算周期的运算示意图。
图6的(a)、(b)分别是第24、28个运算周期的运算示意图。
图7为本公开实施例的图像处理方法的过程示意图。
图8的(a)、(b)、(c)分别是第54-56个运算周期的运算示意图。
图9为本公开实施例的图像处理方法的滤波后图像示意图。
图10为本公开实施例的图像处理装置的结构示意图。
图11为本公开实施例的图像处理装置的运算单元执行预处理时的结构示意图。
图12为本公开实施例的图像处理装置的运算单元执行并行处理时的结构示意图。
具体实施方式
下面将结合实施例和实施例中的附图,对本公开技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开一实施例提供了一种图像处理方法,所述图像方法应用于向量处理单元,所述向量处理单元包括乘法器,如图1所示,所述方法包括:
步骤S101:读取图像的Pread个原像素,其中,Pread的值根据对应所述向量处理单元的访存位宽确定;
步骤S102:读取滤波器的N个系数,N的值根据所述向量处理单元的乘法器的个数确定,所述滤波器用于对所述图像进行滤波处理;
步骤S103:通过所述乘法器,将所述N个系数中的每一系数和所述Pread个原像素分别相乘,得到多个乘积结果,所述乘积结果用于计算滤波后图像中像素点的像素值。
得到用于计算滤波后图像中像素点的像素值的乘积结果后,将用于计算滤波后图像中同一像素点的像素值的乘积结果累加在一起,即可得到该像素点的像素值,从而得到整个滤波后图像。
本实施例的图像处理方法由一图像处理装置运行,图像处理装置包括:外部存储单元和处理器。该处理器可以是CPU、DSP、FPGA等任何类型的具有向量处理能力的芯片。
以DSP为例,DSP内部有向量处理单元,向量处理单元可对图像进行滤波等处理。对于向量处理单元来说,外部存储单元是其片外存储器。外部存储单元存储有待处理的图像以及滤波器。向量处理单元利用滤波器对图像进行滤波处理,得到的滤波后图像也可以存储在外部存储单元中。
DSP的向量处理单元包括多个乘累加器(MAC,Multiply and ACumulate),每个MAC包括一个所述乘法器和一个加法器,用于执行滤波中的乘法操作和累加操作。
在步骤S101中,读取图像的Pread个原像素,其中,Pread的值根据对应所述向量处理单元的访存位宽确定。
整个滤波过程需要经历多个运算周期才可完成。在每个运算周期,向量处理单元均需读取图像的Pread个原像素。为提高图像处理方法的效率,在每个运算周期应读取尽可能多的原像素。即读取的原像素的个数Pread等于每个运算周期向量处理单元可读取的原像素的最大数目。
当向量处理单元从存储单元读取这Pread个原像素时,可读取的最大数目取决于数据总线的访存位宽、以及原像素的位宽。所述位宽是指每个原像素用多少个位(bit)来表示。例如,原像素的位宽可以是8bit、16bit、32bit等。所述访存位宽是指所述数据总线具有多少条位线,即数据总线每次可以传输多少个bit,一般是8的倍数。例如,访存位宽可以是8bit、16bit、32bit、64bit等。当原像素位宽为16bit、访存位宽为64bit时,向量处理单元每个运算周期可从存储单元读取64/16=4个原像素。即本实施例中的所述最大数目等于访存位宽与所述原像素位宽的商。
当读取原像素后,步骤S102读取滤波器的N个系数,N的值根据所述向量处理单元的乘法器的个数确定,所述滤波器用于对所述图像进行滤波处理。
在每个运算周期,向量处理单元均读取与Pread个原像素对应的滤波器的N个系数。为提升图像滤波的整体性能,提高图像处理效率,本实施例中,每次读取的系数的个数N根据乘法器的个数确定。具体来说,如果向量处理单元包括Ncalc个乘法器,则系数的个数
N=(Ncalc/Pread)。
乘法器的个数通常是每个运算周期读取的原像素个数的整数倍数,乘法器的个数是每个运算周期读取的原像素个数的多少倍,就从外部存储单元读取多少个滤波器的系数。乘法器的个数可以是8、16、32等。当向量处理单元每个运算周期读取4个原像素时,如果乘法器的个数为8,则N=8/4=2,即每个运算周期读取滤波器的2个系数。
若乘法器的个数并非每个运算周期读取的原像素个数的整数倍数,那么N的值可以是Ncalc/Pread的结果向上取整的值。比如,乘法器的个数为10,当向量处理单元每个运算周期读取4个原像素时,10/4为2.5,此时读取3个系数。选任意2个系数分别与4个原像素的每一个相乘,这个操作利用了8个乘法器;选除上述2个系数外的另1个系数,与4个原像素中的任意两个分别相乘,这个操作利用了剩余2个乘法器。这样,充分利用10个乘法器,在一次运算周期内执行了更多的乘法操作。
当读取原像素和滤波器的系数后,步骤S103通过所述乘法器,将所述N个系数中的每一系数和所述Pread个原像素分别相乘,得到多个乘积结果,所述乘积结果用于计算滤波后图像中像素点的像素值。本实施例的图像处理方法,包括预处理和并行处理。
当向量处理单元读取的是图像的第一行中的Pread个原像素时,执行预处理。在预处理中,向量处理单元读取图像的第一行中的Pread个原像素以及滤波器第一行的一个系数或N个系数,将所述一个系数和所述Pread个原像素相乘,或将所述N个系数中的每一个系数和所述Pread个原像素分别相乘,得到乘积结果。
从图像的第二行开始,即当向量处理单元读取的是图像的第一行之后其他行的Pread个原像素时,执行并行处理。在并行处理中,向量处理单元读取图像一行中的Pread个原像素以及滤波器的N个系数,其中,这N个系数位于滤波器的相邻N行的同一列。Ncalc个乘法器将N个系数每一个系数和Pread个原像素分别相乘,得到乘积结果。
以下结合附图,以乘法器的个数为8,每个运算周期读取4个原像素和滤波器的2个系数为一个示例,对上述处理过程进行说明。
假设图像的原始尺寸为16×4。为了使滤波后图像的尺寸与图像的原始尺寸相同,本实施例可对图像进行填充(padding)。填充后的图像的尺寸为20×8,即宽度Mw为20、高度Nh为8,相较于原图像,其向原图像边界外扩充了多个元素。具体的填充方式可以是对临近边界点的元素简单复制,并填充至原图像边界以外的区域,也可是利用预先设定好的填充元素,此处仅为示例性说明,并未限制本公开的填充方式。滤波器的尺寸为20×8,即宽度Fw和高度Fh均为5。滤波器对填充后的图像进行滤波运算。以下以二维卷积为例对滤波运算进行详细说明。
在二维卷积中,对于图像的一些行,在计算原像素的滤波结果时,这些行的原像素只用到一次,在针对其他行的原像素进行滤波中的乘积运算时,这些行的原像素不会被复用。因此,这些行的原像素可以在行内采用预处理的方式进行运算。
在上述示例中,图像的第一行就属于上述情况。在计算原像素的滤波结果时,第一行的原像素只用到一次,在针对后面其他行的原像素进行滤波中的乘积运算时,第一行的原像素不会被复用。因此,第一行原像素采用预处理的方式进行运算。以下请一并参见图2和图7,对图像第一行的预处理过程进行介绍。所述预处理的过程包括:
如图2(a)所示,在第1个运算周期(cycle 1)中:
读取图像的第一行的4个原像素,即B0,0,B0,1,B0,2,B0,3
读取滤波器的第一行的一个系数A0,0
4个乘法器将系数A0,0分别和图像的4个原像素B0,0,B0,1,B0,2,B0,3相乘,得到系数A0,0的乘积结果。
如图2(b)所示,在第2个运算周期(cycle 2)中:
读取图像的第一行的4个原像素,即B0,2,B0,3,B0,4,B0,5
读取滤波器的第一行的2个系数A0,1,A0,2
4个乘法器将系数A0,1分别和图像的4个原像素B0,1,B0,2,B0,3,B0,4相乘,得到系数A0,1的乘积结果,另4个乘法器将系数A0,2分别和图像的4个原像素B0,2,B0,3,B0,4,B0,5相乘,得到系数A0,2的乘积结果,并将两个乘积结果累加至cycle 1的乘积结果。
如图2(c)所示,在第3个运算周期(cycle 3)中:
读取图像的第一行的4个原像素,即B0,4,B0,5,B0,6,B0,7
读取滤波器的第一行的2个系数A0,3,A0,4
4个乘法器将系数A0,3分别和图像的4个原像素B0,3,B0,4,B0,5,B0,6相乘,得到系数A0,3的乘积结果,另4个乘法器将系数A0,4分别和图像的4个原像素B0,4,B0,5,B0,6,B0,7相乘,得到系数A0,4的乘积结果,并将两个乘积结果累加至cycle 2的累加结果。
经过3个运算周期完成预处理,预处理得到的乘积结果用于计算滤波后图像第一行的四个像素点。
以上介绍了第一行的预处理过程,以此类推,可从图像的第二行开始重复上述步骤,对图像的其他行也执行行内的预处理,得到用于计算滤波后图像各行的像素点的乘积结果,将用于计算滤波后图像中同一像素点的像素值的乘积结果累加在一起,即可得到该像素点的像素值。利用行内预处理的方式对图像进行二维滤波,提高了二维滤波的运算效率,提高了图像滤波的整体性能,改善了图像处理效率。
前面已经提到,在二维卷积中,图像的一些行的原像素只用到一次,这些行的原像素不会被复用。但对于图像的另一些行,在计算原像素的滤波结果时,这些行的原像素会多次用到,在针对其他行的原像素进行滤波中的乘积运算时,这些行的原像素可被复用。因此,这些行的原像素可以在行内采用并行处理的方式进行运算。
在上述示例中,从图像的第二行开始就都属于上述情况。本实施例可对第一行之后的其他行执行并行处理,并行处理可进一步提高二维滤波的运算效率和图像滤波的整体性能。以下请一并参见图3和图7,对并行处理的过程进行介绍。所述并行处理的过程包括:
如图3(a)所示,在第4个运算周期(cycle 4)中:
读取图像的第二行的4个原像素,即B1,0,B1,1,B1,2,B1,3
读取滤波器的第一行和第二行这相邻两行的第一列的2个系数A0,0,A1,0
8个乘法器将系数A0,0,A1,0分别和图像的4个原像素B1,0,B1,1,B1,2,B1,3相乘,得到系数A0,0和A1,0的乘积结果。其中,系数A1,0的4个乘积结果用于计算滤波后图像第一行的四个像素点,并累加至cycle 3的累加结果;系数A0,0的4个乘积结果用于计算滤波后图像第二行的四个像素点。
如图3(b)所示,在第5个运算周期(cycle 5)中:
读取图像的第二行的4个原像素,即B1,1,B1,2,B1,3,B1,4
读取滤波器的第一行和第二行这相邻两行的第2列的2个系数A0,1,A1,1
8个乘法器将系数A0,1,A1,1分别和图像的4个原像素B1,1,B1,1,B1,3,B1,4相乘,得到系数A0,1和A1,1的乘积结果。其中,系数A1,1的4个乘积结果用于计算滤波后图像第一行的四个像素点,并累加至cycle 4的累加结果;系数A0,1的4个乘积结果用于计算滤波后图像第二行的四个像素点,并累加至cycle 4的乘积结果。
如图3(c)所示,在第6个运算周期(cycle 6)中:
读取图像的第二行的4个原像素,即B1,2,B1,3,B1,4,B1,5
读取滤波器的第一行和第二行这相邻两行的第3列的2个系数A0,2,A1,2
8个乘法器将系数A0,2,A1,2分别和图像的4个原像素B1,2,B1,3,B1,4,B1,5相乘,得到系数A0,2和A1,2的乘积结果。其中,系数A1,2的4个乘积结果用于计算滤波后图像第一行的四个像素点,并累加至cycle 5的累加结果;系数A0,2的4个乘积结果用于计算滤波后图像第二行的四个像素点,并累加至cycle 5的累加结果。
如图3(d)所示,在第7个运算周期(cycle 7)中:
读取图像的第二行的4个原像素,即B1,3,B1,4,B1,5,B1,6
读取滤波器的第一行和第二行这相邻两行的第4列的2个系数A0,3,A1,3
8个乘法器将系数A0,3,A1,3分别和图像的4个原像素B1,3,B1,4,B1,5,B1,6相乘,得到系数A0,3和A1,3的乘积结果。其中,系数A1,3的4个乘积结果用于计算滤波后图像第一行的四个像素点,并累加至cycle 6的累加结果;系数A0,3的4个乘积结果用于计算滤波后图像第二行的四个像素点,并累加至cycle 6的累加结果。
如图3(e)所示,在第8个运算周期(cycle 8)中:
读取图像的第二行的4个原像素,即B1,4,B1,5,B1,6,B1,7
读取滤波器的第一行和第二行这相邻两行的第5列的2个系数A0,4,A1,4
8个乘法器将系数A0,4,A1,4分别和图像的4个原像素B1,4,B1,5,B1,6,B1,7相乘,得到系数A0,4和A1,4的乘积结果。其中,系数A1,4的4个乘积结果用于计算滤波后图像第一行的四个像素点,并累加至cycle 7的累加结果;系数A0,4的4个乘积结果用于计算滤波后图像第二行的四个像素点,并累加至cycle 7的累加结果。
经过5个运算周期后,完成图像的第2行的8个原像素的并行处理。在上述5个运算周期中,8个乘法器并行将滤波器的2个系数与4个原像素相乘,从而并行得到用于计算滤波后图像第一行和第二行的四个像素点。
图像的第三行的并行处理过程与上述第二行的并行处理过程是类似的,所不同的是读取的是图像的第三行的4个原像素,以及滤波器的第二行和第三行这相邻两行的同一列的系数,可以参见图4(a)至图4(e)以及图7所示,具体过程不再赘述。以此类推,当读取图像的第五行的原像素时,并行处理过程如下:
如图5(a)和图7所示,在第19个运算周期(cycle 19)中:
读取图像的第五行的4个原像素,即B4,0,B4,1,B4,2,B4,3
读取滤波器的第四行和第五行这相邻两行的第一列的2个系数A3,0,A4,0
8个乘法器将系数A3,0,A4,0分别和图像的4个原像素B4,0,B4,1,B4,2,B4,3相乘,得到系数A3,0和A4,0的乘积结果。其中,系数A4,0的4个乘积结果用于计算滤波后图像第一行的四个像素点,并累加至cycle 18的累加结果;系数A3,0的4个乘积结果用于计算滤波后图像第二行的四个像素点,并累加至cycle 18的累加结果。
以此类推,cycle 20、21、22运算过程与cycle 19类似。如图5(b)和图7所示,在第23个运算周期(cycle 23)中:
读取图像的第五行的4个原像素,即B4,4,B4,5,B4,6,B4,7
读取滤波器的第四行和第五行这相邻两行的第5列的2个系数A3,4,A4,4
8个乘法器将系数A3,4,A4,4分别和图像的4个原像素B4,4,B4,5,B4,6,B4,7相乘,得到系数A3,4和A4,4的乘积结果。其中,系数A4,4的4个乘积结果用于计算滤波后图像第一行的四个像素点,并累加至cycle 22的累加结果,cycle 23的累加结果即为滤波后图像第一行的四个像素点C0,0-C0,3。系数A3,4的4个乘积结果用于计算滤波后图像第二行的四个像素点,并累加至cycle 22的累加结果。
由此可见,经过23个运算周期后,得到了滤波后图像第一行的四个像素点。
滤波过程继续进行,由于在cycle 23中,读取的是滤波器第四行和第五行的系数,所以在下一个运算周期中,会出现滤波器的相邻两行在高度方向上首尾跨越的情况。此时,读取的图像的下一行的原像素不能复用,滤波器的两个系数分别与不同行的原像素进行运算,并行处理按照以下方式进行:
从向量处理单元的内部存储单元读取另Pread个原像素,所述另Pread个原像素在之前的运算周期从所述图像读取,并被存储至所述内部存储单元。
所述N个系数中位于所述滤波器高度方向尾部的每一个系数和从所述图像读取的一行的Pread个原像素分别相乘,得到所述乘积结果;
所述N个系数中位于所述滤波器高度方向首部的每一个系数和从所述内部存储单元读取的另Pread个原像素分别相乘,得到所述乘积结果。
以下以第24至28运算周期为例,对上述过程进行说明。
如图6(a)和图7所示,在第24个运算周期(cycle 24)中:
从外部存储单元读取图像的第六行的4个原像素,即B5,0,B5,1,B5,2,B5,3,从内部存储单元中读取图像第三行的4个原像素,即B2,0,B2,1,B2,2,B2,3。其中,B2,0,B2,1,B2,2,B2,3这4个原像素在cycle 9从图像读取并存储至内部存储单元。
读取滤波器的第五行和第一行这相邻两行的第一列的2个系数A4,0,A0,0;4个乘法器将滤波器首部的系数A0,0分别和图像的4个原像素B2,0,B2,1,B2,2,B2,3相乘,得到系数A0,0的乘积结果,系数A0,0的4个乘积结果用于计算滤波后图像第三行的四个像素点;另4个乘法器将滤波器尾部系数A4,0分别和图像的4个原像素B5,0,B5,1,B5,2,B5,3相乘,得到系数A4,0的乘积结果,系数A4,0的4个乘积结果用于计算滤波后图像第二行的四个像素点。
以此类推,cycle 25、26、27的运算过程与cycle 24类似。如图6(b)和图7所示,在第28个运算周期(cycle 28)中:
从外部存储单元读取图像的第五行的4个原像素,即B5,4,B5,5,B5,6,B5,7,从内部存储单元中读取图像第三行的4个原像素,即B2,4,B2,5,B2,6,B2,7。其中,B2,4,B2,5,B2,6,B2,7这4个原像素在cycle 13从图像读取并存储至内部存储单元。
读取滤波器的第五行和第一行这相邻两行的第五列的2个系数A4,4,A0,4;4个乘法器将滤波器首部的系数A0,4分别和图像的4个原像素B2,4,B2,5,B2,6,B2,7相乘,得到系数A0,4的乘积结果,系数A0,4的4个乘积结果用于计算滤波后图像第三行的四个像素点,并累加至cycle 27的累加结果;另4个乘法器将滤波器尾部系数A4,4分别和图像的4个原像素B5,4,B5,5,B5,6,B5,6相乘,得到系数A4,4的乘积结果,系数A4,4的4个乘积结果用于计算滤波后图像第二行的四个像素点,并累加至cycle 27的累加结果。cycle 28的累加结果即为滤波后图像第二行的四个像素点C1,0-C1,3
由此可见,经过28个运算周期后,得到了滤波后图像第一行的四个像素点C0,0-C0,3和第二行的四个像素点C1,0-C1,3
不断重复执行上述并行处理过程,从cycle 28开始,再经过24个运算周期后,即可得到滤波后图像第三行的四个像素点C2,0-C2,3,再经过1个运算周期,即从cycle 28开始再经过25个运算周期,共53个运算周期后,即可得到滤波后图像第四行的四个像素点C3,0-C3,3,从而得到滤波后图像全部四行的第1列至第4列的像素点。
在以上的描述中,图像的高度Nh为8,滤波器的高度Fh为5,由此可以确定,滤波后图像的高度N0为4。每个运算周期读取的滤波器系数的个数N为2,滤波后图像的高度N0能被滤波器系数的个数N整除。在这种情况下,经过上述53个运算周期,针对滤波后图像第1列至第4列的像素点的滤波过程已经完成。如果滤波后图像的高度N0不能被滤波器系数的个数N整除,那么滤波后图像第1列至第4列的像素点的滤波过程仍未完成。此时还需要继续对图像进行处理,以得到滤波后图像剩余行的像素点。因为滤波后图像剩余行也不能进行并行处理,因此进行如下的行内处理:
读取图像中用于计算滤波后图像后r行像素点的一行Pread个原像素,r为滤波器的高度与N相除的余数;
读取所述滤波器一行中的一个系数或所述N个系数;
通过所述乘法器,将所述一个系数和所述Pread个原像素相乘,或将所述N个系数中的每一个系数和所述Pread个原像素分别相乘,得到乘积结果。
例如,假设图像的高度Nh为9,滤波器高度仍为5,则对应的滤波后图像的高度N0为5,此时滤波后图像的高度N0不能被N整除时,滤波后图像第1列至第4列的像素点的滤波过程仍未完成。此时还需要继续对图像进行处理,以得到滤波后图像第5行的像素点。因为只剩一行的像素点,即滤波后图像第5行的像素点,所以针对滤波后图像第5行的像素点也不能进行并行处理,而是进行行内处理。
在行内处理中,针对图像第5行至第9行中的每一行,均执行一次上述的预处理过程。即针对图像第5行至第9行中的每一行,读取滤波器一行中的一个或N个系数,经所述一个或N个系数分别和该行的每一个原像素相乘,得到乘积结果。在行内处理过程中,以图像第5行为例,其处理过程具体包括:
如图8(a)所示,在第54个运算周期(cycle 54)中:
读取图像的第五行的4个原像素,即B4,0,B4,1,B4,2,B4,3
读取滤波器的第一行的一个系数A0,0
4个乘法器将系数A0,0分别和图像的4个原像素B4,0,B4,1,B4,2,B4,3相乘,得到系数A0,0的乘积结果。
如图8(b)所示,在第55个运算周期(cycle 55)中:
读取图像的第五行的4个原像素,即B4,2,B4,3,B4,4,B4,5
读取滤波器的第一行的2个系数A0,1,A0,2
4个乘法器将系数A0,1分别和图像的4个原像素B4,1,B4,2,B4,3,B4,4相乘,得到系数A0,1的乘积结果,另4个乘法器将系数A0,2分别和图像的4个原像素B4,2,B4,3,B4,4,B4,5相乘,得到系数A0,2的乘积结果,并将两个乘积结果累加至cycle 54的乘积结果。
如图8(c)所示,在第56个运算周期(cycle 56)中:
读取图像的第五行的4个原像素,即B4,4,B4,5,B4,6,B4,7
读取滤波器的第一行的2个系数A0,3,A0,4
4个乘法器将系数A0,3分别和图像的4个原像素B4,3,B4,4,B4,5,B4,6相乘,得到系数A0,3的乘积结果,另4个乘法器将系数A0,4分别和图像的4个原像素B4,4,B4,5,B4,6,B4,7相乘,得到系数A0,4的乘积结果,并将两个乘积结果累加至cycle 55的累加结果。
再经过3个运算周期完成图像的第5行的预处理,上述各个运算周期得到的乘积结果用于计算滤波后图像第五行的四个像素点。
以此类推,重复上述步骤,对图像的第6行至第9行、及其对应的滤波器的第2行至第5行分别进行上述预处理,每一行的预处理需要3个运算周期。经过15个运算周期的行内运算,一共68个运算周期,得到滤波后图像第5行的像素点,从而得到滤波后图像全部五行的第1列至第4列的像素点,滤波后图像第1列至第4列的滤波过程全部完成。
当得到滤波后图像第1列至第4列的目标元素后,再不断重复上述预处理和并行处理、行内处理(如果有)的整个过程,如图9所示,以滤波后图像的高度为4为例,依次得到滤波后图像第5列至第8列、第9列至第12列和第13列至第16列的像素点,从而完成整个滤波过程。滤波后图像的宽度Mo=Pread*ceil((Mw-Fw+1)/Pread),高度No=Nh-Fh+1;其中,Mw为所述图像的宽度。当Pread为4、Mw为20、Nh为8、Fw和Fh为5时,滤波后图像尺寸为16×4,即宽度Mo为16、高度No为4。
以上示例以向量处理单元的个数Ncalc为8,每个运算周期读取的原像素个数Pread为4、滤波器系数的个数N为2、图像的宽度Mw为20、滤波器的宽度Fw和高度Fh均为5,对本实施例的图像处理方法进行了说明。但显然,本领域技术人员应当清楚,以上参数的取值不限于此。本实施例的以上参数还可以取其他值。当以上参数取其他值时,图像处理方法与以上描述是类似的,本领域技术人员完全应该清楚图像处理方法的具体过程。
本实施例的图像处理方法,滤波后图像的第一行的Pread个像素点的运算时间为:
Tpre+Fw×(Fh-1)×cycle
其中,Tpre为上述预处理的运算时间;Fw、Fh分别为滤波器的宽度和高度;cycle为一个运算周期。所述预处理的运算时间Tpre为:(1+ceil((Fw-1)/N))×cycle。
在上述示例中,滤波器的宽度Fw和高度Fh均为5,N为2,预处理的运算时间Tpre为3个运算周期,所以该运算时间为23个运算周期。也就是说,经过25个运算周期得到滤波后图像的第一行4个像素点。
从滤波后图像的第二行开始,并行处理过程中每一行的Pread个像素点的运算时间为:
Fw×Fh×cycle
上述示例中,滤波器的宽度Fw和高度Fh均为5,该运算时间为25个运算周期。也就是说,滤波后图像的第二行至第四行的每一行的4个像素点都需要25个运算周期。
如果滤波过程存在行内运算,滤波后图像的后r行是通过行内运算得到的,那么滤波后图像的后r行中的每一行的Pread个像素点的运算时间为:Tpre×Fh
上述示例中,假设图像的高度Nh为9,滤波后图像最后1行,即第5行的像素点通过行内运算得到,滤波器的高度Fh均为5,该运算时间为15个运算周期。也就是说,滤波后图像第五行的4个像素点经过15个运算周期得到。
本实施例的图像处理方法,当滤波后图像的高度N0能被滤波器系数的个数N整除,即不存在行内处理时,滤波后图像的第一行至最后一行的No×Pread个像素点的运算时间为:
Tpre+Fw×Fh×(No/N)×cycle
其中,No为所述滤波后图像的高度,且No=Nh-Fh+1,Nh为图像的高度。
上述示例中,滤波器的宽度Fw和高度Fh均为5,预处理的运算时间Tpre为3个运算周期,如果图像的高度Nh为8,滤波后图像的高度No为4,所以滤波后图像的第一行至第四行的4×4=16个像素点的运算时间为53个运算周期。
当滤波后图像的高度N0不能被滤波器系数的个数N整除,即存在行内处理时,滤波后图像的第一行至最后一行的No×Pread个像素点的运算时间为:
Tpre+Fw×Fh×((No-r)/N)×cycle+Tr
其中,r为No与N相除的余数,即滤波后图像中需要由行内处理得到的行数,Tr为行内处理的运算时间。行内处理的运算时间Tr为:r×Tpre×Fh
上述示例中,滤波器的宽度Fw和高度Fh均为5,预处理的运算时间Tpre为3个运算周期,如果图像的高度Nh为9,滤波后图像的高度No为4,代入上述公式,滤波后图像的第一行至第五行的5×4=20个像素点的运算时间为68个运算周期。
在以上的描述中,本实施例的原像素是按照顺序进行读取,即在图像高度方向上从上到下、从第一行至最后一行,每一行中按照从左到右的顺序读取。滤波后图像的像素点也是按顺序输出。按照顺序读取时,读取图像一行的Pread个原像素包括:
从图像的第二行开始,在每一行中依次读取Fw组原像素,其中第n组原像素包括第n列至第n+Pread-1列的Pread个原像素,其中1≤n≤Fw
例如在上述示例中,在图像的高度方向上从上到下读取各行的原像素,在每一行,依次读取5组原像素,第1组原像素包括第1列至第4列的4个原像素,例如B1,0,B1,1,B1,2,B1,3;第2组原像素包括第2列至第5列的4个原像素,例如B1,1,B1,2,B1,3,B1,4;第3组原像素包括第3列至第6列的4个原像素,例如B1,2,B1,3,B1,4,B1,5;第4组原像素包括第4列至第7列的4个原像素,例如B1,3,B1,4,B1,5,B1,6;第5组原像素包括第5列至第8列的4个原像素,例如B1,4,B1,5,B1,6,B1,7
但本公开不限于此,实际上,图像原像素读取的顺序是不受限制的,可以顺序读取、倒序读取、跳跃读取。只要能遍历图像的所有原像素,遍历所有滤波器系数,完成M*N*Fw*Fh个乘累加运算,即可完成滤波。只不过在倒序或跳跃读取的情况下,滤波后图像的像素点的输出顺序不同而已。
在以上示例中,每次均是从外部存储单元中读取图像的Pread个原像素。但本公开不限于此。在每个运算周期,从外部存储单元中读取图像的Pread个原像素后,还可以将读取的Pread个原像素存储在向量处理单元的内部存储单元中。这样在之后的运算周期中,如果其需要读取的Pread个原像素中的部分原像素已经存储在内部存储单元中,那么这部分原像素直接从内部存储单元中读取即可,只需要从存储单元读取内部存储单元未存储的另一部分原像素即可。具体来说,读取图像一行的Pread个原像素包括;
从内部存储单元读取Pread个原像素中的部分原像素,所述部分原像素在之前的运算周期被存储;
从外部存储单元读取Pread个原像素中的剩余部分原像素,得到Pread个原像素;
将剩余部分像素存储至内部存储单元。
例如,如图7所示,在cycle 4读取B1,0,B1,1,B1,2,B1,3后,可将B1,0,B1,1,B1,2,B1,3存储至向量处理单元的内部存储单元。这样在cycle 5中,只需从存储单元读取B1,4即可,B1,1,B1,2,B1,3可从内部存储单元中读取。这样减小了向量处理单元从片外存储器读取的数据量,节省了带宽。
在以上示例中,每个运算周期执行乘法和累加操作,即滤波器系数和原像素相乘,并将相乘结果累加至上一运算周期的累加结果。但是本公开并不限于此,也可以先进行乘法运算,得到用于计算滤波后图像的像素点的所有乘积结果后再进行累加。
由此可见,本公开在每个运算周期读取滤波器的N个系数,读取的所述系数的个数N根据所述执行所述图像处理方法的乘法器的个数确定;所述N个系数分别和每一所述原像素相乘,得到乘积结果;相对于现有技术,使更多的向量处理单元参与滤波运算,相对于预处理方式,运算资源得到充分利用,图像滤波的整体性能得到更大的提高,图像处理效率得到更大的改善。
本公开另一实施例提供了一种图像处理装置,如图10所示,包括:
外部存储单元,存储有图像和滤波器。
向量处理单元,包括:乘法器;所述向量处理单元用于读取所述图像的Pread个原像素,其中,Pread的值根据对应所述向量处理单元的访存位宽确定,读取所述滤波器的N个系数,N的值根据所述向量处理单元的乘法器的个数确定,所述滤波器用于对所述图像进行滤波处理;
所述乘法器用于将所述N个系数中的每一系数和所述Pread个原像素分别相乘,得到多个乘积结果,所述乘积结果用于计算滤波后图像中像素点的像素值。
向量处理单元可以是处理器中的运算单元,可对图像进行滤波等处理。该处理器可以是CPU、DSP、FPGA等任何类型的具有向量处理能力的芯片。对于向量处理单元来说,外部存储单元是其片外存储器。外部存储单元存储有待处理的图像以及滤波器。向量处理单元利用滤波器对图像进行滤波处理,得到的滤波后图像也可以存储在外部存储单元中。
DSP的向量处理单元包括多个MAC,每个MAC包括一个所述乘法器和一个加法器,用于执行滤波中的乘法操作和累加操作。
需要说明的是,图10只是示意性地显示了图像处理装置的结构。本实施例外部存储单元可以是一个或多个,图像和滤波器可存储在一个,或分别存储在多个外部存储单元中。
在每个运算周期,向量处理单元均需读取图像一行的Pread个原像素。为提高图像处理方法的效率,读取的原像素的个数Pread等于每个运算周期可读取的原像素的最大数目。
当向量处理单元从存储单元读取这Pread个原像素时,可读取的最大数目取决于数据总线的访存位宽、以及原像素的位宽。即本实施例中的所述最大数目等于访存位宽与所述原像素位宽的商。
在每个运算周期,向量处理单元从外部存储单元读取与Pread个原像素对应的滤波器的N个系数。为提升图像滤波的整体性能,提高图像处理效率,本实施例中,每次读取的系数的个数N根据乘法器的个数确定。具体来说,如果图像处理装置包括Ncalc个乘法器,则系数的个数
N=(Ncalc/Pread)。
乘法器的个数通常是每个运算周期读取的原像素个数的倍数,乘法器的个数是每个运算周期读取的原像素个数的多少倍,就从存储单元读取多少个滤波器的系数。乘法器的个数可以是8、16、32等。
当读取原像素和滤波器的系数后,各个乘法器将N个系数分别和每一原像素相乘,得到乘积结果。
当向量处理单元读取的是图像的第一行中的Pread个原像素时,执行预处理。在预处理中,向量处理单元读取图像的第一行中的Pread个原像素以及滤波器第一行的一个或N个系数,将所述一个或N个系数分别和图像的第一行的每一个原像素相乘,得到乘积结果。
从图像的第二行开始,即当向量处理单元读取的是图像的第一行之后其他行的Pread个原像素时,执行并行处理。在并行处理中,向量处理单元读取图像的第一行中的Pread个原像素以及滤波器的N个系数,其中,这N个系数位于滤波器的相邻N行的同一列。Ncalc个向量处理单元将N个系数分别和Pread个原像素中的每一原像素相乘,得到乘积结果。
以下结合附图,以向量处理单元的个数为8,每个运算周期读取4个原像素和滤波器的2个系数为一个示例,对上述处理过程进行说明。
假设图像的原始尺寸为16×4。填充后的图像的尺寸为20×8,即宽度Mw为20、高度Nh为8。滤波器的尺寸为20×8,即宽度Fw和高度Fh均为5。滤波器对填充后的图像进行滤波运算。以下以二维卷积为例对滤波运算进行详细说明。
在二维卷积中,对于图像的一些行,在计算原像素的滤波结果时,这些行的原像素只用到一次,在针对其他行的原像素进行滤波中的乘积运算时,这些行的原像素不会被复用。因此,这些行的原像素可以在行内采用预处理的方式进行运算。
在上述示例中,图像的第一行就属于上述情况。在计算原像素的滤波结果时,第一行的原像素只用到一次,在针对后面其他行的原像素进行滤波中的乘积运算时,第一行的原像素不会被复用。因此,第一行原像素采用预处理的方式进行运算。
当进行预处理时,图像处理装置如图11所示,显示了8个MAC(MAC0-MAC7)的乘法器和加法器。向量处理单元还包括:
输入缓存器:A组缓存器A1和A2,B组缓存器B1、B2、B3、B4、B5,分别用于缓存所读取的滤波器系数和图像的原像素。
输出缓存器:ACC0、ACC1、ACC2、ACC3。
以及3个选通器MUX1、MUX2、MUX3。
每个MAC的乘法器与B组缓存器连接,前4个MAC的乘法器连接缓存器A1,后4个MAC的乘法器连接缓存器A2。
在第1个运算周期(cycle 1)中:
读取图像的第一行的4个原像素,即B0,0,B0,1,B0,2,B0,3,B0,0经MUX2缓存至B1,B0,1,B0,2,B0,3缓存至B2、B3、B4,0经过MUX3缓存至B5;
读取滤波器的第一行的一个系数A0,0,缓存至A1;0经过MUX1缓存至A2;
MAC0-MAC3的乘法器分别将系数A0,0和原像素B0,0,B0,1,B0,2,B0,3相乘,得到系数A0,0的乘积结果,并分别缓存至ACC0、ACC1、ACC2、ACC3。
在第2个运算周期(cycle 2)中:
读取图像的第一行的4个原像素,即B0,2,B0,3,B0,4,B0,5;B2先将缓存的原像素B0,1经MUX2缓存至B1,B2再缓存读取的原像素B0,2;B3缓存读取的原像素B0,3,B4缓存读取的原像素B0,4,B5缓存读取的原像素B0,5
读取滤波器的第一行的2个系数A0,1,A0,2;A0,1缓存至A1,A0,2缓存至A2;
MAC0-MAC3的乘法器将系数A0,1分别和图像的4个原像素B0,1,B0,2,B0,3,B0,4相乘,得到系数A0,1的乘积结果,MAC4-MAC7的乘法器将系数A0,2分别和图像的4个原像素B0,2,B0,3,B0,4,B0,5相乘,得到系数A0,2的乘积结果,MAC0-MAC7的累加器将两个乘积结果累加至ACC0、ACC1、ACC2、ACC3。
在第3个运算周期(cycle 3)中:
读取图像的第一行的4个原像素,即B0,4,B0,5,B0,6,B0,7;B3先将缓存的原像素B0,3经MUX2缓存至B1,B3再缓存读取的原像素B0,5;B2缓存读取的原像素B0,4,B4缓存读取的原像素B0,6,B5缓存读取的原像素B0,7
读取滤波器的第一行的2个系数A0,3,A0,4;A0,3缓存至A1,A0,4缓存至A2;
MAC0-MAC3的乘法器将系数A0,3分别和图像的4个原像素B0,3,B0,4,B0,5,B0,6相乘,得到系数A0,3的乘积结果,MAC4-MAC7的乘法器将系数A0,4分别和图像的4个原像素B0,4,B0,5,B0,6,B0,7相乘,得到系数A0,4的乘积结果,MAC0-MAC7的累加器将两个乘积结果累加至ACC0、ACC1、ACC2、ACC3。
经过3个运算周期完成预处理,预处理得到的乘积结果用于计算滤波后图像第一行的四个像素点。
以上介绍了第一行的预处理过程,以此类推,可从图像的第二行开始重复上述步骤,对图像的其他行也执行行内的预处理,得到用于计算滤波后图像各行的像素点的乘积结果,将用于计算滤波后图像中同一像素点的像素值的乘积结果累加在一起,即可得到该像素点的像素值。利用行内预处理的方式对图像进行二维滤波,提高了二维滤波的运算效率,提高了图像滤波的整体性能,改善了图像处理效率。
前面已经提到,在二维卷积中,图像的一些行的原像素只用到一次,这些行的原像素不会被复用。但对于图像的另一些行,在计算原像素的滤波结果时,这些行的原像素会多次用到,在针对其他行的原像素进行滤波中的乘积运算时,这些行的原像素可被复用。因此,这些行的原像素可以在行内采用并行处理的方式进行运算。
在上述示例中,从图像的第二行开始就都属于上述情况。本实施例可对第一行之后的其他行执行并行处理,并行处理可进一步提高二维滤波的运算效率和图像滤波的整体性能。
当进行并行处理时,图像处理装置如图12所示。向量处理单元还包括:
输出缓存器ACC4、ACC5、ACC6、ACC7。
内部存储单元R0、R1、R2、R3、R4、R5、R6、R7;R0-R7为向量处理单元的片内存储器。
在第4个运算周期(cycle 4)中:
读取图像的第二行的4个原像素,即B1,0,B1,1,B1,2,B1,3;,B1,0,B0,1,B0,2,B0,3分别缓存至B1、B2、B3、B4;
读取滤波器的第一行和第二行这相邻两行的第一列的2个系数A0,0,A1,0;A1,0缓存至A1,A0,0缓存至A2;
MAC0-MAC3的乘法器将系数A1,0分别和图像的4个原像素B1,0,B1,1,B1,2,B1,3相乘,得到系数A1,0的乘积结果,MAC0-MAC3的累加器将乘积结果累加至ACC0、ACC1、ACC2、ACC3;MAC4-MAC7的乘法器将系数A0,4分别和图像的4个原像素B1,0,B1,1,B1,2,B1,3相乘,得到系数A0,4的乘积结果,MAC4-MAC7的累加器将乘积结果累加至ACC4、ACC5、ACC6、ACC7。
在第5个运算周期(cycle 5)中:
读取图像的第二行的4个原像素,即B1,1,B1,2,B1,3,B1,4;B1,1,B1,2,B1,3,B1,4分别缓存至B1、B2、B3、B4;
读取滤波器的第一行和第二行这相邻两行的第2列的2个系数A0,1,A1,1;A1,1缓存至A1,A0,1缓存至A2;
MAC0-MAC3的乘法器将系数A1,1分别和图像的4个原像素B1,1,B1,2,B1,3,B1,4相乘,得到系数A1,1的乘积结果,MAC0-MAC3的累加器将乘积结果累加至ACC0、ACC1、ACC2、ACC3;MAC4-MAC7的乘法器将系数A0,1分别和图像的4个原像素B1,1,B1,2,B1,3,B1,4相乘,得到系数A0,1的乘积结果,MAC4-MAC7的累加器将乘积结果累加至ACC4、ACC5、ACC6、ACC7。
以此类推,在第8个运算周期(cycle 8)中:
读取图像的第二行的4个原像素,即B1,4,B1,5,B1,6,B1,7;B1,4,B1,5,B1,6,B1,7分别缓存至B1、B2、B3、B4;
读取滤波器的第一行和第二行这相邻两行的第5列的2个系数A0,4,A1,4;A1,4缓存至A1,A0,4缓存至A2;
MAC0-MAC3的乘法器将系数A1,4分别和图像的4个原像素B1,1,B1,2,B1,3,B1,4相乘,得到系数A1,4的乘积结果,MAC0-MAC3的累加器将乘积结果累加至ACC0、ACC1、ACC2、ACC3;MAC4-MAC7的乘法器将系数A0,4分别和图像的4个原像素B1,1,B1,2,B1,3,B1,4相乘,得到系数A0,4的乘积结果,MAC4-MAC7的累加器将乘积结果累加至ACC4、ACC5、ACC6、ACC7。
图像的其他行的并行处理过程与上述第二行的并行处理过程是类似的。经过23个运算周期后,得到了滤波后图像第一行的四个像素点,并将ACC0、ACC1、ACC2、ACC3清空(clear0)。
当出现滤波器的相邻两行在高度方向上首尾跨越的情况,读取的图像的下一行的原像素不能复用,滤波器的两个系数分别与不同行的原像素进行运算,并行处理按照以下方式进行:
向量处理单元从内部存储单元读取另Pread个原像素,所述另Pread个原像素在之前的运算周期从所述图像读取,并被存储至所述内部存储单元。
所述N个系数中位于所述滤波器高度方向尾部的每一个系数和从所述图像读取的Pread个原像素分别相乘,得到所述乘积结果;
所述N个系数中位于所述滤波器高度方向首部的每一个系数和从所述内部存储单元读取的另Pread个原像素分别相乘,得到所述乘积结果。
例如,在第24个运算周期(cycle 24)中:
从外部存储单元读取图像的第六行的4个原像素,即B5,0,B5,1,B5,2,B5,3,B5,0,B5,1,B5,2,B5,3分别缓存至B1、B2、B3、B4;从内部存储单元R0、R1、R2、R3中读取图像第三行的4个原像素,即B2,0,B2,1,B2,2,B2,3。其中,B2,0,B2,1,B2,2,B2,3这4个原像素在cycle 9从图像读取并存储至内部存储单元R0、R1、R2、R3。
读取滤波器的第五行和第一行这相邻两行的第一列的2个系数A4,0,A0,0;A0,0缓存至A1,A4,0缓存至A2;
MAC0-MAC3的乘法器将系数A0,0分别和图像的4个原像素B2,0,B2,1,B2,2,B2,3相乘,得到系数A0,0的乘积结果,然后MAC0-MAC3的累加器将乘积结果累加至ACC0、ACC1、ACC2、ACC3;MAC4-MAC7的乘法器将系数A4,0分别和图像的4个原像素B5,0,B5,1,B5,2,B5,3相乘,得到系数A4,0的乘积结果,MAC4-MAC7的累加器将乘积结果累加至ACC4、ACC5、ACC6、ACC7。
以此类推,经过28个运算周期后,得到了滤波后图像第一行的四个像素点C0,0-C0,3和第二行的四个像素点C1,0-C1,3,并将ACC4、ACC5、ACC6、ACC7清空(clear1)。
不断重复执行上述并行处理过程,从cycle 28开始,再经过24个运算周期后,即可得到滤波后图像第三行的四个像素点C2,0-C2,3,再经过1个运算周期,即从cycle 28开始再经过25个运算周期,共53个运算周期后,即可得到滤波后图像第四行的四个像素点C3,0-C3,3,从而得到滤波后图像全部四行的第1列至第4列的像素点。
如果滤波后图像的高度N0不能被滤波器系数的个数N整除,那么滤波后图像第1列至第4列的像素点的滤波过程仍未完成。此时还需要继续对图像进行处理,以得到滤波后图像剩余行的像素点。因为滤波后图像剩余行也不能进行并行处理,因此进行如下的行内处理:
读取图像中用于计算滤波后图像后r行像素点的一行Pread个原像素,r为滤波器的高度与N相除的余数;
读取滤波器一行中的一个系数或所述N个系数;
乘法器将所述一个系数和所述Pread个原像素相乘,或将所述N个系数中的每一个系数和所述Pread个原像素分别相乘,得到所述乘积结果。
例如,假设图像的高度Nh为9,滤波器高度仍为5,则对应的滤波后图像的高度N0为5,此时滤波后图像的高度N0不能被N整除时,滤波后图像第1列至第4列的像素点的滤波过程仍未完成。此时还需要继续对图像进行处理,以得到滤波后图像第5行的像素点。因为只剩一行的像素点,即滤波后图像第5行的像素点,所以针对滤波后图像第5行的像素点也不能进行并行处理,而是进行行内处理。
在行内处理中,针对图像第5行至第9行中的每一行,均执行一次上述的预处理过程。即针对图像第5行至第9行中的每一行,读取滤波器一行中的一个或N个系数,经所述一个或N个系数分别和该行的每一个原像素相乘,得到乘积结果。在行内处理过程中,以图像第5行为例,其处理过程具体包括:
在第54个运算周期(cycle 54)中:
读取图像的第五行的4个原像素,即B4,0,B4,1,B4,2,B4,3;B4,0经MUX2缓存至B1,B4,1,B4,2,B4,3缓存至B2、B3、B4,0经过MUX3缓存至B5;
读取滤波器的第一行的一个系数A0,0,缓存至A1;0经过MUX1缓存至A2;
MAC0-MAC3的乘法器分别将系数A0,0分别和图像的4个原像素B4,0,B4,1,B4,2,B4,3相乘,得到系数A0,0的乘积结果,并分别缓存至ACC0、ACC1、ACC2、ACC3。
在第55个运算周期(cycle 55)中:
读取图像的第五行的4个原像素,即B4,2,B4,3,B4,4,B4,5;B2先将缓存的原像素B4,1经MUX2缓存至B1,B2再缓存读取的原像素B4,2;B3缓存读取的原像素B4,3,B4缓存读取的原像素B4,4,B5缓存读取的原像素B4,5
读取滤波器的第一行的2个系数A0,1,A0,2;A0,1缓存至A1,A0,2缓存至A2;
MAC0-MAC3的乘法器将系数A0,1分别和图像的4个原像素B4,1,B4,2,B4,3,B4,4相乘,得到系数A0,1的乘积结果,MAC4-MAC7的乘法器将系数A0,2分别和图像的4个原像素B4,2,B4,3,B4,4,B4,5相乘,得到系数A0,2的乘积结果,MAC0-MAC7的累加器将两个乘积结果累加至ACC0、ACC1、ACC2、ACC3。
在第56个运算周期(cycle 56)中:
读取图像的第五行的4个原像素,即B4,4,B4,5,B4,6,B4,7;B3先将缓存的原像素B4,3经MUX2缓存至B1,B3再缓存读取的原像素B4,5;B2缓存读取的原像素B4,4,B4缓存读取的原像素B4,6,B5缓存读取的原像素B4,7
读取滤波器的第一行的2个系数A0,3,A0,4;A0,3缓存至A1,A0,4缓存至A2;
MAC0-MAC3的乘法器将系数A0,3分别和图像的4个原像素B4,3,B4,4,B4,5,B4,6相乘,得到系数A0,3的乘积结果,MAC4-MAC7的乘法器将系数A0,4分别和图像的4个原像素B4,4,B4,5,B4,6,B4,7相乘,得到系数A0,4的乘积结果,MAC0-MAC7的累加器将两个乘积结果累加至ACC0、ACC1、ACC2、ACC3。
再经过3个运算周期完成图像的第5行的预处理,上述各个运算周期得到的乘积结果用于计算滤波后图像第五行的四个像素点。
以此类推,重复上述步骤,对图像的第6行至第9行、及其对应的滤波器的第2行至第5行分别进行上述预处理,每一行的预处理需要3个运算周期。经过15个运算周期的行内运算,一共68个运算周期,得到滤波后图像第5行的像素点,从而得到滤波后图像全部五行的第1列至第4列的像素点,滤波后图像第1列至第4列的滤波过程全部完成。
当得到滤波后图像第1列至第4列的目标元素后,再不断重复上述预处理和并行处理、行内处理(如果有)的整个过程,如图9所示,以滤波后图像的高度为4为例,依次得到滤波后图像第5列至第8列、第9列至第12列和第13列至第16列的像素点,从而完成整个滤波过程。滤波后图像的宽度Mo=Pread*ceil((Mw-Fw+1)/Pread),高度No=Nh-Fh+1;其中,Mw为所述图像的宽度。当Pread为4、Mw为20、Nh为8、Fw和Fh为5时,滤波后图像尺寸为16×4,即宽度Mo为16、高度No为4。
以上示例以乘法器的个数Ncalc为8,每个运算周期读取的原像素个数Pread为4、滤波器系数的个数N为2、图像的宽度Mw为20、滤波器的宽度Fw和高度Fh均为5,对本实施例的图像处理装置进行了说明。但显然,本领域技术人员应当清楚,以上参数的取值不限于此。本实施例的以上参数还可以取其他值。当以上参数取其他值时,图像处理装置与以上描述是类似的,本领域技术人员完全应该清楚图像处理装置的具体结构。
本实施例的图像处理装置,滤波后图像的第一行的Pread个像素点的运算时间为:
Tpre+Fw×(Fh-1)×cycle
其中,Tpre为上述预处理的运算时间;Fw、Fh分别为滤波器的宽度和高度;cycle为一个运算周期。所述预处理的运算时间Tpre为:(1+ceil((Fw-1)/N))×cycle。
从滤波后图像的第二行开始,并行处理过程中每一行的Pread个像素点的运算时间为:
Fw×Fh×cycle
如果滤波过程存在行内运算,滤波后图像的后r行是通过行内运算得到的,那么滤波后图像的后r行中的每一行的Pread个像素点的运算时间为:Tpre×Fh
本实施例的图像处理装置,当滤波后图像的高度N0能被滤波器系数的个数N整除,即不存在行内处理时,滤波后图像的第一行至最后一行的No×Pread个像素点的运算时间为:
Tpre+Fw×Fh×(No/N)×cycle
其中,No为所述滤波后图像的高度,且No=Nh-Fh+1,Nh为图像的高度。
当滤波后图像的高度N0不能被滤波器系数的个数N整除,即存在行内处理时,滤波后图像的第一行至最后一行的No×Pread个像素点的运算时间为:
Tpre+Fw×Fh×((No-r)/N)×cycle+Tr
其中,r为No与N相除的余数,即滤波后图像中需要由行内处理得到的行数,Tr为行内处理的运算时间。行内处理的运算时间Tr为:r×Tpre×Fh
在以上的描述中,本实施例的原像素是按照顺序进行读取,即在图像高度方向上从上到下、从第一行至最后一行,每一行中按照从左到右的顺序读取。滤波后图像的像素点也是按顺序输出。按照顺序读取时,读取图像一行的Pread个原像素包括:
从图像的第二行开始,在每一行中依次读取Fw组原像素,其中第n组原像素包括第n列至第n+Pread-1列的Pread个原像素,其中1≤n≤Fw
例如在上述示例中,在图像的高度方向上从上到下读取各行的原像素,在每一行,依次读取5组原像素,但本公开不限于此,实际上,图像原像素读取的顺序是不受限制的,可以顺序读取、倒序读取、跳跃读取。只要能遍历图像的所有原像素,遍历所有滤波器系数,Mw×Nh×Fw×Fh个乘累加运算,即可完成滤波。只不过在倒序或跳跃读取的情况下,滤波后图像的像素点的输出顺序不同而已。
在以上示例中,每次均是从存储单元中读取图像一行的Pread个原像素。但本公开不限于此。在每个运算周期,从存储单元中读取图像一行的Pread个原像素后,还可以将读取的Pread个原像素存储在向量处理单元的内部存储单元中。这样在之后的运算周期中,如果其需要读取的Pread个原像素中的部分原像素已经存储在内部存储单元中,那么这部分原像素直接从内部存储单元中读取即可,只需要从外部存储单元读取内部存储单元未存储的另一部分原像素即可。具体来说,读取图像一行的Pread个原像素包括;
从内部存储单元读取Pread个原像素中的部分原像素,所述部分原像素在之前的运算周期被存储;
从外部存储单元读取Pread个原像素中的剩余部分原像素,得到Pread个原像素;
将剩余部分像素存储至内部存储单元。
这样减小了向量处理单元从片外存储器读取的数据量,节省了带宽。
在以上示例中,每个运算周期执行乘法和累加操作,即滤波器系数和原像素相乘,并将相乘结果累加至上一运算周期的累加结果。但是本公开并不限于此,也可以先进行乘法运算,得到用于计算滤波后图像的像素点的所有乘积结果后再进行累加。
本公开再一实施例提供了一种移动设备,包括:上一实施例所述的图像处理装置。所述移动设备为便携式移动终端、无人机、手持云台、遥控器的至少一种。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;在不冲突的情况下,本公开实施例中的特征可以任意组合;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。

Claims (38)

1.一种图像处理方法,其特征在于,所述方法应用于向量处理单元,所述向量处理单元包括乘法器,所述方法包括:
读取图像的Pread个原像素,其中,Pread的值根据对应所述向量处理单元的访存位宽确定;
读取滤波器的N个系数,N的值根据所述向量处理单元的乘法器的个数确定,所述滤波器用于对所述图像进行滤波处理;
通过所述乘法器,将所述N个系数中的每一系数和所述Pread个原像素分别相乘,得到多个乘积结果,所述乘积结果用于计算滤波后图像中像素点的像素值。
2.如权利要求1所述的图像处理方法,其特征在于,
N=(Ncalc/Pread)
其中,Ncalc为所述向量处理单元的乘法器的个数。
3.如权利要求1所述的图像处理方法,其特征在于,所述Pread的值等于每个运算周期所述向量处理单元可读取的原像素的最大数目。
4.如权利要求3所述的图像处理方法,其特征在于,所述最大数目等于所述访存位宽与所述原像素位宽的商。
5.如权利要求1所述的图像处理方法,其特征在于,所述N个系数位于所述滤波器的相邻N行的同一列。
6.如权利要求5所述的图像处理方法,其特征在于,所述读取图像的Pread个原像素包括:
从所述图像的第二行开始,在每一行中依次读取Fw组原像素,其中第n组原像素包括第n列至第n+Pread-1列的Pread个原像素,其中1≤n≤Fw,Fw为所述滤波器的宽度。
7.如权利要求6所述的图像处理方法,其特征在于,
从所述滤波后图像的第二行开始,每一行的Pread个像素点的运算时间为:
Fw×Fh×cycle
其中,Fw、Fh分别为所述滤波器的宽度和高度;cycle为一个运算周期。
8.如权利要求1所述的图像处理方法,其特征在于,当读取的所述Pread个原像素位于所述图像的第一行时,执行如下预处理:
读取所述滤波器第一行的一个系数或所述N个系数;
通过所述乘法器,将所述一个系数和所述Pread个原像素相乘,或将所述N个系数中的每一个系数和所述Pread个原像素分别相乘,得到所述乘积结果。
9.如权利要求8所述的图像处理方法,其特征在于,
所述滤波后图像的第一行的Pread个像素点的运算时间为:
Tpre+Fw×(Fh-1)×cycle
其中,Tpre为所述预处理的运算时间;Fw、Fh分别为所述滤波器的宽度和高度;cycle为一个运算周期。
10.如权利要求1所述的图像处理方法,其特征在于,当所述滤波后图像的高度不能被所述N整除,且读取的是所述图像的用于计算所述滤波后图像后r行像素点的一行Pread个原像素时,r为所述滤波后图像的高度与所述N相除的余数,执行如下行内处理:
读取所述滤波器一行中的一个系数或所述N个系数;
通过所述乘法器,将所述一个系数和所述Pread个原像素相乘,或将所述N个系数中的每一个系数和所述Pread个原像素分别相乘,得到所述乘积结果。
11.如权利要求10所述的图像处理方法,其特征在于,
所述滤波后图像的后r行中的每一行的Pread个像素点的运算时间为:
Tpre×Fh
其中,Tpre为预处理的运算时间;Fh为所述滤波器的高度。
12.如权利要求1所述的图像处理方法,其特征在于,当所述滤波后图像的高度能被所述N整除时,所述滤波后图像的第一行至最后一行的No×Pread个像素点的运算时间为:
Tpre+Fw×Fh×(No/N)×cycle
其中,No为所述滤波后图像的行数,且No=Nh-Fh+1,Nh为所述图像的高度,Fw、Fh分别为所述滤波器的宽度和高度;cycle为一个运算周期,Tpre为预处理的运算时间。
13.如权利要求1所述的图像处理方法,其特征在于,当所述滤波后图像的高度不能被所述N整除时,所述滤波后图像的第一行至最后一行的No×Pread个像素点的运算时间为:
Tpre+Fw×Fh×((No-r)/N)×cycle+Tr
其中,No为所述滤波后图像的行数,且No=Nh-Fh+1,Nh为所述图像的高度;Fw、Fh分别为所述滤波器的宽度和高度,r为Nh与N相除的余数;Tpre为预处理的运算时间;Tr为行内处理的运算时间。
14.如权利要求13所述的图像处理方法,其特征在于,所述行内处理的运算时间Tr为:
r×Tpre×Fh
15.如权利要求9、11-14任一项所述的图像处理方法,其特征在于,所述预处理的运算时间Tpre为:
(1+ceil((Fw-1)/N))×cycle。
16.如权利要求1所述的图像处理方法,其特征在于,所述滤波后图像的宽度为Pread*ceil((Mw-Fw+1)/Pread),高度为No
其中,Mw为所述图像的宽度,Fw为所述滤波器的宽度。
17.如权利要求1所述的图像处理方法,其特征在于,所述向量处理单元还包括内部存储单元;所述图像存储于外部存储单元;
所述读取图像的Pread个原像素包括;
从所述内部存储单元读取Pread个原像素中的部分原像素,所述部分原像素在之前的运算周期被存储;
从所述外部存储单元读取Pread个原像素中的剩余部分原像素,得到所述Pread个原像素;
将所述剩余部分像素存储至所述内部存储单元。
18.如权利要求5所述的图像处理方法,其特征在于,所述向量处理单元还包括内部存储单元;
当所述相邻N行在所述滤波器的高度方向上首尾跨越时,还包括:从所述内部存储单元读取另Pread个原像素,所述另Pread个原像素在之前的运算周期从所述图像读取,并被存储至所述内部存储单元;
所述N个系数中位于所述滤波器高度方向尾部的每一个系数和从所述图像读取的Pread个原像素分别相乘,得到所述乘积结果;
所述N个系数中位于所述滤波器高度方向首部的每一个系数和从所述内部存储单元读取的另Pread个原像素分别相乘,得到所述乘积结果。
19.一种图像处理装置,其特征在于,包括:
外部存储单元,存储有图像和滤波器;
向量处理单元,包括:乘法器;
所述向量处理单元用于读取所述图像的Pread个原像素,其中,Pread的值根据对应所述向量处理单元的访存位宽确定,读取所述滤波器的N个系数,N的值根据所述向量处理单元的乘法器的个数确定,所述滤波器用于对所述图像进行滤波处理;
所述乘法器用于将所述N个系数中的每一系数和所述Pread个原像素分别相乘,得到多个乘积结果,所述乘积结果用于计算滤波后图像中像素点的像素值。
20.如权利要求18所述的图像处理装置,其特征在于,
N=(Ncalc/Pread)
其中,Ncalc为所述向量处理单元的个数。
21.如权利要求19所述的图像处理装置,其特征在于,所述Pread的值等于每个运算周期所述向量处理单元可读取的原像素的最大数目。
22.如权利要求20所述的图像处理装置,其特征在于,所述最大数目等于访存位宽与所述原像素位宽的商。
23.如权利要求19所述的图像处理装置,其特征在于,所述N个系数位于所述滤波器的相邻N行的同一列。
24.如权利要求23所述的图像处理装置,其特征在于,所述所述向量处理单元从所述图像的第二行开始,在每一行中依次读取Fw组原像素,其中第n组原像素包括第n列至第n+Pread-1列的Pread个原像素,其中1≤n≤Fw,Fw为所述滤波器的宽度。
25.如权利要求24所述的图像处理装置,其特征在于,
从所述滤波后图像的第二行开始,每一行的Pread个像素的运算时间为:
Fw×Fh×cycle
其中,Fw、Fh分别为所述滤波器的宽度和高度;cycle为一个运算周期。
26.如权利要求19所述的图像处理装置,其特征在于,当所述向量处理单元读取的所述Pread个原像素位于所述图像的第一行时,所述向量处理单元执行如下预处理:
所述向量处理单元读取所述滤波器第一行的一个系数或所述N个系数;
所述乘法器将所述一个系数和所述Pread个原像素相乘,或将所述N个系数中的每一个系数和所述Pread个原像素分别相乘,得到所述乘积结果。
27.如权利要求26所述的图像处理装置,其特征在于,
所述滤波后图像的第一行的Pread个像素的运算时间为:
Tpre+Fw×(Fh-1)×cycle
其中,Tpre为预处理的运算时间;Fw、Fh分别为所述滤波器的宽度和高度;cycle为一个运算周期。
28.如权利要求19所述的图像处理装置,其特征在于,当所述滤波后图像的高度不能被所述N整除,且所述向量处理单元读取的是所述图像的用于计算所述滤波后图像后r行像素点的一行Pread个原像素,r为所述滤波后图像的高度与所述N相除的余数,所述向量处理单元执行如下行内处理:
所述向量处理单元读取所述滤波器一行中的一个系数或所述N个系数;
所述乘法器将所述一个系数和所述Pread个原像素相乘,或将所述N个系数中的每一个系数和所述Pread个原像素分别相乘,得到所述乘积结果。
29.如权利要求28所述的图像处理装置,其特征在于,
所述滤波后图像的后r行中的每一行的Pread个像素的运算时间为:
Tpre×Fh
其中,Tpre为预处理的运算时间;Fh为所述滤波器的高度。
30.如权利要求19所述的图像处理装置,其特征在于,当所述滤波后图像的高度能被所述N整除时,所述滤波后图像的第一行至最后一行的No×Pread个像素的运算时间为:
Tpre+Fw×Fh×(No/N)×cycle
其中,No为所述滤波后图像的行数,且No=Nh-Fh+1,Nh为所述图像的高度,Fw、Fh分别为所述滤波器的宽度和高度;cycle为一个运算周期,Tpre为预处理的运算时间。
31.如权利要求19所述的图像处理装置,其特征在于,当所述滤波后图像的高度不能被所述N整除时,所述滤波后图像的第一行至最后一行的No×Pread个像素的运算时间为:
Tpre+Fw×Fh×((No-r)/N)×cycle+Tr
其中,No为所述滤波后图像的行数,且No=Nh-Fh+1,Nh为所述图像的高度;Fw、Fh分别为所述滤波器的宽度和高度,r为Nh与N相除的余数;Tpre为预处理的运算时间;Tr为行内处理的运算时间。
32.如权利要求31所述的图像处理装置,其特征在于,所述行内处理的运算时间Tr为:
r×Tpre×Fh
33.如权利要求27、29-32任一项所述的图像处理装置,其特征在于,所述预处理的运算时间Tpre为:
(1+ceil((Fw-1)/N))×cycle。
34.如权利要求19所述的图像处理装置,其特征在于,所述滤波后图像的宽度为Pread*ceil((Mw-Fw+1)/Pread),高度为No
其中,Mw为所述图像的宽度,Fw为所述滤波器的宽度。
35.如权利要求19所述的图像处理装置,其特征在于,所述向量处理单元还包括内部存储单元;
所述向量处理单元从所述内部存储单元读取Pread个原像素中的部分原像素,所述部分原像素在之前的运算周期被存储;
所述向量处理单元从所述外部存储单元读取Pread个原像素中的剩余部分原像素,得到所述Pread个原像素,将所述剩余部分像素存储至所述内部存储单元。
36.如权利要求23所述的图像处理装置,其特征在于,所述向量处理单元还包括:内部存储单元;当所述相邻N行在所述滤波器的高度方向上首尾跨越时,
所述向量处理单元从所述内部存储单元读取另Pread个原像素,所述另Pread个原像素在之前的运算周期从所述图像读取,并被存储至所述内部存储单元;
所述向量处理单元将所述N个系数中位于所述滤波器高度方向尾部的每一个系数和从所述图像读取的Pread个原像素分别相乘,得到所述乘积结果;
所述向量处理单元将所述N个系数中位于所述滤波器高度方向首部的每一个系数和从所述内部存储单元读取的另Pread个原像素分别相乘,得到所述乘积结果。
37.一种移动设备,其中,包括:如权利要求19至36任一项所述的图像处理装置。
38.如权利要求37所述的移动设备,其中,所述移动设备为便携式移动终端、无人机、手持云台、遥控器的至少一种。
CN201980033764.1A 2019-09-23 2019-09-23 图像处理方法、装置及移动设备 Pending CN112154475A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/107299 WO2021056143A1 (zh) 2019-09-23 2019-09-23 图像处理方法、装置及移动设备

Publications (1)

Publication Number Publication Date
CN112154475A true CN112154475A (zh) 2020-12-29

Family

ID=73891508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980033764.1A Pending CN112154475A (zh) 2019-09-23 2019-09-23 图像处理方法、装置及移动设备

Country Status (2)

Country Link
CN (1) CN112154475A (zh)
WO (1) WO2021056143A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1964490A (zh) * 2005-11-09 2007-05-16 松下电器产业株式会社 一种滤波器及滤波方法
CN101072019B (zh) * 2007-04-19 2010-05-19 华为技术有限公司 一种滤波器及其滤波方法
US8909687B2 (en) * 2012-01-19 2014-12-09 Mediatek Singapore Pte. Ltd. Efficient FIR filters
JP5629902B1 (ja) * 2013-08-20 2014-11-26 合志 清一 画像処理装置、画像処理方法
US10572985B2 (en) * 2016-11-18 2020-02-25 Canon Kabushiki Kaisha Image processing circuit with multipliers allocated based on filter coefficients
CN108416730B (zh) * 2017-02-09 2020-11-10 深圳市中兴微电子技术有限公司 一种图像处理方法及装置

Also Published As

Publication number Publication date
WO2021056143A1 (zh) 2021-04-01

Similar Documents

Publication Publication Date Title
CN108280514B (zh) 基于fpga的稀疏神经网络加速系统和设计方法
CN109948774B (zh) 基于网络层捆绑运算的神经网络加速器及其实现方法
CN108537330B (zh) 应用于神经网络的卷积计算装置及方法
US20210303909A1 (en) Flexible accelerator for sparse tensors in convolutional neural networks
CN111242277B (zh) 一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器
CN106445471A (zh) 处理器和用于在处理器上执行矩阵乘运算的方法
KR20200098684A (ko) 행렬 곱셈기
KR20180080876A (ko) 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법
CN112668708B (zh) 一种提高数据利用率的卷积运算装置
CN111047008B (zh) 一种卷积神经网络加速器及加速方法
US11797830B2 (en) Flexible accelerator for sparse tensors in convolutional neural networks
CN110766128A (zh) 卷积计算单元、计算方法及神经网络计算平台
CN111340198B (zh) 基于fpga的数据高度复用的神经网络加速器
CN111583095A (zh) 图像数据存储方法、图像数据处理方法、系统及相关装置
CN107680028A (zh) 用于缩放图像的处理器和方法
CN116720549A (zh) 一种基于cnn输入全缓存的fpga多核二维卷积加速优化方法
CN109324984B (zh) 在卷积运算中使用循环寻址的方法和装置
CN112966807A (zh) 基于存储资源受限fpga的卷积神经网络实现方法
CN110796229A (zh) 一种实现卷积运算的装置及方法
CN111222090B (zh) 卷积计算模块、神经网络处理器、芯片和电子设备
CN112154475A (zh) 图像处理方法、装置及移动设备
CN108415881A (zh) 卷积神经网络的运算装置及方法
Shahnovich et al. Hardware implementation of a real-time tone mapping algorithm based on a mantissa-exponent representation
US11467973B1 (en) Fine-grained access memory controller
CN107085827A (zh) 基于硬件平台实现的超分辨力图像复原方法

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