CN113570646B - 一种基于ZSAD-Census的快速立体匹配方法 - Google Patents
一种基于ZSAD-Census的快速立体匹配方法 Download PDFInfo
- Publication number
- CN113570646B CN113570646B CN202110862685.0A CN202110862685A CN113570646B CN 113570646 B CN113570646 B CN 113570646B CN 202110862685 A CN202110862685 A CN 202110862685A CN 113570646 B CN113570646 B CN 113570646B
- Authority
- CN
- China
- Prior art keywords
- hash
- pixel
- information
- census
- matching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000004364 calculation method Methods 0.000 claims description 28
- 230000009191 jumping Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 10
- 230000014509 gene expression Effects 0.000 claims description 6
- 238000012805 post-processing Methods 0.000 claims description 5
- 238000001914 filtration Methods 0.000 claims description 4
- 238000005457 optimization Methods 0.000 claims description 4
- 101150103904 Clip2 gene Proteins 0.000 claims description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000010845 search algorithm Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/30—Determination of transform parameters for the alignment of images, i.e. image registration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20024—Filtering details
- G06T2207/20032—Median filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种基于ZSAD‑Census的快速立体匹配方法,包括如下步骤:S1.在每一帧图像的立体匹配开始之前,初始化配置;S2.输入目标图像和参考图像并遍历图像中的每一个像素,计算ZSAD信息和Census信息;S3.联合使用参考图像的ZSAD信息和Census信息或采用单独的ZSAD信息或Census信息,构建哈希函数,且通过哈希函数构建哈希表,每个哈希表均通过构建链表用于解决哈希冲突;S4.计算当前像素的哈希值,并查找与当前像素具有相同哈希值的参考像素位置。本发明解决现有技术中功耗大、面积成本高的问题,同时提高了立体匹配算法的准确性和抗干扰性。
Description
技术领域
本发明涉及计算机视觉技术领域,具体涉及一种基于ZSAD-Census的快速立体匹配方法。
背景技术
立体匹配是计算机视觉领域中的重要研究内容,也是最近30年来的研究热点。立体匹配是一种从平面图像中提取深度信息的技术,通过匹配两幅或多幅图像来获得稠密视差图,从而建立场景中的三维深度信息。立体匹配算法包括匹配代价计算、代价聚合、视差计算和视差后处理四个步骤,匹配代价计算,即计算参考图像搜索区域内每个像素点,以所有视差可能性去匹配目标图像上对应点的代价。匹配代价是立体匹配的基础,设计抗噪声干扰、对光照变化不敏感的匹配代价,能提高立体匹配的精度。因此,匹配代价的设计在全局算法和局部算法中都是研究的重点,是整个立体匹配算法的核心。
现有技术中,立体匹配算法存在芯片实现中存在功耗大、面积成本高、抗干扰性能较低且匹配准确度较低的问题,授权公告号为CN105335952A的专利公开了一种匹配代价计算方法和装置、以及视差值计算方法和设备,在参考图像中确定用于参考像素的参考代表性像素集合,参考代表性像素集合包括参考像素、和处于参考像素的第一预定邻域中的并且其显著程度大于阈值的至少一个像素;在目标图像中确定用于目标像素的目标代表性像素集合,目标代表性像素集合包括目标像素、和处于目标像素的第一预定邻域中的并且其显著程度大于阈值的至少一个像素;以及根据参考代表性像素集合中每一个像素的像素值、和目标代表性像素集合中每一个像素的像素值,来计算参考像素与目标像素之间的匹配代价。因此,可以得到可区分的匹配代价,进而得到正确的视差信息。虽通过像素间距离度量值求和计算匹配代价,选择具有代表性信息的相邻像素,减少了满足条件的像素点,匹配代价计算量仍较大,不满足实时性和功耗低的要求,同时,仅利用距离度量值或加权后的距离度量值求和计算匹配代价,匹配准确度和匹配效率较低且抗干扰性较差。
发明内容
为解决上述问题,本发明提出了一种基于ZSAD-Census的快速立体匹配方法,解决现有立体匹配算法中在芯片实现中存在的功耗大、面积成本高的问题,同时提高了立体匹配算法的准确性和抗干扰性。
本发明采用的技术方案是:
本申请提出一种基于ZSAD-Census的快速立体匹配方法,包括如下步骤:
S1.在每一帧图像的立体匹配开始之前,根据已有帧的统计信息,配置ZSAD信息的邻域范围为Nh×Nv,配置Census信息的邻域范围为Mh×Mv,配置匹配代价计算时使用Census数据的窗口为Kh×Kv,配置匹配代价计算时使用灰度数据的窗口为Lh×Lv,配置匹配代价计算公式中的权重为λ1和λ2,设定立体匹配的搜索范围为Sh×Sv;
S2.输入目标图像和参考图像并遍历图像中的每一个像素,采用Nh×Nv邻域的灰度信息,计算ZSAD信息,采用Mh×Mv邻域的灰度信息,计算Census信息;
步骤S2中,具体包括如下步骤:
S21.输入参考图像,遍历参考图像中的每一个像素,以参考图像中的当前像素P1(x,y)为中心,与矩形窗口内的相邻像素按照从内圈到外圈的顺序逐一进行比较,若当前像素的灰度值大于相邻像素的灰度值,则设置比较结果为1,否则为0;
S22.将步骤S21中的比较结果按位拼接,形成一个二进制数串,即为当前像素的Census信息;
S23.计算当前像素P1(x,y)对应的ZSAD信息,计算公式如下:
其中,I[x][y]为当前像素P1(x,y)的灰度值,I_为以当前像素P1(x,y)为中心的矩形窗口内的所有像素的灰度平均值,u、v为整数并且-Nh/2≤u≤Nh/2,-Nv/2≤v≤Nv/2;
S3.联合使用参考图像的ZSAD信息和Census信息或采用单独的ZSAD信息或Census信息,构建哈希函数H1和H2,且分别通过哈希函数H1和H2构建哈希表一HTable和哈希表二HTable2,每个哈希表均通过构建链表用于解决哈希冲突,设定哈希表一HTable和哈希表二HTable2的最大搜索次数分别为T1、T2;
步骤S3中,具体包括如下步骤:
S31.联合使用参考图像的ZSAD信息和Census信息,则哈希表一HTable的哈希生成函数为H1,哈希表二HTable2的哈希生成函数为H2,且哈希生成函数H1和H2的表达式如下:
H1=(Census[c:0])+(Clip2(Sh-1,(ZSAD>>d))<<e),
其中,i为整数并且0≤i≤7,c为整数且0≤c≤7,d为整数且d≥3,e为整数且e≤8,f为整数且0≤f≤7,g为整数且g≥6,h为整数且h≤3,N为上界且为整数,x为自变量;
S32.单独使用参考图像的ZSAD信息或Census信息,则哈希生成函数H1和H2的表达式如下:
H2=ZSAD>>p,
其中,l为整数且0≤l≤7,m为整数且m≥1,n为整数且n≤8,p为整数且0≤p≤6;
S33.输入步骤S22中获取的Census信息和步骤S23中计算得到的ZSAD信息,采用步骤S31或步骤S32中的哈希生成函数H1计算当前像素的哈希值H;
S34.参考图像中当前像素位置为P1(x,y),将哈希表一HTable中地址H存储的数据保存到链表一HChains中,即HChains[x][y]=HTable[H];
S35.更新哈希表一HTable中地址H存储的数据:HTable[H]=P1(x,y);
S36.输入步骤S22中获取的Census信息和步骤S23中计算得到的ZSAD信息,采用步骤S31或步骤S32中的哈希生成函数H2计算当前像素的哈希值H2;
S37.参考图像中当前像素位置为P1(x,y),将哈希表二HTable2中地址H2存储的数据保存到链表二HChains2中,即HChains2[x][y]=HTable2[H2];
S38.更新哈希表二HTable2中地址H2存储的数据:HTable2[H2]=P1(x,y);
S4.遍历目标图像的每个像素,根据目标图像的Census信息、ZSAD信息和哈希函数计算当前像素的哈希值,当前像素的哈希值作为哈希表一HTable和哈希表二HTable2的索引,且从哈希表及链表中查找参考图像中与当前像素具有相同哈希值的参考像素位置;
步骤S4中,输入目标图像,遍历图像中每一个像素,在参考图像中以当前像素P0(x0,y0)为中心的矩形搜索范围Sh×Sv内进行匹配搜索,具体包括如下步骤:
S41.输入当前像素及邻域的像素,根据步骤S3计算Census信息和ZSAD信息,设当前像素的搜索次数为0,设立哈希匹配标识MatchFlag[i][j]为0,其中,i、j均为整数且满足0≤i≤Sh-1,0≤j≤Sv-1,将哈希查找表中的所有地址的数据全部设置为无效地址(a,b);
S42.根据步骤S3中哈希表一HTable的散列函数计算当前像素的哈希值H1,并基于哈希表一HTable进行哈希搜索;
S421.设置参考像素的当前搜索位置curPos(x1,y1)=HTable[H1];
S422.若curPos(x1,y1)等于无效地址(a,b),结束当前点的哈希搜索,跳到步骤S43;
S423.若curPos(x1,y1)不等于无效地址(a,b),则继续判断该地址是否位于以P(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表中读取下一个地址nextPos=HChains[x1][y1],令curPos=nextPos,跳转至步骤S422;反之,curPos(x1,y1)位于搜索区域内,设置当前位置的MatchFlag为1;之后搜索次数加1,如果搜索次数大于T1,则结束当前点的哈希搜索;
S43.若所有哈希匹配标识MatchFlag均为0,则根据步骤S3中哈希表二HTable2的散列函数计算当前像素的哈希值H2,并基于哈希表二HTable2进行哈希搜索;
S431.设置参考像素的当前搜索位置curPos(x1,y1)=HTable2[H2];
S432.若curPos(x1,y1)等于无效地址(a,b),结束当前点的哈希搜索,跳到步骤S5进行视差计算;
S433若curPos(x1,y1)不等于无效地址(a,b),则继续判断该地址是否位于以P(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表二HChains2中读取下一个地址nextPos=HChains2[x1][y1],令curPos=nextPos,回到步骤S432;反之,若curPos(x1,y1)位于搜索区域内,设置当前位置的MatchFlag为1,随后搜索次数加1,如果搜索次数大于T2,则结束当前点的哈希搜索。
S5.对于步骤S4中得到的与当前像素具有相同哈希值的参考像素位置,判断参考像素的位置是否位于搜索范围内,若不在搜索范围,则跳过该参考像素;若在搜索范围内,则计算该参考像素位置的匹配代价,其中:
S51.第一匹配代价以该参考像素Kh×Kv领域的Census信息和当前像素Kh×Kv领域的Census信息为输入,将该参考像素和当前像素各对应位置Census信息按位异或运算并累加计算汉明距离,将汉明距离的累加和作为第一匹配代价;
S52.第二匹配代价以该参考像素Lh×Lv领域的灰度数据和当前像素Lh×Lv领域的灰度数据为输入,将该参考像素和当前像素各对应位置灰度数据的零均值误差绝对值进行累加,零均值误差绝对值的累加和作为第二匹配代价;
S53.将第一匹配代价和第二匹配代价融合,融合值作为当前参考像素的匹配代价;
S54.选取具有最小匹配代价的参考像素作为最佳匹配像素,其所在位置和当前像素位置的水平差距为整像素精度的初始视差值;
S55.统计匹配搜索过程中哈希表的命中情况,根据统计信息动态改变参考像素搜索范围Sh×Sv;
步骤S5具体按照如下公式计算参考像素位置的匹配代价,挑选出匹配代价最小的参考像素位置作为当前像素的最优匹配位置,若搜索范围内的MatchFlag全部为0,则最优匹配位置设置为无效值(a1,b1),
costFinal=cost1×λ1+cost2×λ2,
其中,i为整数并且0≤i≤(N-1),u、v为整数且cost1中,-Kh/2≤u≤Kh/2,-Kv/2≤v≤Kv/2,cost2中,-Lh/2≤u≤Lh/2,-Lv/2≤v≤Lv/2,λ1、λ2分别为cost1和cost2的权重系数,curCns为当前像素的Census信息,refCns为参考像素的Census信息,HAMMING(a2,b2)表示两个比特数据之间的比特差异,即汉明距离,cost1为根据Census信息得到的第一匹配代价,cost2为根据ZSAD信息得到的第二匹配代价,costFinal为融合第一匹配代价cost1和第二匹配代价cost2的最终匹配代价。
S6.根据初始视差值,计算最佳匹配位置相邻位置的匹配代价,若最佳匹配位置为无效值(a1,b1),则将视差设为无效值(a1,b1),否则,根据最佳匹配位置以及左右相邻位置的匹配代价,进行基于二次曲线拟合的亚像素增强,获取具有亚像素精度的增强视差值;
S7.根据步骤S6中的视差值进行视差后处理,并对视差进行优化,优化方法包括中值滤波法。
本发明的有益效果是:
1.在立体匹配算法中联合使用ZSAD和Census信息,降低匹配过程中噪声信号的干扰,增加了在重复场景中的匹配准确度,提高了匹配效率;
2.在利用ZSAD和/或Census信息来计算哈希值时,所使用的ZSAD和Census采用独立的邻域范围设置,邻域范围可以通过软件动态配置;
3.在基于灰度和Census的匹配代价计算过程中,两者采用独立的邻域范围设置,邻域范围可以通过软件动态配置;
4.将经典的哈希搜索算法应用在立体匹配算法的匹配搜索过程,将搜索过程从搜索区域内的逐点全搜索转化为仅仅对搜索区域内与当前像素具有相同哈希值的参考像素的搜索,极大的降低了搜索次数;
5.在整个哈希搜索和匹配代价计算过程中,联合使用参数特征ZSAD信息和非参数特征Census变换信息,既能够保持Census算法抗干扰性强,稳定性高的特点,又能克服Census算法在处理重复或相似的局部结构时的误匹配问题;
6.利用不同的哈希生成函数构建不同的哈希表,通过多重哈希搜索的技术来增加立体匹配的精确度;
7.哈希生成函数可以通过软件进行选择和配置,在立体匹配过程中可以根据图像特征动态进行配置。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明的哈希表建立示意图;
图2是本发明的哈希搜索算法流程图。
具体实施方式
实施例一
本申请提出一种基于ZSAD-Census的快速立体匹配方法,包括如下步骤:
如图1所示,S1.在每一帧图像的立体匹配开始之前,设置立体匹配代价计算的Census和灰度使用相同邻域范围,邻域窗口高度为15,宽度为15,设置Census信息和ZSAD信息均采用5×5的窗口,配置匹配代价计算公式中的权重为λ1=0.65和λ2=0.35,设定立体匹配的搜索范围为256×9的窗口,设定哈希表一HTable和哈希表二HTable2的最大搜索次数分别为8、32。
如图1-2所示,S2.输入目标图像和参考图像并遍历图像中的每一个像素,采用Nh×Nv邻域的灰度信息,计算ZSAD信息,采用Mh×Mv邻域的灰度信息,计算Census信息。
如图1-2所示,步骤S2中,具体包括如下步骤:
S21.输入参考图像,遍历参考图像中的每一个像素,以参考图像中的当前像素P1(x,y)为中心,与矩形窗口内的相邻像素按照从内圈到外圈的顺序逐一进行比较,Census信息中各位的计算顺序如表1所示,若当前像素的灰度值大于相邻像素的灰度值,则设置比较结果为1,否则为0。
表1Census信息中各位的计算顺序
S22.将步骤S21中的比较结果按位拼接,形成一个24位的二进制数串,即为当前像素的Census信息。
S23.计算当前像素P1(x,y)对应的ZSAD信息,计算公式如下:
其中,I[x][y]为当前像素P1(x,y)的灰度值,为以当前像素P1(x,y)为中心的矩形窗口内的所有像素的灰度平均值,u、v为整数并且-2≤u≤2,-2≤v≤2。
S3.联合使用参考图像的ZSAD信息和Census信息,构建哈希函数H1和H2,且分别通过哈希函数H1和H2构建哈希表一HTable和哈希表二HTable2,每个哈希表均通过构建链表用于解决哈希冲突。
如图1-2所示,步骤S3中,具体包括如下步骤:
S31.联合使用参考图像的ZSAD信息和Census信息,则哈希表一HTable的哈希生成函数为H1,哈希表二HTable2的哈希生成函数为H2,且哈希生成函数H1和H2的表达式如下:
H1=(Census[7:0])+(Clip2(255,(ZSAD>>3))<<8),
其中,i为整数并且0≤i≤7,N为上界且为整数,x为自变量。
S32.输入步骤S22中获取的Census信息和步骤S23中计算得到的ZSAD信息,采用步骤S31或步骤S32中的哈希生成函数H1计算当前像素的哈希值H。
S33.参考图像中当前像素位置为P1(x,y),将哈希表一HTable中地址H存储的数据保存到链表一HChains中,即HChains[x][y]=HTable[H]。
S34.更新哈希表一HTable中地址H存储的数据:HTable[H]=P1(x,y)。
S35.输入步骤S22中获取的Census信息和步骤S23中计算得到的ZSAD信息,采用步骤S31中的哈希生成函数H2计算当前像素的哈希值H2。
S36.参考图像中当前像素位置为P1(x,y),将哈希表二HTable2中地址H2存储的数据保存到链表二HChains2中,即HChains2[x][y]=HTable2[H2]。
S37.更新哈希表二HTable2中地址H2存储的数据:HTable2[H2]=P1(x,y)。
如图1-2所示,S4.遍历目标图像的每个像素,根据目标图像的Census信息、ZSAD信息和哈希函数计算当前像素的哈希值,当前像素的哈希值作为哈希表一HTable和哈希表二HTable2的索引,且从哈希表及链表中查找参考图像中与当前像素具有相同哈希值的参考像素位置。
步骤S4中,输入目标图像,遍历图像中每一个像素,在参考图像中以当前像素P0(x0,y0)为中心的矩形搜索范围256×9内进行匹配搜索,具体包括如下步骤:
S41.输入当前像素及邻域的像素,根据步骤S3计算Census信息和ZSAD信息,设当前像素的搜索次数为0,设立哈希匹配标识MatchFlag[i][j]为0,其中,i、j均为整数且满足0≤i≤255,0≤j≤8,将哈希查找表中的所有地址的数据全部设置为无效地址(-1,-1)。
S42.根据步骤S3中哈希表一HTable的散列函数计算当前像素的哈希值H1,并基于哈希表一HTable进行哈希搜索。
S421.设置参考像素的当前搜索位置curPos(x1,y1)=HTable[H1]。
S422.若curPos(x1,y1)等于无效地址(-1,-1),结束当前点的哈希搜索,跳到步骤S43。
S423.若curPos(x1,y1)不等于无效地址(-1,-1),则继续判断该地址是否位于以P(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表中读取下一个地址nextPos=HChains[x1][y1],令curPos=nextPos,跳转至步骤S422;反之,curPos(x1,y1)位于搜索区域内,设置当前位置的MatchFlag为1;之后搜索次数加1,如果搜索次数大于8,即哈希表一HTable的最大搜索次数,则结束当前点的哈希搜索。
S43.若所有哈希匹配标识MatchFlag均为0,则根据步骤S3中哈希表二HTable2的散列函数计算当前像素的哈希值H2,并基于哈希表二HTable2进行哈希搜索。
S431.设置参考像素的当前搜索位置curPos(x1,y1)=HTable2[H2]。
S432.若curPos(x1,y1)等于无效地址(-1,-1),结束当前点的哈希搜索,跳到步骤S5进行视差计算。
S433若curPos(x1,y1)不等于无效地址(-1,-1),则继续判断该地址是否位于以P(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表二HChains2中读取下一个地址,nextPos=HChains2[x1][y1],令curPos=nextPos,回到步骤S432;反之,若curPos(x1,y1)位于搜索区域内,设置当前位置的MatchFlag为1,随后搜索次数加1,如果搜索次数大于32,即哈希表二HTable2的最大搜索次数,则结束当前点的哈希搜索。
如图1-2所示,S5.对于步骤S4中得到的与当前像素具有相同哈希值的参考像素位置,判断参考像素的位置是否位于搜索范围内,若不在搜索范围,则跳过该参考像素;若在搜索范围内,则计算该参考像素位置的匹配代价,其中:
S51.第一匹配代价以该参考像素15×15领域的Census信息和当前像素15×15领域的Census信息为输入,将该参考像素和当前像素各对应位置Census信息按位异或运算并累加计算汉明距离,将汉明距离的累加和作为第一匹配代价。
S52.第二匹配代价以该参考像素15×15领域的灰度数据和当前像素15×15领域的灰度数据为输入,将该参考像素和当前像素各对应位置灰度数据的零均值误差绝对值进行累加,零均值误差绝对值的累加和作为第二匹配代价。
S53.将第一匹配代价和第二匹配代价融合,融合值作为当前参考像素的匹配代价。
S54.选取具有最小匹配代价的参考像素作为最佳匹配像素,其所在位置和当前像素位置的水平差距为整像素精度的初始视差值。
S55.统计匹配搜索过程中哈希表的命中情况,根据统计信息动态改变参考像素搜索范围256×9。
步骤S5具体按照如下公式计算参考像素位置的匹配代价,挑选出匹配代价最小的参考像素位置作为当前像素的最优匹配位置,若搜索范围内的MatchFlag全部为0,则最优匹配位置设置为无效值(-32768,-32768),
costFinal=cost1×λ1+cost2×λ2,
其中,i为整数并且0≤i≤23,u、v为整数且-7≤u≤7,-7≤v≤7,λ1、λ2分别为cost1和cost2的权重系数,curCns为当前像素的Census信息,refCns为参考像素的Census信息,HAMMING(a2,b2)表示两个比特数据之间的比特差异,即汉明距离,cost1为根据Census信息得到的第一匹配代价,cost2为根据ZSAD信息得到的第二匹配代价,costFinal为融合第一匹配代价cost1和第二匹配代价cost2的最终匹配代价。
如图1-2所示,S6.根据初始视差值,计算最佳匹配位置相邻位置的匹配代价,若最佳匹配位置为无效值(-32768,-32768),则将视差设为无效值(-32768,-32768),否则,根据最佳匹配位置以及左右相邻位置的匹配代价,进行基于二次曲线拟合的亚像素增强,获取具有亚像素精度的增强视差值。
如图1-2所示,S7.根据步骤S6中的视差值进行视差后处理,并对视差进行优化,优化方法包括中值滤波法。
实施例二
本申请还提出一种基于ZSAD-Census的快速立体匹配方法,包括如下步骤:
如图1-2所示,S1.在每一帧图像的立体匹配开始之前,根据已有帧的统计信息,配置ZSAD信息和Census信息均采用5×5的窗口来产生,配置匹配代价计算时使用Census数据的窗口为15×15,配置匹配代价计算时使用灰度数据的窗口为11×11,配置匹配代价计算公式中的权重为λ1=0.85和λ2=0.15,设定立体匹配的搜索范围为192×7。
如图1-2所示,S2.输入目标图像和参考图像并遍历图像中的每一个像素,采用5×5邻域的灰度信息,计算ZSAD信息,采用5×5邻域的灰度信息,计算Census信息。
步骤S2中,具体包括如下步骤:
S21.输入参考图像,遍历参考图像中的每一个像素,以参考图像中的当前像素P1(x,y)为中心,与矩形5×5窗口内的相邻像素按照从内圈到外圈的顺序逐一进行比较,Census信息中各位的计算顺序如表2所示,若当前像素的灰度值大于相邻像素的灰度值,则设置比较结果为1,否则为0。
S22.将步骤S21中的比较结果按位拼接,形成一个16位的二进制数串,即为当前像素的Census信息。
S23.计算当前像素P1(x,y)对应的ZSAD信息,计算公式如下:
其中,I[x][y]为当前像素P1(x,y)的灰度值,为以当前像素P1(x,y)为中心的矩形窗口内的所有像素的灰度平均值,u、v为整数并且-2≤u≤2,-2≤v≤2。
表2Census信息中各位的计算顺序
S3.采用单独的ZSAD信息或Census信息,构建哈希函数H1和H2,且分别通过哈希函数H1和H2构建哈希表一HTable和哈希表二HTable2,每个哈希表均通过构建链表用于解决哈希冲突,设定哈希表一HTable和哈希表二HTable2的最大搜索次数分别为16和8。
如图1-2所示,步骤S3中,具体包括如下步骤:
S31.单独使用参考图像的ZSAD信息或Census信息,则哈希生成函数H1和H2的表达式如下:
H2=ZSAD>>p,
其中,p为整数且0≤p≤6。
S32.输入步骤S22中获取的Census信息和步骤S23中计算得到的ZSAD信息,采用步骤S31或步骤S32中的哈希生成函数H1计算当前像素的哈希值H。
S33.参考图像中当前像素位置为P1(x,y),将哈希表一HTable中地址H存储的数据保存到链表一HChains中,即HChains[x][y]=HTable[H]。
S34.更新哈希表一HTable中地址H存储的数据:HTable[H]=P1(x,y)。
S35.输入步骤S22中获取的Census信息和步骤S23中计算得到的ZSAD信息,采用步骤S31或步骤S32中的哈希生成函数H2计算当前像素的哈希值H2。
S36.参考图像中当前像素位置为P1(x,y),将哈希表二HTable2中地址H2存储的数据保存到链表二HChains2中,即HChains2[x][y]=HTable2[H2]。
S37.更新哈希表二HTable2中地址H2存储的数据:HTable2[H2]=P1(x,y)。
如图1-2所示,S4.遍历目标图像的每个像素,根据目标图像的Census信息、ZSAD信息和哈希函数计算当前像素的哈希值,当前像素的哈希值作为哈希表一HTable和哈希表二HTable2的索引,且从哈希表及链表中查找参考图像中与当前像素具有相同哈希值的参考像素位置。
步骤S4中,输入目标图像,遍历图像中每一个像素,在参考图像中以当前像素P0(x0,y0)为中心的矩形搜索范围Sh×Sv内进行匹配搜索,具体包括如下步骤:
S41.输入当前像素及邻域的像素,根据步骤S3计算Census信息和ZSAD信息,设当前像素的搜索次数为0,设立哈希匹配标识MatchFlag[i][j]为0,其中,i、j均为整数且满足0≤i≤191,0≤j≤6,将哈希查找表中的所有地址的数据全部设置为无效地址(-1,-1)。
S42.根据步骤S3中哈希表一HTable的散列函数计算当前像素的哈希值H1,并基于哈希表一HTable进行哈希搜索。
S421.设置参考像素的当前搜索位置curPos(x1,y1)=HTable[H1]。
S422.若curPos(x1,y1)等于无效地址(-1,-1),结束当前点的哈希搜索,跳到步骤S43。
S423.若curPos(x1,y1)不等于无效地址(-1,-1),则继续判断该地址是否位于以P(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表中读取下一个地址nextPos=HChains[x1][y1],令curPos=nextPos,跳转至步骤S422。反之,curPos(x1,y1)位于搜索区域内,设置当前位置的MatchFlag为1;之后搜索次数加1,如果搜索次数大于16,即哈希表一HTable的最大搜索次数,则结束当前点的哈希搜索。
S43.若所有哈希匹配标识MatchFlag均为0,则根据步骤S3中哈希表二HTable2的散列函数计算当前像素的哈希值H2,并基于哈希表二HTable2进行哈希搜索。
S431.设置参考像素的当前搜索位置curPos(x1,y1)=HTable2[H2]。
S432.若curPos(x1,y1)等于无效地址(-1,-1),结束当前点的哈希搜索,跳到步骤S5进行视差计算。
S433若curPos(x1,y1)不等于无效地址(-1,-1),则继续判断该地址是否位于以P(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表二HChains2中读取下一个地址nextPos=HChains2[x1][y1],令curPos=nextPos,回到步骤S432;反之,若curPos(x1,y1)位于搜索区域内,设置当前位置的MatchFlag为1,随后搜索次数加1,如果搜索次数大于8,即哈希表二HTable2的最大搜索次数,则结束当前点的哈希搜索。
如图1-2所示,S5.对于步骤S4中得到的与当前像素具有相同哈希值的参考像素位置,判断参考像素的位置是否位于搜索范围内,若不在搜索范围,则跳过该参考像素;若在搜索范围内,则计算该参考像素位置的匹配代价,其中:
S51.第一匹配代价以该参考像素5×5领域的Census信息和当前像素5×5领域的Census信息为输入,将该参考像素和当前像素各对应位置Census信息按位异或运算并累加计算汉明距离,将汉明距离的累加和作为第一匹配代价。
S52.第二匹配代价以该参考像素5×5领域的灰度数据和当前像素5×5领域的灰度数据为输入,将该参考像素和当前像素各对应位置灰度数据的零均值误差绝对值进行累加,零均值误差绝对值的累加和作为第二匹配代价。
S53.将第一匹配代价和第二匹配代价融合,融合值作为当前参考像素的匹配代价。
S54.选取具有最小匹配代价的参考像素作为最佳匹配像素,其所在位置和当前像素位置的水平差距为整像素精度的初始视差值。
S55.统计匹配搜索过程中哈希表的命中情况,根据统计信息动态改变参考像素搜索范围192×7。
步骤S5具体按照如下公式计算参考像素位置的匹配代价,挑选出匹配代价最小的参考像素位置作为当前像素的最优匹配位置,若搜索范围内的MatchFlag全部为0,则最优匹配位置设置为无效值(-32768,-32768),
costFinal=cost1×λ1+cost2×λ2,
其中,u、v为整数,且cost1中-7≤u≤7,-7≤v≤7,cost2中-5≤u≤5,-5≤v≤5,λ1、λ2分别为cost1和cost2的权重系数,curCns为当前像素的Census信息,refCns为参考像素的Census信息,HAMMING(a1,b1)表示两个比特数据之间的比特差异,即汉明距离,cost1为根据Census信息得到的第一匹配代价,cost2为根据ZSAD信息得到的第二匹配代价,costFinal为融合第一匹配代价cost1和第二匹配代价cost2的最终匹配代价。
如图1-2所示,S6.根据初始视差值,计算最佳匹配位置相邻位置的匹配代价,若最佳匹配位置为无效值(-32768,-32768),则将视差设为无效值(-32768,-32768),否则,根据最佳匹配位置以及左右相邻位置的匹配代价,进行基于二次曲线拟合的亚像素增强,获取具有亚像素精度的增强视差值。
如图1-2所示,S7.根据步骤S6中的视差值进行视差后处理,并对视差进行优化,优化方法包括中值滤波法。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于ZSAD-Census的快速立体匹配方法,其特征在于:包括如下步骤:
S1.在每一帧图像的立体匹配开始之前,根据已有帧的统计信息,配置ZSAD信息的邻域范围为Nh×Nv,配置Census信息的邻域范围为Mh×Mv,配置匹配代价计算时使用Census数据的窗口为Kh×Kv,配置匹配代价计算时使用灰度数据的窗口为Lh×Lv,配置匹配代价计算公式中的权重为λ1和λ2,设定立体匹配的搜索范围为Sh×Sv;
S2.输入目标图像和参考图像并遍历图像中的每一个像素,采用Nh×Nv邻域的灰度信息,计算ZSAD信息,采用Mh×Mv邻域的灰度信息,计算Census信息;
S3.联合使用参考图像的ZSAD信息和Census信息或采用单独的ZSAD信息或Census信息,构建哈希函数H1和H2,且分别通过哈希函数H1和H2构建哈希表一HTable和哈希表二HTable2,每个哈希表均通过构建链表用于解决哈希冲突,设定哈希表一HTable和哈希表二HTable2的最大搜索次数分别为T1、T2;
S4.遍历目标图像的每个像素,根据目标图像的Census信息、ZSAD信息和哈希函数计算当前像素的哈希值,当前像素的哈希值作为哈希表一HTable和哈希表二HTable2的索引,且从哈希表及链表中查找参考图像中与当前像素具有相同哈希值的参考像素位置;
S5.对于步骤S4中得到的与当前像素具有相同哈希值的参考像素位置,判断参考像素的位置是否位于搜索范围内,若不在搜索范围,则跳过该参考像素;若在搜索范围内,则计算该参考像素位置的匹配代价,其中:
S51.第一匹配代价以该参考像素Kh×Kv领域的Census信息和当前像素Kh×Kv领域的Census信息为输入,将该参考像素和当前像素各对应位置Census信息按位异或运算并累加计算汉明距离,将汉明距离的累加和作为第一匹配代价;
S52.第二匹配代价以该参考像素Lh×Lv领域的灰度数据和当前像素Lh×Lv领域的灰度数据为输入,将该参考像素和当前像素各对应位置灰度数据的零均值误差绝对值进行累加,零均值误差绝对值的累加和作为第二匹配代价;
S53.将第一匹配代价和第二匹配代价融合,融合值作为当前参考像素的匹配代价;
S54.选取具有最小匹配代价的参考像素作为最佳匹配像素,其所在位置和当前像素位置的水平差距为整像素精度的初始视差值;
S55.统计匹配搜索过程中哈希表的命中情况,根据统计信息动态改变参考像素搜索范围Sh×Sv;
S6.根据初始视差值,计算最佳匹配位置相邻位置的匹配代价,根据最佳匹配位置以及左右相邻位置的匹配代价,进行基于二次曲线拟合的亚像素增强,获取具有亚像素精度的增强视差值;
S7.根据步骤S6中的视差值进行视差后处理,并对视差进行优化。
2.根据权利要求1所述的基于ZSAD-Census的快速立体匹配方法,其特征在于:步骤S2中,具体包括如下步骤:
S21.输入参考图像,遍历参考图像中的每一个像素,以参考图像中的当前像素P1(x,y)为中心,与矩形窗口内的相邻像素按照从内圈到外圈的顺序逐一进行比较,若当前像素的灰度值大于相邻像素的灰度值,则设置比较结果为1,否则为0;
S22.将步骤S21中的比较结果按位拼接,形成一个二进制数串,即为当前像素的Census信息;
S23.计算当前像素P1(x,y)对应的ZSAD信息,计算公式如下:
其中,I[x][y]为当前像素P1(x,y)的灰度值,为以当前像素P1(x,y)为中心的矩形窗口内的所有像素的灰度平均值,u、v为整数并且-Nh/2≤u≤Nh/2,-Nv/2≤v≤Nv/2。
3.根据权利要求2所述的基于ZSAD-Census的快速立体匹配方法,其特征在于:步骤S3中,具体包括如下步骤:
S31.联合使用参考图像的ZSAD信息和Census信息,则哈希表一HTable的哈希生成函数为H1,哈希表二HTable2的哈希生成函数为H2,且哈希生成函数H1和H2的表达式如下:
H1=(Census[c:0])+(Clip2(Sh-1,(ZSAD>>d))<<e),
其中,i为整数并且0≤i≤7,c为整数且0≤c≤7,d为整数且d≥3,e为整数且e≤8,f为整数且0≤f≤7,g为整数且g≥6,h为整数且h≤3,N为上界且为整数,x为自变量;
S32.单独使用参考图像的ZSAD信息或Census信息,则哈希生成函数H1和H2的表达式如下:
H2=ZSAD>>p,
其中,l为整数且0≤l≤7,m为整数且m≥1,n为整数且n≤8,p为整数且0≤p≤6;
S33.输入步骤S22中获取的Census信息和步骤S23中计算得到的ZSAD信息,采用步骤S31或步骤S32中的哈希生成函数H1计算当前像素的哈希值H;
S34.参考图像中当前像素位置为P1(x,y),将哈希表一HTable中地址H存储的数据保存到链表一HChains中,即HChains[x][y]=HTable[H];
S35.更新哈希表一HTable中地址H存储的数据:HTable[H]=P1(x,y);
S36.输入步骤S22中获取的Census信息和步骤S23中计算得到的ZSAD信息,采用步骤S31或步骤S32中的哈希生成函数H2计算当前像素的哈希值H2;
S37.参考图像中当前像素位置为P1(x,y),将哈希表二HTable2中地址H2存储的数据保存到链表二HChains2中,即HChains2[x][y]=HTable2[H2];
S38.更新哈希表二HTable2中地址H2存储的数据:HTable2[H2]=P1(x,y)。
4.根据权利要求3所述的基于ZSAD-Census的快速立体匹配方法,其特征在于:步骤S4中,输入目标图像,遍历图像中每一个像素,在参考图像中以当前像素P0(x0,y0)为中心的矩形搜索范围Sh×Sv内进行匹配搜索,具体包括如下步骤:
S41.输入当前像素及邻域的像素,根据步骤S3计算Census信息和ZSAD信息,设当前像素的搜索次数为0,设立哈希匹配标识MatchFlag[i][j]为0,其中,i、j均为整数且满足0≤i≤Sh-1,0≤j≤Sv-1,将哈希查找表中的所有地址的数据全部设置为无效地址(a,b);
S42.根据步骤S3中哈希表一HTable的散列函数计算当前像素的哈希值H1,并基于哈希表一HTable进行哈希搜索;
S421.设置参考像素的当前搜索位置curPos(x1,y1)=HTable[H1];
S422.若curPos(x1,y1)等于无效地址(a,b),结束当前点的哈希搜索,跳到步骤S43;
S423.若curPos(x1,y1)不等于无效地址(a,b),则继续判断该地址是否位于以P(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表中读取下一个地址nextPos=HChains[x1][y1],令curPos=nextPos,跳转至步骤S422;反之,curPos(x1,y1)位于搜索区域内,设置当前位置的MatchFlag为1;之后搜索次数加1,如果搜索次数大于T1,则结束当前点的哈希搜索;
S43.若所有哈希匹配标识MatchFlag均为0,则根据步骤S3中哈希表二HTable2的散列函数计算当前像素的哈希值H2,并基于哈希表二HTable2进行哈希搜索;
S431.设置参考像素的当前搜索位置curPos(x1,y1)=HTable2[H2];
S432.若curPos(x1,y1)等于无效地址(a,b),结束当前点的哈希搜索,跳到步骤S5进行视差计算;
S433若curPos(x1,y1)不等于无效地址(a,b),则继续判断该地址是否位于以P(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表二HChains2中读取下一个地址nextPos=HChains2[x1][y1],令curPos=nextPos,回到步骤S432;反之,若curPos(x1,y1)位于搜索区域内,设置当前位置的MatchFlag为1,随后搜索次数加1,如果搜索次数大于T2,则结束当前点的哈希搜索。
5.根据权利要求4所述的基于ZSAD-Census的快速立体匹配方法,其特征在于:步骤S5具体按照如下公式计算参考像素位置的匹配代价,挑选出匹配代价最小的参考像素位置作为当前像素的最优匹配位置,若搜索范围内的MatchFlag全部为0,则最优匹配位置设置为无效值(a1,b1),
costFinal=cost1×λ1+cost2×λ2,
其中,i为整数并且0≤i≤(N-1),u、v为整数且cost1中,-Kh/2≤u≤Kh/2,-Kv/2≤v≤Kv/2,cost2中,-Lh/2≤u≤Lh/2,-Lv/2≤v≤Lv/2,λ1、λ2分别为cost1和cost2的权重系数,curCns为当前像素的Census信息,refCns为参考像素的Census信息,HAMMING(a2,b2)表示两个比特数据之间的比特差异,即汉明距离,cost1为根据Census信息得到的第一匹配代价,cost2为根据ZSAD信息得到的第二匹配代价,costFinal为融合第一匹配代价cost1和第二匹配代价cost2的最终匹配代价。
6.根据权利要求5所述的基于ZSAD-Census的快速立体匹配方法,其特征在于:根据步骤S6中得到的最优匹配位置,若最优匹配位置为无效值(a1,b1),则将视差设为无效值(a1,b1),否则,计算最优匹配位置左右两个整像素位置的匹配代价,通过两次曲线拟合的计算方法,计算获取具有亚像素精度的视差值。
7.根据权利要求1所述的基于ZSAD-Census的快速立体匹配方法,其特征在于:步骤S7中,优化方法包括中值滤波法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110862685.0A CN113570646B (zh) | 2021-07-28 | 2021-07-28 | 一种基于ZSAD-Census的快速立体匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110862685.0A CN113570646B (zh) | 2021-07-28 | 2021-07-28 | 一种基于ZSAD-Census的快速立体匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113570646A CN113570646A (zh) | 2021-10-29 |
CN113570646B true CN113570646B (zh) | 2024-03-08 |
Family
ID=78168879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110862685.0A Active CN113570646B (zh) | 2021-07-28 | 2021-07-28 | 一种基于ZSAD-Census的快速立体匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113570646B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120125970A (ko) * | 2011-05-09 | 2012-11-19 | 한국전자통신연구원 | 스테레오 매칭 방법 및 그 장치 |
KR20140049229A (ko) * | 2012-10-17 | 2014-04-25 | 한국전자통신연구원 | 평균 교환 유사도 측정을 이용한 신호 정합 방법 및 장치 |
CN106887018A (zh) * | 2015-12-15 | 2017-06-23 | 株式会社理光 | 立体匹配方法、控制器和系统 |
CN111325778A (zh) * | 2020-01-22 | 2020-06-23 | 天津大学 | 基于窗口互相关信息的改进Census立体匹配算法 |
CN112308897A (zh) * | 2020-10-30 | 2021-02-02 | 江苏大学 | 一种基于邻域信息约束与自适应窗口的立体匹配方法 |
-
2021
- 2021-07-28 CN CN202110862685.0A patent/CN113570646B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120125970A (ko) * | 2011-05-09 | 2012-11-19 | 한국전자통신연구원 | 스테레오 매칭 방법 및 그 장치 |
KR20140049229A (ko) * | 2012-10-17 | 2014-04-25 | 한국전자통신연구원 | 평균 교환 유사도 측정을 이용한 신호 정합 방법 및 장치 |
CN106887018A (zh) * | 2015-12-15 | 2017-06-23 | 株式会社理光 | 立体匹配方法、控制器和系统 |
CN111325778A (zh) * | 2020-01-22 | 2020-06-23 | 天津大学 | 基于窗口互相关信息的改进Census立体匹配算法 |
CN112308897A (zh) * | 2020-10-30 | 2021-02-02 | 江苏大学 | 一种基于邻域信息约束与自适应窗口的立体匹配方法 |
Non-Patent Citations (1)
Title |
---|
图像立体匹配研究进展;肖艳青;刘党辉;孙朋;;测控技术;20090818(第08期);1-10 * |
Also Published As
Publication number | Publication date |
---|---|
CN113570646A (zh) | 2021-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhan et al. | Accurate image-guided stereo matching with efficient matching cost and disparity refinement | |
Wu et al. | Stereo matching with fusing adaptive support weights | |
WO2021062736A1 (zh) | 划分方法、编码器、解码器以及计算机存储介质 | |
CN106780262B (zh) | 一种考虑城市道路网络约束的同位模式发现方法及装置 | |
US20220329833A1 (en) | Nearest neighbor search method, apparatus, device, and storage medium | |
JP2024050705A (ja) | 属性情報の予測方法、エンコーダ、デコーダ及び記憶媒体 | |
CN112734837A (zh) | 图像匹配的方法及装置、电子设备及车辆 | |
CN114862926A (zh) | 融合ad代价和多模局部特征代价的立体匹配方法及系统 | |
CN105760442B (zh) | 基于数据库邻域关系的图像特征增强方法 | |
CN113570646B (zh) | 一种基于ZSAD-Census的快速立体匹配方法 | |
CN111415305A (zh) | 恢复三维场景的方法、计算机可读存储介质及无人机 | |
CN109218184B (zh) | 基于端口和结构信息的路由器归属as识别方法 | |
WO2021197238A1 (zh) | 一种点云属性预测方法、编码方法、解码方法及其设备 | |
Guo et al. | Image saliency detection based on geodesic‐like and boundary contrast maps | |
CN113204607B (zh) | 一种平衡面积、拓扑和形状特征的矢量多边形栅格化方法 | |
CN113592920B (zh) | 一种基于Census和哈希链表的快速立体匹配方法 | |
CN112887909B (zh) | 一种基于Wi-Fi信号的室内定位方法 | |
CN111709846A (zh) | 基于线图的局部社区发现算法 | |
CN117933519B (zh) | 一种路网优化方法和相关装置 | |
CN111709593B (zh) | 一种基于弱空间约束的空间资源优化分配方法 | |
WO2021138785A1 (zh) | 划分方法、编码器、解码器及计算机存储介质 | |
CN117009410A (zh) | 一种基于比特串行的点云数据近邻搜索优化方法 | |
CN118172398A (zh) | 基于双层聚焦-注意力特征交互的点云配准方法及系统 | |
CN118075759A (zh) | 一种基于增量搜索的频谱数据检测方法及应用 | |
Chen et al. | Nonmetric Correction of Lens Distortion Based on Entropy Measure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |