一种基于像素相似性的立体匹配算法、系统和计算机介质
技术领域
本发明涉及双目视觉匹配邻域,具体涉及一种基于像素相似性的立体匹配算法、系统和计算机介质。
背景技术
在双目视觉的立体匹配中,一个关键问题是要寻找在左右图像中的对应点,以得到两幅图像中的对应像素的水平位置差,也称为视差,因此,根据视差即可直接计算出该像素的深度,视差与深度是一一对应的。
但是不在同一深度的点,完全可能有相同的颜色、文理、和梯度等等,所以,导致立体匹配发生错配,从而导致视差计算出现较大的错误,大大影响了双目视觉在深度测量中的应用。
为了克服这一易受噪声、光线变化等干扰的缺点,可以采用一个像素周边区域的像素来估计该像素的匹配代价及视差估计,有用矩形(正方形)区域,也有用自适应生长的区域,但这些区域有很大的可能(很高的概率)包含视差不一致的像素,因此,估计这一包含不同视差像素的代价计算,也是不准确的。即使采用双边滤波、最小生成树等也不能完全解决这一问题,因为双边滤波只能采用颜色差来加权,最小生成树也是采用颜色进行加权,与该区域的像素之间的视差是否一致(或是否相近)并没有直接关联。
发明内容
针对上述匹配区域可能包含视差不一致像素的问题,本发明提供一种基于相似相似性的立体匹配算法。
根据第一方面,一种实施例中提供一种基于像素相似性的立体匹配算法,包括:
获取第一匹配图像和第二匹配图像;
对于第一匹配图像中任意一当前待匹配的像素点,根据预设的视差值得到其在第二匹配图像对应的像素点;
根据预设的相似性定义公式计算所述第一匹配图像中当前待匹配的像素点与其在第二匹配图像中对应的像素点的相似性;
若所述相似性大于阈值,则继续计算所述当前待匹配的像素点的周边像素点与其在第二匹配图像中所述对应的像素点的对应周边像素点的相似性,以得到第一匹配图像相似区域和第二匹配图像相似区域;所述第一匹配图像相似区域与所述第二匹配图像相似区域形状大小一致;所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点的相似性都大于所述阈值,且第一匹配图像相似区域周边的像素点与第二匹配图像相似区域对应的周边的像素点的相似性都小于或等于所述阈值;
计算所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点的匹配代价;
根据所述匹配代价计算所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点的视差。
在一实施例中,所述预设的视差值从零到最大值进行迭代。
在一实施例中,所述预设的相似性定义公式包括:
取待计算的两个像素点第一像素点和第二像素点周边一个两边一致的邻域,根据所述两个像素点的邻域计算所述两个像素点的相关系数,将所述系数定义为所述两个像素点的相似性的指标;所述邻域大小为(2M+1)x(2M+1),M为等于或大于0的自然数;
所述计算公式如下:
式中,Pl为第一像素点;xpl、ypl分别为第一像素点的x、y坐标;Il为第一像素点及其邻域中像素点的色彩数值,所述色彩数值包括灰度值与RGB数值;Pr为第二像素点;xpr、ypr分别为第二像素点的x、y坐标;Ir为第二像素点及其邻域中像素点的色彩数值。
在一实施例中,所述M的取值包括1、2和3。
在一实施例中,所述预设的相似性定义公式包括SSIM。
在一实施例中,所述计算所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点的匹配代价包括:
对所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点采用ZNCC进行匹配,得到匹配代价,计算公式如下:
式中,Zd为相似区域;p′l、p′r分别为第一匹配图像相似区域内的像素点和第二匹配图像相似区域内对应的像素点。
在一实施例中,所述计算所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点的匹配代价包括:
使用SAD、SSD或NCC计算所述匹配代价。
在一实施例中,所述根据所述匹配代价计算所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点的视差的计算方法包括加权中值滤波、半全局、最小生成树和LocalExp。
根据第二方面,一种实施例中提供一种基于像素相似性的立体匹配系统,包括:
存储器,用于存储程序;
处理器,用于通过执行所述存储器存储的程序以实现本文中任一实施例所述的方法。
根据第三方面,一种实施例中提供一种计算机可读存储介质,所述介质上存储有程序,所述程序能够被处理器执行以实现如本文中任一实施例所述的方法。
依据上述实施例的基于像素相似性的立体匹配算法,首先定义像素的相似性,根据像素的相似性来定义匹配区域的相似范围,进而确定像素点视差相近的相似区域,从而实现较为准确的立体匹配。
附图说明
图1为一种实施例的基于像素相似性的立体匹配算法的流程图;
图2为一种实施例的基于像素相似性的立体匹配算法中“相似性定义公式”的建立的流程图;
图3为一种实施例的邻域大小为(5x5)的相似性计算区域示意图;
图4为一种实施例中预设视差值迭代获取第二匹配图像对应的像素点的示意图;
图5(a)为一种实施例的第一次拓展相似区域的示意图;图5(b)为一种实施例的第二次拓展相似区域的示意图;图5(c)为一种实施例的第二次拓展相似区域的匹配结果的示意图;图5(d)为一种实施例的拓展出来的第一匹配图像相似区域与所述第二匹配图像相似区域的示意图;
图6为一种实施例的基于像素相似性的立体匹配系统的结构示意图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
本发明公开的一种基于像素相似性的立体匹配算法中提出一种基于像素相似性的区域提取方法,该方法的主要思想是,如果某个区域在左右是视差一致的,那么它们也必定是相似的,但是如何定义两个区域是相似的,则需要定义每一对像素是否相似。因此,本申请一些实施例中首先提出像素之间的相似性,然后,根据像素的相似性定义来定义待匹配区域的相似范围,进而确定相似区域,从而得到较为精确的立体匹配算法。
下面通过具体实施例来对本发明进行说明。
实施例一:
请参考图1,本发明一实施例中提供一种基于像素相似性的立体匹配算法,包括步骤S110-S160,下面具体说明。
步骤S110:获取第一匹配图像和第二匹配图像。
步骤S120:对于第一匹配图像中任意一当前待匹配的像素点,根据预设的视差值得到其在第二匹配图像对应的像素点。在一实施例中,所述视差值从零到最大值进行迭代。
步骤S130:根据预设的相似性定义公式计算所述第一匹配图像中当前待匹配的像素点与其在第二匹配图像中对应的像素点的相似性。
本发明的核心之一在于定义像素的相似性,本发明一实施例中是通过两像素周边的相同的邻域的相似性来定义的。下面对如何建立步骤S130所涉及的相似性定义公式进行说明。
请参考图2,一实施例中,相似性定义公式的建立包括步骤S210-S230,下面具体说明。
步骤S210:取待计算的两个像素点第一像素点和第二像素点周边一个两边一致的邻域。在一实施例中,所述邻域大小为(2M+1)x(2M+1),M为等于或大于0的自然数。
步骤S220:根据所述两个像素点的邻域计算所述两个像素点的相关系数。
在一实施例中,所述计算公式如下:
式中,Pl为第一像素点;xpl、ypl分别为第一像素点的x、y坐标;Il为第一像素点及其邻域中像素点的色彩数值,所述色彩数值包括灰度值与RGB数值;Pr为第二像素点;xpr、ypr分别为第二像素点的x、y坐标;Ir为第二像素点及其邻域中像素点的色彩数值。
步骤S230:将所述系数定义为所述两个像素点的相似性的指标。
通过上述步骤S210-S230,相似性定义公式(1)被建立。如图3所示,为一实施例中邻域大小为(5x5)的相似性计算区域示意图。在一实施例中,所述邻域大小包括(3x3)、(5x5)和(7x7),如果取(3x3),则边界像素的相似性精度高一些,但鲁棒性差一点,如果取(7x7),相似性的鲁棒性高一点,但边界像素相似性的精度则要差一些,因此,一般来说,(5x5)是比较恰当的选择。对此,本领域技术人员可以毫无疑义地得出,本发明中对于两个像素的定义是通过两个像素周边的相同邻域的相似性(例如相关系数)来定义的,不管这个邻域的范围取多大,都在本申请的保护范围,同时不管相同的邻域的相似性的定义是否采用相关系数,只要定义的是他们之间的某种相似性,都在本申请的保护范围。例如,一实施例中使用SSIM(结构相似性算法)来计算像素的相似性,所述计算公式如下:
式中,l(pl,pr)为亮度对比函数,c(pl,pr)为对比度对比函数,s(pl,pr)为结构对比函数,μpl为第一像素点周边邻域的像素点的灰度平均值,μpr为第二像素点周边邻域的像素点的灰度平均值,σpl为第一像素点周边邻域的像素点的灰度标准差,σpr为第二像素点周边邻域的像素点的灰度标准差,c1、c2为常数,防止除零。
下面继续说明本发明一实施例中提供一种基于像素相似性的立体匹配算法。
步骤S140:若所述相似性大于阈值,则继续计算所述当前待匹配的像素点的周边像素点与其在第二匹配图像中所述对应的像素点的对应周边像素点的相似性,以得到第一匹配图像相似区域和第二匹配图像相似区域。
在一实施例中,若所述相似性小于或等于阈值,则返回步骤S120,预设的视差值迭代到下一数值,得到新的第二匹配图像对应的像素点,再执行步骤S130。如图4所述,为一实施例中预设视差值迭代获取第二匹配图像对应的像素点的示意图,视差值取d1时第二匹配图像中对应的像素点与当前待匹配像素点不大于阈值,视差值迭代到d2,所述相似性依旧不大于阈值,依此直至视差值取d5得到的时第二匹配图像中所述对应的像素点的相似性大于阈值,则继续计算所述当前待匹配的像素点的周边像素点与其在第二匹配图像中所述对应的像素点的对应周边像素点的相似性,以得到第一匹配图像相似区域和第二匹配图像相似区域。
在一实施例中,请参考图5(a)-5(d),为继续计算所述当前待匹配的像素点的周边像素点与其在第二匹配图像中所述对应的像素点的对应周边像素点的相似性,以得到第一匹配图像相似区域和第二匹配图像相似区域的过程示意图。图5(a)为第一次拓展相似区域的示意图,在拓展的区域中计算当前待匹配像素点的周边像素点与其在第二匹配图像中对应的像素点的对应周边像素点的相似性,例如,图5(a)中的像素点对(A1,B1)、(A2,B2)和(A3,B3),A1、A2、A3与第一匹配图像中的当前待匹配像素点的相对位置分别和B1、B2、B3与第二匹配图像中的对应像素点的相对位置相同,其他计算的像素点对也具有此特性。在一实施例中,图5(a)中拓展的相似区域中的对应的像素点对的相似性均大于阈值,则有图5(b)为第二次拓展相似区域的示意图,分别计算对应像素点对的相似性,在一实施例中,第二次拓展相似区域的匹配结果如图5(c)所示。在一实施例中,相似性大于阈值的像素点对继续向周边拓展,直至拓展出来的所有像素点对的相似性均小于或等于阈值,例如,图5(d)为一实施例中拓展出来的第一匹配图像相似区域与所述第二匹配图像相似区域的示意图。由此,在一实施例中,所述第一匹配图像相似区域与所述第二匹配图像相似区域形状大小一致;所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点的相似性都大于所述阈值,且第一匹配图像相似区域周边的像素点与第二匹配图像相似区域对应的周边的像素点的相似性都小于或等于所述阈值。所述阈值根据相似性定义计算方法和对匹配精度的要求来设置,例如,一实施例中使用SSIM进行相似性计算,阈值设定为0.9。
步骤S150:计算所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点的匹配代价。在一实施例中,计算所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点的匹配代价包括:
对所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点采用ZNCC(零均值归一化交叉相关系数)进行匹配,得到匹配代价,计算公式如下:
式中,Zd为相似区域;p′l、p′r分别为第一匹配图像相似区域内的像素点和第二匹配图像相似区域内对应的像素点。
在一实施例中,使用SAD、SSD或NCC来计算所述匹配代价,相应地,计算匹配代价的公式(2)适应性修改。
在一实施例中,使用SAD(灰度差平方和)计算所述匹配代价,计算公式如下:
式中,I()是像素点的灰度值。
在一实施例中,使用SSD(灰度差绝对值和)计算所述匹配代价,计算公式如下:
在一实施例中,使用NNC(归一化相关系数)计算所述匹配代价,计算公式如下:
式中,H()是像素点的色彩数值,包括灰度或RGB数值。
对此,本领域技术人员可以毫无疑义的得出,本发明对于计算匹配代价的公式,无论采用何种计算匹配代价的公式,只要计算区域是采用像素相似性来定义(或拓展出来)的区域,都在本申请的保护范围。
步骤S160:根据所述匹配代价计算所述第一匹配图像相似区域内的像素点与所述第二匹配图像相似区域内对应的像素点的视差。在一实施例中,视差的计算方法包括加权中值滤波、半全局、最小生成树和LocalExp。
请参考图6,本发明一实施例中提供一种基于像素相似性的立体匹配系统,其包括存储器10和处理器12。存储器10用于存储程序。处理器12用于通过执行存储器10存储的程序以实现本文中任一实施例所述的方法。
本发明一实施例还提供一种计算机介质,所述介质上存储有程序,所述程序能够被处理器执行以实现如本文中任一实施例所述的方法。
以上就是本发明基于像素相似性的立体匹配算法和系统的一些说明。本发明的一个实施例中,其主要内容包括:
1)首先定义像素的相似性,定义主要图中两个像素的相似性是取这两个像素周边的一个两边一致的小邻域,这里取一个(2M+1)x(2M+1)的区域N,典型值可取5x5(M=2),然后计算它们之间的相关系数,该系数技术定义这两个像素相似性的指标,即
当然,也可以取邻域N为(3x3)或(7x7).如果取(3x3),则边界像素的相似性精度高一些,但鲁棒性差一点,如果取(7x7),相似性的鲁棒性高一点,但边界像素相似性的精度则要差一点。因此,一般来说,(5x5)是比较恰当的选择。
2)在确定了像素相似性的计算方法以后,就可以定义自适应的匹配区域,即对任何一个左图的像素Pl,对于视差预设为d的右图的一个像素Pr,Pr=Pl-d,如果这两个像素的相似性小于某个阈值Ts,则它们一定不匹配。(可将其代价函数设成无穷大,或一个比较大的值)。如果这两个像素Pl,Pr是相似的(相似性大于某一阈值Ts),则可根据相似性定义公式(1)拓展出一个与Pl相似的区域Z,即在这个区域内,Pl与Pr周边对应的像素是相似的,这样它们的视差也是基本一致的。(请注意,对于每一个预设的视差d,所得到的相似区域Z,都是不同的,因此,我们可以将之记为Zd),这样可以克服以前所取的匹配区域像素视差不一致的情况,大大提升匹配的精度。
假定根据相似性的定义公式(1),拓展出来的区域为Zd,则进行匹配的区域就是Zd,也就是计算匹配代价的区域就是Zd,然后就可采用(零均值归一化交叉相关系数)ZNCC,来进行匹配,即
当然,也可以采用其它代价函数,但计算代价的公式(2)得做适当的修改。
3)在匹配代价求出来以后,可按各种后续的估计视差方法进行视差估计,例如加权中值滤波、半全局、最小生成树、LocalExp等等。
本发明提出一种基于像素相似性的区域提取方法,该方法的主要思想是,如果某个区域在左右是视差一致的,那么它们也必定是相似的,但是如何定义两个区域是相似的呢,则需要定义每一对像素是否相似。因此,本发明首先提出像素之间的相似性,然后,根据像素的相似性来定义待匹配区域的相似范围,进而确定相似区域,从而得到较为精确的立体匹配算法。
本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。
以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:图像处理方法及相关终端、设备和存储介质