基于序列特征重复度的条纹码字匹配方法与流程

文档序号:16250661发布日期:2018-12-12 00:00阅读:252来源:国知局
基于序列特征重复度的条纹码字匹配方法与流程

本发明涉及一种基于序列特征重复度的条纹码字匹配方法,属于计算机视觉技术领域。

背景技术

在基于彩色结构光条纹三维重建技术中,其中调制的彩色条纹解码过程中涉及到彩色条纹码字检测、识别和匹配这三个关键问题,其中对投影仪投射的原始编码彩色条纹码字与相机采集的调制条纹码字之间的匹配的准确性,直接决定了三维重建的精准性。而条纹码字匹配的数理模型即是对序列进行优化匹配的问题,在优化匹配过程中,通常会假设全局一致性或者局部一致性,而全局一致性主要是对序列中的码值排列顺序没有发生变化,这类方法中比较经典的是动态规划方法,以及水晶生长方法。而对应的局部一致性则是在一定局部序列范围内,序列码值不发生改变。

对应彩色结构光条纹的码字匹配问题,即是建立投影仪投射的原始的编码彩色条纹的码字特征与相机采集的条纹码字之间的对应关系。为此,k.l.boyer等人提出了一种水晶生长方法的彩色条纹匹配方法,该方法假设相机采集的调制彩色条纹码字在待测物体表面的局部区域是不发生变化的,也即是对应的调制条纹码字在整个序列条纹码字中的不发生改变的,为此其首先在相机采集的整个调制彩色条纹的码字序列中找到具有局部不变性的序列,称之为核码字序列,接着通过核码字序列对其他序列码字进行匹配,从而实现对调制彩色条纹码字与原始编码的彩色条纹码字进行匹配。然而由于待测物体在非连续的位置处极易导致条纹码字交叉匹配错误,为此zhang等人提出了一种动态规划的条纹码字匹配方法,其基本思想是将投影仪投射的原始彩色条纹码字序列和相机采集的调制彩色条纹码字序列作为两条扫描线,进行多次动态规划匹配,通过设定一个阈值来限定动态规划的截止条件。上述方法虽然能够对调制条纹码字进行匹配,然而存在着待测物体交叉匹配时,极易出现匹配错误问题,以及动态规划方法存在着时间复杂度高的问题。



技术实现要素:

为了能够快速高精度的对调制的彩色条纹码字与原始投影条纹码字进行匹配,本发明的目的提供了一种基于序列特征重复度的条纹码字匹配方法,其首先利用计算机生成一幅彩色编码条纹结构光图案,并通过投影仪投射该图案到待测物体表面上,并利用相机对调制的条纹图案进行采集,对采集的条纹图案进行序列特征梯度值进行求解,并查找具有最小的序列重复度的码字特征值,作为匹配的核码字,利用核码字以及序列重复度进行匹配条纹码字。

本发明的技术方案是这样实现的:一种基于序列特征重复度的条纹码字匹配方法,其特征在于:相机和投影仪固定在三脚支架上,并通过电缆将相机与计算机进行连接,通过电缆将投影仪与计算机进行连接;

具体的步骤如下:

步骤1、通过计算机生成一幅7元3级的彩色结构光条纹编码图像,其中编码图像选择的颜色码信息值分别选择为:红色、绿色、蓝色、青色、品红色、黄色和白色,其对应的r颜色通道信息值、g颜色通道信息值、b颜色通道信息值,分别为:(255,0,0)、(0,255,0)、(0,0,255)、(0,255,255)、(255,0,255)、(255,255,0)和(255,255,255),同时为了便于进行序列码字匹配,设定各个颜色码对应各自的颜色码字序号sn,分别为1、2、3、4、5、6和7;利用deburijng的伪随机特性和颜色码序号生成一幅7元3级的编码彩色结构光条纹图像pro_img,其中编码彩色结构光条纹图像pro_img的背景色为黑色信息值,彩色条纹的宽度值设定为7个像素,相邻条纹之间的间隔为3个像素,图像分辨率大小为apixel×bpixel。

步骤2、将相机和投影仪固定在三脚支架上,调整投影仪,使得投影仪投射的编码彩色结构光条纹图像pro_img能够呈现在待测物体上,同时调整相机的位姿,使得待测物体上的调制图像画面在相机的成像视野范围内,然后固定投影仪和相机的位姿不变,并用相机采集待测物体上的调制彩色结构光条纹图像为cam_img。

