发明名称 一种基于史托克维尔变换的改进窗口傅里叶三维测量法
摘要 一种新的基于史托克维尔变换的改进三维测量方法。其主要目的在于精确得求解出条纹图像的相位分布,由相位分布得到物体的三维形貌信息。其实现步骤为:将一幅黑白正弦条纹图像投影到被测物体上。对CCD采集到的变形条纹图像逐行进行史托克维尔变换,提取史托克维尔变换脊,然后计算并去除求取脊过程中相位二阶导所带来的误差,最后得到精确的窗口大小矩阵。将精确窗口矩阵代入窗口傅里叶变换,经过滤波等步骤求得变形条纹图的相对相位信息。建立条纹图质量图,然后采用洪水算法相位展开,得到条纹图像的绝对相位分布。根据相位高度转换公式由绝对相位分布获取被测物体的三维信息。
申请公布号 CN102620685B 申请公布日期 2014.11.26
申请号 CN201210079423.8 申请日期 2012.03.23
申请人 东南大学 发明人 达飞鹏;董富强;陈璋雯
分类号 G01B11/25(2006.01)I 主分类号 G01B11/25(2006.01)I
代理机构 南京天翼专利代理有限责任公司 32112 代理人 汤志武
主权项 一种基于史托克维尔变换的窗口傅里叶三维测量法,其特征在于,具体步骤如下:步骤1:将黑白条纹图像投影到被测物体表面,使用CCD对被测物体表面进行拍摄,得到一幅高度为c、宽度为r的变形条纹图像g(x,y):g(x,y)=A(x,y)+B(x,y)cos[2πf<sub>0</sub>x+φ(x,y)]其中,A(x,y)是背景光强分布,B(x,y)是物体表面反射率,f<sub>0</sub>是正弦条纹频率,φ(x,y)是含有物体高度信息的变形条纹图相对相位值,(x,y)表示变形条纹图像的二维坐标,步骤2:对变形条纹图逐行做史托克维尔变换,得到变形条纹图像每一点的近似尺度因子,具体过程如下:步骤2.1:将y视为常数y<sub>1</sub>,采用一维史托克维尔变换对变形条纹图像g(x,y)的第y<sub>1</sub>行进行处理,处理过程为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>S</mi><msub><mi>y</mi><mn>1</mn></msub></msub><mrow><mo>(</mo><mi>b</mi><mo>,</mo><mi>f</mi><mo>)</mo></mrow><mo>=</mo><msubsup><mo>&Integral;</mo><mrow><mo>-</mo><mo>&infin;</mo></mrow><mrow><mo>+</mo><mo>&infin;</mo></mrow></msubsup><mi>g</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><msub><mi>y</mi><mn>1</mn></msub><mo>)</mo></mrow><mi>&omega;</mi><mrow><mo>(</mo><mi>b</mi><mo>-</mo><mi>x</mi><mo>,</mo><mi>f</mi><mo>)</mo></mrow><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mi>i</mi><mn>2</mn><mi>&pi;fx</mi><mo>)</mo></mrow><mi>dx</mi></mrow>]]></math><img file="FDA0000512506190000011.GIF" wi="992" he="102" /></maths>其中y<sub>1</sub>表示某一行的行号,i为复数单位,f是尺度因子,f依次取值为0.001赫兹、0.002赫兹、0.003赫兹、……、1赫兹,b是平移因子,b依次取值为1、2、3、……、r,单位为像素,r为图像宽度,获得的<img file="FDA0000512506190000013.GIF" wi="178" he="70" />是一个1000行r列的二维复数矩阵,ω(b‑x,f)是史托克维尔变换窗口函数,窗口大小由尺度因子f控制,其表达式为:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>&omega;</mi><mrow><mo>(</mo><mi>b</mi><mo>-</mo><mi>x</mi><mo>,</mo><mi>f</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mo>|</mo><mi>f</mi><mo>|</mo></mrow><msqrt><mn>2</mn><mi>&pi;</mi></msqrt></mfrac><mi>exp</mi><mo>[</mo><mo>-</mo><mfrac><mrow><msup><mi>f</mi><mn>2</mn></msup><msup><mrow><mo>(</mo><mi>b</mi><mo>-</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mn>2</mn></mfrac><mo>]</mo></mrow>]]></math><img file="FDA0000512506190000012.GIF" wi="749" he="146" /></maths>步骤2.2:求取条纹图像的近似尺度因子分布图f<sub>a1</sub>(x,y<sub>1</sub>):求出<img file="FDA0000512506190000014.GIF" wi="178" he="65" />的对应的模矩阵<img file="FDA0000512506190000015.GIF" wi="217" he="72" />搜索模矩阵<img file="FDA0000512506190000016.GIF" wi="192" he="77" />第x列中值最大的元素,并将模矩阵<img file="FDA0000512506190000017.GIF" wi="192" he="72" />的第x列中值最大元素的行标号赋值给a<sub>max</sub>,则a<sub>rx</sub>=0.001+0.001×a<sub>max</sub>,a<sub>rx</sub>为条纹图像的近似尺度因子分布图f<sub>a1</sub>(x,y<sub>1</sub>)在坐标(x,y<sub>1</sub>)处数值,遍历条纹图像所有坐标点,求得条纹图像的近似尺度因子分布图f<sub>a1</sub>(x,y),步骤3:对变形条纹图逐行做史托克维尔变换并去除史托克维尔变换脊误差,得到变形条纹图像每一点的准确尺度因子,具体过程如下:步骤3.1:将y视为常数y<sub>1</sub>,采用一维史托克维尔变换对变形条纹图像g(x,y)的第y<sub>1</sub>行进行处理,处理过程为:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>S</mi><msub><mi>y</mi><mn>1</mn></msub></msub><mrow><mo>(</mo><mi>b</mi><mo>,</mo><mi>f</mi><mo>)</mo></mrow><mo>=</mo><msubsup><mo>&Integral;</mo><mrow><mo>-</mo><mo>&infin;</mo></mrow><mrow><mo>+</mo><mo>&infin;</mo></mrow></msubsup><mi>g</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><msub><mi>y</mi><mn>1</mn></msub><mo>)</mo></mrow><mi>&omega;</mi><mrow><mo>(</mo><mi>b</mi><mo>-</mo><mi>x</mi><mo>,</mo><mi>f</mi><mo>)</mo></mrow><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mi>i</mi><mn>2</mn><mi>&pi;fx</mi><mo>)</mo></mrow><mi>dx</mi></mrow>]]></math><img file="FDA0000512506190000021.GIF" wi="992" he="102" /></maths>其中y<sub>1</sub>表示某一行的行号,i为复数单位,f是尺度因子,f依次取值为0.001赫兹、0.002赫兹、0.003赫兹、……、1赫兹,b是平移因子,b依次取值为1、2、3、……、r,单位为像素,r为图像宽度,获得的<img file="FDA00005125061900000210.GIF" wi="178" he="76" />是一个1000行r列的二维复数矩阵,ω(b‑x,f)是史托克维尔变换窗口函数,窗口大小由尺度因子f控制,其表达式为:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>&omega;</mi><mrow><mo>(</mo><mi>b</mi><mo>-</mo><mi>x</mi><mo>,</mo><mi>f</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mo>|</mo><mi>f</mi><mo>|</mo></mrow><msqrt><mn>2</mn><mi>&pi;</mi></msqrt></mfrac><mi>exp</mi><mo>[</mo><mo>-</mo><mfrac><mrow><msup><mi>f</mi><mn>2</mn></msup><msup><mrow><mo>(</mo><mi>b</mi><mo>-</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup></mrow><mn>2</mn></mfrac><mo>]</mo></mrow>]]></math><img file="FDA0000512506190000022.GIF" wi="749" he="144" /></maths>步骤3.2:去除史托克维尔变换后的变形条纹图每一个像素点的脊误差,处理过程为:S(x,y<sub>1</sub>)=S<sub>0</sub>+S<sub>1</sub>+S<sub>2</sub>+ε<sub>0</sub>其中S(x,y<sub>1</sub>)为变形条纹图中任意一像素点的史托克维尔变换简化形式,其中ε<sub>0</sub>表示由变形条纹图中每一点的相位二阶导所带来的误差,其表达式为:<img file="FDA0000512506190000023.GIF" wi="1330" he="145" />其中<img file="FDA0000512506190000024.GIF" wi="118" he="73" />表示相位二阶导,对近似尺度因子逐行求导求出f′<sub>a1</sub>(x,y<sub>1</sub>),求出<img file="FDA0000512506190000025.GIF" wi="442" he="78" />最后求出对应尺度因子f的ε<sub>0</sub>,得到ε<sub>0</sub>为1000行的一维复数数组在坐标(x,y<sub>1</sub>)的像素点上的误差数组ε<sub>0</sub>(x,y<sub>1</sub>),S<sub>0</sub>,S<sub>1</sub>,S<sub>2</sub>分别为史托克维尔变换计算过程中的简化表达式,形式如下:S<sub>0</sub>(b,f)=A(x,y)exp(‑2π<sup>2</sup>)exp(‑i2πfb)<img file="FDA0000512506190000026.GIF" wi="1608" he="142" /><img file="FDA0000512506190000027.GIF" wi="1612" he="147" />其中<img file="FDA0000512506190000028.GIF" wi="101" he="69" />和<img file="FDA0000512506190000029.GIF" wi="113" he="71" />分别表示相位和相位的一阶导数,S(x,y<sub>1</sub>)中逐点减去误差ε<sub>0</sub>(x,y<sub>1</sub>),求出精确史托克维尔变换脊的值S<sub>ε</sub>(x,y<sub>1</sub>)=S<sub>0</sub>+S<sub>1</sub>+S<sub>2</sub>,求出每一行精确史托克维尔变换脊矩阵S<sub>1000×r</sub>,矩阵S<sub>1000×r</sub>为1000行r列的复数矩阵,步骤3.3:求取条纹图像的精确尺度因子分布图f<sub>a2</sub>(x,y):求出S<sub>1000×r</sub>的对应的模矩阵C<sub>1000×r</sub>(b,f),搜索模矩阵C<sub>1000×r</sub>(b,f)第x列中值最大的元素,并将模矩阵C<sub>1000×r</sub>(b,f)的第x列中值最大元素的行标号赋值给a<sub>amax</sub>,则a<sub>acr</sub>=0.001+0.001×a<sub>amax</sub>,a<sub>acr</sub>为条纹图像的近似尺度因子分布图f<sub>a2</sub>(x,y<sub>1</sub>)在坐标(x,y<sub>1</sub>)处数值,遍历条纹图像所有坐标点,求得条纹图像的近似尺度因子分布图f<sub>a2</sub>(x,y),步骤4:对变形条纹图逐行做窗口傅里叶变换,求出变形条纹图相对相位分布图,具体过程如下:步骤4.1:将y视为常数,采用一维窗口傅立叶变换对变形条纹图像g(x,y)的每行进行处理,一维窗口傅立叶变换过程为:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>WF</mi><mrow><mo>(</mo><mi>b</mi><mo>,</mo><mi>&xi;</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Integral;</mo><mrow><mo>-</mo><mo>&infin;</mo></mrow><mrow><mo>+</mo><mo>&infin;</mo></mrow></munderover><mi>g</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><msub><mi>W</mi><mi>&delta;</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mi>b</mi><mo>)</mo></mrow><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mi>j&xi;x</mi><mo>)</mo></mrow><mi>dx</mi></mrow>]]></math><img file="FDA0000512506190000031.GIF" wi="842" he="146" /></maths>其频域表达式为:<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><mi>WF</mi><mrow><mo>(</mo><msub><mi>f</mi><mi>s</mi></msub><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi><mo>=</mo><mo>+</mo><mo>&infin;</mo></mrow></munderover><msub><mi>P</mi><mi>n</mi></msub><mrow><mo>(</mo><msub><mi>f</mi><mi>s</mi></msub><mo>-</mo><mi>n</mi><msub><mi>f</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000512506190000032.GIF" wi="640" he="136" /></maths>其中,WF(b,ξ)表示一维窗口傅立叶变换,ξ表示频域计算因子,δ表示一维窗口傅立叶的窗口尺度因子,δ取值为一维窗口的位置(x‑b,y)对应的精确尺度因子分布图f<sub>a2</sub>(x,y)相应位置上的点的值,W<sub>δ</sub>(x‑b)表示窗口函数,表达式为:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><msub><mi>W</mi><mi>&delta;</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mi>b</mi><mo>)</mo></mrow><mo>=</mo><mfrac><msup><mi>&delta;</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><msqrt><mn>2</mn><mi>&pi;</mi></msqrt></mfrac><mi>exp</mi><mo>[</mo><mo>-</mo><mfrac><msup><mrow><mo>(</mo><mi>b</mi><mo>-</mo><mi>x</mi><mo>)</mo></mrow><mn>2</mn></msup><mrow><mn>2</mn><msup><mi>&delta;</mi><mn>2</mn></msup></mrow></mfrac><mo>]</mo></mrow>]]></math><img file="FDA0000512506190000033.GIF" wi="662" he="142" /></maths>n表示阶次,依次取值为0,1,2,……,无穷,P<sub>n</sub>(f<sub>s</sub>‑nf<sub>0</sub>,y)表示任一点傅里叶变换后对应的n阶频谱,f<sub>s</sub>表示频域的变量,步骤4.2对傅里叶变换后的频谱滤波并提取相位信息,具体过程如下:对P<sub>n</sub>(f<sub>s</sub>‑nf<sub>0</sub>,y)进行滤波并提取出一阶频谱P<sub>1</sub>(f<sub>s</sub>‑f<sub>0</sub>,y),再对P<sub>1</sub>(f<sub>s</sub>‑f<sub>0</sub>,y)进行逆傅里叶变换,得到含有相位信息的B(x,y)exp[iφ(x,y)],计算B(x,y)exp[iφ(x,y)]的角度值即可得到含有物体高度信息的变形条纹图相对相位值φ(x,y),得到的相位值是介于0‑2π之间,遍历条纹图像所有坐标点,得到变形条纹图的相对相位图φ<sub>A</sub>(x,y),步骤5:建立条纹图像质量图,展开相对相位分布图φ<sub>A</sub>(x,y),得到展开相位结果<img file="FDA0000512506190000035.GIF" wi="190" he="82" />具体过程如下:步骤5.1:利用相对相位图中的相位梯度建立质量图,质量图可以按照以下公式计算:<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><mi>&Delta;</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><msqrt><msup><mi>W</mi><mn>2</mn></msup><mo>{</mo><msub><mi>&phi;</mi><mi>A</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>&phi;</mi><mi>A</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>}</mo><mo>+</mo><msup><mi>W</mi><mn>2</mn></msup><mo>{</mo><msub><mi>&phi;</mi><mi>A</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><msub><mi>&phi;</mi><mi>A</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>}</mo></msqrt></mrow>]]></math><img file="FDA0000512506190000034.GIF" wi="1330" he="96" /></maths>其中W{}是包裹函数,当值大于2π或小于‑2π时将其减去或加上2π,步骤5.2:在相对相位分布图像中央找到质量值最高的像素点,选择该点作为相位展开的起始点,将该点放入一个空的栈中;步骤5.3:判断栈是否为空,如果是,则相位展开过程结束,进入步骤6;如果否,继续,弹出栈顶的点,展开该点的四邻点中没有处理的像素点,并将这些未处理的点入栈;步骤5.4:按照质量图中的质量值将栈中所有点排序,质量最高的点放在栈顶,转到步骤5.3继续处理,步骤6:读取最终的展开相位结果<img file="FDA0000512506190000036.GIF" wi="182" he="67" />根据经典光栅投影的从展开相位结果<img file="FDA0000512506190000037.GIF" wi="162" he="67" />到物体高度h(x,y)的转换公式,最终求得测量物体的三维信息,所述的转换公式为:<img file="FDA0000512506190000041.GIF" wi="409" he="140" />其中,l、d是测量系统的几何参数,l是投影仪到测量平面的距离,d是CCD摄像头到投影仪的距离,<img file="FDA0000512506190000042.GIF" wi="487" he="79" />表示相位变化量,<img file="FDA0000512506190000043.GIF" wi="160" he="79" />为展开相位结果,<img file="FDA0000512506190000044.GIF" wi="180" he="79" />为初始相位结果,ω<sub>0</sub>为投影光栅的角频率。
地址 211300 江苏省南京市高淳县古檀大道3号科创中心405室