本发明涉及双目立体视觉领域,具体涉及一种双目图像立体匹配方法、系统及其滤波方法、系统。
背景技术:
双目立体视觉系统是一个根据获取的平面图像恢复3d图像的系统。场景中的光线在人眼这个精密的成像系统中被采集,通过神经中枢被送入包含有数以亿计的神经元的大脑中被并行的处理,得到了实时的高清晰度的准确的深度感觉信息。这使得人类对环境的适应能力大大提高,很多复杂的动作能够得以完成:如行走、体育运动、驾驶车辆以及进行科学实验等。
计算机视觉是一门研究使用计算机来模拟人的视觉系统的学科。当前计算机立体视觉的水平与人类的双目视觉水平还相距甚远,因此对它的研究仍然是一个非常活跃的领域。以双目立体视觉为例,它是计算机视觉领域的重要分支,它通过模拟人的视觉系统来处理现实世界,对于立体视觉匹配的研究,能够大大的增强计算机或机器人对环境的感知能力,使得机器人能够更好的适应环境、更加智能,从而能够更好的为人们服务。双目立体视觉中最重要但又非常困难的问题就是立体视觉匹配问题,即从不同视点图像中找到匹配的对应点。
技术实现要素:
针对上述问题,本申请提供一种双目图像立体匹配方法、系统及其滤波方法、系统。
根据第一方面,一种实施例中提供一种双目图像立体匹配的滤波方法,包括:
计算每个像素点(x,y)的匹配代价矢量特征,包括:计算该像素点(x,y)和另一幅图像中若干像素点的距离c(x,y,d)=|i1(x,y)-i2(x-d,y)|;其中d∈sd={dmin,...,dmax},为所有可能的视差的集合,i1(x,y)为像素点(x,y)的属性,i2(x-d,y)为另一幅图像中像素点(x-d,y)的属性;根据计算得到的距离c(x,y,d)构造像素点(x,y)的匹配代价矢量特征feature_vector(x,y);
对任一像素点,当需要对该像素点进行滤波时,使用该像素点的周围像素点进行加权平均,完成对该像素点的滤波,其中该像素点的周围像素点对该像素点的权重至少通过这两个像素点的匹配代价矢量特征的距离来计算。
在一实施例中,根据差距c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:
feature_vector(x,y)=[c(x,y,dmin),...,c(x,y,dmax)]。
在一实施例中,根据差距c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:
feature_vector(x,y)=[e(x,y,dmin),...,e(x,y,dmax)];
其中,
在一实施例中,像素点的属性包括颜色强度属性、灰度强度属性和/或梯度属性;对像素点的滤波,包括对像素点的颜色强度、灰度强度、梯度或距离c(x,y,d)的滤波。
在一实施例中,所述该像素点的周围像素点对该像素点的权重至少通过这两个像素点的匹配代价矢量特征的距离来计算,包括:通过这两个像素点的匹配代价矢量特征的距离来计算;或者,通过这两个像素点的匹配代价矢量特征的距离,以及颜色距离、灰度距离、几何距离中的一者或多者,来共同计算。
在一实施例中,像素点的周围像素点通过预设的一个领域大小来选取。
根据第二方面,一种实施例中提供一种双目图像立体匹配方法,包括:
获取至少两个视点的图像;
通过上述任一实施例所述的滤波方法,对图像中的像素点进行滤波。
根据第三方面,一种实施例提供一种双目图像立体匹配的滤波系统,包括:
存储器,用于存储程序;
处理器,用于通过执行所述存储器存储的程序以实现上述任一实施例所述的方法。
根据第四方面,一种实施例提供一种双目图像立体匹配系统,包括:
存储器,用于存储程序;
处理器,用于通过执行所述存储器存储的程序以实现上述任一实施例所述的方法。
根据第五方面,一种实施例提供一种计算机可读存储介质,其特征在于,包括程序,所述程序能够被处理器执行以实现上述任一实施例所述的方法。
依据上述实施例的双目图像立体匹配方法、系统及其滤波方法、系统、计算机可读存储介质,在立体匹配过程中,对图像中像素点进行滤波,利用周围像素点对该像素点进行加权平均,完成对该像素点的滤波,而该像素点的周围像素点的权重系数,则引入匹配代价矢量特征,至少通过待滤波的像素点与其周围的像素点的匹配代价矢量特征的距离来计算滤波中的权重,从而可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。
附图说明
图1为一种实施例的双目图像立体匹配的滤波方法的流程图;
图2为一种实施例的双目图像立体匹配的滤波系统的结构示意图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
在双目视觉的立体匹配中,一个关键问题是寻找在左右图像中的匹配点,以得到两幅图像中对应像素的水平位置差,也称之为视差,从而进一步可以计算出该像素点的深度。
不在同一深度的像素点,完全可能有相同的颜色、纹理和梯度等,所以这常常会导致立体匹配时发生错配,从而进一步导致视差计算出现较大的错误,大大影响了双目视觉在深度测量中的应用。为了克服这一点,在现有的双目图像的立体匹配方法中,一般会采用像素点周边区域的像素点来估计该像素点,例如用一个矩形区域,用自适应生长的区域,还有用最小生成树等等,但这些方法中,对像素的匹配代价的加权仍然只能采用上面的颜色、纹理和梯度等与视差没有直接关系的特征来计算,因此这些方法还有较大的不鲁棒性。
针对立体匹配,本发明提出一种滤波方法及基于该滤波方法的立体匹配,在对图像中像素点进行滤波时,利用周围像素点对该像素点进行加权平均,完成对该像素点的滤波,而该像素点的周围像素点的权重系数,则基于本发明提出的匹配代价矢量特征来计算,例如至少通过这两个像素点的匹配代价矢量特征的距离来计算;具体地,可以单独由这两个像素点的匹配代价矢量特征来决定权重系数,也可以由这两个像素点的匹配代价矢量特征联合其他的诸如颜色距离、灰度距离、几何距离中的一者或多者,来共同决定权重系数。对像素点的滤波,可以是对像素点的颜色强度、灰度强度、梯度或距离c(x,y,d)等滤波。本发明可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。下面具体说明。
实施例一
请参照图1,本发明一实施例中提供一种双目图像立体匹配的滤波方法,包括步骤s3100~s3200。
步骤s3100:计算每个像素点(x,y)的匹配代价矢量特征,包括:计算该像素点(x,y)和另一幅图像中若干像素点的距离c(x,y,d)=|i1(x,y)-i2(x-d,y)|;其中d∈sd={dmin,...,dmax},为所有可能的视差的集合,i1(x,y)为像素点(x,y)的属性,i2(x-d,y)为另一幅图像中像素点(x-d,y)的属性。在一实施例中,像素点的属性包括颜色强度属性、灰度强度属性和/或梯度属性。当用于计算像素点的距离包括多个属性时,例如包括像素点的颜色强度和梯度时,则在计算两个点的距离时,可以计算这两个点的颜色差值以及梯度差值,再相加或加权平均得到距离。下面举一个例子,以只考虑颜色强度属性为例:
c(x,y,d)
=|i1(x,y)-i2(x-d,y)|
=|i1r(x,y)-i2r(x-d,y)|+|i1g(x,y)-i2g(x-d,y)|+|i1b(x,y)-i2b(x-d,y)|;
其中i1r(x,y)、i1g(x,y)、i1b(x,y)分别表示在上述的一幅图像中像素点(x,y)在rgb颜色空间的r、g、b分量,i2r(x-d,y)、i2g(x-d,y)、i2b(x-d,y)分别表示在上述的另一幅图像中像素点(x-d,y)在rgb颜色空间的r、g、b分量;当然当只考虑颜色属性时,类似地也可以用cielab颜色空间来计算,在此不再赘述。
根据计算得到的差距c(x,y,d)构造像素点(x,y)的匹配代价矢量特征feature_vector(x,y)。本发明一实施例中将feature_vector(x,y)定义为像素点(x,y)的一个基本特征,经发明人研究发现,两个处于同一深度的像素点,通常它们的匹配代价矢量特征也比较相近,反过来,如果两个像素点在不同深度,那么它们的匹配代价矢量特征也会相差比较大,因此将feature_vector(x,y)定义为像素点(x,y)的匹配代价矢量特征是非常具有价值的,可以有效解决立体匹配时发生错配的问题,提高了立体匹配的精确度。在一实施例中,根据距离c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:feature_vector(x,y)=[c(x,y,dmin),...,c(x,y,dmax)]。
由于像素点(x,y)的匹配代价矢量特征feature_vector(x,y)通常只在其使c(x,y,d)达到最小的d的取值的附近才会比较小,其他地方则存在较大的不确定性,因此在一实施例中,可以将差距c(x,y,d)进行了一个转换后再来构造匹配代价矢量特征feature_vector(x,y),这样可以突出最小值附近特性。因此,在一实施例中,为了突出最小值附件的值的特性,并且让较大的匹配代价值迅速趋向于零,我们令
feature_vector(x,y)=[e(x,y,0),e(x,y,1),e(x,y,2),...,e(x,y,n)]。
步骤s3200:对任一像素点,当需要对该像素点进行滤波时,使用该像素点的周围像素点进行加权平均,完成对该像素点的滤波,其中该像素点的周围像素点对该像素点的权重至少通过这两个像素点的匹配代价矢量特征的距离来计算。例如,可以通过这两个像素点的匹配代价矢量特征的距离来计算权重;或者,通过这两个像素点的匹配代价矢量特征的距离,以及颜色距离、灰度距离、几何距离中的一者或多者,来共同计算权重。而像素点的周围像素点可以通过预设一个领域大小来选取。
不妨以对像素点的颜色强度进行滤波来进行说明。
对于一幅图像,只要像素点的空间坐标位置(x,y)确定了,该像素点的颜色强度也就确定了,因此对任一像素点(x,y)的颜色强度进行滤波时,可以预先设置一个二维的领域大小,例如设置一个窗口r,表示以像素点(x,y)为中心的窗口大小为r的里面的像素点通过加权平均来对像素点(x,y)进行滤波。
在这个窗口r内的任意一像素点(x′,y′)对待滤波的像素点(x,y)的权重,当单独使用匹配代价矢量特征的距离来计算时,而两个像素点(x,y)、(x′,y′)的匹配代价矢量特征的距离可以是它们的匹配代价矢量特征的差或差的平方,不妨以差为例:
δf(x,y)(x′,y′)=|feature_vector(x,y)-feature_vector(x′,y′)|。
像素点(x′,y′)对待滤波的像素点(x,y)的权重则可以通过δf(x,y)(x′,y′)来计算,例如像素点(x′,y′)对待滤波的像素点(x,y)的权重w(x,y,x′,y′)=δf(x,y)(x′,y′);当然也可以稍微变换一下
对于任意一像素点(x,y),ir(x,y)、ig(x,y)、ib(x,y)分别表示像素点(x,y)在rgb颜色空间的r颜色分量、g颜色分量、b颜色分量,
上面是以单独使用匹配代价矢量特征的距离来计算滤波中权重,并对像素点的颜色强度进行滤波的例子,下面再以一个联合使用匹配代价矢量特征的距离、颜色距离和几何距离共同计算滤波中权重,并对像素点的颜色强度进行滤波的例子。
如上所述,两个像素点(x,y)、(x′,y′)的匹配代价矢量特征的距离δf(x,y)(x′,y′)可以通过下式计算:
δf(x,y)(x′,y′)=|feature_vector(x,y)-feature_vector(x′,y′)|;
而两个像素点(x,y)、(x′,y′)的颜色距离可以通过现有的方式计算,例如可以通过下式计算:
δc(x,y)(x′,y′)=|ir(x,y)-ir(x′,y′)|+|ig(x,y)-ig(x′,y′)|+|ib(x,y)-ib(x′,y′)|;
两个像素点(x,y)、(x′,y′)的几何距离也可以通过现有的方式计算,例如可以通过下式计算:
像素点(x′,y′)对待滤波的像素点(x,y)的权重w(x,y,x′,y′)则可以通过δf(x,y)(x′,y′)、δc(x,y)(x′,y′)、δg(x,y)(x′,y′)的加权平均来计算,例如:
w(x,y,x′,y′)=μ1δf(x,y)(x′,y′)+μ2δc(x,y)(x′,y′)+μ3δg(x,y)(x′,y′);
μ1、μ2、μ3为常量,可以预先设置,例如将它们都设置为1/3。
当然也可以根据需求稍微变换一下:
σ1、σ2、σ3为用于调节的参数,为常量。
根据匹配代价矢量特征的距离、颜色距离和几何距离共同计算出滤波中权重,再通过加权平均对像素点进行滤波,在此不再赘述。
对像素点的灰度强度、梯度等滤波也是与对颜色强度滤波类似,在此也不再赘述。
下面再举例说明立体匹配过程中,对任一像素点(x,y)的距离c(x,y,d)进行滤波的例子。
对于双目图像中的任意一幅图像,任意一像素点(x,y)的距离c(x,y,d),需要像素点本身的空间坐标(x,y)以及视差d才能确定,因此对任一像素点(x,y)的距离c(x,y,d)进行滤波时,可以预先设置一个三维的领域大小,例如设置一个三维领域r,表示以像素点(x,y)为中心的一个三维领域,该三维领域里面的像素点通过加权平均来对像素点(x,y)进行滤波,具体地,是该三维领域里面的像素点的距离通过加权平均来对像素点的距离进行滤波。
类似地,在这个三维领域r内的任意一像素点(x′,y′,d′)对待滤波的像素点(x,y,d)的权重,可以单独基于两个像素点(x,y,d)、(x′,y′,d′)的匹配代价矢量特征的距离来计算,也可以联合颜色距离和几何距离来共同计算。
例如,两个像素点(x,y,d)、(x′,y′,d′)的匹配代价矢量特征的距离可为它们的差或差的平方,不妨以差的平方为例:
δf(x,y,d)(x′,y′,d′)=|feature_vector(x,y,d)-feature_vector(x′,y′,d′)|2;
其中,对于任意一像素点(x,y,d):
feature_vector(x,y,d)=c(x,y,d)=|i1(x,y)-i2(x-d,y)|。
两个像素点(x,y,d)、(x′,y′,d′)的颜色距离可以通过现有的方式计算,例如可以通过下式计算:
δc(x,y,d)(x′,y′,d′)=
|ir(x,y,d)-ir(x′,y′,d′)|2+|ig(x,y,d)-ig(x′,y′,d′)|2+|ib(x,y,d)-ib(x′,y′,d′)|2;
由于确定了一个像素点的空间坐标,其像素点的颜色强度也就确定了,因此,对于任意一像素点(x,y,d),ir(x,y,d)=ir(x,y),ig(x,y,d)=ig(x,y),ib(x,y,d)=ib(x,y)。
两个像素点(x,y,d)、(x′,y′,d′)的几何距离也可以通过现有的方式计算,例如可以通过下式计算:
当只考虑两个像素点(x,y,d)、(x′,y′,d′)的匹配代价矢量特征的距离δf(x,y,d)(x′,y′,d′)来计算权重时,则可以令w(x,y,d,x′,y′,d′)=δf(x,y,d)(x′,y′,d′);当然也可以稍微变换一下:
当不仅考虑两个像素点(x,y,d)、(x′,y′,d′)的匹配代价矢量特征的距离δf(x,y,d)(x′,y′,d′)时,例如还根据匹配代价矢量特征的距离δf(x,y,d)(x′,y′,d′)、颜色距离δc(x,y,d)(x′,y′,d′)和几何距离δg(x,y,d)(x′,y′,d′)共同计算出滤波中权重,可以通过加权平均的方式来计算:
w(x,y,d,x′,y′,d′)=μ1δf(x,y,d)(x′,y′,d′)+μ2δc(x,y,d)(x′,y′,d′)+μ3δg(x,y,d)(x′,y′,d′);
μ1、μ2、μ3为常量,可以预先设置,例如将它们都设置为1/3。
当然也可以根据需求稍微变换一下:
σ1、σ2、σ3为用于调节的参数,为常量。
计算得到权重后,那么在领域r内对像素点(x,y,d)进行滤波,例如可以通过下式计算:
其中
以上就是本发明公开的双目图像立体匹配的滤波方法。请参照图2,本发明一实施例还公开了一种双目图像立体匹配的滤波系统,其包括存储器3100和处理器3200。存储器3100用于存储程序;处理器3200用于通过执行上述存储器存储的程序以实现上述任一实施例所述的双目图像的自适应权重立体匹配方法。
实施例二
本发明还公开了一种双目图像立体匹配方法,包括获取至少两个视点的图像;通过本发明任一实施例所公开的滤波方法,对图像中的像素点进行滤波。
对图像中的像素点进行滤波,可以是对像素点的颜色强度、灰度强度、梯度或距离c(x,y,d)的滤波。
例如,在立体匹配中,先对双目图像的像素点的颜色强度或灰度强度使用本发明的滤波方法及系统进行滤波,再对经过滤波后的双目图像使用现有的或未来出现的立体匹配算法进行滤波。
例如,在立体匹配中,先计算各像素点的距离,对于任意一像素点(x,y),它的距离为c(x,y,d)=|i1(x,y)-i2(x-d,y)|,d∈sd={dmin,...,dmax};再对像素点(x,y)的距离c(x,y,d)=|i1(x,y)-i2(x-d,y)|进行滤波,可以得到滤波后像素点(x,y)的距离:
然后可以在
本发明还公开了一种双目图像立体匹配系统,其包括存储器和处理器,存储器用于存储程序,处理器用于通过执行存储器存储的程序以实现本发明任一实施例所公开的双目图像立体匹配方法。
本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。
以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。