步骤3、将相机采集的彩色结构光条纹图像cam_img中的所有像素点,按照从上到下,从左到右的顺序存储在矩阵cimg_marry中,矩阵大小为n行,m列,其中对于第i行,第j列对应的矩阵值cimg_marry(i,j)=(cr(i,j),cg(i,j),cb(i,j)),i=1,2…n;j=1,2…m。

步骤4、利用公式

diffr1(i,j)=cr(i+1,j)-cr(i-1,j)+cr(i+2,j)-cr(i-2,j);

diffg1(i,j)=cg(i+1,j)-cg(i-1,j)+cg(i+2,j)-cg(i-2,j);

diffb1(i,j)=cb(i+1,j)-cb(i-1,j)+cb(i+2,j)-cb(i-2,j);

得到图像cam_img在r颜色通道的一阶滤波差分矩阵diffr1,图像cam_img在g颜色通道的一阶滤波差分矩阵diffg1,图像cam_img在b颜色通道的一阶滤波差分矩阵diffb1,其中i=3,4,…n-2;j=1,2…m;

接着利用公式

g1(i,j)=diffr1(i,j)×diffr1(i,j)+diffg1(i,j)×diffg1(i,j)+diffb1(i,j)×diffb1(i,j)得到图像cam_img在r颜色通道、g颜色通道和b颜色通道的二阶滤波差分矩阵g1;

利用公式

diffg1(i,j)=g1(i,j)(i+1,j)-g1(i,j)(i-1,j)+g1(i,j)(i+2,j)-g1(i,j)(i-2,j);

得到图像cam_img的二阶滤波差分矩阵g1对应的一阶滤波差分矩阵diffg1;

diffg2(i,j)=diffg1(i,j)(i+1,j)-diffg1(i,j)(i-1,j)

+diffg1(i,j)(i+2,j)-diffg1(i,j)(i-2,j);

得到图像cam_img的二阶滤波差分矩阵g1对应的二阶滤波差分矩阵diffg2;

步骤5、为了保存相机采集的调制彩色条纹的中心码字对应的序列,构建矩阵cam_cmarry(i,j),i=1,2…n;j=1,2,…m,当满足

(diffg1(i-1,j)>0&&diffg1(i+1,j)<0)||(diffg1(i-1,j)<0&&diffg1(i+1,j)>0)&&(diffg2(i,j)<0)

时,寻找cimg_marry(i,j)中颜色信息值对应的颜色码字序号sn,矩阵cam_cmarry(i,j)=sn,否则矩阵cam_cmarry(i,j)=0。

步骤6、对投影仪投射的7元3级的编码彩色结构光条纹图像pro_img,按照步骤3至步骤5执行,并将检测到的条纹中心对应的颜色码值序列保存在矩阵pro_cmarry(a,b),a=1,2…a,b=1,2…b。

步骤7、对矩阵pro_cmarry和矩阵cam_cmarry按照行进行扫描匹配,也即是将矩阵pro_cmarry的第k行和矩阵cam_cmarry的第k行中所有非零元素值,按照原始列顺序构建两个码字序列特征,分别为:pseqk=(ps1,ps2,ps3,...,psh)和cseqk=(cs1,cs2,cs3,...,csz),pseq和cseq代表了条纹颜色码对应的特征信息值。

步骤8、利用公式

pglpi=pspi-pspi-1,cglci=csci-csci-1

pgrpj=pspj+1-pspj,cgrcj=cscj+1-cscj

其中pspi和pspj为码字序列特征pseq和cseq中的序列元素值,而pgl和pgr为条纹颜色码对应的特征梯度值,而序号pi=2,3…h;ci=2,3…z;pj=1,2…h-1;cj=1,2…z-1;构建两个码字特征序列特征分别为:左梯度值序列pgralk=(pgl1,pgl2,pgl3,...,pglh-1),cgralk=(cgl1,cgl2,cgl3,...,cglz-1)和右梯度值序列pgrark=(pgr1,pgr2,pgr3,...,pgrh-1),cgrark=(cgr1,cgr2,cgr3,...,cgrz-1)。

