企业网站制作怎么做,河南省网站建设意见,wordpress电影模板下载,黄山网站seoZEMAX是广为使用的一款光学仿真软件#xff0c;是进行光路设计和分析的利器#xff1b;而相机标定#xff0c;则是进行机器视觉任务时#xff0c;拿到一款相机#xff0c;对其实际参数进行确定的过程。因此看起来#xff0c;二者其实主要是针对不同的侧重点。前者主要面向…ZEMAX是广为使用的一款光学仿真软件是进行光路设计和分析的利器而相机标定则是进行机器视觉任务时拿到一款相机对其实际参数进行确定的过程。因此看起来二者其实主要是针对不同的侧重点。前者主要面向相机开发后者面向相机使用。但是最近遇到了一个问题不得不使用ZEMAX进行一些相机标定算法方面的验证。这期间遇到了一些问题这里记录下来希望可以与大家分享如有不对之处进请指正。事情的经过是这样的现在手头有一台特殊光路的相机由于相机是课题组自己设计搭建因此也有相应的ZEMAX工程文件。在理想情况下该相机与普通相机的成像模型完全一致因此理论上可以使用张正义相机标定法进行标定。然而相机光路中包含一些特殊结构的光学元件这些元件的安装与制造误差势必会为成像系统引入畸变因此有必要为这些畸变和误差建立对应的数学模型就类似于普通相机中的径向畸变与切向畸变模型从而对其进行矫正。所以问题来了怎么验证模型的可靠性呢仿真我的想法是这样的。在ZEMAX中对一些光学元件的角度进行一些微调以此来模拟实际情况中的安装误差接着在ZEMAX中模仿张正义标定法在物方视场中设置类似棋盘格的视场令成像系统在不同的位置与角度对物面成像记录对应的像点。如此则得到了多组物点-像点的对应关系接着使用张正义标定法再加上自己建立的误差模型对其进行标定以此来验证自己的误差模型是否准确可靠。OK但是实际操作中比较麻烦的地方就是“令成像系统在不同的位置与角度对物面成像”。下面就进入正题说说我是怎么达到这个目的的。一.旋转光学系统当光路与视场都设定好之后此时的3D视图是这样的(吐槽一下ZEMAX2017以后虽然最多可以设置超过2000个视场但是只显示12个如果视场中有48个视场点需要重复设置4次才能完成所有成像)进行相机标定的时候我们需要在不同角度进行拍摄因此首先想到的办法是旋转光学系统。所以首先在物面之后添加坐标间断设置旋转参数。然后就成了这个样子光线进入了成像系统但是却没有穿过后续的元件。这里有一个办法或许能解决这个问题打开系统选项中的光线瞄准这时可以看到光线已经按照光轴进行了偏折接着调整坐标间断中的偏心参数令所有光线进入即可。如果能顺利进行到这里的话就已经大功告成了。但是我实际中遇到的问题是当光路结构比较复杂的时候在开启光线瞄准的情况下输入倾斜角度经常会提示而且由于光线瞄准是软件进行迭代求解如果一次输入大角度同样也会提示上述错误。比如直接输入30°就会报错但是连续输入10°、20°、30°可能就没有问题。在我的光学结构中即使输入很小的倾斜角度就会报错因此上述方法无法使用二.旋转物面山不走来那就走向山既然旋转光学系统不行那旋转物面呢ZEMAX中物面可以设置为倾斜面可以输入正切值改变物面的角度。比如输入Y正切为2看起来好像不错的样子但问题是物面中各个视场之间的关系已经与之前不再相同了之前我们设置视场的时候是为每一个视场设定了一个平面坐标但是旋转之后虽然各个视场点仍在一个平面上但是彼此之间的距离已经与之前不同了。此时每个物面中的点都成为一个三维点x、y坐标是我们提前设置的Z坐标为如果用这种方法进行相机标定就类似于实际进行相机标定时不同角度下拍摄不同的标定板。但是仔细想想张正义标定法中其实并没有限定标定板必须统一啊拍一张换一个标定板也可以啊只要确定标定板的尺寸和对应的像点就可以喽。于是接下来的问题转换为三维空间平面中的三维坐标怎么转化成该平面二维坐标我的做法是这样的根据上述方程显然这个平面的法向量是(tanθxtanθy-1)。显然(1,0,tanθx)也在该平面上对上述两个向量进行模为1的操作后再进行叉乘得到了第三个向量。这三个向量组成了旋转后平面的一组正交基。对这三个向量组成的矩阵取逆就得到了原始物面与旋转之后物面的转换关系。将该逆矩阵与三维空间平面中的三维坐标相乘就得到了对应的平面二维坐标(其实也是三维坐标只是最后一个维度数值为0)。再结合该平面每个视场对应的像点就可以进行标定了。值得注意的是MATLAB中相机标定函数中的世界坐标是固定的但是我们这里相当于每张照片都不同因此相应的标定代码需要进行一些修改才可以完成相机标定。