发明名称 一种计算全息动画的快速生成方法
摘要 本发明公开了一种计算全息动画的快速生成方法,包括以下步骤:(1)通过对物光场进行等间距采样,用离散傅立叶变换得到变换后的全息图面光场,生成计算全息图;(2)判断下一帧动画是否发生了平移,如果发生了平移,则直接计算出全息图面光场上相位的变化情况,并将该变化反映到下一帧的全息图面光场中;然后再判断是否发生了旋转,如果发生旋转,则将当前帧全息图面光场旋转同样角度,并按照原采样点的位置重新采样,然后将相位与模的变化反映到下一帧的全息图面光场中,从而产生下一帧的计算全息图。本发明实现了计算全息动画实时显示的可能,消除了计算冗余,节省了大量的计算时间,而且硬件设备的要求较低,投入小,容易实现。
申请公布号 CN101452581A 申请公布日期 2009.06.10
申请号 CN200810220610.7 申请日期 2008.12.30
申请人 暨南大学 发明人 李军;李艳辉;武建华
分类号 G06T15/70(2006.01)I 主分类号 G06T15/70(2006.01)I
代理机构 广州市华学知识产权代理有限公司 代理人 陈燕娴
主权项 1、一种计算全息动画的快速生成方法,包括以下步骤:(1)输入动画序列,对第一帧的物光场进行等间距采样,进行离散傅立叶变换,根据公式得到变换后的全息图面光场:<maths num="0001"><![CDATA[<math><mrow><msub><mi>U</mi><mi>h</mi></msub><mrow><mo>(</mo><mi>p&Delta;u</mi><mo>,</mo><mi>q&Delta;v</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>m</mi><mo>=</mo><mn>0</mn></mrow><mrow><msub><mi>N</mi><mi>x</mi></msub><mo>-</mo><mn>1</mn></mrow></munderover><munderover><mi>&Sigma;</mi><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mrow><msub><mi>N</mi><mi>y</mi></msub><mo>-</mo><mn>1</mn></mrow></munderover><msub><mi>U</mi><mi>o</mi></msub><mrow><mo>(</mo><mi>m&Delta;x</mi><mo>,</mo><mi>n&Delta;y</mi><mo>)</mo></mrow><mi>exp</mi><mrow><mo>[</mo><mi>j</mi><mn>2</mn><mi>&pi;</mi><mrow><mo>(</mo><mfrac><mi>pm</mi><msub><mi>N</mi><mi>x</mi></msub></mfrac><mo>+</mo><mfrac><mi>qn</mi><msub><mi>N</mi><mi>y</mi></msub></mfrac><mo>)</mo></mrow><mo>]</mo></mrow></mrow></math>]]></maths>其中,(x,y)是物光场所在平面的坐标,U<sub>o</sub>(x,y)为物光场,(u,v)是全息图面光场所在平面的坐标,U<sub>h</sub>(pΔu,qΔv)可简记作U<sub>h</sub>(p,q),为全息图面光场,j<sup>2</sup>=-1,采样点数为N<sub>x</sub>·N<sub>y</sub>,N<sub>x</sub>和N<sub>y</sub>都取2的幂次,m、n是物光场采样点的编号,p、q是全息图面光场采样点的编号,取值范围与m、n的范围相同;(2)设步骤(1)变换后的全息图面光场由多个表示单元组成,每个表示单元上设置一个长方形作为衍射的孔径,通过公式计算每个表示单元上长方形的相关参数,即每个长方形的高度w<sub>y</sub>和长方形距其所在的表示单元中心的偏移量δ:(a)通过下列公式求得每个长方形的高度:<maths num="0002"><![CDATA[<math><mrow><msub><mi>w</mi><mi>y</mi></msub><mo>=</mo><mfrac><mrow><mi>h</mi><mrow><mo>|</mo><msub><mi>U</mi><mi>h</mi></msub><mrow><mo>(</mo><mi>p&Delta;u</mi><mo>,</mo><mi>q&Delta;v</mi><mo>)</mo></mrow><mo>|</mo></mrow></mrow><mrow><mi>Max</mi><mrow><mo>(</mo><mrow><mo>|</mo><msub><mi>U</mi><mi>h</mi></msub><mo>|</mo></mrow><mo>)</mo></mrow></mrow></mfrac></mrow></math>]]></maths>其中,h为表示单元的高度,|X|表示求X的模,函数Max表示求最大值;(b)通过下列公式求得全息图面光场上各表示单元中长方形距其所在的表示单元中心的偏移量δ:<maths num="0003"><![CDATA[<math><mrow><mi>&delta;</mi><mo>=</mo><mo>-</mo><mfrac><mrow><mi>&lambda;</mi><mi>arg</mi><mrow><mo>[</mo><msub><mi>U</mi><mi>h</mi></msub><mrow><mo>(</mo><mi>p&Delta;u</mi><mo>,</mo><mi>q&Delta;v</mi><mo>)</mo></mrow><mo>]</mo></mrow></mrow><mrow><mn>2</mn><mi>&pi;</mi><mi>sin</mi><mn>2</mn><mi>&theta;</mi></mrow></mfrac></mrow></math>]]></maths>其中,λ为波长,函数arg表示取幅角主值,2θ是重构时入射光与全息面法线间的夹角;根据每个单元中长方形的w<sub>y</sub>与δ参数,生成计算全息图,即全息帧,经过物光场重构产生新的动画帧;(3)判断是否有剩余动画帧,若没有则动画结束;有则继续计算下一帧动画的运动参数,即该动画横向平移距离x<sub>d</sub>与纵向平移距离y<sub>d</sub>以及该动画的旋转角度α;(4)根据步骤(3)求得的下一帧动画的运动参数中的平移距离x<sub>d</sub>与纵向平移距离y<sub>d</sub>以及该动画的旋转角度α,判断下一帧动画与当前帧动画相比是否有变化,若无变化则转步骤(3);若有变化,则根据步骤(3)求得的下一帧动画的运动参数中的平移距离x<sub>d</sub>与纵向平移距离y<sub>d</sub>判断动画是否平移,若无平移则直接进行步骤(5),若有平移则通过公式计算全息图面光场上每个采样点的相位变化Φ<sub>pq</sub>和计算平移后的全息图面光场上各表示单元中长方形距其所在的表示单元中心的偏移量δ″:根据公式计算全息图面光场上每个采样点的相位变化Φ<sub>pq</sub>:<maths num="0004"><![CDATA[<math><mrow><msub><mi>&Phi;</mi><mi>pq</mi></msub><mo>=</mo><mn>2</mn><mi>&pi;</mi><mrow><mo>(</mo><mfrac><msub><mi>px</mi><mi>d</mi></msub><mi>m</mi></mfrac><mo>+</mo><mfrac><msub><mi>qy</mi><mi>d</mi></msub><mi>n</mi></mfrac><mo>)</mo></mrow></mrow></math>]]></maths>将该相位变化反映到当前帧全息图面光场,即将U<sub>h</sub>(p,q)在原基础上乘相位因子exp(-jΦ<sub>pq</sub>);根据公式计算平移后的全息图面光场上各表示单元中长方形距其所在的表示单元中心的偏移量δ":<maths num="0005"><![CDATA[<math><mrow><msub><mi>&delta;</mi><mi>d</mi></msub><mo>=</mo><mo>-</mo><mfrac><msub><mi>&lambda;&Phi;</mi><mi>pq</mi></msub><mrow><mn>2</mn><mi>&pi;</mi><mi>sin</mi><mn>2</mn><mi>&theta;</mi></mrow></mfrac></mrow></math>]]></maths>δ′=δ+δ<sub>d</sub><maths num="0006"><![CDATA[<math><mrow><mi>&delta;</mi><mo>&prime;</mo><mo>&prime;</mo><mo>=</mo><mrow><mfenced open='{' close='' separators=','><mtable><mtr><mtd><mi>&delta;</mi><mo>&prime;</mo><mo>-</mo><mi>&lambda;</mi><mo>/</mo><mi>sin</mi><mn>2</mn><mi>&theta;</mi><mo>,</mo><mi>&delta;</mi><mo>&prime;</mo><mo>></mo><mi>&lambda;</mi><mo>/</mo><mn>2</mn><mi>sin</mi><mn>2</mn><mi>&theta;</mi></mtd></mtr><mtr><mtd><mi>&delta;</mi><mo>&prime;</mo><mo>,</mo><mo>-</mo><mi>&lambda;</mi><mo>/</mo><mn>2</mn><mi>sin</mi><mn>2</mn><mi>&theta;</mi><mo>&le;</mo><mi>&delta;</mi><mo>&prime;</mo><mo>&le;</mo><mi>&lambda;</mi><mo>/</mo><mn>2</mn><mi>sin</mi><mn>2</mn><mi>&theta;</mi></mtd></mtr><mtr><mtd><mi>&delta;</mi><mo>&prime;</mo><mo>+</mo><mi>&lambda;</mi><mo>/</mo><mi>sin</mi><mn>2</mn><mi>&theta;</mi><mo>,</mo><mi>&delta;</mi><mo>&prime;</mo><mo>&lt;</mo><mo>-</mo><mi>&lambda;</mi><mo>/</mo><mn>2</mn><mi>sin</mi><mn>2</mn><mi>&theta;</mi></mtd></mtr></mtable></mfenced></mrow></mrow></math>]]></maths>δ<sub>d</sub>表示动画因平移造成的表示单元中长方形的位移,δ为前一帧表示单元中长方形距其所在的表示单元中心的的偏移量,δ′为当前帧表示单元中长方形距其所在的表示单元中心的的偏移量,δ″是对δ′的修正,使其表示的相位在-π~π之间;(5)根据步骤(3)求得的下一帧动画的运动参数中的旋转角度α,判断下一帧动画与当前帧动画相比是否有旋转,若无旋转则直接生成计算全息图,然后经过物光场重构产生动画帧;若有旋转则对当前帧的全息图面光场旋转α:将当前帧的全息图面光场U<sub>h</sub>(p,q)的频谱中心从矩阵的原点移到矩阵的中心后得到U<sub>c</sub>(r,s),当前帧坐标为(r,s),其范围为-N<sub>x</sub>/2≤r≤N<sub>x</sub>/2-1,-N<sub>y</sub>/2≤s≤N<sub>y</sub>/2-1,经旋转后,对应采样点的坐标是(r′,s′):<maths num="0007"><![CDATA[<math><mrow><mfenced open='{' close='' separators=''><mtable><mtr><mtd><mi>r</mi><mo>&prime;</mo><mo>=</mo><mi>r</mi><mo>&times;</mo><mi>cos</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow><mo>+</mo><mi>s</mi><mo>&times;</mo><mi>sin</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mi>s</mi><mo>&prime;</mo><mo>=</mo><mo>-</mo><mi>r</mi><mo>&times;</mo><mi>sin</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow><mo>+</mo><mi>s</mi><mo>&times;</mo><mi>cos</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>旋转后的全息图面光场为U<sub>c</sub>(r′,s′),对旋转后的全息图面光场采用最近邻采样方式或双线性插值采样方式进行重新采样,设采样后的全息图面光场为<img file="A200810220610C00035.GIF" wi="169" he="45" />然后把<img file="A200810220610C00036.GIF" wi="146" he="45" />的频谱中心从矩阵的中心移回到矩阵的原点,即转换成用正频率系数表示的全息图面光场U<sub>h</sub>(p,q),然后转步骤(2)。
地址 510632广东省广州市黄埔大道西601号