步骤9、查找上述四个梯度值序列中的所有满足pglx=cgly和pgrx=cgry的梯度码,则梯度码对应在矩阵pro_cmarry和矩阵cam_cmarry的码字称之为内核码字,寻找矩阵pro_cmarry和矩阵cam_cmarry中对应的所有内核码字,内核码字对应的重复度rep最小。对矩阵pro_cmarry、cam_cmarry中相邻的内核码字进行合并,逐渐扩大码字序列的重复度rep,找到最大序列重复度rep,对最大重复度rep的序列中的最左端序列码字查找对应的左梯度值序列码进行匹配,如果匹配则加入该序列中,如果不匹配则停止;同理,对最大重复度的序列中的最右端序列码字查找对应的右梯度值序列码进行匹配,通过该过程进一步扩大码字特征序列的重复度,得到最终的最大重复度序列。将已经匹配完的码字序列从矩阵pro_cmarry、cam_cmarry中进行剔除。对所有的相邻内核码字进行处理,直到剩余独立的内核码字,紧接着继续对独立的内核码字进行码字特征序列重复度扩展,也是对码字序列的最左端和最右端序列码字查找对应的左梯度值序列码和右梯度值序列码进行匹配,如果匹配则加入该序列中,如果不匹配则停止。

利用以上步骤可以实现对投影仪投射的原始编码条纹序列与相机采集的调制条纹码字进行快速匹配。

本发明的积极效果是首先求取码字特征梯度值,接着构建码字序列重复度,利用码字序列重复度对相机采集的调制条纹码字和投影条纹码字进行快速匹配;基于序列特征重复度的条纹码字特征匹配算法能够有效的解决非连续码字匹配问题,而且较动态匹配方法的时间复杂度低,有效解决非连续码字匹配问题,同时相对于动态规划方法的时间复杂度低等优点。

附图说明

图1为本发明的结构示意图,其中计算机1、三脚支架2、相机3、投影仪4、待测物体5。

具体实施方式

下面结合附图对本发明做进一步的描述:如图1所示,为一种基于序列特征重复度的条纹码字匹配方法,计算机1、三脚支架2、相机3、投影仪4、待测物体5;其特征在于相机3和投影仪4固定在三脚支架2上,并通过电缆将相机3与计算机1进行连接,通过电缆将投影仪3与计算机1进行连接。

具体的步骤如下:

步骤1、通过计算机1生成一幅7元3级的彩色结构光条纹编码图像,其中编码图像选择的颜色码信息值分别选择为:红色、绿色、蓝色、青色、品红色、黄色和白色,其对应的r颜色通道信息值、g颜色通道信息值、b颜色通道信息值,分别为:(255,0,0)、(0,255,0)、(0,0,255)、(0,255,255)、(255,0,255)、(255,255,0)和(255,255,255),同时为了便于进行序列码字匹配,设定各个颜色码对应各自的颜色码字序号sn,分别为1、2、3、4、5、6和7。利用deburijng的伪随机特性和颜色码序号生成一幅7元3级的编码彩色结构光条纹图像pro_img,其中编码彩色结构光条纹图像pro_img的背景色为黑色信息值,彩色条纹的宽度值设定为7个像素,相邻条纹之间的间隔为3个像素,图像分辨率大小为apixel×bpixel,a=1024,b=768。

步骤2、将相机3和投影仪4固定在三脚支架2上,调整投影仪4,使得投影仪4投射的编码彩色结构光条纹图像pro_img能够呈现在待测物体5上,同时调整相机3的位姿,使得待测物体5上的调制图像画面在相机3的成像视野范围内,然后固定投影仪4和相机3的位姿不变,并用相机3采集待测物体5上的调制彩色结构光条纹图像为cam_img。

步骤3、将相机采集的彩色结构光条纹图像cam_img中的所有像素点,按照从上到下,从左到右的顺序存储在矩阵cimg_marry中,矩阵大小为n行,m列,其中对于第i行,第j列对应的矩阵值cimg_marry(i,j)=(cr(i,j),cg(i,j),cb(i,j)),i=1,2…n;j=1,2…m。

步骤4、利用公式

diffr1(i,j)=cr(i+1,j)-cr(i-1,j)+cr(i+2,j)-cr(i-2,j);

diffg1(i,j)=cg(i+1,j)-cg(i-1,j)+cg(i+2,j)-cg(i-2,j);

diffb1(i,j)=cb(i+1,j)-cb(i-1,j)+cb(i+2,j)-cb(i-2,j);

得到图像cam_img在r颜色通道的一阶滤波差分矩阵diffr1,图像cam_img在g颜色通道的一阶滤波差分矩阵diffg1,图像cam_img在b颜色通道的一阶滤波差分矩阵diffb1,其中i=3,4,…n-2;j=1,2…m;

接着利用公式

