本代码具有以下两个主要功能:
一、Matlab读Zygo干涉仪/轮廓仪.dat文件中的面形数据
通过在Matlab中开发大量的反编译代码,我们成功地在Matlab中提取到Zygo .dat二进制文件中所包含的137个测量参数,包括:相位/面形数据(PhaseData)、干涉图(IntensityData)、干涉图像素标定(pixel_height和pixel_width)、测试波长(wavelength_in)和Zygo公司为后续产品预留的参数等等。本文所用到的只是这137个参数中的相位/面形数据(PhaseData)这一个参数(阉割版),关于.dat二进制文件中完整的137个测量参数的反编译说明可跳转至下面这篇文章:
Matlab读取Zygo干涉仪dat数据文件 光学检测加工(明码需另付费)
废话不多说。首先,我们在Matlab中画出提取到的相位/面形数据(PhaseData)(一个十进制矩阵)的二维轮廓图,并用colormap('jet');上色。下图是MetroPro软件与Matlab软件的面形对比图:
图1 MetroPro软件与Matlab软件的对比图
二、Matlab对提取到的面形数据进行37阶Zernike拟合
你是否对Zygo MetroPro软件中的“Zernike polynomial”感兴趣?是否想验证它的正确性?——本代码将实现这个功能。
下图红色方框中的37阶Zernike拟合系数是由MetroPro软件给出的:
图2 MetroPro软件给出的关于上述面形数据的37阶Zernike拟合系数
通过在Matlab中编写Zernike多项式拟合代码,我们同样可以得到上述面形数据的37阶Zernike拟合系数(如下图下方中间的红框中所示,可以看到与MetroPro数据之间的误差很小)、37阶Zernike拟合系数的柱状图(下图右侧中间所示)和37阶Zernike拟合图(下图右下角所示,可以看到面形形状和PV与MetroPro的差异都很小)。37阶Zernike拟合用时仅0.346529秒,跟MetroPro的计算速度差不多:
图3 Matlab对提取到的面形数据进行37阶Zernike拟合
图3可能看不清楚,我放1张局部图:
图4 用Matlab拟合得到的Zernike拟合系数与MetroPro的Zernike拟合系数对比图
表1为拟合时间与面形矩阵尺寸之间的关系表。当面形矩阵为1K×1K时,37阶拟合仅用时0.69s;当面形矩阵为2K×2K时,37阶拟合仅用时2.80s。—— 这与MetroPro拟合耗时几乎一样,如果用C语言写的话,估计速度更快!
表1 Zernike多项式前37阶系数拟合用时与面形矩阵尺寸之间的对照表
序号 |
面形矩阵尺寸 |
拟合耗时 |
1 |
256×256 |
0.07s |
2 |
512×512 |
0.18s |
3 |
1024×1024 |
0.69s |
4 |
2048×2048 |
2.80s |
总之,本程序包中共包含以下4个文件。其中,ZernikeFitZygodat_main为主程序,MyData.dat为本文中所用到的Zygo二进制数据文件(供测试使用),DecodeZygodat_mini.p和ZernikeFitZygodat.p文件需联系购买(.p格式是Matlab暗码文件,不能看到里面的代码,但不影响调用)。如需DecodeZygodat_mini.p和ZernikeFitZygodat.p的明码文件(.m),请移步至某宝,但费用比暗码文件高很多。
图5 本程序包中所包含的文件列表
(本文为CSDN“光学码农”原创,转载须注明本文网址,违者必究!)文章来源:https://www.toymoban.com/news/detail-435729.html
下载地址:Matlab读Zygo干涉仪面形数据并进行37阶Zernike拟合(附Matlab代码)-CSDN社区。文章来源地址https://www.toymoban.com/news/detail-435729.html
到了这里,关于Matlab读Zygo干涉仪面形数据并进行37阶Zernike拟合(附Matlab代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!