CN113592920B - 一种基于Census和哈希链表的快速立体匹配方法 - Google Patents
一种基于Census和哈希链表的快速立体匹配方法 Download PDFInfo
- Publication number
- CN113592920B CN113592920B CN202110860762.9A CN202110860762A CN113592920B CN 113592920 B CN113592920 B CN 113592920B CN 202110860762 A CN202110860762 A CN 202110860762A CN 113592920 B CN113592920 B CN 113592920B
- Authority
- CN
- China
- Prior art keywords
- hash
- pixel
- matching
- census
- current
- 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 40
- 238000004364 calculation method Methods 0.000 claims abstract description 43
- 238000012805 post-processing Methods 0.000 claims abstract description 5
- 230000009191 jumping Effects 0.000 claims description 5
- 238000001914 filtration Methods 0.000 claims description 4
- 238000005457 optimization Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 20
- 230000008569 process Effects 0.000 description 9
- 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
- 238000010586 diagram Methods 0.000 description 1
- 230000004927 fusion Effects 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/20228—Disparity calculation for image-based rendering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Census和哈希链表的快速立体匹配方法,包括如下步骤:S1.对目标图像和参考图像进行Census计算,并得出对应图像的Census数据;S2.根据参考图像的Census数据和哈希函数建立哈希表;S3.遍历目标图像的每个像素并计算当前像素的哈希值,从哈希表中获得对应的参考像素信息;S4.在步骤S3中得到的与当前像素具有相同哈希值的有效参考像素中,选取具有最小匹配代价的参考像素为最佳匹配像素;S5.计算最佳匹配位置相邻位置的匹配代价;S6.视差后处理。本发明采用多重哈希搜索技术来增加立体匹配的精确度,且仅对搜索区域内满足限制条件的参考像素进行搜索,降低搜索次数。
Description
技术领域
本发明涉及计算机视觉技术领域,具体涉及一种基于Census和哈希链表的快速立体匹配方法。
背景技术
立体匹配是一种从平面图像中提取深度信息的技术,它通过匹配两幅或多幅图像来获得稠密视差图,从而建立场景中的三维深度信息,是计算机视觉领域中的重要研究内容。立体匹配算法主要包括全部匹配算法或半匹配算法、局部匹配算法,而全局匹配算法计算复杂度较高,消耗的内存大,计算速度极慢,不适用于对实时性和功耗要求高的场合。立体匹配算法包括匹配代价计算、代价聚合、视差计算和视差后处理四个步骤,匹配代价计算占用了立体匹配算法85%以上的运行时间,是整个立体匹配算法的核心。
现有技术中,在对当前图像的每一个像素进行匹配搜索时,会对参考图像搜索区域内的每一个点计算其匹配代价,而每一个匹配代价是基于两个邻域信息的进行,因此,匹配代价的计算量较大,非常耗费芯片面积和芯片功耗,实时性较差。授权公告号为CN108257165B的专利公开了一种图像立体匹配方法、双目视觉设备,通过融合了NCC算法对拍摄到的参考图像和目标图像进行立体匹配代价计算,来确定参考像素点与各个待匹配像素点的匹配代价值,并将滑动窗口内像素值与该窗口中心像素值差异大于一定阈值的像素点舍弃,不参与基于NCC算法的立体匹配代价计算,再根据匹配代价曲线判断筛选出的匹配点是否稳定,采用中值滤波法去除不稳定的匹配点得到视差图,虽通过阈值限定减少了满足条件的像素点,但满足的仍有近二分之一,匹配代价计算量仍较大,不满足实时性和功耗低的要求。
发明内容
为解决上述问题,本发明提出了一种基于Census和哈希链表的快速立体匹配方法,采用多重哈希搜索技术来增加立体匹配的精确度,且仅对搜索区域内满足限制条件的参考像素进行搜索,极大降低搜索次数。
本发明采用的技术方案是:
本申请提出一种基于Census和哈希链表的快速立体匹配方法,包括如下步骤:
S1.对目标图像和参考图像进行Census计算,并得出对应图像的Census数据;
步骤S1中,具体包括如下步骤:
S11.初始化立体匹配代价计算的邻域窗口宽度Wh、高度Wv和Census信息的矩形窗口c*d,并将哈希查找表中的所有地址的数据全部设置为无效地址(a,b),设立参考图像和目标图像的当前像素分别为P1(x,y)和P0(x0,y0),设立哈希查找表一HTable的最大搜索次数为MaxNum,哈希查找表二HTable2的最大搜索次数为MaxNum2;
S12.输入参考图像和目标图像,分别遍历参考图像和目标图像的每一个像素,并分别以参考图像中的当前像素P1(x,y)、目标图像中的当前像素P0(x0,y0)为中心,分别与相邻的矩形窗口内的像素按照从内圈到外圈的顺序逐一进行比较,若当前像素的灰度值大于相邻像素的灰度值,则设置比较结果为1,否则为0;
S13.将步骤S12中的比较结果按位拼接,形成一个二进制数串,即为当前像素的Census数据。
S2.根据参考图像的Census数据和哈希函数建立哈希表,所述哈希表包括哈希查找表和链表,所述链表用于解决哈希冲突,且具有相同哈希数值的项被链接在同一个链表中,所述链表的首项位于哈希查找表中;
步骤S2中,具体包括如下步骤:
S21.获取参考像素的Census数据,计算散列函数值一并将其作为哈希查找表一的地址H,散列函数一,即地址H的计算公式如下:
其中,e为整数且0≤e≤7,g为整数且1<g≤4,k为整数且k≥1,l为整数且8≤l≤(c×d-2);
S22.参考图像中当前像素为P1(x,y),将哈希查找表一HTable中地址H存储的数据保存至链表一HChains中,HChains[x][y]=HTable[H];
S23.更新哈希查找表一HTable中地址H存储的数据:HTable[H]=P1(x,y);
S24.获取参考像素的Census数据,计算散列函数值二并将其作为哈希查找表二的地址H2,散列函数二,即地址H2的计算公式如下:
其中,l为整数且0≤l≤(c×d-2);N为上界,x为自变量;
S25.参考图像中当前像素为P1(x,y),将哈希查找表二HTable2中地址H2的存储数据保存至链表二HChains2中,即HChains2[x][y]=HTable2[H2];
S26.更新哈希查找表二HTable2中地址H2存储的数据:HTable2[H2]=P1(x,y)。
S3.根据目标图像的Census数据和哈希函数,遍历目标图像的每个像素并计算当前像素的哈希值,所述当前像素的哈希值作为哈希查找表的索引,且用于从哈希查找表及链表中查找参考图像中与当前像素具有相同哈希值的参考像素;
S4.在步骤S3中得到的与当前像素具有相同哈希值的参考像素中,判断参考像素的位置是否位于搜索区域内,若在搜索区域内,则计算该参考像素位置的匹配代价,若不在搜索区域,则跳过该参考像素;其中:所述匹配代价为以该参考像素邻域的Census数据和当前像素邻域的Census数据为输入,计算各对应位置Census数据的汉明距离的累加和,其中,具有最小匹配代价的参考像素为最佳匹配像素,其所在位置和当前像素位置的水平差距为整像素精度的初始视差值;
步骤S4中,输入目标图像,遍历图像中像素,在参考图像中以当前像素P0(x0,y0)为中心的M*N搜索区域内进行匹配搜索,其中,搜索区域左上角像素的坐标Pleft_top为(x0-M/2,y0-(N-1)/2),右下角像素的坐标Pright_bottom为(x0+(M-1)/2,y0+(N-1)/2),具体包括如下步骤:
S41.输入当前像素及邻域的像素,根据步骤S11至S13计算Census数据,设当前像素的搜索次数为0,设立哈希匹配标识MatchFlag[i][j]为0,其中,i、j均为整数且满足0≤i≤M-1,0≤j≤N-1;设立哈希表一的最大搜索次数为MaxNum,哈希表二的最大搜索次数为MaxNum2;
S42.根据步骤S21中的散列函数计算当前像素的哈希值H,并在哈希查找表一中进行哈希搜索;
步骤S42具体包括如下步骤:
S421.设参考像素的当前搜索位置curPos=HTable[H];
S422.若curPos(xcur,ycur)等于无效地址(a,b),结束当前点的哈希搜索,跳至步骤S43;
S423.若curPos(xcur,ycur)不等于无效地址(a,b),则继续判断该地址是否位于P0(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表一HChains中读取下一个地址nextPos=HChains[xcur][ycur],令curPos=nextPos,执行步骤S422;若curPos(xcur,ycur)位于搜索区域内,设当前位置的哈希匹配标识MatchFlag为1,搜索次数加1;若搜索次数大于MaxNum,则结束当前像素的哈希搜索。
S43.若所有哈希匹配标识MatchFlag均为0,则在哈希查找表二HTable2中进行哈希搜索;
步骤S43具体包括如下步骤:
S431.设参考像素的当前搜索位置curPos=HTable2[H2];
S432.若curPos(xcur,ycur)等于无效地址(a,b),结束当前搜索位置的哈希搜索,跳到步骤S44进行视差计算;
S433.若curPos(xcur,ycur)不等于无效地址(a,b),则继续判断该地址是否位于P0(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表二HChains2中读取下一个地址nextPos=HChains2[xcur][ycur],令curPos=nextPos,执行步骤S432;若curPos(xcur,ycur)位于搜索区域内,设当前搜索位置的哈希匹配标识MatchFlag为1,并将搜索次数加1;若搜索次数大于MaxNum2,则结束当前搜索位置的哈希搜索。
S44.根据步骤S41至步骤S43得到的匹配信息,对搜索区域内哈希匹配标识MatchFlag为1的参考像素位置,进行匹配代价计算,并选取匹配代价最小的参考像素位置作为当前像素的最优匹配位置;若搜索区域内的哈希匹配标识MatchFlag均为0,则最优匹配位置为无效值(a1,b1),匹配代价计算公式如下:
其中,cur_Census为当前像素的Census数据,ref_Census为参考像素的Census数据,HAMMING()表示两个Census数据之间的汉明距离,通过按位进行异或运算的方式进行计算,u、v分别为当前像素邻域的范围值且满足(Wh/2)≥u≥(-Wh/2),(Wv/2)≥v≥(-Wv/2)。
S5.根据初始视差值,计算最佳匹配位置相邻位置的匹配代价,根据最佳匹配位置以及左右相邻位置的匹配代价,进行插值计算,获取具有亚像素精度的增强视差值;
步骤S5中,根据步骤S4得到的最优匹配位置,若最佳匹配位置等于无效值(a1,b1),则设视差值为无效值(a1,b1);否则,计算最优匹配位置左右两个整像素位置的匹配代价,并通过二次曲线拟合,获得具有亚像素精度的视差值。
S6.根据步骤S5中的视差值进行视差后处理,并对视差进行优化。优化方法包括中值滤波法。
本发明的有益效果是:
1.在立体匹配算法的匹配搜索过程采用哈希搜索算法,将搜索过程从搜索区域内的逐点全搜索转化为仅仅对搜索区域内与当前像素具有相同哈希值的参考像素的搜索,极大的降低了搜索次数;
2.在立体匹配搜索过程中,使用像素邻域的Census数据来构建多个哈希生成函数,利用不同的哈希生成函数构建不同的哈希表,通过多重哈希搜索的技术来增加立体匹配的精确度;
3.将参考图像搜索区域中与将参考图像搜索区域中与当前像素具有相同哈希数值的像素位置作为候选位置,仅仅针对候选位置进行匹配代价计算;而且对于哈希匹配数进行了限制,匹配代价计算量大幅减少;且在芯片实现过程中,立体匹配搜索过程中可以只保留1个匹配代价计算的逻辑电路,无需将整个搜索区域内每个像素的匹配代价保持在芯片内部的寄存器中,大幅降低立体匹配算法的芯片实现面积的同时,也大幅降低了芯片实现所需的功耗。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明的哈希查找表建立示意图;
图2是本发明的哈希搜索算法流程图。
具体实施方式
如图2所示,本申请提出一种基于Census和哈希链表的快速立体匹配方法,包括如下步骤:
如图2所示,S1.对目标图像和参考图像进行Census计算,并得出对应图像的Census数据。
如图2所示,步骤S1中,具体包括如下步骤:
S11.初始化立体匹配代价计算的邻域窗口宽度Wh为15、高度Wv为15和Census信息的矩形窗口5*5,并将哈希查找表中的所有地址的数据全部设置为无效地址(-1,-1),设立参考图像和目标图像的当前像素分别为P1(x,y)和P0(x0,y0),设立哈希查找表一HTable的最大搜索次数为8,哈希查找表二HTable2的最大搜索次数为32。
S12.输入参考图像和目标图像,分别遍历参考图像和目标图像的每一个像素,并分别以参考图像中的当前像素P1(x,y)、目标图像中的当前像素P0(x0,y0)为中心,分别与相邻的矩形窗口内的像素按照从内圈到外圈的顺序逐一进行比较,若当前像素的灰度值大于相邻像素的灰度值,则设置比较结果为1,否则为0。Census数据计算中各位的计算顺序如下表所示。
- | - | 0 | 1 | 2 | |
- | 2 | 2 | 8 | 9 | 1 |
- | 2 | 7 | 0 | 1 | 1 |
0 | 2 | 6 | P | 2 | 1 |
1 | 1 | 5 | 4 | 3 | 1 |
2 | 1 | 1 | 1 | 1 | 1 |
S13.将步骤S12中的比较结果按位拼接,形成一个24bit的二进制数串,即为当前像素的Census数据。
如图1所示,S2.根据参考图像的Census数据和哈希函数建立哈希表,哈希表包括哈希查找表和链表,链表用于解决哈希冲突,且具有相同哈希数值的项被链接在同一个链表中,链表的首项位于哈希查找表中。
如图1所示,步骤S2中,具体包括如下步骤:
S21.获取参考像素的Census数据,计算散列函数值一并将其作为哈希查找表一的地址H,散列函数一,即地址H的计算公式如下:
其中,l为整数且8≤l≤23。
S22.参考图像中当前像素为P1(x,y),将哈希查找表一HTable中地址H存储的数据保存至链表一HChains中,HChains[x][y]=HTable[H]。
S23.更新哈希查找表一HTable中地址H存储的数据:HTable[H]=P1(x,y)。
S24.获取参考像素的Census数据,计算散列函数值二并将其作为哈希查找表二HTable2的地址H2,散列函数二,即地址H2的计算公式如下:
其中,l为整数且0≤l≤23,N为上界,x为自变量。
S25.参考图像中当前像素为P1(x,y),将哈希查找表二HTable2中地址H2的存储数据保存至链表二HChains2中,即HChains2[x][y]=HTable2[H2]。
S26.更新哈希查找表二HTable2中地址H2存储的数据:HTable2[H2]=P1(x,y)。
如图1所示,S3.根据目标图像的Census数据和哈希函数,遍历目标图像的每个像素并计算当前像素的哈希值,当前像素的哈希值作为哈希查找表的索引,且用于从哈希查找表及链表中查找参考图像中与当前像素具有相同哈希值的参考像素。
如图2所示,S4.在步骤S3中得到的与当前像素具有相同哈希值的参考像素中,判断参考像素的位置是否位于搜索区域内,若在搜索区域内,则计算该参考像素位置的匹配代价,若不在搜索区域,则跳过该参考像素;其中:匹配代价为以该参考像素邻域的Census数据和当前像素邻域的Census数据为输入,计算各对应位置Census数据的汉明距离的累加和,其中,具有最小匹配代价的参考像素为最佳匹配像素,其所在位置和当前像素位置的水平差距为整像素精度的初始视差值。
如图2所示,步骤S4中,输入目标图像,遍历图像中像素,在参考图像中以当前像素P0(x0,y0)为中心的256*9的搜索区域内进行匹配搜索,其中,搜索区域左上角像素的坐标Pleft_top为(x0-128,y0-4),右下角像素的坐标Pright_bottom为(x0+127,y0+4)。进行立体匹配搜索时,采用多重哈希表进行匹配搜索的方法,首先进行哈希查找表一HTable的搜索,将参考图像对应搜索区域内与当前像素具有哈希值的匹配项作为候选项,仅仅在候选项中立体匹配代价的计算,并从中选取匹配代价最小的作为最优匹配项;若哈希查找表一HTable无法找到匹配项,则继续在哈希查找表二HTable2中进行搜索;若哈希查找表一HTable和哈希查找表二HTable2中均无法找到匹配项,则直接跳过当前位置的立体匹配搜索,设置当前位置的视差值为无效值。
如图2所示,具体包括如下步骤:
S41.输入当前像素及邻域的像素,根据步骤S11至S13计算Census数据,设当前像素的搜索次数为0,设立哈希匹配标识MatchFlag[i][j]为0,其中,i、j均为整数且满足0≤i≤255,0≤j≤8。
S42.根据步骤S21中的散列函数计算当前像素的哈希值H,并在哈希查找表一HTable中进行哈希搜索。
如图2所示,步骤S42具体包括如下步骤:
S421.设参考像素的当前搜索位置curPos=HTable[H]。
S422.若curPos(xcur,ycur)等于无效地址(-1,-1),结束当前点的哈希搜索,跳至步骤S43。
S423.若curPos(xcur,ycur)不等于无效地址(-1,-1),则继续判断该地址是否位于P0(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表一HChains中读取下一个地址nextPos=HChains[xcur][ycur],令curPos=nextPos,执行步骤S422;若curPos(xcur,ycur)位于搜索区域内,设当前位置的哈希匹配标识MatchFlag为1,搜索次数加1;若搜索次数大于8,则结束当前像素的哈希搜索。
S43.若所有哈希匹配标识MatchFlag均为0,则在哈希查找表二HTable2中进行哈希搜索。
如图2所示,步骤S43具体包括如下步骤:
S431.设参考像素的当前搜索位置curPos=HTable2[H2]。
S432.若curPos(xcur,ycur)等于无效地址(-1,-1),结束当前搜索位置的哈希搜索,跳到步骤S44进行视差计算。
S433.若curPos(xcur,ycur)不等于无效地址(-1,-1),则继续判断该地址是否位于P0(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表二HChains2中读取下一个地址nextPos=HChains2[xcur][ycur],令curPos=nextPos,执行步骤S432;若curPos(xcur,ycur)位于搜索区域内,设当前搜索位置的哈希匹配标识MatchFlag为1,并将搜索次数加1;若搜索次数大于32,则结束当前搜索位置的哈希搜索。
S44.根据步骤S41至步骤S43得到的匹配信息,对搜索区域内哈希匹配标识MatchFlag为1的参考像素位置,进行匹配代价计算,并选取匹配代价最小的参考像素位置作为当前像素的最优匹配位置;若搜索区域内的哈希匹配标识MatchFlag均为0,则最优匹配位置为无效值(-32768,-32768),匹配代价计算公式如下:
其中,cur_Census为当前像素的Census数据,ref_Census为参考像素的Census数据,HAMMING()表示两个Census数据之间的汉明距离,通过按位进行异或运算的方式进行计算,u、v分别为当前像素邻域的范围值且满足7≥u≥-7,7≥v≥-7。
一般情况下,搜索区域一般根据图像大小进行自定义,图像分辨率越大,搜索区域也就越大。对于1280×1024的图像而言,通常选取256×9,每个点所需要进行的匹配代价计算量为2304。本申请中,将参考图像搜索区域中与当前像素具有相同哈希数值的像素位置作为候选位置,仅仅针对候选位置进行匹配代价计算;而且对于哈希匹配数进行了限制,一级哈希表最多为8,二级哈希表最多32;因此,本申请中在对每一个像素进行立体匹配时,所需要进行的匹配代价计算量最多为32,平均计算量小于等于16,匹配代价计算量大幅度减少。
若要达到相同的匹配搜索速度,芯片中至少需要同时处理一行搜索范围的匹配代价计算的逻辑电路。由于匹配代价的计算涉及到相邻15×15邻域的Census数据,左右相邻像素位置的匹配代价计算过程中,右边像素的匹配代价可以大部分复用其左边像素的计算结果。本申请仅仅针对参考搜索区域中具有相同哈希数值的参考像素位置进行匹配代价计算,在芯片实现过程中,立体匹配搜索过程中可以只保留1个匹配代价计算的逻辑电路,无需将整个搜索区域内每个像素的匹配代价保持在芯片内部的寄存器中;在进行匹配代价计算和更新时,与现有方法相比,所涉及到的寄存器很少,约为现有方法的百分之一,因此寄存器数值翻转带来的功耗也很小。在大幅降低立体匹配算法的芯片实现面积的同时,也大幅降低了芯片实现所需的功耗。
如图2所示,S5.根据初始视差值,计算最佳匹配位置相邻位置的匹配代价,根据最佳匹配位置以及左右相邻位置的匹配代价,进行插值计算,获取具有亚像素精度的增强视差值。
步骤S5中,根据步骤S4得到的最优匹配位置,若最佳匹配位置等于无效值(-32768,-32768),则设视差值为无效值(-32768,-32768);否则,计算最优匹配位置左右两个整像素位置的匹配代价,并通过二次曲线拟合,获得具有亚像素精度的视差值。
S6.根据步骤S5中的视差值进行视差后处理,并对视差进行优化,优化方法包括中值滤波法。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于Census和哈希链表的快速立体匹配方法,其特征在于:包括如下步骤:
S1.对目标图像和参考图像进行Census计算,并得出对应图像的Census数据;
S2.根据参考图像的Census数据和哈希函数建立哈希表,所述哈希表包括哈希查找表和链表,所述链表用于解决哈希冲突,且具有相同哈希数值的项被链接在同一个链表中,所述链表的首项位于哈希查找表中;具体包括如下步骤:
S21.获取参考像素的Census数据,计算散列函数值一并将其作为哈希查找表一的地址H,散列函数一,即地址H的计算公式如下:
,其中,e为整数且/>,g为整数且/>,k为整数且/>,c和d分别为Census信息的矩形窗口的宽和高,l为整数且;
S22.参考图像中当前像素为P1(x,y),将哈希查找表一HTable中地址H存储的数据保存至链表一HChains中,HChains[x][y] = HTable[H];
S23.更新哈希查找表一HTable中地址H存储的数据:HTable[H] = P1(x,y);
S24.获取参考像素的Census数据,计算散列函数值二并将其作为哈希查找表二的地址H2,散列函数二,即地址H2的计算公式如下:
,
,
其中,p为整数且,q为整数且/>,r为整数且/>,l为整数且;N为上界,x为自变量;
S25.参考图像中当前像素为P1(x,y),将哈希查找表二HTable2中地址H2的存储数据保存至链表二HChains2中,即HChains2[x][y] = HTable2[H2];
S26.更新哈希查找表二HTable2中地址H2存储的数据:HTable2[H2] = P1(x,y);
S3.根据目标图像的Census数据和哈希函数,遍历目标图像的每个像素并计算当前像素的哈希值,所述当前像素的哈希值作为哈希查找表的索引,且用于从哈希查找表及链表中查找参考图像中与当前像素具有相同哈希值的参考像素;
S4.在步骤S3中得到的与当前像素具有相同哈希值的参考像素中,判断参考像素的位置是否位于搜索区域内,若在搜索区域内,则计算该参考像素位置的匹配代价,若不在搜索区域,则跳过该参考像素;其中:所述匹配代价为以该参考像素邻域的Census数据和当前像素邻域的Census数据为输入,计算各对应位置Census数据的汉明距离的累加和,其中,具有最小匹配代价的参考像素为最佳匹配像素,其所在位置和当前像素位置的水平差距为整像素精度的初始视差值;
S5.根据初始视差值,计算最佳匹配位置相邻位置的匹配代价,根据最佳匹配位置以及左右相邻位置的匹配代价,进行插值计算,获取具有亚像素精度的增强视差值;
S6.根据步骤S5中的增强视差值进行视差后处理,并对视差进行优化。
2.根据权利要求1所述的基于Census和哈希链表的快速立体匹配方法,其特征在于:步骤S1中,具体包括如下步骤:
S11.初始化立体匹配代价计算的邻域窗口宽度Wh、高度Wv和Census信息的矩形窗口c*d,并将哈希查找表中的所有地址的数据全部设置为无效地址(a,b),设立参考图像和目标图像的当前像素分别为P1(x,y)和P0(x0,y0),设立哈希查找表一HTable的最大搜索次数为MaxNum,哈希查找表二HTable2的最大搜索次数为MaxNum2;
S12.输入参考图像和目标图像,分别遍历参考图像和目标图像的每一个像素,并分别以参考图像中的当前像素P1(x,y)、目标图像中的当前像素P0(x0,y0)为中心,分别与相邻的矩形窗口内的像素按照从内圈到外圈的顺序逐一进行比较,若当前像素的灰度值大于相邻像素的灰度值,则设置比较结果为1,否则为0;
S13.将步骤S12中的比较结果按位拼接,形成一个二进制数串,即为当前像素的Census数据。
3. 根据权利要求2所述的基于Census和哈希链表的快速立体匹配方法,其特征在于:步骤S4中,输入目标图像,遍历图像中像素,在参考图像中以当前像素P0(x0,y0)为中心的M * N 搜索区域内进行匹配搜索,其中,搜索区域左上角像素的坐标Pleft_top为 (x0 -M/2,y0 - (N-1)/2),右下角像素的坐标Pright_bottom为(x0 +(M-1)/2,y0 + (N-1)/2),具体包括如下步骤:
S41.输入当前像素及邻域的像素,根据步骤S11至S13计算Census数据,设当前像素的搜索次数为0,设立哈希匹配标识MatchFlag[i][j]为0,其中,i、j均为整数且满足0≤i≤M-1,0≤j≤N-1;
S42.根据步骤S21中的散列函数计算当前像素的哈希值H,并在哈希查找表一中进行哈希搜索;
S43.若所有哈希匹配标识MatchFlag均为0,则在哈希查找表二HTable2中进行哈希搜索;
S44.根据步骤S41至步骤S43得到的匹配信息,对搜索区域内哈希匹配标识MatchFlag为1的参考像素位置,进行匹配代价计算,并选取匹配代价最小的参考像素位置作为当前像素的最优匹配位置;若搜索区域内的哈希匹配标识MatchFlag均为0,则最优匹配位置为无效值(a1,b1),匹配代价计算公式如下:
,
其中,cur_Census为当前像素的Census数据,ref_Census为参考像素的Census数据,HAMMING()表示两个Census数据之间的汉明距离,通过按位进行异或运算的方式进行计算,u、v分别为当前像素邻域的范围值且满足(Wh/2)≥u≥(-Wh/2),(Wv/2)≥v≥(-Wv/2)。
4.根据权利要求3所述的基于Census和哈希链表的快速立体匹配方法,其特征在于:步骤S42具体包括如下步骤:
S421.设参考像素的当前搜索位置curPos = HTable[H];
S422.若curPos(xcur,ycur)等于无效地址(a,b),结束当前点的哈希搜索,跳至步骤S43;
S423.若curPos(xcur,ycur)不等于无效地址(a,b),则继续判断该地址是否位于P0(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表一HChains中读取下一个地址nextPos = HChains[xcur][ycur],令curPos=nextPos,执行步骤S422;若curPos(xcur,ycur)位于搜索区域内,设当前位置的哈希匹配标识MatchFlag为1,搜索次数加1;若搜索次数大于MaxNum,则结束当前像素的哈希搜索。
5.根据权利要求4所述的基于Census和哈希链表的快速立体匹配方法,其特征在于:步骤S43具体包括如下步骤:
S431.设参考像素的当前搜索位置curPos = HTable2[H2];
S432.若curPos(xcur,ycur)等于无效地址(a,b),结束当前搜索位置的哈希搜索,跳到步骤S44进行视差计算;
S433.若curPos(xcur,ycur)不等于无效地址(a,b),则继续判断该地址是否位于P0(x0,y0)为中心的搜索区域内,若不在搜索区域内,则从链表二HChains2中读取下一个地址nextPos = HChains2[xcur][ycur],令curPos = nextPos,执行步骤S432;若curPos(xcur,ycur)位于搜索区域内,设当前搜索位置的哈希匹配标识MatchFlag为1,并将搜索次数加1;若搜索次数大于MaxNum2,则结束当前搜索位置的哈希搜索。
6.根据权利要求3所述的基于Census和哈希链表的快速立体匹配方法,其特征在于:步骤S5中,根据步骤S4得到的最优匹配位置,若最佳匹配位置等于无效值(a1,b1),则设视差值为无效值(a1,b1);否则,计算最优匹配位置左右两个整像素位置的匹配代价,并通过二次曲线拟合,获得具有亚像素精度的视差值。
7.根据权利要求1所述的基于Census和哈希链表的快速立体匹配方法,其特征在于:步骤S6中,优化方法包括中值滤波法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110860762.9A CN113592920B (zh) | 2021-07-28 | 2021-07-28 | 一种基于Census和哈希链表的快速立体匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110860762.9A CN113592920B (zh) | 2021-07-28 | 2021-07-28 | 一种基于Census和哈希链表的快速立体匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113592920A CN113592920A (zh) | 2021-11-02 |
CN113592920B true CN113592920B (zh) | 2024-05-10 |
Family
ID=78251482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110860762.9A Active CN113592920B (zh) | 2021-07-28 | 2021-07-28 | 一种基于Census和哈希链表的快速立体匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113592920B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008119269A1 (fr) * | 2007-04-02 | 2008-10-09 | Huawei Technologies Co., Ltd. | Procédé et dispositif de moteur de stockage et de consultation d'informations |
CN109245879A (zh) * | 2018-09-06 | 2019-01-18 | 杭州光芯科技有限公司 | 一种存储和查找ip地址映射关系的双哈希算法 |
-
2021
- 2021-07-28 CN CN202110860762.9A patent/CN113592920B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008119269A1 (fr) * | 2007-04-02 | 2008-10-09 | Huawei Technologies Co., Ltd. | Procédé et dispositif de moteur de stockage et de consultation d'informations |
CN109245879A (zh) * | 2018-09-06 | 2019-01-18 | 杭州光芯科技有限公司 | 一种存储和查找ip地址映射关系的双哈希算法 |
Non-Patent Citations (1)
Title |
---|
"基于Census变换的立体匹配算法研究与实现";赵劲松;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20210115;正文3.1节、4.3节,图2.2、图3.2 * |
Also Published As
Publication number | Publication date |
---|---|
CN113592920A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111862162B (zh) | 回环检测方法及系统、可读存储介质、电子设备 | |
US7876954B2 (en) | Method and device for generating a disparity map from stereo images and stereo matching method and device therefor | |
US11455712B2 (en) | Method and apparatus for enhancing stereo vision | |
US10366304B2 (en) | Localization and mapping method | |
CN108076338B (zh) | 图像视觉处理方法、装置及设备 | |
US11704840B2 (en) | Attribute information prediction method, encoder, decoder and storage medium | |
CN112734837B (zh) | 图像匹配的方法及装置、电子设备及车辆 | |
KR100943635B1 (ko) | 디지털카메라의 이미지를 이용한 디스패리티 맵 생성 장치 및 방법 | |
CN114283089B (zh) | 基于跳跃加速的深度恢复方法、电子设备及存储介质 | |
CN111739071A (zh) | 基于初始值的快速迭代配准方法、介质、终端和装置 | |
CN113592920B (zh) | 一种基于Census和哈希链表的快速立体匹配方法 | |
CN112509025B (zh) | 一种基于三维欧氏距离的岩石空间结构距离图的计算方法 | |
CN113965697A (zh) | 基于连续帧信息的视差成像方法、电子设备及存储介质 | |
JP2003016427A (ja) | ステレオ画像の視差推定方法 | |
US20220035737A1 (en) | Storage apparatus, high dimensional gaussian filtering circuit, stereo depth calculation circuit, and information processing apparatus | |
CN113204607B (zh) | 一种平衡面积、拓扑和形状特征的矢量多边形栅格化方法 | |
CN113570646B (zh) | 一种基于ZSAD-Census的快速立体匹配方法 | |
CN113473153B (zh) | 一种点云属性预测方法、编码方法、解码方法及其设备 | |
CN112906558B (zh) | 图像特征的提取方法、装置、计算机设备及存储介质 | |
CN111126395B (zh) | R-cnn网络中选择性搜索算法的优化方法、存储介质 | |
KR101220003B1 (ko) | 시차 맵 생성 방법 | |
CN111126571B (zh) | 基于dht网络的r-cnn网络优化方法、存储介质 | |
Li et al. | Compare stereo patches using atrous convolutional neural networks | |
CN110910438A (zh) | 一种超高分辨率双目图像的高速立体匹配算法 | |
CN117115071A (zh) | 视差图像的确定方法、装置、集成电路芯片和计算机设备 |
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 |