发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明的一个目的在于提出了一种带宽优化方法。
本发明的另一个目的在于提出了一种带宽优化装置。
为实现上述目的,根据本发明的第一方面的实施例,提出了一种带宽优化方法,包括:根据图像的参数信息和图像处理装置的硬件参数信息确定所述图像的参数范围信息,其中,所述参数范围信息包括视差范围、图像的宽度、内存位数和/或异常视差值的权值;根据所述参数范围信息和预设的计算规则,计算出正常视差值的权值;根据所述正常视差值的权值和所述异常视差值的权值构建出所述图像的基本数据结构信息,其中,所述基本数据结构信息的形式为无符号8位整型。
在该技术方案中,将基本数据结构信息构建成无符号8位整型,并根据预设的计算规则,合理计算出基本数据结构信息中的正常视差值的权值和异常视差值的权值,从而可以减少数据的存储空间以及存储器的访问带宽。
在上述技术方案中,优选地,所述预设的计算规则包括以下公式:dV+X(w-d)<(2b-1),其中,d为所述视差范围,V为所述异常视差值的权值,X为所述正常视差值的权值,w为所述图像宽度,b为所述内存位数。
在该技术方案中,聚合优化过程中可以将正常视差值的权值和异常视差值的权值共同存在无符号8位整型的数据结构中,将异常视差值的权值设置为1个字节的无符号8位整型数据类型,该数据类型可以存储的最大值255,设正常视差值的权值可以设置为0到X,其中X为正常视差值的权值的最大值。由于聚合的过程涉及到沿水平方向和垂直方向进行一维积分,为了在一维积分过程中使用2个字节的无符号16位整型存储积分结果而不会发生数据溢出,X需要满足条件:dV+X(w-d)<(2b-1),式中,d表示视差范围,V表示异常视差值的权值,w表示行或列包含像素个数的最大值,b表示每一个一维积分结果用多少位内存来存储。上述公式可以用来计算不同视差计算方案中正常视差权值与异常视差权值如何分配数值范围。
在上述技术方案中,优选地,还包括:按照预设的提取规则从所述基本数据结构信息对应的所有像素点中,提取出目标像素点,并对所述目标像素点进行聚合处理。
在上述技术方案中,优选地,所述预设的计算提取规则包括:从所述所有像素点对应的所有行中,按照目标像素点的行数和其他像素点的行数比例为N:1进行提取。
其中,聚合是一种应用广泛的技术,该技术主要思想是图像中一个像素点的特征或特征值可以通过该像素点周边区域的特征或特征值来表示。聚合体现了图像在局部的连续性,在视差计算等大量视觉应用中有着重要的应用,然而由于对任意一个像素点进行聚合都需要对该像素点周围区域内的像素点进行计算,因而聚合过程中需要多次读取图像。例如,对于一幅M×N的图像,如果聚合过程中一个像素点对应的周边区域大小为A,则一次聚合过程中需要读取大约M×N×A次图像,因而占用大量的带宽,影响每秒能处理图像的数量,进而影响视差相关应用的实时性。本发明在保持视差计算的准确性基本不变的前提下,考虑图像在局部颜色连续变化,对聚合过程进行了优化,不在将图像中所有行(或者是列)都进行聚合,而是对一部分行(或者是列)进行聚合,例如,每对N行进行聚合,之后就有1行不进行聚合,这样,由于聚合的像素点减少,因此聚合过程中需要的带宽就相应地减少了,优化了带宽。
在上述技术方案中,优选地,所述聚合处理的处理过程包括:按行积分、结合聚合区域计算所述目标像素点中每个像素点的平均值、按列积分和重新结合所述聚合区域计算所述目标像素点中每个像素点的新的平均值。
在聚合的优化实现方法是通过积分图来计算,积分图计算聚合的过程分为两步,第一步是先按行积分,再按列积分,第二步是通过积分结果计算某个区域包含像素的权值总和。在该技术方案中,视差计算过程中聚合的区域是十字型区域,此时计算聚合的方法略有变化,一般细分为四步。首先,按行积分(称为HI),按行积分是一个权值累加的过程,经过该步骤以后,每一个像素点的权值是该像素点及所有在同一行且在该像素点之前像素点权值之和。其次,结合聚合区域求得每个像素点的平均值(称为HC)。聚合区域给出了一个像素点在所在行的区域最左边像素点和区域最右边像素点,这就可以利用HI的结果求平均。然后,按列积分(称为VI),与按行积分相似,不同的是一个按行一个按列进行积分。最后,结合区域求得每个像素新的平均值作为聚合结果(称为VC),此过程与HC相似。部分聚合在HI、HC、VI、VC四步中具体做法如下:HI:每隔N行就有一行不进行积分,N的取值太大对带宽优化效果不大,实验显示N=3、4、5时有较好的实验效果;HC:对HI没有积分的行不进行求平均;VI:HI中没有进行积分的像素点设置其权值为0,不对这些像素点进行读写;VC:仅对VI中处理过的像素点求平均。
在上述技术方案中,优选地,还包括:从所述所有像素点中,提取出除所述目标像素点外的其他像素点,并对所述其他像素点进行插值处理。
在上述技术方案中,优选地,所述插值处理包括:将所述其他像素点中每个像素点的权值设置为该像素点在垂直方向上下两个像素点的均值。
在该技术方案中,在将像素点部分聚合之后,为了保证聚合结果的准确性,将聚合过程中没有进行聚合的像素点进行插值处理,即对于在聚合处理过程中未进行聚合的像素点,将该像素点的权值设置为该点在垂直方向上下两个像素点的均值。此方法的依据是图像在局部具有一定的连续性,因此可以通过插值修复。
根据本发明的另一方面,还提供了一种带宽优化装置,包括:信息确定单元,根据图像的参数信息和图像处理装置的硬件参数信息确定所述图像的参数范围信息,其中,所述参数范围信息包括视差范围、图像的宽度、内存位数和/或异常视差值的权值;计算单元,根据所述参数范围信息和预设的计算规则,计算出正常视差值的权值;信息构建单元,根据所述正常视差值的权值和所述异常视差值的权值构建出所述图像的基本数据结构信息,其中,所述基本数据结构信息的形式为无符号8位整型。
在该技术方案中,将基本数据结构信息构建成整型,并根据预设的计算规则,合理计算出基本数据结构信息中的正常视差值的权值和异常视差值的权值,从而可以减少数据的存储空间以及存储器的访问带宽。
在上述技术方案中,优选地,所述预设的计算规则包括以下公式:dV+X(w-d)<(2b-1),其中,d为所述视差范围,V为所述异常视差值的权值,X为所述正常视差值的权值,w为所述图像宽度,b为所述内存位数。
在该技术方案中,聚合优化过程中可以将正常视差值的权值和异常视差值的权值共同存在无符号8位整型的数据结构中,将异常视差值的权值设置为1个字节的无符号8位整型数据类型,该数据类型可以存储的最大值255,设正常视差值的权值可以设置为0到X,其中X为正常视差值的权值的最大值。由于聚合的过程涉及到沿水平方向和垂直方向进行一维积分,为了在一维积分过程中使用2个字节的无符号16位整型存储积分结果而不会发生数据溢出,X需要满足条件:dV+X(w-d)<(2b-1),式中,d表示视差范围,V表示异常视差值的权值,w表示行或列包含像素个数的最大值,b表示每一个一维积分结果用多少位内存来存储。上述公式可以用来计算不同视差计算方案中正常视差权值与异常视差权值如何分配数值范围。
在上述技术方案中,优选地,还包括:聚合单元,按照预设的提取规则从所述基本数据结构信息对应的所有像素点中,提取出目标像素点,并对所述目标像素点进行聚合处理。
在上述技术方案中,优选地,所述预设的计算提取规则包括:从所述所有像素点对应的所有行中,按照目标像素点的行数和其他像素点的行数比例为N:1进行提取。
其中,聚合是一种应用广泛的技术,该技术主要思想是图像中一个像素点的特征或特征值可以通过该像素点周边区域的特征或特征值来表示。聚合体现了图像在局部的连续性,在视差计算等大量视觉应用中有着重要的应用,然而由于对任意一个像素点进行聚合都需要对该像素点周围区域内的像素点进行计算,因而聚合过程中需要多次读取图像。例如,对于一幅M×N的图像,如果聚合过程中一个像素点对应的周边区域大小为A,则一次聚合过程中需要读取大约M×N×A次图像,因而占用大量的带宽,影响每秒能处理图像的数量,进而影响视差相关应用的实时性。本发明在保持视差计算的准确性基本不变的前提下,考虑图像在局部颜色连续变化,对聚合过程进行了优化,不在将图像中所有行(或者是列)都进行聚合,而是对一部分行(或者是列)进行聚合,例如,每对N行进行聚合,之后就有1行不进行聚合,这样,由于聚合的像素点减少,因此聚合过程中需要的带宽就相应地减少了,优化了带宽。
在上述技术方案中,优选地,所述聚合处理的处理过程包括:按行积分、结合聚合区域计算所述目标像素点中每个像素点的平均值、按列积分和重新结合所述聚合区域计算所述目标像素点中每个像素点的新的平均值。
在聚合的优化实现方法是通过积分图来计算,积分图计算聚合的过程分为两步,第一步是先按行积分,再按列积分,第二步是通过积分结果计算某个区域包含像素的权值总和。在该技术方案中,视差计算过程中聚合的区域是十字型区域,此时计算聚合的方法略有变化,一般细分为四步。首先,按行积分(称为HI),按行积分是一个权值累加的过程,经过该步骤以后,每一个像素点的权值是该像素点及所有在同一行且在该像素点之前像素点权值之和。其次,结合聚合区域求得每个像素点的平均值(称为HC)。聚合区域给出了一个像素点在所在行的区域最左边像素点和区域最右边像素点,这就可以利用HI的结果求平均。然后,按列积分(称为VI),与按行积分相似,不同的是一个按行一个按列进行积分。最后,结合区域求得每个像素新的平均值作为聚合结果(称为VC),此过程与HC相似。部分聚合在HI、HC、VI、VC四步中具体做法如下:HI:每隔N行就有一行不进行积分,N的取值太大对带宽优化效果不大,实验显示N=3、4、5时有较好的实验效果;HC:对HI没有积分的行不进行求平均;VI:HI中没有进行积分的像素点设置其权值为0,不对这些像素点进行读写;VC:仅对VI中处理过的像素点求平均。
在上述技术方案中,优选地,还包括:插值单元,从所述所有像素点中,提取出除所述目标像素点外的其他像素点,并对所述其他像素点进行插值处理。
在上述技术方案中,优选地,所述插值处理包括:将所述其他像素点中每个像素点的权值设置为该像素点在垂直方向上下两个像素点的均值。
在该技术方案中,在将像素点部分聚合之后,为了保证聚合结果的准确性,将聚合过程中没有进行聚合的像素点进行插值处理,即对于在聚合处理过程中未进行聚合的像素点,将该像素点的权值设置为该点在垂直方向上下两个像素点的均值。此方法的依据是图像在局部具有一定的连续性,因此可以通过插值修复。通过本发明的技术方案,能够优化视差带宽。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。
其中,视差计算也就是计算两个摄像机同时拍摄时场景中同一个点对应的两个像点之间的像素距离。视差计算过程中普遍存在的问题是需要较大空间存储两幅图像像素之间的特征值,将存储两幅图像像素之间的特征值的数据结构称为COST。
视差计算过程中发现COST占用内存空间大,读写频繁,造成了计算平台内存带宽不足,进而不能进行实时计算,影响3D相关应用。目前,COST使用浮点数(float)或精度更高的数据类型,其中存储的数据分为两类,一类是用于计算视差的正常权值,一类是异常权值,异常权值的出现是由于某一个像素在相应的视差值下没有对应的像素点造成的。COST使用的数据类型一般为浮点数,使用浮点数的主要原因是因为COST中既要存储正常权值又要存储异常权值,同时还要确保在通过权值大小选择视差值的时候,权值有足够的精度。除此之外,COST中每个像素都需要d个浮点数的数据结构来存储数据,其中d是视差范围。因此,浮点数类型的COST需要相对较大的存储空间。对COST分析后发现:
1、COST中每行最多包含异常权值的个数为视差变化范围d,因为异常值的成因决定了异常值最多有d个。
2、正常权值的个数至少为w-d,其中w是图像的宽度,d是视差变化范围。
3、如果合理设计COST中正常权值和异常权值的分布范围,COST可以使用1个字节的无符号8位整型表示,且能够满足目前精度的要求。
4、如果COST使用无符号8位整型表示,不仅COST自身的存储空间减少四分之三,而且在对COST进行行积分时,在确保数据不溢出的情况下,积分结果现在可以存储在2个字节的无符号16位整型的数据结构中,存储空间可以减少二分之一。根据以上发现,可以对COST进行存储结构的优化。由于聚合模块涉及一维积分结果的存储,其他模块只是涉及COST在已知范围内的赋值,因此只要COST能够满足聚合模块中的要求,设计好的COST也能够适用于整个视差计算。
图1示出了根据本发明的实施例的带宽优化方法的示意流程图。
如图1所示,根据本发明提出了一种带宽优化方法,包括:步骤102,根据图像的参数信息和图像处理装置的硬件参数信息确定所述图像的参数范围信息,其中,所述参数范围信息包括视差范围、图像的宽度、内存位数和/或异常视差值的权值;步骤104,根据所述参数范围信息和预设的计算规则,计算出正常视差值的权值;步骤106,根据所述正常视差值的权值和所述异常视差值的权值构建出所述图像的基本数据结构信息,其中,所述基本数据结构信息的形式为无符号8位整型。
在该技术方案中,将基本数据结构信息构建成无符号8位整型,并根据预设的计算规则,合理计算出基本数据结构信息中的正常视差值的权值和异常视差值的权值,从而可以减少数据的存储空间以及存储器的访问带宽。
在上述技术方案中,优选地,所述预设的计算规则包括以下公式:dV+X(w-d)<(2b-1),其中,d为所述视差范围,V为所述异常视差值的权值,X为所述正常视差值的权值,w为所述图像宽度,b为所述内存位数。
在该技术方案中,聚合优化过程中可以将正常视差值的权值和异常视差值的权值共同存在无符号8位整型的数据结构中,将异常视差值的权值设置为无符号8位整型数据类型能表示的最大值255,设正常视差值的权值可以设置为0到X,其中X为正常视差值的权值的最大值。由于聚合的过程涉及到沿水平方向和垂直方向进行一维积分,为了在一维积分过程中使用2个字节的无符号16位整型存储积分结果而不会发生数据溢出,X需要满足条件:dV+X(w-d)<(2b-1),式中,d表示视差范围,V表示异常视差值的权值,w表示行或列包含像素个数的最大值,b表示每一个一维积分结果用多少位内存来存储。上述公式可以用来计算不同视差计算方案中正常视差权值与异常视差权值如何分配数值范围。
在上述技术方案中,优选地,还包括:步骤108,按照预设的提取规则从所述基本数据结构信息对应的所有像素点中,提取出目标像素点,并对所述目标像素点进行聚合处理。
在上述技术方案中,优选地,所述预设的计算提取规则包括:从所述所有像素点对应的所有行中,按照目标像素点的行数和其他像素点的行数比例为N:1进行提取。
其中,聚合是一种应用广泛的技术,该技术主要思想是图像中一个像素点的特征或特征值可以通过该像素点周边区域的特征或特征值来表示。聚合体现了图像在局部的连续性,在视差计算等大量视觉应用中有着重要的应用,然而由于对任意一个像素点进行聚合都需要对该像素点周围区域内的像素点进行计算,因而聚合过程中需要多次读取图像。例如,对于一幅M×N的图像,如果聚合过程中一个像素点对应的周边区域大小为A,则一次聚合过程中需要读取大约M×N×A次图像,因而占用大量的带宽,影响每秒能处理图像的数量,进而影响视差相关应用的实时性。本发明在保持视差计算的准确性基本不变的前提下,考虑图像在局部颜色连续变化,对聚合过程进行了优化,不在将图像中所有行(或者是列)都进行聚合,而是对一部分行(或者是列)进行聚合,例如,每对N行进行聚合,之后就有1行不进行聚合,这样,由于聚合的像素点减少,因此聚合过程中需要的带宽就相应地减少了,优化了带宽。
在上述技术方案中,优选地,所述聚合处理的处理过程包括:按行积分、结合聚合区域计算所述目标像素点中每个像素点的平均值、按列积分和重新结合所述聚合区域计算所述目标像素点中每个像素点的新的平均值。
在聚合的优化实现方法是通过积分图来计算,积分图计算聚合的过程分为两步,第一步是先按行积分,再按列积分,第二步是通过积分结果计算某个区域包含像素的权值总和。在该技术方案中,视差计算过程中聚合的区域是十字型区域,此时计算聚合的方法略有变化,一般细分为四步。首先,按行积分(称为HI),按行积分是一个权值累加的过程,经过该步骤以后,每一个像素点的权值是该像素点及所有在同一行且在该像素点之前像素点权值之和。其次,结合聚合区域求得每个像素点的平均值(称为HC)。聚合区域给出了一个像素点在所在行的区域最左边像素点和区域最右边像素点,这就可以利用HI的结果求平均。然后,按列积分(称为VI),与按行积分相似,不同的是一个按行一个按列进行积分。最后,结合区域求得每个像素新的平均值作为聚合结果(称为VC),此过程与HC相似。部分聚合在HI、HC、VI、VC四步中具体做法如下:HI:每隔N行就有一行不进行积分,N的取值太大对带宽优化效果不大,实验显示N=3、4、5时有较好的实验效果;HC:对HI没有积分的行不进行求平均;VI:HI中没有进行积分的像素点设置其权值为0,不对这些像素点进行读写;VC:仅对VI中处理过的像素点求平均。
在上述技术方案中,优选地,还包括:步骤110,从所述所有像素点中,提取出除所述目标像素点外的其他像素点,并对所述其他像素点进行插值处理。
在上述技术方案中,优选地,所述插值处理包括:将所述其他像素点中每个像素点的权值设置为该像素点在垂直方向上下两个像素点的均值。
在该技术方案中,在将像素点部分聚合之后,为了保证聚合结果的准确性,将聚合过程中没有进行聚合的像素点进行插值处理,即对于在聚合处理过程中未进行聚合的像素点,将该像素点的权值设置为该点在垂直方向上下两个像素点的均值。此方法的依据是图像在局部具有一定的连续性,因此可以通过插值修复。
将设计好的COST(即基础数据信息)存储方法应用于整个视差计算方案,能够明显的降低视差计算需要的带宽。其能达到的效果为:优化前视差计算方案的带宽为:6.9GB/s。优化视差计算方案的带宽为:4.4GB/s。
图2示出了根据本发明的实施例的带宽优化装置的结构示意图。
如图2所示,根据本发明的实施例的带宽优化装置200,包括:信息确定单元202,根据图像的参数信息和图像处理装置的硬件参数信息确定所述图像的参数范围信息,其中,所述参数范围信息包括视差范围、图像的宽度、内存位数和/或异常视差值的权值;计算单元204,根据所述参数范围信息和预设的计算规则,计算出正常视差值的权值;信息构建单元206,根据所述正常视差值的权值和所述异常视差值的权值构建出所述图像的基本数据结构信息,其中,所述基本数据结构信息的形式为无符号8位整型。
在该技术方案中,将基本数据结构信息构建成无符号8位整型,并根据预设的计算规则,合理计算出基本数据结构信息中的正常视差值的权值和异常视差值的权值,从而可以减少数据的存储空间以及存储器的访问带宽。
在上述技术方案中,优选地,所述预设的计算规则包括以下公式:dV+X(w-d)<(2b-1),其中,d为所述视差范围,V为所述异常视差值的权值,X为所述正常视差值的权值,w为所述图像宽度,b为所述内存位数。
在该技术方案中,聚合优化过程中可以将正常视差值的权值和异常视差值的权值共同存在无符号8位整型的数据结构中,将异常视差值的权值设置为1个字节的无符号8位整型数据类型,该数据类型可以存储的最大值255,设正常视差值的权值可以设置为0到X,其中X为正常视差值的权值的最大值。由于聚合的过程涉及到沿水平方向和垂直方向进行一维积分,为了在一维积分过程中使用2个字节的无符号16位整型存储积分结果而不会发生数据溢出,X需要满足条件:dV+X(w-d)<(2b-1),式中,d表示视差范围,V表示异常视差值的权值,w表示行或列包含像素个数的最大值,b表示每一个一维积分结果用多少位内存来存储。上述公式可以用来计算不同视差计算方案中正常视差权值与异常视差权值如何分配数值范围。
在上述技术方案中,优选地,还包括:聚合单元208,按照预设的提取规则从所述基本数据结构信息对应的所有像素点中,提取出目标像素点,并对所述目标像素点进行聚合处理。
在上述技术方案中,优选地,所述预设的计算提取规则包括:从所述所有像素点对应的所有行中,按照目标像素点的行数和其他像素点的行数比例为N:1进行提取。
其中,聚合是一种应用广泛的技术,该技术主要思想是图像中一个像素点的特征或特征值可以通过该像素点周边区域的特征或特征值来表示。聚合体现了图像在局部的连续性,在视差计算等大量视觉应用中有着重要的应用,然而由于对任意一个像素点进行聚合都需要对该像素点周围区域内的像素点进行计算,因而聚合过程中需要多次读取图像。例如,对于一幅M×N的图像,如果聚合过程中一个像素点对应的周边区域大小为A,则一次聚合过程中需要读取大约M×N×A次图像,因而占用大量的带宽,影响每秒能处理图像的数量,进而影响视差相关应用的实时性。本发明在保持视差计算的准确性基本不变的前提下,考虑图像在局部颜色连续变化,对聚合过程进行了优化,不在将图像中所有行(或者是列)都进行聚合,而是对一部分行(或者是列)进行聚合,例如,每对N行进行聚合,之后就有1行不进行聚合,这样,由于聚合的像素点减少,因此聚合过程中需要的带宽就相应地减少了,优化了带宽。
在上述技术方案中,优选地,所述聚合处理的处理过程包括:按行积分、结合聚合区域计算所述目标像素点中每个像素点的平均值、按列积分和重新结合所述聚合区域计算所述目标像素点中每个像素点的新的平均值。
在聚合的优化实现方法是通过积分图来计算,积分图计算聚合的过程分为两步,第一步是先按行积分,再按列积分,第二步是通过积分结果计算某个区域包含像素的权值总和。在该技术方案中,视差计算过程中聚合的区域是十字型区域,此时计算聚合的方法略有变化,一般细分为四步。首先,按行积分(称为HI),按行积分是一个权值累加的过程,经过该步骤以后,每一个像素点的权值是该像素点及所有在同一行且在该像素点之前像素点权值之和。其次,结合聚合区域求得每个像素点的平均值(称为HC)。聚合区域给出了一个像素点在所在行的区域最左边像素点和区域最右边像素点,这就可以利用HI的结果求平均。然后,按列积分(称为VI),与按行积分相似,不同的是一个按行一个按列进行积分。最后,结合区域求得每个像素新的平均值作为聚合结果(称为VC),此过程与HC相似。部分聚合在HI、HC、VI、VC四步中具体做法如下:HI:每隔N行就有一行不进行积分,N的取值太大对带宽优化效果不大,实验显示N=3、4、5时有较好的实验效果;HC:对HI没有积分的行不进行求平均;VI:HI中没有进行积分的像素点设置其权值为0,不对这些像素点进行读写;VC:仅对VI中处理过的像素点求平均。
在上述技术方案中,优选地,还包括:插值单元210,从所述所有像素点中,提取出除所述目标像素点外的其他像素点,并对所述其他像素点进行插值处理。
在上述技术方案中,优选地,所述插值处理包括:将所述其他像素点中每个像素点的权值设置为该像素点在垂直方向上下两个像素点的均值。
在该技术方案中,在将像素点部分聚合之后,为了保证聚合结果的准确性,将聚合过程中没有进行聚合的像素点进行插值处理,即对于在聚合处理过程中未进行聚合的像素点,将该像素点的权值设置为该点在垂直方向上下两个像素点的均值。此方法的依据是图像在局部具有一定的连续性,因此可以通过插值修复。
上述的先进行部分聚合再进行插值计算的方案对带宽的影响为:减少带宽=实时要求处理的图像帧数×(左图和右图两幅图像)×(每幅图像不处理的行数)×(每行像素个数)×(每个像素有d个视差值)×(每个视差值在HI的读写次数+HC的读写次数+VI的读写次数+VC的读写次数-补空值的读写次数)。
并且该方案不仅能够适用于聚合操作,还可以用在大部分图像处理上,如在扫描线优化过程中也可以使用。除此之外,部分聚合后插值的方法对图像大小、视差范围变化有很好的鲁棒性。当图像大小为360×320,视差范围为32,每5行图像有1行不进行聚合处理时,带宽减少310Mb/s,计算过程如下:
310Mb/s=30×2×(360/5)×320×32×(2+3+2+3-3)。
当图像大小为540×480,视差范围为40,每4行图像有1行不进行聚合处理时,带宽减少1089Mb/s,计算过程如下:
1089Mb/s=30×2×(540/4)×480×40×(2+3+2+3-3)。
在上述技术方案中,优选地,所述聚合处理的处理过程包括:按行积分、结合聚合区域计算所述目标像素点中每个像素点的平均值、按列积分和重新结合所述聚合区域计算所述目标像素点中每个像素点的新的平均值。
在聚合的优化实现方法是通过积分图来计算,积分图计算聚合的过程分为两步,第一步是先按行积分,再按列积分,第二步是通过积分结果计算某个区域包含像素的权值总和。在该技术方案中,视差计算过程中聚合的区域是十字型区域,此时计算聚合的方法略有变化,一般细分为四步,如图3所示,其步骤如下:
步骤302,按行积分(称为HI),按行积分是一个权值累加的过程,经过该步骤以后,每一个像素点的权值是该像素点及所有在同一行且在该像素点之前像素点权值之和。
步骤304,结合聚合区域求得每个像素点的平均值(称为HC)。聚合区域给出了一个像素点在所在行的区域最左边像素点和区域最右边像素点,这就可以利用HI的结果求平均。
步骤306,按列积分(称为VI),与按行积分相似,不同的是一个按行一个按列进行积分。
步骤308,结合区域求得每个像素新的平均值作为聚合结果(称为VC),此过程与HC相似。部分聚合在HI、HC、VI、VC四步中具体做法如下。HI:每隔N行就有一行不进行积分,N的取值太大对带宽优化效果不大,实验显示N=3、4、5时有较好的实验效果;HC:对HI没有积分的行不进行求平均;VI:HI中没有进行积分的像素点设置其权值为0,不对这些像素点进行读写;VC:仅对VI中处理过的像素点求平均。
下面以具体实施例详细说明本发明的技术方案。
在具体实现过程中,公式:dV+X(w-d)<(2b-1)中视差范围d=32,异常值的权值V设置为无符号8位整型能表示的最大值255,w取图像行数或列数最大值360,b取16,也就是无符号16位整型数据类型包含的比特(bit)的个数。求得X可以取得的最大整数为174。因此,在聚合部分,可以将COST从浮点型变为无符号8位整型,其中异常权值赋值255,正常权值在0到174之间。于此同时,聚合过程中的行积分HI或列积分VI可以用2个字节的无符号16位整型来存储,行聚合HC或列聚合VC可以用1个字节的无符号8位整型来存储。相关数据结构类型变化如下:
COST:4个字节的浮点型—>1个字节的无符号8位整型;
HI:4个字节的浮点型—>1个字节的无符号16位整型;
HC:4个字节的浮点型—>1个字节的无符号8位整型;
VI:4个字节的浮点型—>1个字节的无符号16位整型;
VC:4个字节的浮点型—>1个字节的无符号8位整型;
聚合优化效果分析:
优化前聚合部分的带宽为:11.8GB/s。
优化后聚合部分的带宽为:5.1GB/s。
在视差计算结果几乎保持基本不变的前提下,修改COST、SH、Edh、SV、VC数据结构,使带宽下降6.7GB/s。
其中,在不同的实现方案中,图像大小、视差范围可能有所不同,例如当图像行数或列数最大值w为480,视差范围d为34,其他变量不变时,通过公式dV+X(w-d)<(2b-1)计算得到X可以取得的最大整数为127。因此,当异常权值为255时,可以将COST中正常权值范围限定在0到127之间,此时虽然图像大小、视差范围有所不同,但带宽仍然能够下降6.7GB/s。利用公式dV+X(w-d)<(2b-1)合理计算COST中正常权值和异常权值,可以减少数据的存储空间以及存储器的访问带宽。
另外,扫描线优化模块是除聚合模块之外占用带宽最多的模块。一般的视差计算方案中,扫描线优化都是通过作为锚点像素上下左右四个方向进行优化,为了减少扫描线优化模块的带宽,通过实验验证了只在作为锚点像素的左上或右下两个方向进行同样可以达到满意的结果。四个方向进行扫描线优化需要带宽是:2.15GB/s。两个方向进行扫描线优化需要带宽是:1.07GB/s。
以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,能够优化视差带宽。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。