CN117710188A - 图像处理的硬件电路实现方法、设备及集成电路 - Google Patents
图像处理的硬件电路实现方法、设备及集成电路 Download PDFInfo
- Publication number
- CN117710188A CN117710188A CN202311733558.6A CN202311733558A CN117710188A CN 117710188 A CN117710188 A CN 117710188A CN 202311733558 A CN202311733558 A CN 202311733558A CN 117710188 A CN117710188 A CN 117710188A
- Authority
- CN
- China
- Prior art keywords
- buffer
- input data
- processing
- processing module
- pixel point
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 239000000872 buffer Substances 0.000 claims abstract description 143
- 230000015654 memory Effects 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 18
- 238000005192 partition Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Image Processing (AREA)
Abstract
本申请实施例适用于图像处理技术领域,提供了一种图像处理的硬件电路实现方法、设备及集成电路,该方法应用于图像信号处理装置,图像信号处理装置包括第一缓存器、第二缓存器、第一处理模块和第二处理模块,包括:从第一缓存器中确定第一处理模块的第一输入数据;基于第一输入数据,使用第一处理模块对第一像素点进行图像信号处理;从第一缓存器中,确定第二处理模块的第二输入数据;并从第二缓存器中,确定第二处理模块的第三输入数据;基于第二输入数据和第三输入数据,使用第二处理模块对第二像素点进行图像信号处理,第一处理模块和第二处理模块并行进行图像信号处理。通过上述方法,在并行进行图像信号处理的同时,减少存储器的资源消耗。
Description
技术领域
本申请属于图像处理技术领域,特别是涉及一种图像处理的硬件电路实现方法、设备及集成电路。
背景技术
在图像处理过程中,经常需要涉及到按块处理,比如滤波、插值等操作,通常需要按3x3、5x5、7x7等模板大小对图像中的数据进行遍历处理,而ISP流水线中,图像数据是按行光栅扫描输入的,因此需要行缓存模块实现按块的方式(如3x3/5x5/7x7)取数据。
由于需要按块取数据,因此,在进行并行处理时,通常需要使用多个随机存取存储器(Random Access Memory,RAM)构成缓存结构,从而向不同的处理模块提供原始图像数据;但是每个RAM均需要有对应的读/写控制电路,导致面积消耗较大。此外,当前后级不同处理模块的行缓存之间存在数据复用的需求,且后级处理模块的数据依赖于前级处理模块的数据输出时,每级均要N行的行缓存模块(N为取数模板边长),对RAM的消耗比较大。
发明内容
有鉴于此,本申请实施例提供了一种图像处理的硬件电路实现方法、设备及集成电路,用以并行进行图像信号处理的同时,减少存储器的资源消耗。
本申请实施例的第一方面提供了一种图像处理的硬件电路实现方法,应用于图像信号处理装置,所述图像信号处理装置包括第一缓存器、第二缓存器、第一处理模块和第二处理模块,所述第一处理模块和所述第二处理模块的算子行数相同,所述方法包括:
根据所述第一缓存器中存储的数据,确定所述第一处理模块的第一输入数据,所述第一缓存器包括多个缓存行,每个缓存行用于存放待处理图像的一行像素点的第一参数值,所述第一输入数据包括多个缓存行中的多个像素点的第一参数值;
基于所述第一输入数据,使用第一处理模块对第一像素点进行图像信号处理,得到所述第一像素点的第二参数值,所述第一像素点为所述第一输入数据中处于中间行的像素点,所述第二缓存器用于存储所述第二参数值;
从所述第一缓存器存储的数据中,确定所述第二处理模块的第二输入数据;并从所述第二缓存器中,确定所述第二处理模块的第三输入数据,所述第二输入数据包括多个缓存行中的多个像素点的第一参数值,所述第三输入数据包括所述第二输入数据中的各个像素点的第二参数值,所述第一输入数据和所述第二输入数据存在部分重合;
基于所述第二输入数据和所述第三输入数据,使用所述第二处理模块对第二像素点进行图像信号处理,所述第二像素点为所述第二输入数据中处于中间行的像素点,其中,所述第一处理模块和所述第二处理模块并行进行图像信号处理。
本申请实施例的第二方面提供了一种图像处理的硬件电路实现系统,应用于图像信号处理装置,所述图像信号处理装置包括第一缓存器、第一处理模块和第二处理模块,所述第一处理模块和所述第二处理模块的算子行数相同,所述系统包括:
第一输入数据获取模块,用于根据所述第一缓存器中存储的数据,确定所述第一处理模块的第一输入数据,所述第一缓存器包括多个缓存行,每个缓存行用于存放待处理图像的一行像素点的第一参数值,所述第一输入数据包括多个缓存行中的多个像素点的第一参数值;
第一图像处理模块,用于基于所述第一输入数据,使用第一处理模块对第一像素点进行图像信号处理,得到所述第一像素点的第二参数值,所述第一像素点为所述第一输入数据中处于中间行的像素点,所述第二缓存器用于存储所述第二参数值;
第二输入数据获取模块,用于从所述第一缓存器存储的数据中,确定所述第二处理模块的第二输入数据;并从所述第二缓存器中,确定所述第二处理模块的第三输入数据,所述第二输入数据包括多个缓存行中的多个像素点的第一参数值,所述第三输入数据包括所述第二输入数据中的各个像素点的第二参数值,所述第一输入数据和所述第二输入数据存在部分重合;
第二图像处理模块,用于基于所述第二输入数据和所述第三输入数据,使用所述第二处理模块对第二像素点进行图像信号处理,所述第二像素点为所述第二输入数据中处于中间行的像素点,其中,所述第一处理模块和所述第二处理模块并行进行图像信号处理。
本申请实施例的第三方面提供了一种计算机设备,包括可编程器件,所述可编程器件通过电路实现如上述第一方面所述的方法。
本申请实施例的第四方面提供了一种可编程器件,所述可编程器件包括电路,所述电路被处理器执行时实现如上述第一方面所述的方法。
本申请实施例的第五方面提供了一种集成电路,应用于图像信号处理装置,所述集成电路执行时实现如上述第一方面所述的方法。
与现有技术相比,本申请实施例包括以下优点:
本申请实施例中的图像处理的硬件电路实现方法应用于图像信号处理装置,图像信号处理装置可以包括第一缓存器、第二缓存器、第一处理模块和第二处理模块。其中,第一缓存器用于存放图像中像素点的第一参数值,第二缓存器用于存放图像中像素点的第二参数值,第一处理模块和第二处理模块用于对图像信号进行处理,且第二处理模块在进行图像信号处理时,需要使用第一处理模块的输出结果,而第二参数值是经过第一处理模块处理得到的。在进行图像信号处理时,可以根据第一缓存器中存储的数据,确定第一处理模块的第一输入数据;从第一缓存器中存储的数据,确定第二处理模块的第二输入数据;从第二缓存器中存储的数据,确定第二处理模块的第三输入数据。其中,第一缓存器包括多个缓存行,每个缓存行用于存放待处理图像的一行像素点的第一参数值,第一输入数据和第二输入数据中均包括多个缓存行中的像素点的第一参数值,第一输入数据和第二输入数据从第一缓存器中获取到的数据存在部分重合。在确定第一输入数据、第二输入数据和第三输入数据之后,可以使用第一处理模块和第二处理模块并行进行图像信号处理。本申请实施例中,第一处理模块和第二处理模块在进行图像信号处理时所使用的第一参数值均存储在同一缓存器中,第一输入数据和第二输入数据为存在部分重合的数据,相当于可以实现重合数据的数据复用。重合数据在第一缓存器中可以使用同样的存储区域进行存储,相当于第一缓存器节省了重合数据所对应的数据空间,因此本申请实施例中的方法可以减少存储器的资源消耗。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。
图1是本申请实施例提供的一种现有的图像信号处理装置的示意图;
图2是本申请实施例提供的一种图像信号处理装置的示意图;
图3是本申请实施例提供的一种图像处理的硬件电路实现方法的步骤流程示意图;
图4是本申请实施例提供的一种第一缓存器的存储区域示意图;
图5是本申请实施例提供的另一种第一缓存器的存储区域示意图;
图6是本申请实施例提供的一种第一缓存器中存储图像原始数据的示意图;
图7是本申请实施例提供的一种数据读写示意图;
图8是本申请实施例提供的一种按照工作时钟进行数据读写的示意图;
图9是本申请实施例提供的一种等同于图8的数据读写示意图;
图10是本申请实施例提供的又一种第一缓存器的示意图;
图11是本申请实施例提供的一种并行进行图像信号处理时选择的处理窗口的示意图;
图12是本申请实施例提供的另一种并行进行图像信号处理时选择的处理窗口的示意图;
图13是本申请实施例提供的又一种并行进行图像信号处理时选择的处理窗口的示意图;
图14是本申请实施例提供的一种图像处理的硬件电路实现系统的示意图;
图15是本申请实施例提供的一种计算机设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
下面通过具体实施例来说明本申请的技术方案。
在本申请实施例中,以图像信号处理流水线(ISP pipeline)中的处理模块使用3*3的模板进行图像信号处理为例对方案描述。本领域技术人员应当知晓,当图像信号处理流水线使用其他大小的模板进行图像信号处理时,本申请中方法同样适用。本申请实施例是以图像信号处理流水线中包括两个处理模块对本申请实施例中的方案进行说明,本领域技术人员应当知晓,图像信号处理流水线中包括其他数量的处理模块时,本申请中方法同样适用。
首先对本申请使用的一些字母及概念进行说明。本申请中,n为处理模板的模板边长。若处理模块使用的处理模板的模板边长为n时,则处理模块在对像素点进行图像信号处理时,需要使用以该像素点为中心,边长为n的处理窗口中所有像素点的像素值,处理窗口的边长是指处理窗口每行或每列所包含的像素点的个数。本申请实施例中所说的行数和列数的描述,是指像素点在对应的图像中所处的行数和列数。基于传感器可以对图像按行扫描,图像中的每行、可以包括多个像素点,每个像素点的原始像素值可以为传感器扫描得到的原始图像数据。m为图像信号处理流水线中具有前后依赖关系的处理模块的数量。前后依赖关系是指其中一个处理模块的数据输入依赖另一个处理模块的数据输出。在本申请实施例中,多以n=3,m=2进行方案的说明。
现有技术中,为了进行并行处理,每个图像信号处理模块对应有一个行缓存器。图1是本申请实施例提供的一种现有的图像信号处理装置的示意图,图1中的mod_A和mod_B为图像信号处理流水线中的处理模块。图像信号处理流水线中有不同的处理单元,比如有raw域去噪单元nr_raw、时域去噪单元nr3d、去马赛克单元demosaic等,每个处理单元内部可以包括不同的处理模块。在本申请实施例中,需要进行并行处理的处理模块之间需要具有前后级关系,即一个处理模块的输入依赖另一个处理模块的输出。若两个处理模块之间不存在前后级关系,则二者直接可以获取相同数据进行处理,也就不会存在本申请实施例中的技术问题。
如图1所示,mod_A和mod_B的输入均包括图像原始数据(即dvp data in信号)。由于这两个模处理块均需要按3x3模板对图像数据进行处理,因此在进行数据处理时需要按照3*3的处理窗口获取数据,因此,图1中mod_A和mod_B均需要使用3行行缓存器(即图1中的3行linebuffer)进行图像原始数据的输入。此外,mod_B的数据源还依赖于mod_A的输出结果,同样需要按3x3模板处理,因此,mod_A的输出结果可以存放在一个3行linebuffer中。由于mod_B需要mod_A的输出结果作为输入,因此,对于一个像素点的计算,mod_B相比mod_A,使用n行linebuffer的输出相比输入是会延后(n-1)/2行时间的,为了确保mod_B的两个输入源是对齐的,因而在mod_B路径处还需要一个行延时模块(即图1中的line_delay)。上述方案,需要2个3行linebuffer(即图1中的1和2)存储图像原始数据,使用1个line_delay模块进行时延,RAM资源消耗过大。
为例降低RAM资源的消耗,基于本申请实施例中的方法,可以将2个3行linebuffer+1个line_delay模块合并为一个4行linebuffer,如图2所示。
基于图2中的装置,本申请实施例可以节省存储器资源。为了基于图2所示的装置实现mod_A和mod_B的并行处理,本申请实施例提出了一种图像信号处理方法。
参照图3,示出了本申请实施例提供的一种图像处理的硬件电路实现方法的步骤流程示意图,图3中的图像信号处理方法可以应用于图像信号处理装置,图像信号处理装置可以包括第一缓存器、第二缓存器、第一处理模块和第二处理模块,具体可以包括如下步骤:
S301,根据所述第一缓存器中存储的数据,确定所述第一处理模块的第一输入数据。
本申请的执行主体可以为计算机设备,计算机设备可以为个人终端、手机、摄像机等可以进行图像信号处理设备,本申请实施例对计算机设备的类型不做限定。
上述第一缓存器用于存储上述第一缓存器可以用于存储待处理图像中像素点的第一参数值。其中,第一参数值可以为图像原始数据,即用于传感器采集的待处理图像中像素点的原始像素值。第一参数值还可以为图像处理流水线中其他处理模块对图像中的像素点进行处理之后的值,本申请中不做限定。第一缓存器可以包括多个缓存行,每个缓存行可以用于存放待处理图像的一行像素点的第一参数值。上述第一处理模块和第二处理模块用于进行图像信号处理,其中,第二处理模块需要使用第一处理模块的输出数据作为输入数据。第一处理模块和第二处理模块的算子行数相同。
在一种可能的实现方式中,上述第一缓存器可以为随机存取存储器。可以对随机存取存储器进行分区,将随机存取存储器划分为n+m-1个分区,每个分区可以作为一个上述缓存行,用于存放待处理图像的一行像素点的第一参数值。每个分区的位宽可以为(n+m)*单个数据的位宽。分区的深度DEPTH的大小可以与需要支持的最大图像宽度相关,假设待处理图像的最大图像宽度为max_img_width,则每个分区的深度可以为:max_img_width*(n+m-1)/(n+m)。例如要支持的最大图像宽度为1280,实现2个3行linebuffer输出,那可以计算出DEPTH为1024。本申请实施例中,为了便于进行方案的说明,是以m=2也就是图像信号处理装置中包括两个具有依赖关系的处理模块来进行说明的。
本申请实施例中,为了减少存储器所占用的面积,则随机存取存储器可以为单端口随机存取存储器。单端口随机存取存储器在每个工作时钟clk下只能读或写1个地址,因而将分区位宽设定为“(n+m)*单个数据的位宽”,相当于在单个工作时钟内可以读或写n+m个像素点的数据,可以增加单个工作时钟内的读/写数据量,实现时分复用达到读/写目标。
若图像信号处理装置中包括两个处理模块,每个处理模块均以3*3的模板进行图像信号处理,则第一缓存器的示意图可以如图4所示。如图4所示,RAM被划分为n+m-1=4个ram分区:s0、s1、s2和s3,每个ram分区可以相当于第一缓存器中的一个缓存行,ram位宽可以为(n+m)*DW=5DW,DW为单位数据的位宽,即,一个ram地址中可以存储5个像素点对应的第一参数值。每个ram分区的深度为DEPTH,即每个ram分区中可以存储(n+m)*DEPTH个像素点的像素值,ram分区s0中从初始位置开始,对应的ram地址可以为0,即0~4这5个像素点的地址即为0,以此类推。ram分区中的地址可以为0、1、2、3…,ram分区中s1的地址可以为1*DEPTH/4+0、1*DEPTH/4+1、1*DEPTH/4+2、1*DEPTH/4+3…,ram分区中s2的地址可以为2*DEPTH/4+0、2*DEPTH/4+1、2*DEPTH/4+2、2*DEPTH/4+3…,ram分区中s3的地址可以为3*DEPTH/4+0、3*DEPTH/4+1、3*DEPTH/4+2、3*DEPTH/4+3…。每个分区可以用于存储待处理图像中一行像素点,将第一缓存器与待处理图像中的像素行对照可以得到图5所示的图像。在图5中,S0-S3表示第一缓存器中的4个缓存行,图5中S0-S3反复出现,是指图像中的各行像素点可以迭代存储在4个缓存行中,当像素点完成图像信号处理时,其可以被新的像素点所取代。即,待处理图像可以由左向右、由上向下扫描输入,每行像素数据交替被写入到4个分区中。
假设图像的宽度为25,则图像中各个像素点在第一缓存器中的存储示意图可以为图6所示。图6中的每个表格用于表征一个像素点,每个表格中的数字,用于对像素点进行标号。如图6所示,0-24的像素点存储在S0中,25-49的像素点存储在S1中,50-74的像素点存储在S2中,75-99的像素点存储在S3中,当0-9的像素点处理完成后,100-109的像素点可以取代0-9的像素点填充在S0中的对应位置。
本申请实施例中,第一缓存器在一个工作时钟内只能进行一次的写入或一次的读取。本申请实施例以图7-图9对本申请实施例中的数据读写过程进行说明。
图7是本申请实施例提供的一种第一缓存器的示意图。由于示例所使用的位宽为5,也就是在一个工作时钟内只能进行一次5个数据的写入或一次5个数据的读取,因此,在图7中,为了便于阐述,将分区的像素点按5个一行排列。
图8中的水平方向一格表示一个clk的时间单位,如图8所示,在0th clk时,可以从RAM_s0中读出0-4这5个数据,然后在1th clk时从RAM_s1中读出25-29这5个数据,在2thclk时从RAM_s2读出50~54这5个数据,在3th clk时,从RAM_s3中75~79这5个数据,最后4th clk则将100~104这5个数据写入到RAM_s0的地址0中,把原来0~4的数据给覆盖掉。
以此类推,之后,可以在5th clk时从RAM_s0中读出5-9这5个数据,然后6th clk时从RAM_s1中读出30-34这5个数据,在7th clk时从RAM_s2读出55~59这5个数据,在8th clk时,从RAM_s3中80~84这5个数据,最后9th clk则将105~109这5个数据写入到RAM_s0的地址1中,把原来5~9的数据给覆盖掉。如图7的右侧所示,即为将0-9中的数据覆盖掉之后的第一缓存器的示意图。
以上5个clk为一个循环,依次完成了4次读数据和1次写数据,而每次读出来的数据有5个。因为图像信号处理流水线中各模块是在clk驱动下工作的,每个clk可以处理一个像素点。每个clk处理的一个像素点是指目标像素点,假如一个模块的处理模板是3x3,那目标像素就是3x3阵列中的中心像素点。也就意味着每个clk都要有新的像素送进来给isp模块去处理。5个clk输出的数据有5个,因而刚好可以在这5个clk中用于进行5个像素点的图像信号处理。以前面描述的3行2通道linebuffer为例,因为其由单端口RAM构成,单端口RAM每个clk只能读或写一个数据,而要实现的效果是每个clk均有4个像素出来(对应于4行中的1列),在从单端口RAM读出数据的同时还需要缓存新进来的像素,因而单端口RAM在每个clk下的等效吞吐量要达到5(4+1)个像素。所以将单端口RAM的数据位宽设定为5个像素大小,这样每个clk都能读或写5个像素。
对图8读出数据加以适当的打拍,对齐后可以如图9所示,显然,第一缓存器可以实现4行同时输出,即相当于4行的linebuffer。
图10中,可以将0~3行的数据划分为ch0和ch1,分别为:ch0={第0行,第1行,第2行}、ch1={第1行,第2行,第3行},此时ch0可以相当于图1中mod_B对应的3行linebuffer,ch1可以相当于图1中mod_A对应的3行linebuffer,相当于,本申请中的4行linebuffer可以实现图1中2个3行linebuffer的功能。且如图10所示,ch0和ch1相互之间延时为1行,可满足mod_B相较于mod_A晚一行的数据输入需求。
上述第一输入数据可以为第一处理模块从第一缓存器中读取的数据。第一输入数据中可以包括多个缓存行中的数据,且第一数据中包括的每个缓存行的数据量等于位宽。例如,第一输入数据可以为图10中第1~3行的25~29、50~54、75~79。
第一处理模块基于第一输入数据进行图像信号处理之后,可以得到每个像素点对应的第二参数值。图像信号处理装置还可以包括第二缓存器,第二参数值可以被存放在第二缓存器中。
此外,如前所述,第一缓存器中的数据在被处理完之后可以替换为新的像素点的数据。由于在进行处理时,是对像素点按光栅扫描的顺序处理,即以一张图像来说,就是从左往右、从上到下的的顺序进行处理,因此,具有最小行数和最小列数的待处理像素点会优先被处理完,因而可以从具有最小行数和最小列数的待处理像素点在第一缓存器中的位置开始,在第一缓存器的缓存行中写入n+m个新的像素点的像素值。新的像素点的像素值用于对下一行像素点进行图像信号处理。
S302,基于所述第一输入数据,使用第一处理模块对第一像素点进行图像信号处理,得到所述第一像素点的第二参数值。
上述第一像素点可以为第一输入数据中处于中间行的缓存行中的像素点。例如第一输入数据中包括第1~3行的数据,则第一像素点可以为第2行中的像素点。
计算机设备可以确定第一像素点对应的第一处理窗口,第一处理窗口包括以第一像素点为中心的正方形区域,正方形区域中的每行或每列所包含的像素点个数可以为n;基于第一处理窗口中的每个像素点的第一参数值,通过第一处理模块得到第一像素点的第二参数值;计算机设备可以将第二参数值存储至第二缓存器中。
S303,从所述第一缓存器存储的数据中,确定所述第二处理模块的第二输入数据;并从所述第二缓存器中,确定所述第二处理模块的第三输入数据;
上述第二输入数据为第二处理模块从第一缓存器中读取的数据。第三输入数据可以包括第二输入数据中各个像素点对应的第二参数值。第二处理模块从第一缓存器中读取的数据可以为图10中第0~2行的0~4、25~29、50~54。此时,第一处理模块已经完成了对0~4、25~29、50~54的图像信号处理,因此,第二处理模块可以从第二缓存器中读取到0~4、25~29、50~54对应的第二参数值。第一缓存器中读取的0~4、25~29、50~54的第一参数值为上述第二输入数据;第二缓存器中读取到的0~4、25~29、50~54的第二参数值为上述第三输入数据。
第二处理模块使用第二输入数据和第三输入数据进行图像信号处理。
上述第一输入数据和第二输入数据中均包括多个缓存行中的像素点的第一参数值,第一输入数据和第二输入数据存在部分重合。例如,第一输入数据和第二输入数据均包括三个缓存行的数据,且存在重合数据25~29、50~54。相当于基于第一缓存器,可以实现数据复用,从而节省存储资源。
在本申请实施例中,第一缓存器包括的多个缓存行的数量可以为n+m-1。在进行图像信号处理时,计算机设备可以从第一缓存器的每个缓存行中读取n+m个待处理像素点的第一参数值,每个待处理像素点具有对应的行数;然后将第x+1~n+x行的待处理像素点的第一参数值作为第一输入数据,x为小于m的正整数;将第x~n+x-1行的待处理像素点的第一参数值作为第二输入数据。
S304,基于所述第二输入数据和所述第三输入数据,使用所述第二处理模块对第二像素点进行图像信号处理。
第二处理模块可以的输入数据可以包括第二输入数据和第三输入数据。基于第一参数值和第二参数值,使用第二处理模块可以对第二像素点进行图像信号处理。例如第一输入数据中包括0~1行的数据,则第一像素点可以为1行中的像素点。计算机设备可以确定第二像素点对应的第二处理窗口,第二处理窗口包括以第二像素点为中心的正方形区域,正方形区域中的每行或每列所包含的像素点个数为n。计算机设备可以确定第二像素点对应的第三处理窗口,第三处理窗口包括第二缓存器中以第二像素点为中心的正方形区域,正方形区域中的每行或每列所包含的像素点个数为n,第二缓存器中用于存放n行像素点的第二参数值。基于第二处理窗口中的每个像素点的第一参数值,以及第三处理窗口中每个像素点的第二参数值,计算机设备可以通过第二处理模块得到第二像素点的第二处理值。
第一处理模块和第二处理模块并行进行图像信号处理。第一处理模块和第二处理模块并行进行图像信号处理时,由于第二像素点落后于第一像点(n-1)/2行、(n-1)/2列,则对第二像素点进行处理时所需要的每个像素点均已经被第一处理模块处理过,则第二处理模块不需要等待第一处理模块,因此也就不需要时延模块,第一处理模块和第二模块在进行并行处理时,也不会发生冲突。
如图2示,本申请提供的图像信号处理装置中第二处理模块依赖于第一处理模块的输出结果,即2中的mod_B的工作依赖于mod_A的输出结果,并且是对其输出结果按3x3模板来处理的,mod_A的输出经过了一个3行linebuffer给到mod_B。可以以图11-13来说明mod_A和mod_B的处理时序以及对原始图像数据的数据要求。
如图11所示,在不考虑边界条件的情况下,mod_A对应的处理窗口中心像素点为52,表示当前处理的像素点是52,mod_B对应的处理窗口中心像素点为26,表示当前处理的像素点是26。mod_A当前处理像素点相比于mod_B当前处理像素点领先了1行+1像素点,这是因为只有mod_A完成了52这个点的处理后,mod_B才能从第二缓存器中拿到mod_A输出结果构成的一个3x3阵列(即0/1/2/25/26/27/50/51/52),这时mod_B才能开始处理。
接下来的几个clk,3x3模板阵列的移动情况可以如图12和图13所示。
如图12所示,mod_A同时从相邻3行按列扫描取数据,mod_B也如此mod_A取的3行相比mod_B向下偏移了1行。将以上mod_A和mod_B对数据源的要求,对应到前述linebuffer输出上,可以看到,mod_A就对应于上图中的第1~3行,mod_B就对应于上图中的第0~2行。
基于本申请实施例中的方法,对于在现有技术中需要使用m个n行linebuffer的行缓存应用,可将m*n行的RAM空间缩减至(n+m-1)行,从而减少了存储资源的消耗;本申请实施例中使用单端口RAM进行方法实现,可以减少多块RAM方案中RAM读/写控制电路的面积资源。
需要说明的是,本申请是以图像处理装置中包括两个处理模块进行方案说明,本领域人员应当清楚,基于本申请中使用两个处理模块的情况,可以拓展到使用多个处理模块的方案,基于本申请中使用出个处理模块的思路所设计的方法及电路,也应当包含在本申请的保护范围内。
示例性的,图像信号处理装置中可以包括处理模块A、处理模块B以及处理模块C。其中,处理模块B的执行依赖处理模块A的处理结果,处理模块C的执行依赖处理模块B的处理结果。图像信号处理装置中,可以包括缓存器1,缓存器2和缓存器3。缓存器1可以用于存储图像中像素点的第一参数值,缓存器2可以存储在处理模块A对像素点处理后的第二参数值;缓存器3可以存储在处理模块B对像素点处理后的第三参数值。在此情况下,图像信号处理装置中相当于可以包括2个如图2所示意的图像信号处理装置,这两个图像信号处理装置均使用本申请中的方法并行处理图像信号。即:处理模块A、处理模块B、缓存器1、缓存器2构成的图像信号处理装置可以采用本申请方案并行进行图像信号处理;处理模块B、处理模块C、缓存器2、缓存器3构成的图像信号处理装置可以采用本申请方案并行进行图像信号处理。以此类推,当图像处理流水线中存在更多的处理模块时,也可以基于本申请中的方案进行并行处理,从而在并行处理的同时,减少存储器的资源消耗。
在另一示例中,图像信号处理装置中可以包括处理模块D、处理模块E以及处理模块F。其中,处理模块D的执行依赖处理模块A的处理结果,处理模块E的执行也依赖处理模块B的处理结果。图像信号处理装置中,可以包括缓存器4,缓存器5。缓存器4可以用于存储图像中像素点的第四参数值,缓存器5可以存储在处理模块D对像素点处理后的第五参数值。则,处理模块D、处理模块E、缓存器4、缓存器5构成的图像信号处理装置可以采用本申请方案并行进行图像信号处理。处理模块E、处理模块F、缓存器4、缓存器5构成的图像信号处理装置可以采用本申请方案并行进行图像信号处理。以此类推,当存在图像信号处理装置中存在多个与第二处理模块并行执行的处理模块时,对于每个第二处理模块,则可以按照本申请中的方法进行图像信号处理。
此外,图像信号处理装置中,还可以同时存在与第二处理模块并行执行的处理模块,以及需要依赖第二处理模块处理结果的处理模块,此时,可以基于本申请中的方案设计集成电路,从而使得图像信号处理装置中可以包括多个本申请中的集成电路,这多个集成电路中存在重合部分。对于每个集成电路而言,均可以基于本申请所述的方案进行图像信号的并行处理。
综上,本领域人员应当清楚,使用本申请中的方案进行图像信号处理的衍生方案也应当包含在本申请的保护范围内。
需要说明的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
参照图14,示出了本申请实施例提供的一种图像处理的硬件电路实现系统的示意图,该系统应用于图像信号处理装置,所述图像信号处理装置包括第一缓存器、第一处理模块和第二处理模块,具体可以包括第一输入数据获取模块1401、第一图像处理模块1402、第二输入数据获取模块1403和第二图像处理模块1404,其中:
第一输入数据获取模块1401,用于根据所述第一缓存器中存储的数据,确定所述第一处理模块的第一输入数据,所述第一缓存器包括多个缓存行,每个缓存行用于存放待处理图像的一行像素点的第一参数值,所述第一输入数据包括多个缓存行中的多个像素点的第一参数值;
第一图像处理模块1402,用于基于所述第一输入数据,使用第一处理模块对第一像素点进行图像信号处理,得到所述第一像素点的第二参数值,所述第一像素点为所述第一输入数据中处于中间行的像素点,所述第二缓存器用于存储所述第二参数值;
第二输入数据获取模块1403,用于从所述第一缓存器存储的数据中,确定所述第二处理模块的第二输入数据;并从所述第二缓存器中,确定所述第二处理模块的第三输入数据,所述第二输入数据包括多个缓存行中的多个像素点的第一参数值,所述第三输入数据包括所述第二输入数据中的各个像素点的第二参数值,所述第一输入数据和所述第二输入数据存在部分重合;
第二图像处理模块1404,用于基于所述第二输入数据和所述第三输入数据,使用所述第二处理模块对第二像素点进行图像信号处理,所述第二像素点为所述第二输入数据中处于中间行的像素点,其中,所述第一处理模块和所述第二处理模块并行进行图像信号处理。
在一种可能的实现方式中,所述第一缓存器包括的多个缓存行的数量为n+m-1,n为进行图像信号处理时所使用的模板的边长,m为所述图像信号处理装置中处理模块的数量。
在一种可能的实现方式中,上述第一输入数据获取模块1401包括:
数据读取子模块,用于从所述第一缓存器的每个缓存行中读取n+m个待处理像素点的第一参数值;
第一输入数据获取子模块,用于将第x+1~n+x行的所述待处理像素点的第一参数值作为所述第一输入数据,x为小于m的正整数。
在一种可能的实现方式中,上述第二输入数据获取模块1403包括:
第二输入数据获取子模块,用于将第x~n+x-1行的所述待处理像素点的第一参数值作为所述第二输入数据。
在一种可能的实现方式中,上述系统还包括:
数据写入模块,用于从具有最小行数和最小列数的所述待处理像素点在所述第一缓存器中的位置开始,在所述第一缓存器的缓存行中写入n+m个新的像素点的像素值。
在一种可能的实现方式中,上述第一图像处理模块1402包括:
第一处理窗口确定子模块,用于从所述第一输入数据中,确定所述第一像素点对应的第一处理窗口,所述第一处理窗口包括以所述第一像素点为中心的正方形区域,所述正方形区域中的每行或每列所包含的像素点个数为n;
第二参数值计算子模块,用于基于所述第一处理窗口中的每个像素点的第一参数值,通过所述第一处理模块得到所述第一像素点的第二参数值;
第二参数值存储子模块,用于将所述第二参数值存储至第二缓存器中。
在一种可能的实现方式中,上述第二图像处理模块1404包括:
第二处理窗口确定子模块,用于从所述第二输入数据中,确定所述第二像素点对应的第二处理窗口,所述第二处理窗口包括以所述第二像素点为中心的正方形区域,所述正方形区域中的每行或每列所包含的像素点个数为n;
第三处理窗口确定子模块,用于从所述第三输入数据中,确定所述第二像素点对应的第三处理窗口,所述第三处理窗口包括第二缓存器中以所述第二像素点为中心的正方形区域,所述正方形区域中的每行或每列所包含的像素点个数为n,所述第二缓存器中用于存放n行像素点的第二参数值;
第二处理值计算子模块,用于基于所述第二处理窗口中的每个像素点的第一参数值,以及所述第三处理窗口中每个像素点的第二参数值,通过所述第二处理模块得到所述第二像素点的第二处理值。
在一种可能的实现方式中,所述第一缓存器为单端口随机存取存储器,在每个工作时钟内,所述单端口随机存取存储器进行一次数据读取或一次数据写入。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例部分的说明即可。
图15为本申请实施例提供的一种计算机设备的结构示意图。如图15所示,该实施例的计算机设备150包括:至少一个可编程器件1500(图15中仅示出一个)、存储器1501以及存储在所述存储器1501中并可在所述至少一个可编程器件1500上运行的电路1502,所述可编程器件1500执行所述电路1502时实现上述任意各个方法实施例中的步骤。
所述存储器1501可以为可编程器件的内部存储器电路。
在另一种可能的实现方式中,本申请实施例提供一种计算机设备,计算机设备可以包括至少一个集成电路,集成电路执行时实现上述各个方法实施例中的步骤。
本申请实施例提供了一种集成电路,应用于图像信号处理装置,所述集成电路执行时实现上述各个方法实施例中的步骤。
本申请实施例提供了一种集成电路,该集成电路可以包括第一缓存器、第二缓存器、第一处理模块和第二处理模块,所述第一处理模块和所述第二处理模块的算子行数相同,所述第二处理模块的输入依赖所述第一处理模块的输出,其中:
所述第一缓存器,用于存储待处理图像中像素点的第一参数值;
所述第一处理模块,用于基于第一参数值对待处理图像中的像素点进行图像信号处理,得到像素点的第二参数值;
所述第二缓存器,用于存储待处理图像中像素点的第二参数值;
所述第一处理模块,用于基于第一参数值和第二参数值对待处理图像中的像素点进行图像信号处理;所述第一处理模块和所述第二处理模块并行处理,且在同一时刻,所述第一处理模块和所述第二处理模块处理的像素点不同。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (11)
1.一种图像处理的硬件电路实现方法,其特征在于,应用于图像信号处理装置,所述图像信号处理装置包括第一缓存器、第二缓存器、第一处理模块和第二处理模块,所述第一处理模块和所述第二处理模块的算子行数相同,所述方法包括:
根据所述第一缓存器中存储的数据,确定所述第一处理模块的第一输入数据,所述第一缓存器包括多个缓存行,每个缓存行用于存放待处理图像的一行像素点的第一参数值,所述第一输入数据包括多个缓存行中的多个像素点的第一参数值;
基于所述第一输入数据,使用第一处理模块对第一像素点进行图像信号处理,得到所述第一像素点的第二参数值,所述第一像素点为所述第一输入数据中处于中间行的像素点,所述第二缓存器用于存储所述第二参数值;
从所述第一缓存器存储的数据中,确定所述第二处理模块的第二输入数据;并从所述第二缓存器中,确定所述第二处理模块的第三输入数据,所述第二输入数据包括多个缓存行中的多个像素点的第一参数值,所述第三输入数据包括所述第二输入数据中的各个像素点的第二参数值,所述第一输入数据和所述第二输入数据存在部分重合;
基于所述第二输入数据和所述第三输入数据,使用所述第二处理模块对第二像素点进行图像信号处理,所述第二像素点为所述第二输入数据中处于中间行的像素点,其中,所述第一处理模块和所述第二处理模块并行进行图像信号处理。
2.如权利要求1所述的方法,其特征在于,所述第一缓存器包括的多个缓存行的数量为n+m-1,n为进行图像信号处理时所使用的模板的边长,m为所述图像信号处理装置中处理模块的数量。
3.如权利要求2所述的方法,其特征在于,所述根据所述第一缓存器中存储的数据,确定所述第一处理模块的第一输入数据,包括:
从所述第一缓存器的每个缓存行中读取n+m个待处理像素点的第一参数值;
将第x+1~n+x行的所述待处理像素点的第一参数值作为所述第一输入数据,x为小于m的正整数。
4.如权利要求3所述的方法,其特征在于,所述从所述第一缓存器中存储的数据中,确定所述第二处理模块的第二输入数据,包括:
将第x~n+x-1行的所述待处理像素点的第一参数值作为所述第二输入数据。
5.如权利要求3所述的方法,其特征在于,所述方法还包括:
从具有最小行数和最小列数的所述待处理像素点在所述第一缓存器中的位置开始,在所述第一缓存器的缓存行中写入n+m个新的像素点的像素值。
6.如权利要求2所述的方法,其特征在于,所述基于所述第一输入数据,使用第一处理模块对第一像素点进行图像信号处理,得到所述第一像素点的第二参数值,包括:
从所述第一输入数据中,确定所述第一像素点对应的第一处理窗口,所述第一处理窗口包括以所述第一像素点为中心的正方形区域,所述正方形区域中的每行所包含的像素点个数为n;
基于所述第一处理窗口中的每个像素点的第一参数值,通过所述第一处理模块得到所述第一像素点的第二参数值;
将所述第二参数值存储至第二缓存器中。
7.如权利要求2所述的方法,其特征在于,所述基于所述第二输入数据和所述第三输入数据,使用所述第二处理模块对第二像素点进行图像信号处理,包括:
从所述第二输入数据中,确定所述第二像素点对应的第二处理窗口,所述第二处理窗口包括以所述第二像素点为中心的正方形区域,所述正方形区域中的每行所包含的像素点个数为n;
从所述第三输入数据中,确定所述第二像素点对应的第三处理窗口,所述第三处理窗口包括第二缓存器中以所述第二像素点为中心的正方形区域,所述正方形区域中的每行所包含的像素点个数为n,所述第二缓存器中用于存放n行像素点的第二参数值;
基于所述第二处理窗口中的每个像素点的第一参数值,以及所述第三处理窗口中每个像素点的第二参数值,通过所述第二处理模块得到所述第二像素点的第二处理值。
8.如权利要求1-7任一项所述的方法,其特征在于,所述第一缓存器为单端口随机存取存储器,在每个工作时钟内,所述单端口随机存取存储器进行一次数据读取或一次数据写入。
9.一种计算机设备,包括可编程器件,其特征在于,所述可编程器件通过电路实现如权利要求1-8任一项所述的方法。
10.一种可编程器件,其特征在于,所述可编程器件包括电路,所述电路被处理器执行时实现如权利要求1-8任一项所述的方法。
11.一种集成电路,其特征在于,应用于图像信号处理装置,所述集成电路执行时实现如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311733558.6A CN117710188A (zh) | 2023-12-15 | 2023-12-15 | 图像处理的硬件电路实现方法、设备及集成电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311733558.6A CN117710188A (zh) | 2023-12-15 | 2023-12-15 | 图像处理的硬件电路实现方法、设备及集成电路 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117710188A true CN117710188A (zh) | 2024-03-15 |
Family
ID=90154924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311733558.6A Pending CN117710188A (zh) | 2023-12-15 | 2023-12-15 | 图像处理的硬件电路实现方法、设备及集成电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117710188A (zh) |
-
2023
- 2023-12-15 CN CN202311733558.6A patent/CN117710188A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108681984B (zh) | 一种3*3卷积算法的加速电路 | |
KR100503094B1 (ko) | 넓은 메모리 밴드위스를 갖는 디지털 신호 처리 장치 및그 메모리 맵핑 방법 | |
US11593913B2 (en) | Method and system for correcting a distorted input image | |
CN107748723B (zh) | 支持无冲突跨步按块访问的存储方法及访存装置 | |
US7554874B2 (en) | Method and apparatus for mapping memory | |
US8345113B2 (en) | Image processing apparatus and image processing system | |
CN108053361B (zh) | 多互连视觉处理器及采用其的图像处理方法 | |
US20060290983A1 (en) | Data access apparatus and method | |
CN117710188A (zh) | 图像处理的硬件电路实现方法、设备及集成电路 | |
WO2021070303A1 (ja) | 演算処理装置 | |
CN110087088B (zh) | 一种基于运动估计的数据存储方法、终端设备及存储介质 | |
US20070040842A1 (en) | Buffer memory system and method | |
KR102667134B1 (ko) | 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법 | |
US9013948B2 (en) | Memory architecture for display device and control method thereof | |
JP4482356B2 (ja) | Simdプロセッサを用いた画像処理方法及び画像処理装置 | |
JP2020160828A (ja) | 2次元画像をアフィン変換するための画像データ処理装置 | |
CN110738615A (zh) | 鱼眼图像校正方法、装置、系统及可存储介质 | |
CN116150046B (zh) | 一种高速缓存电路 | |
US20230307036A1 (en) | Storage and Accessing Methods for Parameters in Streaming AI Accelerator Chip | |
US9330438B1 (en) | High performance warp correction in two-dimensional images | |
US11972504B2 (en) | Method and system for overlapping sliding window segmentation of image based on FPGA | |
CN114862659A (zh) | 图像直方图生成方法、装置、电子设备及存储介质 | |
JP2633251B2 (ja) | 画像メモリ素子 | |
JP5605225B2 (ja) | メモリ制御装置、メモリマッピング方法、及び、プログラム | |
CN118196437A (zh) | 一种图像fhog特征提取装置 |
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 |