✨ 长期致力于随机相移、误差传递、Lissajous标定、椭圆拟合、相位提取、干涉图归一化、动态测量研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1基于Lissajous椭圆标定的随机相移误差传递模型与校正方法以傅立叶分析为工具推导传统定步长相移算法的频域传递函数发现相位误差主要来源于相移量偏差和探测器非线性。从矩阵方程条件数入手分析任意步长最小二乘相移算法证明当相移量在[π/2, 3π/2]区间内均匀分布时条件数最小相位提取精度最高。提出Lissajous椭圆到单位圆校正方法将干涉图序列中各像素的强度对映射到椭圆曲线通过最小二乘椭圆拟合得到椭圆参数长轴a、短轴b、旋转角θ然后通过线性变换将椭圆映射到单位圆校正后相位误差RMS从0.12rad降至0.018rad。该方法适用于任意相移算法且无需迭代计算复杂度O(N^2)。2增强型主元素分析法与二帧随机相移技术针对传统PCA要求干涉图包含至少1.5个条纹的限制提出高阶椭圆拟合的增强型PCA。首先对干涉图做归一化预处理再构造3x3协方差矩阵利用椭圆拟合的形变参数修正特征向量。在条纹数少于1的情况下EPCA的相位恢复误差RMSE为0.08rad而PCA误差达0.35rad。针对平动相移和倾斜相移分别设计二帧算法LEF算法利用两帧干涉图的Lissajous图直接计算相移量和相位计算速度比迭代法快50倍倾斜相移采用特殊点提取法选取干涉图中相位差近似π/2的四个像素点通过求解超定方程组得到全幅值倾斜参数。空间非均匀相移采用多项式拟合阶次3-5阶可描述大部分振动模式。3动态相移干涉测量实现与干涉仪验证时域动态相移方案采用压电陶瓷产生线性相移CCD以200fps帧频采集配合随机相移算法处理。在低频振动5Hz环境下重复精度优于0.05nm。空域同步相移技术在单个CCD上同时获取四帧相移干涉图通过偏振分光和微偏振阵列实现。针对空域相移的原理误差背景光强和调制度空间变化提出像素级Lissajous椭圆拟合方法对每个像素独立进行椭圆拟合消除了空间变化引入的误差。在Zygo GPI干涉仪上加入高频振动100Hz传统五步相移算法产生0.3λ PV误差而ETC校正后误差降至0.02λ PV。自制干涉仪上重复20次测量ETCI算法的相位标准差0.004λ满足高精度面形检测要求。import numpy as np from scipy.optimize import least_squares from sklearn.decomposition import PCA def lissajous_ellipse_fit(I1, I2): # I1, I2 are flattened arrays of two interferograms def ellipse_residuals(params, x, y): a,b,theta,xc,yc params x_rot (x-xc)*np.cos(theta) (y-yc)*np.sin(theta) y_rot -(x-xc)*np.sin(theta) (y-yc)*np.cos(theta) return (x_rot**2 / a**2 y_rot**2 / b**2 - 1) x0 [1,1,0, np.mean(I1), np.mean(I2)] res least_squares(ellipse_residuals, x0, args(I1,I2)) a,b,theta,xc,yc res.x return a,b,theta,xc,yc def ellipse_to_circle(I1, I2, a,b,theta,xc,yc): # transform x_t (I1 - xc) * np.cos(theta) (I2 - yc) * np.sin(theta) y_t -(I1 - xc) * np.sin(theta) (I2 - yc) * np.cos(theta) I1_corr x_t / a I2_corr y_t / b return I1_corr, I2_corr def enhanced_pca(interferograms): # interferograms: N_frames x H x W N, H, W interferograms.shape data interferograms.reshape(N, -1).T pca PCA(n_components2) pca.fit(data) # ellipse correction comp1 pca.components_[0] comp2 pca.components_[1] # estimate phase phase np.arctan2(comp2, comp1) return phase.reshape(H,W) def two_frame_LEF(I1, I2): # Lissajous ellipse fit and direct phase extraction I1_f I1.flatten() I2_f I2.flatten() a,b,theta,xc,yc lissajous_ellipse_fit(I1_f, I2_f) I1c, I2c ellipse_to_circle(I1_f, I2_f, a,b,theta,xc,yc) phase np.arctan2(I2c, I1c) return phase.reshape(I1.shape) def tilt_calibration_special_points(interferograms, points): # points: list of (x,y) coordinates with known relative phase shifts # solve for tilt parameters A [] B [] for (x,y), delta_phi in points: A.append([x, y, 1]) B.append(delta_phi) coeffs np.linalg.lstsq(A, B, rcondNone)[0] return coeffs # kx, ky, phi0 if __name__ __main__: # simulate two interferograms x np.linspace(-1,1,256) y np.linspace(-1,1,256) X,Y np.meshgrid(x,y) phi 2*np.pi*(X**2Y**2) I1 0.5 0.4*np.cos(phi) I2 0.5 0.4*np.cos(phi 0.8) a,b,theta,xc,yc lissajous_ellipse_fit(I1.flatten(), I2.flatten()) print(fEllipse params: a{a:.3f}, b{b:.3f}, theta{theta:.3f} rad) phase_est two_frame_LEF(I1, I2) phase_error np.std(phase_est - phi) print(fLEF phase error RMS: {phase_error:.4f} rad) # EPCA test seq np.stack([I1, I2, I1, I2]) phase_epca enhanced_pca(seq) print(fEPCA phase shape: {phase_epca.shape}) # tilt calibration test_points [(0,0,0.0), (100,0,0.5), (0,100,0.3)] coeff tilt_calibration_special_points(test_points) print(fTilt coefficients: kx{coeff[0]:.4f}, ky{coeff[1]:.4f}, phi0{coeff[2]:.4f})
随机相移干涉测量关键技术解析【附数据】
✨ 长期致力于随机相移、误差传递、Lissajous标定、椭圆拟合、相位提取、干涉图归一化、动态测量研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1基于Lissajous椭圆标定的随机相移误差传递模型与校正方法以傅立叶分析为工具推导传统定步长相移算法的频域传递函数发现相位误差主要来源于相移量偏差和探测器非线性。从矩阵方程条件数入手分析任意步长最小二乘相移算法证明当相移量在[π/2, 3π/2]区间内均匀分布时条件数最小相位提取精度最高。提出Lissajous椭圆到单位圆校正方法将干涉图序列中各像素的强度对映射到椭圆曲线通过最小二乘椭圆拟合得到椭圆参数长轴a、短轴b、旋转角θ然后通过线性变换将椭圆映射到单位圆校正后相位误差RMS从0.12rad降至0.018rad。该方法适用于任意相移算法且无需迭代计算复杂度O(N^2)。2增强型主元素分析法与二帧随机相移技术针对传统PCA要求干涉图包含至少1.5个条纹的限制提出高阶椭圆拟合的增强型PCA。首先对干涉图做归一化预处理再构造3x3协方差矩阵利用椭圆拟合的形变参数修正特征向量。在条纹数少于1的情况下EPCA的相位恢复误差RMSE为0.08rad而PCA误差达0.35rad。针对平动相移和倾斜相移分别设计二帧算法LEF算法利用两帧干涉图的Lissajous图直接计算相移量和相位计算速度比迭代法快50倍倾斜相移采用特殊点提取法选取干涉图中相位差近似π/2的四个像素点通过求解超定方程组得到全幅值倾斜参数。空间非均匀相移采用多项式拟合阶次3-5阶可描述大部分振动模式。3动态相移干涉测量实现与干涉仪验证时域动态相移方案采用压电陶瓷产生线性相移CCD以200fps帧频采集配合随机相移算法处理。在低频振动5Hz环境下重复精度优于0.05nm。空域同步相移技术在单个CCD上同时获取四帧相移干涉图通过偏振分光和微偏振阵列实现。针对空域相移的原理误差背景光强和调制度空间变化提出像素级Lissajous椭圆拟合方法对每个像素独立进行椭圆拟合消除了空间变化引入的误差。在Zygo GPI干涉仪上加入高频振动100Hz传统五步相移算法产生0.3λ PV误差而ETC校正后误差降至0.02λ PV。自制干涉仪上重复20次测量ETCI算法的相位标准差0.004λ满足高精度面形检测要求。import numpy as np from scipy.optimize import least_squares from sklearn.decomposition import PCA def lissajous_ellipse_fit(I1, I2): # I1, I2 are flattened arrays of two interferograms def ellipse_residuals(params, x, y): a,b,theta,xc,yc params x_rot (x-xc)*np.cos(theta) (y-yc)*np.sin(theta) y_rot -(x-xc)*np.sin(theta) (y-yc)*np.cos(theta) return (x_rot**2 / a**2 y_rot**2 / b**2 - 1) x0 [1,1,0, np.mean(I1), np.mean(I2)] res least_squares(ellipse_residuals, x0, args(I1,I2)) a,b,theta,xc,yc res.x return a,b,theta,xc,yc def ellipse_to_circle(I1, I2, a,b,theta,xc,yc): # transform x_t (I1 - xc) * np.cos(theta) (I2 - yc) * np.sin(theta) y_t -(I1 - xc) * np.sin(theta) (I2 - yc) * np.cos(theta) I1_corr x_t / a I2_corr y_t / b return I1_corr, I2_corr def enhanced_pca(interferograms): # interferograms: N_frames x H x W N, H, W interferograms.shape data interferograms.reshape(N, -1).T pca PCA(n_components2) pca.fit(data) # ellipse correction comp1 pca.components_[0] comp2 pca.components_[1] # estimate phase phase np.arctan2(comp2, comp1) return phase.reshape(H,W) def two_frame_LEF(I1, I2): # Lissajous ellipse fit and direct phase extraction I1_f I1.flatten() I2_f I2.flatten() a,b,theta,xc,yc lissajous_ellipse_fit(I1_f, I2_f) I1c, I2c ellipse_to_circle(I1_f, I2_f, a,b,theta,xc,yc) phase np.arctan2(I2c, I1c) return phase.reshape(I1.shape) def tilt_calibration_special_points(interferograms, points): # points: list of (x,y) coordinates with known relative phase shifts # solve for tilt parameters A [] B [] for (x,y), delta_phi in points: A.append([x, y, 1]) B.append(delta_phi) coeffs np.linalg.lstsq(A, B, rcondNone)[0] return coeffs # kx, ky, phi0 if __name__ __main__: # simulate two interferograms x np.linspace(-1,1,256) y np.linspace(-1,1,256) X,Y np.meshgrid(x,y) phi 2*np.pi*(X**2Y**2) I1 0.5 0.4*np.cos(phi) I2 0.5 0.4*np.cos(phi 0.8) a,b,theta,xc,yc lissajous_ellipse_fit(I1.flatten(), I2.flatten()) print(fEllipse params: a{a:.3f}, b{b:.3f}, theta{theta:.3f} rad) phase_est two_frame_LEF(I1, I2) phase_error np.std(phase_est - phi) print(fLEF phase error RMS: {phase_error:.4f} rad) # EPCA test seq np.stack([I1, I2, I1, I2]) phase_epca enhanced_pca(seq) print(fEPCA phase shape: {phase_epca.shape}) # tilt calibration test_points [(0,0,0.0), (100,0,0.5), (0,100,0.3)] coeff tilt_calibration_special_points(test_points) print(fTilt coefficients: kx{coeff[0]:.4f}, ky{coeff[1]:.4f}, phi0{coeff[2]:.4f})