发明内容
为解决上述技术问题,本发明实施例提供一种二维图像数据的并行传输计算方法及***,以实现二维图像在跨行处理时的并行计算与传输,技术方案如下:
本发明实施例提供一种二维图像数据的并行传输计算方法,
设待处理图像宽度为img_w,计算窗口宽为wnd_w、高为wnd_h,所述计算窗口每次可以得到m*n个计算结果,则分配宽度为col_w、总容量为col_w*(wnd_h+n-1)+img_w的片内缓存区域用于图像处理,其中col_w=wnd_w+m*2-1;
所述方法包括:
在T单位时刻,向片内缓存传输第一次计算所需的待处理图像的二维区域参考数据;
在T+1单位时刻,根据当前片内缓存中的参考数据,获得相应的本次计算结果,同时,向片内缓存传输下一次计算所需的参考数据。
优选地,当下次计算结果在所述待处理图像中与本次计算结果处于同一行时,
所述向片内缓存传输的下一次计算所需的参考数据,根据所述待处理图像中数据的二维位置分布,存储于与当前片内缓存中参考数据相邻的二维区域中。
优选地,当下次计算结果在所述待处理图像中与本次计算结果不处于同一行时,
所述向片内缓存传输的下一次计算所需的参考数据,存储于与当前片内缓存中参考数据不相邻的二维区域中。
优选地,所述与当前片内缓存中参考数据不相邻的二维区域,其起始地址相对于所述片内缓存区域的起始地址偏移量为:
(当前行最后一个数据在片内缓存区域的地址+1)mod col_w。
本发明实施例还提供一种二维图像数据的并行传输计算***,所述***包括片内缓存分配装置、传输装置和计算装置;
设待处理图像宽度为img_w,计算窗口宽为wnd_w、高为wnd_h,所述计算窗口每次可以得到m*n个计算结果,
所述片内缓存分配装置,分配宽度为col_w、总容量为col_w*(wnd_h+n-1)+img_w的片内缓存区域用于图像处理,其中col_w=wnd_w+m*2-1;
所述传输装置,在T单位时刻,向片内缓存传输第一次计算所需的待处理图像的二维区域参考数据;
所述计算装置,在T+1单位时刻,根据当前片内缓存中的参考数据,获得相应的本次计算结果,同时,所述传输装置向片内缓存传输下一次计算所需的参考数据。
优选地,当下次计算结果在所述待处理图像中与本次计算结果处于同一行时,
所述传输装置向片内缓存传输的下一次计算所需的参考数据,根据所述待处理图像中数据的二维位置分布,存储于与当前片内缓存中参考数据相邻的二维区域中。
优选地,当下次计算结果在所述待处理图像中与本次计算结果不处于同一行时,
所述传输装置向片内缓存传输的下一次计算所需的参考数据,存储于与当前片内缓存中参考数据不相邻的二维区域中。
优选地,所述与当前片内缓存中参考数据不相邻的二维区域,其起始地址相对于所述片内缓存区域的起始地址偏移量为:
(当前行最后一个数据在片内缓存区域的地址+1)mod col_w。
在现有技术中,对二维图像进行处理时,传输的参考数据起始必须放在片内缓存为计算过程分配的内存的起始处,否则处理到行尾部的时候会发生越界,而在跨行处理时,将下行数据的参考数据放到该要求的位置则会覆盖正在用于计算的参考数据,因此在进行跨行处理时,数据的计算和传输无法实现并行处理。为解决上述问题,本发明分配宽度为col_w、总容量为col_w*(wnd_h+n-1)+img_w的片内缓存区域用于二维图像的处理,在每行开始的时候通过对目标位置取_模计算起始地址,在不越界的同时也保证没有交叠。以较小的片内缓存增加为代价,实现了二维图像在跨行处理时的并行计算与传输,从而提高了处理效率。
具体实施方式
首先对本发明实施例的一种二维图像数据的并行传输计算方法进行说明,
设待处理图像宽度为img_w,计算窗口宽为wnd_w、高为wnd_h,所述计算窗口每次可以得到m*n个计算结果,则分配宽度为col_w、总容量为col_w*(wnd_h+n-1)+img_w的片内缓存区域用于图像处理,其中col_w=wnd_w+m*2-1;
所述方法包括:
在T单位时刻,向片内缓存传输第一次计算所需的待处理图像的二维区域参考数据;
在T+1单位时刻,根据当前片内缓存中的参考数据,获得相应的本次计算结果,同时,向片内缓存传输下一次计算所需的参考数据。
其中,当下次计算结果在所述待处理图像中与本次计算结果处于同一行时,向片内缓存传输的下一次计算所需的参考数据,根据所述待处理图像中数据的二维位置分布,存储于与当前片内缓存中参考数据相邻的二维区域中。
当下次计算结果在所述待处理图像中与本次计算结果不处于同一行时,向片内缓存传输的下一次计算所需的参考数据,存储于与当前片内缓存中参考数据不相邻的二维区域中,该二维区域的起始地址相对于所述片内缓存区域的起始地址偏移量为:
(当前行最后一个数据在片内缓存区域的地址+1)mod col_w。
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
以典型的二维图像滤波计算为例,假设需要对一张11*4的图像进行5*3窗口的FIR滤波处理,图1a表示原始图像数据,图1b表示经滤波处理后的图像数据。
在图1b中,f2~g8为常规5*3滤波计算的结果,例如,f2是由a0~a4、b0~b4、c0~c4这3行5列的数据进行计算获得,以此类推,g8是由b6~b10、c6~c10、d6~d10这3行5列的数据进行计算获得;图1b中的阴影部分属于图像边缘数据,这部分数据由于计算窗口所需数据不全而无法通过常规5*3滤波计算获得,一般可以采用直接复制原始或相邻区域数据、或者缩小计算窗口等方法获得。
为了便于描述,在后面的实施例中,均以a、b、c、d表示原始图像中的数据,而以e、f、g、h表示计算后得到的图像数据,其中,数据的对应关系可参见图1a和图1b所示。
由于片内缓存的地址空间实际是一维的,而对数字图像的处理需要涉及对二维数据的计算和传输,因此要求相应的计算装置和传输装置能够以二维的方式处理数据,以下简单进行说明。
以二维形式计算数据的意思是:给出一片连续数据存储空间的首地址Addr、计算窗宽wnd_w,计算窗高wnd_h,以及为存储空间分配的处理数据col_w,则能够计算如图2所示阴影部分数据区域,其中a10与b0,b10与c0分别都是物理上相邻的内存位置。
以二维形式传输数据的意思是:给出一片连续数据存储空间的源地址src_addr、源数据窗宽src_w,和另一片连续数据存储空间的目的地址dst-addr,目的数据窗宽dst_w,以及传输数据的列数w_cnt和行数h_cnt,则能够进行如图3所示的数据传输,NA表示不关心其中内容,图2中的上下两图的前一行的末尾和后一行的开始数据都是物理上相邻的内存位置。
下面结合具体的实例,对本发明的二维图像数据的并行传输计算方法进行说明:
假设待处理图像宽度img_w=11、滤波计算窗口wnd_w=5,wnd_h=3,每次滤波计算可以得到2列1行的计算结果,即m=2,n=1。根据以上条件,可以得到:
需要为处理该图像分配的片内缓存宽度col_w=wnd_w+m*2-1=8
片内缓存的总容量为col_w*(wnd_h+n-1)+img_w=24+11=35
根据以上计算结果,可以得到所分配的片内缓存空间如图4所示。
缓存空间分配完成后,按照如下步骤进行数据的传输和计算并行处理:
步骤101、在T单位时刻,向片内缓存传输6*3的数据a0~a5、b0~b5、c0~c5,如图5所示,其中N前缀表示空置或无效数据区域:
步骤102、参见图1b所示,第一行数据的计算结果e0~e10、以及第二行数据的结果f0、f1都属于边缘数据,可以采用相应的边缘数据计算方法得到,本发明实施例对此并不进行限定。而对于非边缘数据而言,在T+1单位时刻,通过一次滤波计算,可以获得结果f2和f3。其中,f2是根据当前片内缓存中参考数据a0~a4、b0~b4、c0~c4得到,而f3是根据参考数据a1~a5、b1~b5、c1~c5获得。
在进行上述计算的同时,向片内缓存传输下一次滤波计算所需的参考数据。下一次滤波计算所需的参考数据为a2~a7、b2~b7、c2~c7,而a2~a5、b2~b5、c2~c5已经在当前的片内缓存中,因此本次只需传输a6、a7、b6、b7、c6、c7。
根据数据在待处理图像中的二维位置分布,将传输的数据存储于与当前片内缓存中参考数据相邻的二维区域中,即图5中N0、N1、N2、N3、N4、N5所示的位置。此外,由于在下次滤波计算中,片内缓存中的前两列数据即a0、a1、b0、b1、c0、c1不再有用,因此可以以N17、N18、N19、N20、N21、N22替换表示,本次传输后,片内缓存的存储状态如图6a所示。
由于片内缓存的存储空间是1维连续的,因此为了便于观察,可以将图6a表示为图6b形式。
步骤103,在T+2单位时刻,根据当前的参考数据a2~a6、b2~b6、c2~c6获得f4、根据a3~a7、b3~b7、c3~c7获得f5;同时传输下一次滤波计算所需的参考数据a8、a9、b8、b9、c8、c9至N19、N20、N21、N22、N6、N7的位置。本次传输后,片内缓存的存储状态如图7所示。
步骤104,在T+3单位时刻,根据当前的参考数据a4~a8、b4~b8、c4~c8获得f6、根据a5~a9、b5~b9、c5~c9获得f7;同时传输下一次滤波计算所需的参考数据a10、b10、c10至N25、N27、N8的位置。本次传输后,片内缓存的存储状态如图8所示。
步骤105、在T+4单位时刻,首先根据当前的参考数据a6~a10、b6~b10、c6~c10获得f8,由于f9和f10均为边缘数据,因此下一次滤波计算就是针对图像的第3行,所需的参考数据为b0~b5、c0~c5、d0~d5,本次可先传输b0、b1、c0、c1、d0、d1这两列三行的数据,由于下一行所用的参考数据与本行所用的参考数据已经没有关系,因此,b0、b1、c0、c1、d0、d1可以存储于与当前片内缓存中参考数据不相邻的二维区域中,如图9所示。其中,该二维区域的起始地址相对于所述片内缓存区域的起始地址偏移量为可以由下式得到:
(当前行最后一个数据在片内缓存区域的地址+1)mod col_w。
对本实施例而言,当前行最后一个数据在片内缓存区域的地址+1即为图8中N28所处的位置,除以col_w后余数,即得到图8中N24所对应的位置。
后续可在获得边缘值f9和f10的时候,分别传输b2、c2、d2以及b3、c3、d3等下一次滤波计算所需的参考数据,当然也可以根据边缘数据的具体计算方式采用其他的传输策略,原则为所传输的数据不能覆盖正在用于滤波计算及将要用于滤波计算的参考数据,并且要在每次滤波计算之前将所需的参考数据传输完毕。当向片内缓存传输数据b0~b5、c0~c5、d0~d5、完毕之后,即可重复步骤上述步骤102,开始对图像的第三行数据进行计算。
可见,应用本发明所提供的方法,分配宽度为col_w、总容量为col_w*(wnd_h+n-1)+img_w的片内缓存区域用于二维图像处理,在每行开始的时候通过对目标位置取模计算起始地址,在不越界的同时也保证没有交叠。以较小的片内缓存增加为代价,实现了二维图像在跨行处理时的并行计算与传输,从而提高了处理效率。
相应于上面的方法实施例,本发明还提供一种二维图像数据的并行传输计算***,其特征在于,参见图10所示,该***包括片内缓存分配装置1001、传输装置1002和计算装置1003;
设待处理图像宽度为img_w,计算窗口宽为wnd_w、高为wnd_h,所述计算窗口每次可以得到m*n个计算结果,
所述片内缓存分配装置,分配宽度为col_w、总容量为col_w*(wnd_h+n-1)+img_w的片内缓存区域用于图像处理,其中col_w=wnd_w+m*2-1;
所述传输装置,在T单位时刻,向片内缓存传输第一次计算所需的待处理图像的二维区域参考数据;
所述计算装置,在T+1单位时刻,根据当前片内缓存中的参考数据,获得相应的本次计算结果,同时,所述传输装置向片内缓存传输下一次计算所需的参考数据。
其中,当下次计算结果在所述待处理图像中与本次计算结果处于同一行时,
所述传输装置向片内缓存传输的下一次计算所需的参考数据,根据所述待处理图像中数据的二维位置分布,存储于与当前片内缓存中参考数据相邻的二维区域中。
当下次计算结果在所述待处理图像中与本次计算结果不处于同一行时,
所述传输装置向片内缓存传输的下一次计算所需的参考数据,存储于与当前片内缓存中参考数据不相邻的二维区域中。
所述与当前片内缓存中参考数据不相邻的二维区域,其起始地址相对于所述片内缓存区域的起始地址偏移量可以为:
(当前行最后一个数据在片内缓存区域的地址+1)mod col_w。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。