双目立体匹配方法、视差图获取装置和计算机存储介质
技术领域
本发明涉及计算机视觉领域、图像处理技术领域,特别是涉及一种双目立体匹配方法、视差图获取装置和计算机存储介质。
背景技术
立体匹配主要是研究从二维图像的信息中提取并重建目标物体的三维信息,其被广泛应用于智能机器人***,无人车***,工业测量等领域。而双目立体匹配类似于人眼视觉,其基本原理为:利用标定后不同位置的摄像头对同一物体目标进行拍摄,以得到不同角度的二维图像;利用同一空间点在二维图片中对应像素位置的不同以得到视差值,根据视差值形成视差值图后,对视差图进一步处理的图像称为深度图像。深度图形可以用于测量、三维重建、以及虚拟视点的合成等。目前立体匹配方法无法获取更高精度的视差值以形成更高精度的视差图,特别是在遮挡区域和边缘连续处的视差。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,第一方面,本发明提供双目立体匹配方法,可以提升视差图的精度;第二方面,本发明提供一种视差图获取装置;第三方面,本发明提供一种计算机存储介质。
根据本发明的第一方面的实施例的一种双目立体匹配方法,包括如下步骤:
获取参考图像和目标图像。
依次获取参考图像中的像素作为待测像素,根据预设的视差值范围将所述待测像素和目标图像进行匹配代价处理,以获得所述待测像素的像素代价值集合。
将所有待测像素、所有所述像素代价值集合、预设的视差值范围进行多路径的代价聚合,以获得不同视差值时的所述待测像素的路径代价值之和。
获取所述待测像素在所述路径代价值之和最小时的视差值,将所述视差值作为最优视差值。
其中,所述匹配代价处理包括如下步骤:
对所述参考图像、所述目标图像进行Census转化,以获得第一码流集合、第二码流集合。
从所述第一码流集合中获取所述待测元素的码流,将所述码流、所述第二码流集合以及所述预设视差范围进行汉明处理,获得所述待测像素的初始代价值集合,所述初始代价值集合内的元素与所述预设视差范围的值一一对应。
依次从所述初始代价值集合中获取第一初始代价值,将所述初始代价值集合中其他初始代价值之和与所述初始代价值集合中所有初始代价值之和的比重作为所述第一初始代价值的权重。
依次将所述第一初始代价值与所述权重进行权重计算,以获得所述待测像素的像素代价值集合。
根据本发明第一方面的上述实施例,至少具有如下有益效果:通过权重计算,将像素值大的进行小权重赋值,像素值小的进行大权重赋值,来克服边缘像素变化巨大的问题,以获得更高精度的视差值,从而可以获得更高精度的视差值图。
根据本发明第一方面的一些实施例,所述匹配代价处理还包括如下步骤:
将所述待测像素的像素代价值集合进行分区域处理。
将所述分区域内的像素代价值之和作为所述分区域的区域代价值,以形成区域代价值集合。
将所述像素代价值集合更新为所述区域代价值集合。
通过用区域代价值进行代价聚合,可以减少每个路径上的路径代价值计算,从而提升计算的效率。
在本发明第一方面的另一些实施例,所述分区域以相邻4个视差值对应的所述初始代价值进行划分。通过将相邻的4个初始代价值进行同区域划分,可以简化计算,同时由于像素点相邻,因此分区域内的像素之间的差异不会变化巨大,从而使得最终获取的视差值准确性更高。
根据本发明第一方面的一些实施例,所述双目立体匹配方法还包括如下步骤:
获取所述路径代价值之和最小时,所述分区域中最小初始代价值的位置。
将所述最小初始代价值的位置作为最优视差值。
通过最小的路径代价值之和可以获取最优的分区域,同时由于选取相邻的初始代价值进行划分区域,因此初始代价值的位置与视差值一一对应,因此通在最优的分区域中选取最优的初始代价值,可以获取最优的视差值。
根据本发明第一方面的一些实施例,所述路径设置为8个。通过设置8个路径可以使得视差值的精度更高。
根据本发明第一方面的一些实施例,相邻两个的所述路径之间的夹角相同。通过将相邻路径的夹角设置成相同的,可以使得输出的视差图不会偏向其中一个方向,进一步提升视差图的精度。
根据本发明第一方面的一些实施例,所述参考图像的Census转化包括:
依次获取所述参考图像的像素。
定义矩形窗口大小,获取以所述像素为中心的矩形窗口内其他像素与所述像素的灰度值比较结果。
将所述灰度值比较结果作为所述第一码流集合中的元素。
所述目标图像的Census转化与所述参考图像一致。
通过定义大小一致的矩形窗口对参考图像和目标图像进行遍历,使得参考图像以及目标图像可以快速建立与邻接像素的关系。
根据本发明第二方面的一种应用双目立体匹配方法的装置实施例,所述应用双目立体匹配方法的装置包括:
采集模块,所述采集模块获取参考图像和目标图像;双目立体匹配处理模块,所述双目立体处理模块获取所述参考图像和所述目标图像,并根据本发明实施例中第一方面任一所述的双目立体匹配方法,获得视差图。
由于本发明实施例的一种视差图获取装置执行如本发明第一方面中任一项所述的双目立体匹配方法,因此具有本发明第一方面的所有有益效果。
根据本发明第二方面的一些实施例,所述采集模块包括双目摄像头。通过双目摄像头,可以快速获取到左右两张图,分别作为参考图像以及目标图像。
根据本发明实施例的第三发明的一种计算机存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面实施例的任一所述的双目立体匹配方法。
由于本发明实施例的计算机存储介质执行如本发明第一方面中任一项所述的双目立体匹配方法,因此具有本发明第一方面的所有有益效果。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的双目立体匹配方法的权重步骤图;
图2为本发明实施例的双目立体匹配方法主要步骤图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
下面参考图1和图2描述根据本发明实施例的第一方面实施例的双目立体匹配方法。
如图1所示,在一些实施例中,双目立体匹配方法包括如下步骤:
S1100、获取参考图像和目标图像。
应理解的是,在一些实施例中通过双目摄像头获取左图和右图,其中,左图为参考图像,右图为目标图像。在另一些实施例中,可以采用单个摄像头,当通过摄像头获取参考图像后,通过平行移动摄像头,获得目标图像。
S1200、依次获取参考图像中的像素作为待测像素,根据预设的视差值范围将待测像素和目标图像进行匹配代价处理,以获得待测像素的像素代价值集合。
S1300、将所有待测像素、所有像素代价值集合、预设的视差值范围进行多路径的代价聚合,以获得不同视差值时的待测像素的路径代价值之和。
应理解的是,路径设置以及方向的设置可以根据实际应用情况进行调整。
应理解的是,假设其中一条路径r,可以获得待测像素p在视差值为i时,该路径r的路径代价值Lr(p,i)为:
需说明的是,V(p,i)表示待测像素p在路径r上的第i个视差值的像素代价值。p-r为路径r上待测像素p的前一个像素点,L
r(p-r,i)表示像素点p-r在路径方向r上第i个视差值下的路径代价值,L
r(p-r,i-1)表示像素点p-r在路径方向r上第i-1个视差值下的路径代价值,L
r(p-r,i+1)表示像素点p-r在路径方向r上第i+1个视差值下的路径代价值,P1、P2为预设的惩罚系数,
表示p-r点的在路径方向r上任意视差值j下的最小路径代价值。
此时,将多个方向的路径代价值进行累加,形成对于待测像素p在第i个视差区域的能量函数,即路径代价值之和为:
S1400、获取待测像素在路径代价值之和最小时的视差值,将视差值作为最优视差值。
应理解的是,假设视差范围为range个,则可以获得range个待测像素p的路径代价值之和。此时,根据胜者为王的方法,可以获取到最小的路径代价值之和对应的视差值。则该视差值为最优视差值。
其中,如图2所示,匹配代价处理包括如下步骤:
S1210、对参考图像、目标图像进行Census转化,以获得第一码流集合、第二码流集合。
应理解的是,Census转化的实质是将图像像素的灰度值编码成二进制码流,以获得邻域像素灰度值相对于中心像素灰度值的大小关系。通过分别随参考图像、目标图像进行Census转化可以快速建立参考图像中各像素与邻接像素的关系,目标图像中各像素与邻接像素的关系。
应理解的是,第一码流集合中各元素对应的是参考图像中各像素的二进制码流。第二码流集合中各元素对应的是目标图像中各像素的二进制码流。
S1220、从第一码流集合中依次获取待测元素的码流,将码流、第二码流集合以及预设视差范围进行汉明处理,获得待测像素的初始代价值集合,初始代价值集合内的元素与预设视差范围的值一一对应。
应理解的是,为了保证视差图的精度,通常会设定一个视差值范围,通过不断遍历不同视差值下参考图像中待测像素与目标图像中像素相似度,以获得待测像素与目标图像最近似的视差值,从而保证视差图的精度。
应理解的是,由于初始代价值内的元素根据视差值的大小依次存放,因此初始代价值集合内的元素的位置与视差值有一一对应关系。
以坐标为(u,v)的待测像素为例,假设设定视差范围为1~range。则此时,坐标为(u,v)的待测像素在视差值d的汉明距离C(u,v,d)为:
C(u,v,d)=Hamming(Cst(u,v),Csr(u-d,v))
需说明的是,Cst(u,v)为参考图像中坐标位置在(u,v)的像素的二进制码流,Csr(u-d,v)为目标图像中坐标位置在(u-d,v)的像素的二进制码流。具体的,汉明距离C(u,v,d)为Cst(u,v)和Csr(u-d,v)进行亦或运算后,运算结果中比特位不为1的值。
此时,可以获得坐标位置为(u,v)像素的range个C(u,v,d),d依次从1~range中取值。此时,像素(u,v)的初始代价值集合C为range个C(u,v,d)按视差值对应存储的初始代价值。
S1230、依次从初始代价值集合中获取第一初始代价值,将初始代价值集合中其他初始代价值之和与初始代价值集合所有初始代价值之和的比重作为第一初始代价值的权重。
应理解的是,在同一图像内,边缘处的像素值容易变化巨大,从而影响视差值的判断,因此可以通过权重计算,给像素值大的赋个小的权,像素值小的赋个大的权,来克服这种影响。
假设Wi为待测像素的初始代价值集合C中第一初始代价值为Ci,则Ci的权重为:
S1240、依次将第一初始代价值与权重进行权重计算,以获得待测像素的像素代价值。
假设待测像素的初始代价值为Ci,则像素代价值Vi=Ck*Wk。
此时,通过遍历初始代价值集合可以获得初始代价值集合中各元素的像素代价值。因此,通过依次获取参考图像中的像素作为待测像素点,根据预设的视差值范围将待测像素和目标图像进行匹配代价处理,可以获得参考图像中各像素对应的像素代价值集合。
应理解的是,当获取出参考图像中各像素点视差值后,可以根据视差值以及参考图像获得视差图。
因此,通过权重计算,将像素值大的进行小权重赋值,像素值小的进行大权重赋值,来克服边缘像素变化巨大的问题,以获得精度的视差值,从而可以获得更高精度的视差值图。
在一些实施例中,双目立体匹配方法中匹配代价处理还包括如下步骤:
将待测像素的像素代价值集合进行分区域处理。
应理解的是,分区域处理为将待测像素对应的初始代价值集合划分成多个等分的子集合。
将分区域内的像素代价值之和作为分区域的区域代价值,以形成区域代价值集合。
应理解的是,假设第i个分区域内初始代价值依次为C
i、C
i-1、C
i-2、C
i-3;则此时,区域代价值V
i为
将像素代价值集合更新为区域代价值集合。
应理解的是,假设初始代价值集合内的元素有S个,当以每个区域的个数为4个时,此时区域代价值集合的个数为S/4。此时,每个待测像素进行代价聚合时所计算的像素代价值数量缩小。
因此,通过用区域代价值进行代价聚合,可以减少每个路径上的路径代价值计算,从而提升计算的效率。
应理解的是,在一些实施例中,分区域的划分可以根据图像的变化趋势进行划分,此时,进行分区域划分后,需要记录每个初始代价值对应的视差值,当获取最优的分区域时,可以根据分区域内的初始代价值内与分区域内所有初始代价值的均值最接近的初始代价值对应的视差值为最优视差值。
在另一些实施例中,分区域以相邻4个视差值对应的初始代价值进行划分。通过将相邻的4个初始代价值进行同区域划分,可以简化计算,同时由于像素点相邻,因此分区域内的像素之间的差异不会变化巨大,从而使得最终获取的视差值准确性更高。
在另一些实施例中,双目立体匹配方法还包括如下步骤进行最优视差计算:
获取路径代价值之和最小时,分区域中最小初始代价值的位置。
应理解的是,假设分区域内的初始代价值个数为n',通过遍历视差范围内的能量函数,可以获得待测像素p的range/n'个路径代价值之和,此时可以获得range/n'个路径代价值之和中最小的路径代价值之和对应的分区域i。
假设分区域i中的初始代价值分别为Ci-n'......、Ci-2、Ci-1、Ci;则其对应的位置分别为Di-n'=di-n',....,Di-2=di-2,Di-1=di-1,Di=di。则当Ci、Ci-1、Ci-2、......Ci-n'中最小值为Ci-1时,则第i个视差区域中最小初始代价值的位置Dmin=di-1。
将最小初始代价值的位置作为最优视差值。
应理解的是,视差值为1递增的视差值。由于视差值为相邻的进行划分,因此,实际求解过程中,设定视差值的起始值为0,则视差范围为0~range-1;设定初始代价值的位置索引0~range-1,则初始代价值的位置与视差值的值一致。因此,待测像素p的最优视差值d_final=i*n'+Dmin。其中n'为分区域的初始代价值个数,i为分区域的索引号,Dmin为分区域内最小的视差值。
因此,通过最小的路径代价值之和可以获取最优的分区域,同时由于选取相邻的初始代价值进行划分区域,因此初始代价值的位置与视差值一一对应,因此通在最优的分区域中选取最优的初始代价值,可以获取最优的视差值。
应理解的是,由于最小位置的初始代价值为分区域内最优值,因此通过最优的分区域内的最优值求解,可以获取全局内最优的视差值,从而保证其精度以及准确性。
在一些实施例中,路径设置为8个。通过设置8个路径可以使得视差值的精度更高。
在一些实施例中,相邻两个的路径之间的夹角相同。通过将相邻路径的夹角设置成相同的,可以使得输出的视差图不会偏向其中一个方向,进一步提升视差图的精度。
应理解的是,当相邻路径的方向之间的夹角不等分时,容易使得输出的视差图偏向某个方向,从而因此失真。
在一些实施例中,参考图像的Census转化包括:
依次获取参考图像的像素。
定义矩形窗口大小,获取以像素为中心的矩形窗口内其他像素与像素的灰度值比较结果。
将灰度值比较结果作为第一码流集合中的元素。
目标图像的Census转化与参考图像一致。
通过定义大小一致的矩形窗口对参考图像和目标图像进行遍历,使得参考图像以及目标图像可以快速建立与邻接像素的关系。
根据本发明的第二方面实施例的视差图获取的装置,包括采集模块,采集模块获取参考图像和目标图像;双目立体匹配处理模块,双目立体处理模块获取参考图像和目标图像,并根据第一方面任一所述的双目立体匹配方法,获得视差图。
应理解的是,采集模块主要获取同一三维物体在同一平面不同角度的图像。其中,目标图像可以通过平移参考图像中的摄像头获取。
应理解的是,利用视差图形成深度图,以及通过深度图生成三维图像通过现有技术中均可实现,因此此处不一一详述。
通过采集模块获取参考图像和目标图像,从而在双目立体处理模块进行视差图的计算。
在一些实施例中,采集模块包括双目摄像头。通过双目摄像头,可以快速获取到左右两张图,分别作为参考图像以及目标图像。
根据本发明的第三方面的实施例的计算机存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行如第一方面实施例中任一所述的双目立体匹配方法。
下面参考图1和图2对本发明实施例中通过双目立体匹配方法获取视差图的过程详细说明,值得理解的是,下述描述仅是示例性说明,而不是对发明的具体限制。
如图1所示,通过双目摄像头获取左图和右图,其中,左图为步骤S1100的参考图像,右图为步骤S1100的目标图像。
在参考图像和目标图像区域定义矩形窗口,矩形窗口的长、宽分别为n、m。
以参考图像为例,根据如图2所示的步骤S1210对参考图像进行Cenus转化具体如下:
选取中心像素作为参考像素,将矩形窗口中每个像素的灰度值与参考像素的灰度值进行比较。其中灰度值小于或等于参考值的像素标记为0,大于参考值的像素标记为1。将像素标记值按位连接,得到中心像素对应二进制码流。假设中心像素在参考图像中坐标为(u,v),则中心像素对应的二进制码流为Cst(u,v)。
然后,将该矩形窗口在参考图像中进行遍历,获得若干二进制码流,将若干二进制码流形成第一码流集合。同理,目标图像根据参考图像的做法可以获得第二码流集合。
进一步,参考如图2所示的步骤S1220,获取参考图像中像素的初始代价值集合步骤如下:
以坐标为(u,v)的为待测像素为例,此时,坐标为(u,v)的待测像素在视差值d的汉明距离C(u,v,d)为:
C(u,v,d)=Hamming(Cst(u,v),Csr(u-d,v))
需说明的是,Cst(u,v)为参考图像中坐标位置在(u,v)的像素的二进制码流,Csr(u-d,v)为目标图像中坐标位置在(u-d,v)的像素的二进制码流。具体的,汉明距离C(u,v,d)为Cst(u,v)和Csr(u-d,v)进行亦或运算后,运算结果中比特位不为1的值。
假设设定视差范围为1-96。则可以获得坐标位置为(u,v)像素的96个C(u,v,d)。将96个C(u,v,d)作为像素(u,v)的初始代价值集合C。
遍历左图像中的各像素点,依次获得每个像素的初始代价值集合。
进一步,参考如图2中步骤S1230,获取每个像素的每个初始代价值的权重。
具体的,依次从待测像素的初始代价值集合中获取第一初始代价值,此时第一初始代价值的权重为待测像素的其他初始代价值之和与待测像素的所有初始代价值之和的比重。假设Wi为待测像素的初始代价值集合C中第i个元素Ci的权重,则权重Wi为:
进一步的,将每个像素的初始代价值集合C按照连续4个初始代价值为一个区域进行划分,得到24个视差区域R。视差区域R编号从0开始。
进一步,参考如图2所示的步骤S1240进行权重计算。假设,第i个视差区域内初始代价值依次为C
i、C
i-1、C
i-2、C
i-3;则区域代价值
此时区域代价值V
i即为待测像素的像素代价值。
进一步,获取第i个区域内最小初始代价值的位置,以作为视差区域i的最优视差位置。设定Ci-3、Ci-2、Ci-1、Ci对应的位置分别Di-3=0,Di-2=1,Di-1=2,Di=3。则当Ci、Ci-1、Ci-2、Ci-3中最小值为Ci-1时,则第i个视差区域最小初始代价值的位置Dmin=2。
进一步,根据如图1所示的步骤S1300进行代价聚合处理。选取以待测像素为端点的8条射线为路径,且相邻两条射线之间的夹角相同。针对其中一条路径r,可以获得待测像素p在该路径r的路径代价值Lr(p,i)为:
具体的,V(p,i)表示待测像素p在路径r上的第i个视差区域的区域代价值。p-r为路径r上待测像素p的前一个像素点,L
r(p-r,i)表示像素点p-r在路径方向r上第i个视差区域下的路径代价值,L
r(p-r,i-1)表示像素点p-r在路径方向r上第i-1个视差区域下的路径代价值,L
r(p-r,i+1)表示像素点p-r在路径方向r上第i+1个视差区域下的路径代价值,P1、P2为预设的惩罚系数,
表示p-r点的在路径方向r上任意视差区域j下的最小路径代价值。
将8个方向的路径代价值进行累加,形成对于待测像素p在第i个视差区域的能量函数,即:
进一步,根据如图1所示的步骤S1400获取待测像素的最优视差值,包括如下步骤:
遍历待测像素p的第0至23个视差区域的能量函数,找出最小能量函数对应的视差区域i。此时,待测像素p的最优视差值d_final=i*4+Dmin。
其中i表示视差区域的编号,其编号从0开始;4表示每个视差区域内初始代价值的个数,Dmin表示第i个区域内初始代价值最小的位置。
具体的,将参考图像中所有的像素参考待测像素p计算最优视差值,从而获得参考图像的视差图。
需说明的是,根据视差图获得深度图,以及深度图的应用为现有技术,本发明改进主要在于视差图中各像素的最优视差值的优化。从而提供一种快速低计算量的最优视差值计算,提升视差图获取的效率。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所述技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。