发明名称 一种基于Sierra Lite抖动算法的散焦投影光栅测量方法
摘要 一种基于Sierra Lite抖动算法的散焦投影光栅测量方法。其主要目的在于利用Sierra Lite抖动算法生成二值抖动光栅,改善散焦后光栅的正弦性,进而提高相位质量。其实现步骤为:首先由计算机生成正弦光栅,从光栅图像最左上角像素开始,计算抖动输出,然后计算根据该抖动输出的灰度值计算该像素的量化误差,根据所在行是奇数行还是偶数行选择“S”形扫描的方向和相应的核函数系数进行误差扩散,并将误差叠加到相应的下一个像素,直至整幅光栅图像处理完毕,将最终得到的抖动光栅经过投影仪散焦投影得到所需的测量光栅。再利用经典的四步相移法得到主值相位,对主值相位进行展开得到绝对相位,根据相位到高度的转换公式,最终求得测量物体的三维信息。
申请公布号 CN103557808B 申请公布日期 2016.05.25
申请号 CN201310586395.3 申请日期 2013.11.19
申请人 东南大学 发明人 达飞鹏;吕江昭;饶立;安东;刘超;常朋朋;李燕春
分类号 G01B11/25(2006.01)I 主分类号 G01B11/25(2006.01)I
代理机构 江苏永衡昭辉律师事务所 32250 代理人 王斌
主权项 一种基于Sierra Lite抖动算法的散焦投影光栅测量方法,其特征在于,具体步骤如下:步骤1:利用计算机生成大小为M行N列的标准正弦光栅图像I,每点的灰度计算公式为:<img file="FDA0000927890830000011.GIF" wi="764" he="93" />其中,I(i,j)为光栅图像I在第i行第j列处的灰度值,p为光栅条纹周期,<img file="FDA0000927890830000012.GIF" wi="43" he="55" />为光栅的相移量;步骤2:计算I的Sierra Lite抖动光栅D,D的大小与I相同;步骤2.1:当i=1时,进行图像第一行的误差扩散处理,该行像素处理的顺序为从左到右;步骤2.1.1:令j=1,计算当前像素对应的D(i,j)和量化误差,将量化误差按Sierra Lite抖动核函数进行扩散,具体如下:令当前像素叠加量化误差后的灰度值<img file="FDA0000927890830000013.GIF" wi="128" he="79" />为原像素值,即<img file="FDA0000927890830000014.GIF" wi="319" he="87" />如果<img file="FDA0000927890830000015.GIF" wi="276" he="85" />则令D(i,j)=255,否则D(i,j)=0;计算该像素的量化误差eP:<maths num="0001"><math><![CDATA[<mrow><mi>e</mi><mi>P</mi><mo>=</mo><mover><mi>I</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>-</mo><mi>D</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000927890830000016.GIF" wi="454" he="87" /></maths>令系数组(α,β)=(2/3,1/3),将(i,j)处的量化误差分别按比例系数扩散叠加到以下几个相邻的像素:<maths num="0002"><math><![CDATA[<mrow><mover><mi>I</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><mi>I</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mi>&alpha;</mi><mo>*</mo><mi>e</mi><mi>P</mi></mrow>]]></math><img file="FDA0000927890830000017.GIF" wi="607" he="86" /></maths><maths num="0003"><math><![CDATA[<mrow><mover><mi>I</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mi>I</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>+</mo><mi>&beta;</mi><mo>*</mo><mi>e</mi><mi>P</mi><mo>;</mo></mrow>]]></math><img file="FDA0000927890830000018.GIF" wi="629" he="87" /></maths>j=j+1;步骤2.1.2:计算当前像素对应的D(i,j)和量化误差,将量化误差按Sierra Lite抖动核函数进行扩散,具体如下:如果<img file="FDA0000927890830000019.GIF" wi="278" he="86" />则令D(i,j)=255,否则D(i,j)=0;计算该像素的量化误差eP:<maths num="0004"><math><![CDATA[<mrow><mi>e</mi><mi>P</mi><mo>=</mo><mover><mi>I</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>-</mo><mi>D</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000927890830000021.GIF" wi="453" he="85" /></maths>令系数组(α,β,γ)=(2/4,1/4,1/4),将(i,j)处的量化误差分别按比例系数叠加到以下几个相邻的像素:<maths num="0005"><math><![CDATA[<mrow><mover><mi>I</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><mi>I</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mi>&alpha;</mi><mo>*</mo><mi>e</mi><mi>P</mi></mrow>]]></math><img file="FDA0000927890830000022.GIF" wi="609" he="87" /></maths><maths num="0006"><math><![CDATA[<mrow><mover><mi>I</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mi>I</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>+</mo><mi>&beta;</mi><mo>*</mo><mi>e</mi><mi>P</mi></mrow>]]></math><img file="FDA0000927890830000023.GIF" wi="612" he="87" /></maths><maths num="0007"><math><![CDATA[<mrow><mover><mi>I</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><mi>I</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mi>&gamma;</mi><mo>*</mo><mi>e</mi><mi>P</mi><mo>;</mo></mrow>]]></math><img file="FDA0000927890830000024.GIF" wi="742" he="87" /></maths>j=j+1;重复执行本步骤,当j=N时结束循环执行下一步;步骤2.1.3:计算当前像素对应的D(i,j)和量化误差,将量化误差按Sierra Lite抖动核函数进行扩散,具体如下:如果<img file="FDA0000927890830000025.GIF" wi="279" he="87" />则令D(i,j)=255,否则D(i,j)=0;计算该像素的量化误差eP:<maths num="0008"><math><![CDATA[<mrow><mi>e</mi><mi>P</mi><mo>=</mo><mover><mi>I</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>-</mo><mi>D</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000927890830000026.GIF" wi="452" he="85" /></maths>令系数组(β,γ)=(1/2,1/2),将(i,j)处的量化误差分别按比例系数叠加到以下几个相邻的像素:<maths num="0009"><math><![CDATA[<mrow><mover><mi>I</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mi>I</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>+</mo><mi>&beta;</mi><mo>*</mo><mi>e</mi><mi>P</mi></mrow>]]></math><img file="FDA0000927890830000027.GIF" wi="612" he="86" /></maths><maths num="0010"><math><![CDATA[<mrow><mover><mi>I</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><mi>I</mi><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mi>&gamma;</mi><mo>*</mo><mi>e</mi><mi>P</mi><mo>;</mo></mrow>]]></math><img file="FDA0000927890830000028.GIF" wi="742" he="87" /></maths>步骤2.2:当2≤i≤M‑1时,从图像第2行开始自上而下进行中间行的误差扩散处理;步骤2.2.1:当i为奇数时,跳过此步骤执行步骤2.2.2;当i为偶数时,该行像素处理的顺序为从右到左;步骤2.2.2:当i为奇数时,该行像素处理的顺序为从左到右;步骤2.3:当i=M时,进行图像最后一行的误差扩散处理;步骤2.3.1:当i为偶数时,跳过此步骤执行步骤2.3.2;当i为奇数时,该行像素处理的顺序为从左到右;步骤2.3.2:当i为偶数时,该行像素处理的顺序为从右到左;步骤3:将抖动光栅D通过投影仪散焦投射到被测物体表面,用CCD相机采集变形光栅条纹,得到大小为r行c列的图像,可以表示为:I<sub>n</sub>(x,y)=I'(x,y)+I”(x,y)cos[φ(x,y)+2πn/4],其中,n=0,1,2,3,I<sub>n</sub>(x,y)为第n幅图像的灰度值,I'(x,y)为条纹光强的背景值,I”(x,y)为调制强度,φ(x,y)为待求的主值相位分布,(x,y)表示变形光栅图像中各像素点的二维坐标,取值范围分别为:1≤x≤r,1≤y≤c;步骤4:利用四步相移法求解主值相位φ(x,y):<maths num="0011"><math><![CDATA[<mrow><mi>&phi;</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo>&lsqb;</mo><mfrac><mrow><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>3</mn></munderover><msub><mi>I</mi><mi>n</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mi>s</mi><mi>i</mi><mi>n</mi><mrow><mo>(</mo><mn>2</mn><mi>&pi;</mi><mi>n</mi><mo>/</mo><mn>4</mn><mo>)</mo></mrow></mrow><mrow><munderover><mo>&Sigma;</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>3</mn></munderover><msub><mi>I</mi><mi>n</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mi>cos</mi><mrow><mo>(</mo><mn>2</mn><mi>&pi;</mi><mi>n</mi><mo>/</mo><mn>4</mn><mo>)</mo></mrow></mrow></mfrac><mo>&rsqb;</mo><mo>;</mo></mrow>]]></math><img file="FDA0000927890830000031.GIF" wi="877" he="285" /></maths>步骤5:对主值相位进行展开得到绝对相位,最终物体的三维信息根据经典光栅投影的相位‑高度的转换公式求得:<img file="FDA0000927890830000032.GIF" wi="421" he="134" />其中,l、d是测量系统的几何参数,l是投影仪到测量平面的距离,d是CCD摄像头到投影仪的距离,<img file="FDA0000927890830000033.GIF" wi="495" he="87" />表示相位变化量,<img file="FDA0000927890830000034.GIF" wi="172" he="84" />为展开相位结果,<img file="FDA0000927890830000035.GIF" wi="177" he="78" />为初始相位结果,由测量参考面决定,ω<sub>0</sub>为投影光栅的角频率,由系统标定可得。
地址 210096 江苏省南京市四牌楼2号