一种基于动态规划的DeBruijn彩色结构光解码方法

文档序号:6602319阅读:271来源:国知局

专利名称::一种基于动态规划的DeBruijn彩色结构光解码方法
技术领域
:本发明涉及一种基于动态规划的DeBruijn彩色结构光解码方法,属于计算机图像处理
技术领域

背景技术
:结构光三维重构方法主要分为两个部分,第一部分是投影结构光编码图像并拍摄获得调制后的结构光图像,然后对调制后的结构光图像进行解码得到该图像的二维信息;第二部分是根据投影机、摄像机和待测物体的相对位置把调制后的结构光图像的二维信息转化为待测物体的三维信息。在基于结构光的三维重构过程中,利用各种编码策略可以使像素点本身带有先验编码信息,编码策略选择得合适与否影响着匹配算法的复杂性和三维重构的准确性,彩色编码方法可分为时间编码、空间编码、直接编码等。通过对调制后的结构光图像进行解码,可以得到调制后结构光图像中彩色条纹上的像素点与结构光编码图像中的彩色条纹间的匹配关系。迪布鲁英(DeBruijn)序列,具有良好的随机性和接近于白噪声的相关函数,并且有预先的可确定性和可重复性。n元m级DeBruijn序列是一个长度为nm的循环序列式,為,…,<1,其中…值取自n个基元,基元可以为任意数字或符号。序列中任意连续的m位组合都是唯一的,这称为迪布鲁英序列的窗口特性。由迪布鲁英伪随机序列生成的彩色结构光编码图像可以增加彩色条纹的数量并且确保编码的惟一性,该方法可以应用到对运动物体进行重建的过程中,现已成为了彩色结构光三维重构最广泛应用的方法之一。孔令富等人利用序列的窗口特性和空间邻域编码思想对各条纹边界进行标识,采用全局优化思想对条纹边界进行最优邻域匹配,不需要假定物体全表面单调,对其连续性也不做严格要求。Zhang等人引入了多通道动态规划(Multi-passDynamicProgramming)思想,来克服图像中的条纹遮挡问题,但常会出现对局部单调区域之间的边界集的解码误差。现有基于动态规划的解码方法,没有充分考虑局部邻域信息,因此,解码精度不高。
发明内容为了快速地对DeBruijn彩色结构光编码图像进行高精度的解码,本发明提出了一种基于动态规划的DeBruijn彩色结构光解码方法。一种基于动态规划的DeBruijn彩色结构光解码方法,其特征在于,该方法所需设备和实施步骤如下所需设备如图1所示,所需设备由5部分组成投影机1,投影屏幕2,摄像机3,计算机4,待测物体5;投影机1和摄像机3都通过电缆与计算机4连接。实现步骤步骤1、在计算机4中,利用具有随机特性与确定性的DeBruijn伪随机序列,产生一幅7元3级DeBruijn序列彩色结构光编码图像,如图2所示,并存储在计算机4中。该DeBruijn序列彩色结构光编码图像中任意两条相邻彩色条纹的颜色都不相同,每条彩色条纹的所有像素点的颜色都相同。步骤2、计算机4通过投影机1将步骤1中产生的DeBruijn序列彩色结构光编码图像经过待测物体5调制后投影到投影屏幕2上,生成调制后的投影图像。步骤3、计算机4通过摄像机3拍摄步骤2生成的调制后的投影图像,得到彩色结构光编码图片。步骤4、计算机4采用传统的canny算法提取步骤3得到的彩色结构光编码图片中每条彩色条纹的上边界和下边界,再计算每条彩色条纹的上边界和下边界的中间位置,得到每条彩色条纹的中心彩色条纹;设共得到m条中心彩色条纹,每条中心彩色条纹有n个像素点;在m行上依次排列每条彩色条纹的n个像素点,得到由这些像素点构成的mXn阶矩阵Z。步骤5、设每条中心彩色条纹上的像素点P的RGB值分别为r,g,b;将每条中心彩色条纹上的每个像素点的RGB值都按照公式Pc=c/255,cG{r,g,b}归一化,得到该像素点的归一化RGB值分别为Pr,Pg,Pb。步骤6、计算彩色结构光编码图片中每条中心彩色条纹的每个像素点的第一类梯度值和第二类梯度值,其中计算第一类梯度值的具体方法如下设矩阵Z的某列元素构成向量E,像素点P为向量E的第i个像素点,点P的归一化RGB值分别为Pr,Pg,Pb;像素点M为向量E的第i+1个像素点,点M的归一化RGB值分别为Mr,Mg,Mb,那么点P的第一类梯度值分别为Pr-Mr,Pg-Mg,Pb-Mb;矩阵Z的最后一行的每个像素点的第一类梯度值与该像素点的归一化RGB值相同;将矩阵Z的每个像素点的第一类梯度值放在与此像素点对应的位置,得到一个第一类梯度值矩阵,记为T1;计算第二类梯度值的具体方法如下设矩阵Z的某列元素构成向量E,像素点P为向量E的第i个像素点,点P的归一化RGB值分别为Pr,Pg,Pb;像素点M为向量E的第i_l个像素点,点M的归一化RGB值分别为Mr,Mg,Mb,那么点P的第二类梯度值分别为Pr-Mr,Pg-Mg,Pb-Mb;矩阵Z的第一行的每个像素点的第二类梯度值与该像素点的归一化RGB值相同;将矩阵Z的每个像素点的第二类梯度值放在与此像素点对应的位置,得到一个第二类梯度值矩阵,记为T2;步骤7、设由所述的DeBruijn序列彩色结构光编码图像中的彩色条纹上的像素点构成的mXn阶矩阵为Z1,利用Z1的每个像素点的归一化RGB值得到与Z1相应的第一类梯度值矩阵TZ1和第二类梯度值矩阵TZ2;在TZ1中任取一列元素做成向量E’,记E’的第i个元素为(ej,eig,eib),与矩阵Z相应的第一类梯度值矩阵T1中第j列第k行元素为(qr,qg,qb);根据以下公式计算(e,,ej,e,)和(qr,qg,qb)的匹配度,-1qc<-0.55&-0.15C{eci,qc)=0.71qc>0.850.55<0.85=l,ce{r,g,b}由此得到矩阵Cj的第i行第k列元素利用此方法,依次得到n个mXm矩阵C1,...,Cn;记与矩阵Z相应的第二类梯度值矩阵T2中第j列第k个元素为(^,qg,qb);根据上述公式计算此列中的第i行元素与矩阵Z相应的第二类梯度值矩阵T2中第j列第k行元素的匹配度,得到矩阵Dj的第i行第k列元素利用此方法,依次得到n个mXm矩阵Dl,...,Dn。步骤8、根据公式i=2,3,,m-1,k=2,3,,m-1,j=1,2,,n,得到n个mXm矩阵El,...,En。步骤9、构造矩阵Hk,设元素Hk(i,j)是矩阵Hk的第i行第j列元素,k=1,2,...,n;Ek(i,j)是矩阵Ek的第i行第j列元素,k=1,2,,n;那么Hk(l,j)=Ek(l,j),j=1,2,...,m;Hk(i,1)=Ek(i,1),i=2,3,...,m;Hk(i,j)=max{Hk(i-1,j),Hk(i_l,j-l)+Ek(i,j),Hk(i,j-1)},i,j=2,3,...,m;由此可以得到矩阵n个矩阵Hl,...,Hn;按照从上到下,从左到右的顺序,i,j=2,3,...,m,如果Hk(i_l,j)=Hk(i_l,j-l)+Ek(i,j)>Hk(i,j-1)或Hk(i,j-1)=Hk(i-1,j-l)+Ek(i,j)>Hk(i-1,j)或Hk(i-1,j)=Hk(i,j-1)=Hk(i-1,j-l)+Ek(i,j),那么Hk(i,j)=Hk(i-1,j-l)+Ek(i,j);如果Hk(i-l,j)=Hk(i,j-1)>Hk(i-1,j-l)+Ek(i,j),那么Hk(i,j)=Hk(i,j-1);引入标记Lk(i,j),Lk(l,j)=0,Lk(i,l)=0,i,j=1,2,,m;如果Hk(i,j)的值通过公式Hk(i,j)=Hk(i-1,j-l)+Ek(i,j)得到,那么Lk(i,j)=l,i,j=2,3,...,111;;如果他(1,力的值通过公式Hk(i,j)=Hk(i,j-l)得到,那么Lk(i,j)=2;如果他(土,j)的值通过公式Hk(i,j)=Hk(i-1,j)得到,那么Lk(i,j)=0,i,j=2,3,...,m。步骤10、设向量E’是由矩阵Z1中的某一列元素组成的,依次利用n个矩阵Hl,...,Hn,WLk(m,m)元素开始,在矩阵Z中像素点寻找与向量E’中像素点的匹配关系,具体方法如下如果Lk(m,m)=1,那么与像素点E,(m)匹配的像素点为Z(m,k),对Lk(m-l,m_l)继续寻找与E,(m-1)匹配的像素点;如果Lk(m,m)=2,那么矩阵Z中没有与像素点E,(m)匹配的像素点,对Lk(m,m-1)继续寻找与E’(m)匹配的像素点;如果Lk(m,m)=0,那么矩阵Z中没有与像素点E’(m)匹配的像素点,对Lk(m-l,m)继续寻找与E’(m-1)匹配的像素占.如此继续下去;设需要对Lk(2,j)寻找与E’(2)的匹配点,j彡2,如果Lk(2,j)=1,那么与像素点E’(2)匹配的像素点为Z(j,k)且与像素点E’(1)匹配的像素点为Z(j-1,k);如果Lk(2,j)=0或Lk(2,j)=2,那么没有与像素点E’(2)匹配的像素点,也没有与像素点E’(1)匹配的像素点;设需要对Lk(i,2)寻找与E’(i)的匹配点,i彡2,如果Lk(i,2)=1,那么与像素点E’(i)匹配的像素点为Z(j,k)且与像素点E’(i-1)匹配的像素点为Z(l,k);如果Lk(i,2)=0或Lk(i,2)=2,那么没有与像素点E’(i)匹配的像素点,也没有与像素点E’(i-1)匹配的像素点;如果j=1或i=1,在矩阵Z中像素点寻找与向量E’中像素点的匹配关系结束。通过以上步骤得到调制后彩色结构光编码图片中每条中心彩色条纹上的每个像素点与原始编码图像中的第几条彩色条纹匹配,实现了一种基于动态规划的DeBruijn彩色结构光解码方法,为重构算法作好了准备。本发明针对基于DeBruijn序列的彩色结构光编码图像,充分利用局部邻域信息,采用基于动态规划思想解决了调制后图像中心彩色条纹上每个像素点与原始编码图像中彩色条纹的匹配问题,提高了解码算法精度。本发明提供的方法不需要假定待测物体全表面单调,对其连续性也不做严格要求,还能推广到基于条纹列或条纹边界列的解码算法中。图1是一种基于动态规划的DeBruijn彩色结构光解码方法所需设备构成图。此图也是说明书摘要附图。其中1为投影机,2为投影屏幕,3为摄像机,4为计算机,5为待测物体。图2是DeBruijn序列生成的彩色结构光编码图。具体实施例方式一种基于动态规划的DeBruijn彩色结构光解码方法,该方法所需设备和实施步骤如下所需设备如图1所示,所需设备由5部分组成投影机1,投影屏幕2,摄像机3,计算机4,待测物体5;投影机1和摄像机3都通过电缆与计算机4连接。实现步骤步骤1、在计算机4中,利用具有随机特性与确定性的DeBruijn伪随机序列,产生一幅7元3级DeBruijn序列彩色结构光编码图像,如图2所示,并存储在计算机4中。该DeBruijn序列彩色结构光编码图像中任意两条相邻彩色条纹的颜色都不相同,每条彩色条纹的所有像素点的颜色都相同。步骤2、计算机4通过投影机1将步骤1中产生的DeBruijn序列彩色结构光编码图像经过待测物体5调制后投影到投影屏幕2上,生成调制后的投影图像。步骤3、计算机4通过摄像机3拍摄步骤2生成的调制后的投影图像,得到彩色结构光编码图片。步骤4、计算机4采用传统的canny算法提取步骤3得到的彩色结构光编码图片中每条彩色条纹的上边界和下边界,再计算每条彩色条纹的上边界和下边界的中间位置,得到每条彩色条纹的中心彩色条纹;设共得到m条中心彩色条纹,每条中心彩色条纹有n个像素点;在m行上依次排列每条彩色条纹的n个像素点,得到由这些像素点构成的mXn阶矩阵Z。步骤5、设每条中心彩色条纹上的像素点P的RGB值分别为r,g,b;将每条中心彩色条纹上的每个像素点的RGB值都按照公式Pc=c/255,cG{r,g,b}归一化,得到该像素点的归一化RGB值分别为Pr,Pg,Pb。步骤6、计算彩色结构光编码图片中每条中心彩色条纹的每个像素点的第一类梯度值和第二类梯度值,其中计算第一类梯度值的具体方法如下设矩阵Z的某列元素构成向量E,像素点P为向量E的第i个像素点,点P的归一化RGB值分别为Pr,Pg,Pb;像素点M为向量E的第i+1个像素点,点M的归一化RGB值分别为Mr,Mg,Mb,那么点P的第一类梯度值分别为Pr-Mr,Pg-Mg,Pb-Mb;矩阵Z的最后一行的每个像素点的第一类梯度值与该像素点的归一化RGB值相同;将矩阵Z的每个像素点的第一类梯度值放在与此像素点对应的位置,得到一个第一类梯度值矩阵,记为T1;计算第二类梯度值的具体方法如下设矩阵Z的某列元素构成向量E,像素点P为向量E的第i个像素点,点P的归一化RGB值分别为Pr,Pg,Pb;像素点M为向量E的第i_l个像素点,点M的归一化RGB值分别为Mr,Mg,Mb,那么点P的第二类梯度值分别为Pr-Mr,Pg-Mg,Pb-Mb;矩阵Z的第一行的每个像素点的第二类梯度值与该像素点的归一化RGB值相同;将矩阵Z的每个像素点的第二类梯度值放在与此像素点对应的位置,得到一个第二类梯度值矩阵,记为T2。步骤7、设由所述的DeBruijn序列彩色结构光编码图像中的彩色条纹上的像素点构成的mXn阶矩阵为Z1,利用Z1的每个像素点的归一化RGB值得到与Z1相应的第一类梯度值矩阵TZ1和第二类梯度值矩阵TZ2;在TZ1中任取一列元素做成向量E’,记E’的第i个元素为(ej,eig,eib),与矩阵Z相应的第一类梯度值矩阵T1中第j列第k行元素为(qr,qg,qb);根据以下公式计算(e,,ej,e,)和(qr,qg,qb)的匹配度,C(e%qc)=-10.7qc<一0.55-0.55〈礼<0.85,<=1,ce{r,b)%>0.85由此得到矩阵Cj的第i行第k列元素利用此方法,依次得到n个mXm矩阵C1,...,Cn;记与矩阵Z相应的第二类梯度值矩阵T2中第j列第k个元素为(qr,qg,qb);根据上述公式计算此列中的第i行元素与矩阵Z相应的第二类梯度值矩阵T2中第j列第k行元素的匹配度,得到矩阵Dj的第i行第k列元素利用此方法,依次得到n个mXm矩阵Dl,...,Dn。步骤8、根据公式i=2,3,...,m_l,k=2,3,...,m_l,j=1,2,...,n,得到n个mXm矩阵El,...,En。步骤9、构造矩阵Hk,设元素Hk(i,j)是矩阵Hk的第i行第j列元素,k=1,2,...,n;Ek(i,j)是矩阵Ek的第i行第j列元素,k=1,2,,n;那么Hk(l,j)=Ek(l,j),j=1,2,...,m;Hk(i,1)=Ek(i,1),i=2,3,...,m;Hk(i,j)=max{Hk(i-1,j),Hk(i_l,j-l)+Ek(i,j),Hk(i,j-1)},i,j=2,3,...,m;由此可以得到矩阵n个矩阵Hl,...,Hn;按照从上到下,从左到右的顺序,i,j=2,3,...,m,如果Hk(i_l,j)=Hk(i_l,j-l)+Ek(i,j)>Hk(i,j-1)或Hk(i,j-1)=Hk(i-1,j-l)+Ek(i,j)>Hk(i-1,j)或Hk(i-1,j)=Hk(i,j-1)=Hk(i-1,j-l)+Ek(i,j),那么Hk(i,j)=Hk(i-1,j-l)+Ek(i,j);如果Hk(i-l,j)=Hk(i,j-1)>Hk(i-1,j-l)+Ek(i,j),那么Hk(i,j)=Hk(i,j-1);引入标记Lk(i,j),Lk(l,j)=0,Lk(i,l)=0,i,j=1,2,...,m;如果Hk(i,j)的值通过公式Hk(i,j)=Hk(i-1,j-l)+Ek(i,j)得到,那么Lk(i,j)=l,i,j=2,3,...,111;;如果他(1,力的值通过公式Hk(i,j)=Hk(i,j-l)得到,那么Lk(i,j)=2;如果他(土,j)的值通过公式Hk(i,j)=Hk(i-1,j)得到,那么Lk(i,j)=0,i,j=2,3,...,m。步骤10、设向量E’是由矩阵Z1中的某一列元素组成的,依次利用n个矩阵Hl,...,Hn,WLk(m,m)元素开始,在矩阵Z中像素点寻找与向量E’中像素点的匹配关系,具体方法如下如果Lk(m,m)=1,那么与像素点E,(m)匹配的像素点为Z(m,k),对Lk(m-l,m_l)继续寻找与E,(m-1)匹配的像素点;如果Lk(m,m)=2,那么矩阵Z中没有与像素点E,(m)匹配的像素点,对Lk(m,m-1)继续寻找与E’(m)匹配的像素点;如果Lk(m,m)=0,那么矩阵Z中没有与像素点E’(m)匹配的像素点,对Lk(m-l,m)继续寻找与E’(m-1)匹配的像素占.如此继续下去;设需要对Lk(2,j)寻找与E’(2)的匹配点,j彡2,如果Lk(2,j)=1,那么与像素点E’(2)匹配的像素点为Z(j,k)且与像素点E’(1)匹配的像素点为Z(j-1,k);如果Lk(2,j)=0或Lk(2,j)=2,那么没有与像素点E’(2)匹配的像素点,也没有与像素点E’(1)匹配的像素点;设需要对Lk(i,2)寻找与E’(i)的匹配点,i彡2,如果Lk(i,2)=1,那么与像素点E’(i)匹配的像素点为Z(j,k)且与像素点E’(i-1)匹配的像素点为Z(l,k);如果Lk(i,2)=0或Lk(i,2)=2,那么没有与像素点E’(i)匹配的像素点,也没有与像素点E’(i-1)匹配的像素点;如果j=1或i=1,在矩阵Z中像素点寻找与向量E’中像素点的匹配关系结束。通过以上步骤得到调制后彩色结构光编码图片中每条中心彩色条纹上的每个像素点与原始编码图像中的第几条彩色条纹匹配,实现了一种基于动态规划的DeBruijn彩色结构光解码方法,为重构算法作好了准备。权利要求一种基于动态规划的DeBruijn彩色结构光解码方法,其特征在于,该方法所需设备和实施步骤如下所需设备所需设备由5部分组成投影机(1),投影屏幕(2),摄像机(3),计算机(4),待测物体(5);投影机(1)和摄像机(3)都通过电缆与计算机(4)连接;实现步骤步骤1、在计算机4中,利用具有随机特性与确定性的DeBruijn伪随机序列,产生一幅7元3级DeBruijn序列彩色结构光编码图像,如图2所示,并存储在计算机4中;该DeBruijn序列彩色结构光编码图像中任意两条相邻彩色条纹的颜色都不相同,每条彩色条纹的所有像素点的颜色都相同;步骤2、计算机4通过投影机1将步骤1中产生的DeBruijn序列彩色结构光编码图像经过待测物体5调制后投影到投影屏幕2上,生成调制后的投影图像;步骤3、计算机4通过摄像机3拍摄步骤2生成的调制后的投影图像,得到彩色结构光编码图片;步骤4、计算机4采用传统的canny算法提取步骤3得到的彩色结构光编码图片中每条彩色条纹的上边界和下边界,再计算每条彩色条纹的上边界和下边界的中间位置,得到每条彩色条纹的中心彩色条纹;设共得到m条中心彩色条纹,每条中心彩色条纹有n个像素点;在m行上依次排列每条彩色条纹的n个像素点,得到由这些像素点构成的m×n阶矩阵Z;步骤5、设每条中心彩色条纹上的像素点P的RGB值分别为r,g,b;将每条中心彩色条纹上的每个像素点的RGB值都按照公式Pc=c/255,c∈{r,g,b}归一化,得到该像素点的归一化RGB值分别为Pr,Pg,Pb;步骤6、计算彩色结构光编码图片中每条中心彩色条纹的每个像素点的第一类梯度值和第二类梯度值,其中计算第一类梯度值的具体方法如下设矩阵Z的某列元素构成向量E,像素点P为向量E的第i个像素点,点P的归一化RGB值分别为Pr,Pg,Pb;像素点M为向量E的第i+1个像素点,点M的归一化RGB值分别为Mr,Mg,Mb,那么点P的第一类梯度值分别为Pr-Mr,Pg-Mg,Pb-Mb;矩阵Z的最后一行的每个像素点的第一类梯度值与该像素点的归一化RGB值相同;将矩阵Z的每个像素点的第一类梯度值放在与此像素点对应的位置,得到一个第一类梯度值矩阵,记为T1;计算第二类梯度值的具体方法如下设矩阵Z的某列元素构成向量E,像素点P为向量E的第i个像素点,点P的归一化RGB值分别为Pr,Pg,Pb;像素点M为向量E的第i-1个像素点,点M的归一化RGB值分别为Mr,Mg,Mb,那么点P的第二类梯度值分别为Pr-Mr,Pg-Mg,Pb-Mb;矩阵Z的第一行的每个像素点的第二类梯度值与该像素点的归一化RGB值相同;将矩阵Z的每个像素点的第二类梯度值放在与此像素点对应的位置,得到一个第二类梯度值矩阵,记为T2;步骤7、设由所述的DeBruijn序列彩色结构光编码图像中的彩色条纹上的像素点构成的m×n阶矩阵为Z1,利用Z1的每个像素点的归一化RGB值得到与Z1相应的第一类梯度值矩阵TZ1和第二类梯度值矩阵TZ2;在TZ1中任取一列元素做成向量E’,记E’的第i个元素为(eir,eig,eib),与矩阵Z相应的第一类梯度值矩阵T1中第j列第k行元素为(qr,qg,qb);根据以下公式计算(eir,eig,eib)和(qr,qg,qb)的匹配度,<mrow><mi>C</mi><mrow><mo>(</mo><msubsup><mi>e</mi><mi>i</mi><mi>c</mi></msubsup><mo>,</mo><msub><mi>q</mi><mi>c</mi></msub><mo>)</mo></mrow><mo>=</mo><mfencedopen='{'close=''><mtable><mtr><mtd><mo>-</mo><mn>1</mn></mtd><mtd><msub><mi>q</mi><mi>c</mi></msub><mo>&lt;</mo><mo>-</mo><mn>0.55</mn></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>q</mi><mi>c</mi></msub><mo>-</mo><mn>0.15</mn></mrow><mn>0.7</mn></mfrac></mtd><mtd><mo>-</mo><mn>0.55</mn><mo>&lt;</mo><msub><mi>q</mi><mi>c</mi></msub><mo>&le;</mo><mn>0.85</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><msub><mi>q</mi><mi>c</mi></msub><mo>></mo><mn>0.85</mn></mtd></mtr></mtable></mfenced><mo>,</mo><msubsup><mi>e</mi><mi>i</mi><mi>c</mi></msubsup><mo>=</mo><mn>1</mn><mo>,</mo><mi>c</mi><mo>&Element;</mo><mo>{</mo><mi>r</mi><mo>,</mo><mi>g</mi><mo>,</mo><mi>b</mi><mo>}</mo></mrow><mrow><mi>C</mi><mrow><mo>(</mo><msubsup><mi>e</mi><mi>i</mi><mi>c</mi></msubsup><mo>,</mo><msub><mi>q</mi><mi>c</mi></msub><mo>)</mo></mrow><mo>=</mo><mfencedopen='{'close=''><mtable><mtr><mtd><mo>-</mo><mn>1</mn></mtd><mtd><mo>|</mo><msub><mi>q</mi><mi>c</mi></msub><mo>|</mo><mo>></mo><mn>1</mn><mo>.</mo><mn>55</mn></mtd></mtr><mtr><mtd><mn>1</mn><mo>-</mo><mfrac><mrow><msub><mrow><mo>|</mo><mi>q</mi></mrow><mi>c</mi></msub><mo>|</mo><mo>-</mo><mn>0.15</mn></mrow><mn>0.7</mn></mfrac></mtd><mtd><mn>0</mn><mo>.</mo><mn>55</mn><mo>&lt;</mo><mo>|</mo><msub><mi>q</mi><mi>c</mi></msub><mo>|</mo><mo>&le;</mo><mn>1</mn><mo>.</mo><mn>55</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mo>|</mo><msub><mi>q</mi><mi>c</mi></msub><mo>|</mo><mo>&lt;</mo><mn>0.15</mn></mtd></mtr></mtable></mfenced><mo>,</mo><msubsup><mi>e</mi><mi>i</mi><mi>c</mi></msubsup><mo>=</mo><mn>0</mn><mo>,</mo><mi>c</mi><mo>&Element;</mo><mo>{</mo><mi>r</mi><mo>,</mo><mi>g</mi><mo>,</mo><mi>b</mi><mo>}</mo></mrow><mrow><mi>C</mi><mrow><mo>(</mo><msubsup><mi>e</mi><mi>i</mi><mi>c</mi></msubsup><mo>,</mo><msub><mi>q</mi><mi>c</mi></msub><mo>)</mo></mrow><mo>=</mo><mfencedopen='{'close=''><mtable><mtr><mtd><mo>-</mo><mn>1</mn></mtd><mtd><msub><mi>q</mi><mi>c</mi></msub><mo>></mo><mn>0.55</mn></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mrow><mo>-</mo><mi>q</mi></mrow><mi>c</mi></msub><mo>-</mo><mn>0.15</mn></mrow><mn>0.7</mn></mfrac></mtd><mtd><mo>-</mo><mn>0.85</mn><mo>&lt;</mo><msub><mi>q</mi><mi>c</mi></msub><mo>&le;</mo><mn>0.55</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><msub><mi>q</mi><mi>c</mi></msub><mo>&lt;</mo><mo>-</mo><mn>0.85</mn></mtd></mtr></mtable></mfenced><mo>,</mo><msubsup><mi>e</mi><mi>i</mi><mi>c</mi></msubsup><mo>=</mo><mo>-</mo><mn>1</mn><mo>,</mo><mi>c</mi><mo>&Element;</mo><mo>{</mo><mi>r</mi><mo>,</mo><mi>g</mi><mo>,</mo><mi>b</mi><mo>}</mo></mrow>由此得到矩阵Cj的第i行第k列元素<mrow><msubsup><mi>C</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mo>=</mo><mrow><mo>(</mo><msubsup><mi>C</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>C</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>C</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>=</mo><mrow><mo>(</mo><mi>C</mi><mrow><mo>(</mo><msubsup><mi>e</mi><mi>i</mi><mi>r</mi></msubsup><mo>,</mo><msub><mi>q</mi><mi>r</mi></msub><mo>)</mo></mrow><mo>,</mo><mi>C</mi><mrow><mo>(</mo><msubsup><mi>e</mi><mi>i</mi><mi>g</mi></msubsup><mo>,</mo><msub><mi>q</mi><mi>g</mi></msub><mo>)</mo></mrow><mo>,</mo><mi>C</mi><mrow><mo>(</mo><msubsup><mi>e</mi><mi>i</mi><mi>b</mi></msubsup><mo>,</mo><msub><mi>q</mi><mi>b</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow><mo>,</mo></mrow>利用此方法,依次得到n个m×m矩阵C1,…,Cn;记与矩阵Z相应的第二类梯度值矩阵T2中第j列第k个元素为(qr,qg,qb);根据上述公式计算此列中的第i行元素与矩阵Z相应的第二类梯度值矩阵T2中第j列第k行元素的匹配度,得到矩阵Dj的第i行第k列元素<mrow><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mo>=</mo><mrow><mo>(</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>=</mo><mrow><mo>(</mo><mi>C</mi><mrow><mo>(</mo><msubsup><mi>e</mi><mi>i</mi><mi>r</mi></msubsup><mo>,</mo><msub><mi>q</mi><mi>r</mi></msub><mo>)</mo></mrow><mo>,</mo><mi>C</mi><mrow><mo>(</mo><msubsup><mi>e</mi><mi>i</mi><mi>g</mi></msubsup><mo>,</mo><msub><mi>q</mi><mi>g</mi></msub><mo>)</mo></mrow><mo>,</mo><mi>C</mi><mrow><mo>(</mo><msubsup><mi>e</mi><mi>i</mi><mi>b</mi></msubsup><mo>,</mo><msub><mi>q</mi><mi>b</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow><mo>,</mo></mrow>利用此方法,依次得到n个m×m矩阵D1,…,Dn;步骤8、根据公式<mrow><mi>Ej</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mi>min</mi><mo>{</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mn>1</mn></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mn>1</mn></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mn>1</mn></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow><mo>}</mo><mo>,</mo><mi>j</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>n</mi><mo>,</mo><mi>i</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>m</mi><mo>,</mo></mrow><mrow><mi>Ej</mi><mrow><mo>(</mo><mn>1</mn><mo>,</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mi>min</mi><mo>{</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mn>1</mn><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mn>1</mn><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mn>1</mn><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow><mo>}</mo><mo>,</mo><mi>j</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>n</mi><mo>,</mo><mi>k</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>m</mi><mo>,</mo></mrow><mrow><mi>Ej</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mi>max</mi><mo>{</mo><mi>min</mi><mo>{</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow><mo>}</mo><mo>,</mo><mi>min</mi><msubsup><mrow><mo>{</mo><mi>D</mi></mrow><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>D</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow><mo>}</mo><mo>}</mo><mo>,</mo></mrow>i=2,3,…,m-1,k=2,3,…,m-1,j=1,2,…,n,<mrow><mi>Ej</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>m</mi><mo>)</mo></mrow><mo>=</mo><mi>min</mi><mo>{</mo><msubsup><mi>C</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>m</mi></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>C</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>m</mi></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>C</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>m</mi></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow><mo>}</mo><mo>,</mo><mi>j</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>n</mi><mo>,</mo><mi>i</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>m</mi><mo>,</mo></mrow><mrow><mi>Ej</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mi>min</mi><mo>{</mo><msubsup><mi>C</mi><mi>j</mi><mrow><mi>m</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>C</mi><mi>j</mi><mrow><mi>m</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>C</mi><mi>j</mi><mrow><mi>m</mi><mo>,</mo><mi>k</mi></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow><mo>}</mo><mo>,</mo><mi>j</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>n</mi><mo>,</mo><mi>k</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>m</mi><mo>,</mo></mrow>得到n个m×m矩阵E1,…,En;步骤9、构造矩阵Hk,设元素Hk(i,j)是矩阵Hk的第i行第j列元素,k=1,2,…,n;Ek(i,j)是矩阵Ek的第i行第j列元素,k=1,2,…,n;那么Hk(1,j)=Ek(1,j),j=1,2…,m;Hk(i,1)=Ek(i,1),i=2,3,…,m;Hk(i,j)=max{Hk(i-1,j),Hk(i-1,j-1)+Ek(i,j),Hk(i,j-1)},i,j=2,3,…,m;由此可以得到矩阵n个矩阵H1,…,Hn;按照从上到下,从左到右的顺序,i,j=2,3,…,m,如果Hk(i-1,j)=Hk(i-1,j-1)+Ek(i,j)>Hk(i,j-1)或Hk(i,j-1)=Hk(i-1,j-1)+Ek(i,j)>Hk(i-1,j)或Hk(i-1,j)=Hk(i,j-1)=Hk(i-1,j-1)+Ek(i,j),那么Hk(i,j)=Hk(i-1,j-1)+Ek(i,j);如果Hk(i-1,j)=Hk(i,j-1)>Hk(i-1,j-1)+Ek(i,j),那么Hk(i,j)=Hk(i,j-1);引入标记Lk(i,j),Lk(1,j)=0,Lk(i,1)=0,i,j=1,2,…,m;如果Hk(i,j)的值通过公式Hk(i,j)=Hk(i-1,j-1)+Ek(i,j)得到,那么Lk(i,j)=1,i,j=2,3,…,m;;如果Hk(i,j)的值通过公式Hk(i,j)=Hk(i,j-1)得到,那么Lk(i,j)=2;如果Hk(i,j)的值通过公式Hk(i,j)=Hk(i-1,j)得到,那么Lk(i,j)=0,i,j=2,3,…,m;步骤10、设向量E’是由矩阵Z1中的某一列元素组成的,依次利用n个矩阵H1,…,Hn,从Lk(m,m)元素开始,在矩阵Z中像素点寻找与向量E’中像素点的匹配关系,具体方法如下如果Lk(m,m)=1,那么与像素点E’(m)匹配的像素点为Z(m,k),对Lk(m-1,m-1)继续寻找与E’(m-1)匹配的像素点;如果Lk(m,m)=2,那么矩阵Z中没有与像素点E’(m)匹配的像素点,对Lk(m,m-1)继续寻找与E’(m)匹配的像素点;如果Lk(m,m)=0,那么矩阵Z中没有与像素点E’(m)匹配的像素点,对Lk(m-1,m)继续寻找与E’(m-1)匹配的像素点;如此继续下去;设需要对Lk(2,j)寻找与E’(2)的匹配点,j≥2,如果Lk(2,j)=1,那么与像素点E’(2)匹配的像素点为Z(j,k)且与像素点E’(1)匹配的像素点为Z(j-1,k);如果Lk(2,j)=0或Lk(2,j)=2,那么没有与像素点E’(2)匹配的像素点,也没有与像素点E’(1)匹配的像素点;设需要对Lk(i,2)寻找与E’(i)的匹配点,i≥2,如果Lk(i,2)=1,那么与像素点E’(i)匹配的像素点为Z(j,k)且与像素点E’(i-1)匹配的像素点为Z(1,k);如果Lk(i,2)=0或Lk(i,2)=2,那么没有与像素点E’(i)匹配的像素点,也没有与像素点E’(i-1)匹配的像素点;如果j=1或i=1,在矩阵Z中像素点寻找与向量E’中像素点的匹配关系结束;通过以上步骤得到调制后彩色结构光编码图片中每条中心彩色条纹上的每个像素点与原始编码图像中的第几条彩色条纹匹配,实现了一种基于动态规划的DeBruijn彩色结构光解码方法,为重构算法作好了准备。全文摘要本发明涉及一种基于动态规划的DeBruijn彩色结构光解码方法,属于计算机图像处理
技术领域
。本发明针对基于DeBruijn序列的彩色结构光编码图像,利用局部区域信息,采用动态规划方法解决调制后图像中心彩色条纹上每个像素点与原始编码图像中彩色条纹的匹配问题,提高了解码算法精度。本发明提供的方法不需要假定待测物体全表面单调,对其连续性也不做严格要求,还能推广到基于条纹列或条纹边界列的解码算法中。文档编号G06T7/00GK101853515SQ20101017208公开日2010年10月6日申请日期2010年5月14日优先权日2010年5月14日发明者丁莹,姜会林,李明勋,杨华民,白宝兴,范静涛,韩成申请人:长春理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1