发明名称 一种基于动态规划的De Bruijn彩色结构光解码方法
摘要 本发明涉及一种基于动态规划的De Bruijn彩色结构光解码方法,属于计算机图像处理技术领域。本发明针对基于De Bruijn序列的彩色结构光编码图像,利用局部区域信息,采用动态规划方法解决调制后图像中心彩色条纹上每个像素点与原始编码图像中彩色条纹的匹配问题,提高了解码算法精度。本发明提供的方法不需要假定待测物体全表面单调,对其连续性也不做严格要求,还能推广到基于条纹列或条纹边界列的解码算法中。
申请公布号 CN101853515A 申请公布日期 2010.10.06
申请号 CN201010172082.X 申请日期 2010.05.14
申请人 长春理工大学 发明人 韩成;杨华民;李明勋;姜会林;范静涛;白宝兴;丁莹
分类号 G06T9/00(2006.01)I;G06T7/00(2006.01)I 主分类号 G06T9/00(2006.01)I
代理机构 代理人
主权项 一种基于动态规划的De Bruijn彩色结构光解码方法,其特征在于,该方法所需设备和实施步骤如下:所需设备:所需设备由5部分组成:投影机(1),投影屏幕(2),摄像机(3),计算机(4),待测物体(5);投影机(1)和摄像机(3)都通过电缆与计算机(4)连接;实现步骤:步骤1、在计算机4中,利用具有随机特性与确定性的De Bruijn伪随机序列,产生一幅7元3级De Bruijn序列彩色结构光编码图像,如图2所示,并存储在计算机4中;该DeBruijn序列彩色结构光编码图像中任意两条相邻彩色条纹的颜色都不相同,每条彩色条纹的所有像素点的颜色都相同;步骤2、计算机4通过投影机1将步骤1中产生的De Bruijn序列彩色结构光编码图像经过待测物体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、设由所述的De Bruijn序列彩色结构光编码图像中的彩色条纹上的像素点构成的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> <mfenced open='{' 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> <mfenced open='{' 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> <mfenced open='{' 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’中像素点的匹配关系结束;通过以上步骤得到调制后彩色结构光编码图片中每条中心彩色条纹上的每个像素点与原始编码图像中的第几条彩色条纹匹配,实现了一种基于动态规划的De Bruijn彩色结构光解码方法,为重构算法作好了准备。
地址 130022 吉林省长春市卫星路7186号