永兴感知技术论坛

标题: OpticStudio中如何输入Grid Sag面型中的数据 [打印本页]

作者: admin    时间: 2018-5-9 14:58
标题: OpticStudio中如何输入Grid Sag面型中的数据

概要

本文介绍了OpticStudio如何定义网格矢高(Grid Sag)面型并展示了如何正确输入网格矢高数据。

介绍

Grid Sag面型是基于一些基础面型并通过在这些面型上添加矩形相对矢高阵列来定义的,这些基础面型包括平面、球面、圆锥非球面、多项式非球面或泽尼克非球面。通过网格点阵定义的矢高值可相对于基础非球面矢高存在一定偏心。表面形状是通过对网格矢高参数进行线性插值或双三次样条插值拟合来定义的。有关矢高定义的更多信息,请参考帮助文档“网格矢高(Grid Sag)”。

输入网格数据

网格点的所有数据必须在OpticStudio之外进行制表和计算,其数据格式必须存储在特定格式的文件中,并在表面属性中的导入(Import)菜单栏中加载这个文件才能正确导入网格矢高面。OpticStudio读取的文件数据格式为:




其中第一行包含七个参数,其中nx和ny(整数)为每个方向上网格点的数量且nx和ny必须大于等于5;unitflag为数据的单位,0表示毫米,1表示厘米,2表示英寸,3表示米;delx和dely(浮点数)为网格点阵在x和y方向上的间距;xdec和ydec(浮点数)为坐标偏移量(可选项)。

剩下的nx*ny行的数据每行都包括四个浮点数和一个整数(可选项)。其中四个浮点数分别为Z矢高;矢高在X方向的导数;矢高在Y方向的导数;矢高的交叉导数d/dxdy。第五个可选数据nodata用来表示之前的数据是否有效,0或空行表示有效的数据,其他整数表示无效数据。当nodata为其他时,整行的数据将被替换为0,并且计算只考虑基础面的矢高值。如果输入的数据不是数字,则系统默认将该数据替换为零。

第一行的数据对应网格中左上角的点(沿-Z轴方向看去),即-X和+Y点。随后的数据将从左至右定义这一行的点。定义完一行以后,将顺次定义下一行(ny-1)的点直到所有的点都被定义。数据必须存储为ASCII格式并且以.DAT为扩展名(如果用于非序列模式,则扩展名为.GRD)。

各项导数值用于双三次样条曲线插值算法中,用作不同矢高数据点之间的平滑处理。线性插值算法不会使用这些参数。如果所有导数值(dz/dx,dz/dy,d2z/dxdy)为零或没有输入,则OpticStudio将使用有线差分算法(Finite difference method)自动评估导数。

本文使用的示例文件SAG.DAT,数据格式如下图所示:





作者: admin    时间: 2018-5-9 14:59

双三次样条曲线插值算法

与线性插值算法的比较

表面上任意点的矢高拟合可以用两种方法中的任意一种进行计算。双三次样条算法是默认算法,它同时对矢高及其一阶导进行插值计算并提供了更加平滑的结果。为获得合理平滑数据,首选双三次样条算法。但对于伪随机形式的数据或波动较大的数据,双三次样条算法可能会得到非常极端的结果,这就意味着面数据的插值可能生成远离网格点的矢高值。对于这种情况,线性插值算法则会的到更加合理的结果。双三次样条或线性插值的选择作为一个参数可由用户选择。

使用Grid Sag面型

对于样条曲线的限制的重要信息请参考“样条曲线表面的备注(Comments about spline surface)”。在OpticStudio中网格矢高表面(Grid Sag Surface)的参数定义形式为:




首先将表面类型设置为网格矢高(Grid Sag),注意在本例中我们使用双三次样条曲线插值算法,因此插值类型设置为0,如下图所示:




然后打开网格时高面的表面属性菜单,单击导入(Import)选项卡。再导入数据文件选择框中选择对应的网格矢高数据文件。单击导入完成网格矢高的数据输入。如下图所示:




数据将直接存储在内存中而不会显示在镜头数据编辑器中。这是因为需要显示的数据量有可能会非常庞大。网格文件被导入后,用户可以通过表面数据报告(Surface Data Report)来查看导入的数据,如下图所示:



作者: admin    时间: 2018-5-9 14:59

同时,网格数据将一直保存在内存之中,OpticStudio在进行计算时将忽略原有的.DAT文件。如果需数据被改变,则用户需要重新在表面属性中导入更改后的.DAT文件。最终生成的网格矢高面如下图所示:




网格矢高面的几点使用建议








欢迎光临 永兴感知技术论坛 (http://bbs.yxsensing.net/) Powered by Discuz! X3.3