g1(i,j)=diffr1(i,j)×diffr1(i,j)+diffg1(i,j)×diffg1(i,j)+diffb1(i,j)×diffb1(i,j)

得到图像cam_img在r颜色通道、g颜色通道和b颜色通道的二阶滤波差分矩阵g1;

利用公式

diffg1(i,j)=g1(i,j)(i+1,j)-g1(i,j)(i-1,j)+g1(i,j)(i+2,j)-g1(i,j)(i-2,j);

得到图像cam_img的二阶滤波差分矩阵g1对应的一阶滤波差分矩阵diffg1;

diffg2(i,j)=diffg1(i,j)(i+1,j)-diffg1(i,j)(i-1,j)

+diffg1(i,j)(i+2,j)-diffg1(i,j)(i-2,j);

得到图像cam_img的二阶滤波差分矩阵g1对应的二阶滤波差分矩阵diffg2;

步骤5、为了保存相机采集的调制彩色条纹的中心码字对应的序列,构建矩阵cam_cmarry(i,j),i=1,2…n;j=1,2,…m,当满足

(diffg1(i-1,j)>0&&diffg1(i+1,j)<0)||(diffg1(i-1,j)<0&&diffg1(i+1,j)>0)&&(diffg2(i,j)<0)

时,寻找cimg_marry(i,j)中颜色信息值对应的颜色码字序号sn,矩阵cam_cmarry(i,j)=sn,否则矩阵cam_cmarry(i,j)=0。

步骤6、对投影仪投射的7元3级的编码彩色结构光条纹图像pro_img,按照步骤3至步骤5执行,并将检测到的条纹中心对应的颜色码值序列保存在矩阵pro_cmarry(a,b),a=1,2…a,b=1,2…b。

步骤7、对矩阵pro_cmarry和矩阵cam_cmarry按照行进行扫描匹配,也即是将矩阵pro_cmarry的第k行和矩阵cam_cmarry的第k行中所有非零元素值,按照原始列顺序构建两个码字序列特征,分别为:pseqk=(ps1,ps2,ps3,...,psh)和cseqk=(cs1,cs2,cs3,...,csz),pseq和cseq代表了条纹颜色码对应的特征信息值。

步骤8、利用公式

pglpi=pspi-pspi-1,cglci=csci-csci-1

pgrpj=pspj+1-pspj,cgrcj=cscj+1-cscj

其中pspi和pspj为码字序列特征pseq和cseq中的序列元素值,而pgl和pgr为条纹颜色码对应的特征梯度值,而序号pi=2,3…h;ci=2,3…z;pj=1,2…h-1;cj=1,2…z-1;构建两个码字特征序列特征分别为:左梯度值序列pgralk=(pgl1,pgl2,pgl3,...,pglh-1),cgralk=(cgl1,cgl2,cgl3,...,cglz-1)和右梯度值序列pgrark=(pgr1,pgr2,pgr3,...,pgrh-1),cgrark=(cgr1,cgr2,cgr3,...,cgrz-1)。

步骤9、查找上述四个梯度值序列中的所有满足pglx=cgly和pgrx=cgry的梯度码,则梯度码对应在矩阵pro_cmarry和矩阵cam_cmarry的码字称之为内核码字,寻找矩阵pro_cmarry和矩阵cam_cmarry中对应的所有内核码字,内核码字对应的重复度rep最小。对矩阵pro_cmarry、cam_cmarry中相邻的内核码字进行合并,逐渐扩大码字序列的重复度rep,找到最大序列重复度rep,对最大重复度rep的序列中的最左端序列码字查找对应的左梯度值序列码进行匹配,如果匹配则加入该序列中,如果不匹配则停止;同理,对最大重复度的序列中的最右端序列码字查找对应的右梯度值序列码进行匹配,通过该过程进一步扩大码字特征序列的重复度,得到最终的最大重复度序列。将已经匹配完的码字序列从矩阵pro_cmarry、cam_cmarry中进行剔除。对所有的相邻内核码字进行处理,直到剩余独立的内核码字,紧接着继续对独立的内核码字进行码字特征序列重复度扩展,也是对码字序列的最左端和最右端序列码字查找对应的左梯度值序列码和右梯度值序列码进行匹配,如果匹配则加入该序列中,如果不匹配则停止。

利用以上步骤可以实现对投影仪投射的原始编码条纹序列与相机采集的调制条纹码字进行快速匹配。基于序列特征重复度的条纹码字特征匹配算法能够有效的解决非连续码字匹配问题,而且较动态匹配方法的时间复杂度低。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1