new file: Copy_of_Exz_with_hamamatsu.m new file: Exz_mod.m new file: Exz_with_hamamatsu.m new file: GS.m new file: MRAF.m new file: MRAF_8bit.bmp new file: PSF of spherical aberration/Exz.m new file: PSF of spherical aberration/Thumbs.db new file: PSF of spherical aberration/josaa-12-10-2136.pdf new file: PSF of spherical aberration/josaa-12-2-325.pdf new file: PSF of spherical aberration/main.m new file: "PSF of spherical aberration/\351\207\215\350\246\201psf\346\226\207\347\214\256.pdf" new file: Spherical_aberration_SiminCao.m new file: gen_m.m new file: gen_rectangle.m new file: hamamatsu.m new file: m.tif new file: m2.tif new file: photo/50-30.BMP new file: photo/8bit_50-30.BMP new file: photo/8bit_ellipse.BMP new file: photo/convert_8bit.exe new file: photo/ellipse.BMP new file: rect_MRAF_SiminCao.m new file: rectangle.tif new file: size/.vscode/settings.json new file: size/black_c_20THSize_4f_1.064lamda.bmp new file: size/black_c_30THSize_4f_61.064lamda.bmp new file: size/black_output.bmp new file: size/black_rect_30THSize_4f_1.064lamda.bmp new file: size/black_rect_30THSize_4f_6_1.064lamda.bmp new file: size/c_20THSize_4f_1.064lamda.bmp new file: size/c_20THSize_4f_1.064lamda_resize.bmp new file: size/c_30THSize_4f_61.064lamda.bmp new file: size/c_30THSize_4f_61.064lamda_resize.bmp new file: size/noisy_output.bmp new file: size/output.bmp new file: size/rect_30THSize_4f_1.064lamda.bmp new file: size/rect_30THSize_4f_1.064lamda_resize.bmp new file: size/rect_30THSize_4f_6_1.064lamda.bmp new file: size/rect_30THSize_4f_6_1.064lamda_resize.bmp new file: size/resize_4.7z new file: size/resize_black.7z new file: size/size copy.py new file: size/size.py new file: size/wave.7z new file: sp.m new file: to8bit.m new file: trans_8bit.zip new file: wavef/A.bmp new file: wavef/B_linear.bmp new file: wavef/PHA SID230828-2003.csv new file: wavef/PHA_bilinear_1280_1024.csv new file: wavef/PHA_bilinear_reversal.csv new file: wavef/PHA_output_1280_1024.csv new file: wavef/Untitled-1.py new file: wavef/filled.bmp new file: wavef/from PIL import Image.py new file: wavef/matrix_filled.csv new file: wavef/output.bmp new file: wavef/output.csv new file: wavef/output2.bmp new file: wavef/pha_wavef copy.py new file: wavef/pha_wavef.py new file: wavef/pha_wavef_step.py new file: wavef/wavef.zip new file: wavef/xy_values.csv new file: "wavef/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/matrix.csv" new file: "wavef/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/matrix_filled.csv"
66 lines
2.7 KiB
Matlab
66 lines
2.7 KiB
Matlab
clc
|
||
clear
|
||
lambda = 1.064; %um
|
||
n1 = 1;
|
||
n2 = 2.585;
|
||
d_nom = 590; %um
|
||
NA = 0.65;
|
||
alpha = asin(NA);
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%定义参数
|
||
|
||
Phi_sa = @(rho) -2 * pi * d_nom * (sqrt(n2 ^ 2 - (NA * rho) .^ 2) - sqrt(n1 ^ 2 - (NA * rho) .^ 2)) / lambda;
|
||
Dn2 = @(rho) 2 * pi * d_nom * sqrt(n2 ^ 2 - (NA * rho) .^ 2) / lambda;
|
||
|
||
phi_ave = integral(@(rho) rho .* Phi_sa(rho), 0, 1) / integral(@(rho) rho, 0, 1);
|
||
dn2_ave = integral(@(rho) rho .* Dn2(rho), 0, 1) / integral(@(rho) rho, 0, 1);
|
||
|
||
phi_sa_p = @(rho) Phi_sa(rho) - phi_ave;
|
||
dn2_p = @(rho) Dn2(rho) - dn2_ave;
|
||
|
||
s = 1 / (1 + integral(@(rho) phi_sa_p(rho) .* dn2_p(rho) .* rho, 0, 1) / integral(@(rho) dn2_p(rho) .* dn2_p(rho) .* rho, 0, 1));
|
||
R = 1 / s;
|
||
Phi_SA_hat = @(rho) 2 * pi * d_nom * (s * sqrt(n1 ^ 2 - (NA * rho) .^ 2) - sqrt(n2 ^ 2 - (NA * rho) .^ 2)) ./ (lambda * s);
|
||
Phi_SA_hat = @(rho) Phi_SA_hat(rho) - Phi_SA_hat(0) + mod(Phi_SA_hat(0), 2 * pi) - 2 * pi;
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%不同rho条件下相位补偿值(列出文献公式)
|
||
|
||
pixelx = 1280;
|
||
pixely = 1024;
|
||
F = 1;
|
||
pixel = F * pixely;
|
||
%%%%%%%%%%%%%%%%%%%%%%%设置相位图像素数目,设置调制区域线性占比F(填充因子) slm分辨率 1280*1024,
|
||
|
||
[x, y] = meshgrid(1:pixelx, 1:pixely);
|
||
x = x - (pixelx + 1) / 2; %坐标移到中心
|
||
y = y - (pixely + 1) / 2;
|
||
D = (pixel - 1) / 2; % +-都可以 长度刚好等于上面矩阵边界的大小
|
||
Aperture = (x .^ 2 + y .^ 2) .* 4 ./ pixel .^ 2; % 画一个环形的有效区域
|
||
Aperture(Aperture <= 1) = 1;
|
||
Aperture(Aperture > 1) = 0;
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 设置约束孔径Aperture
|
||
rho = (sqrt(x .^ 2 + y .^ 2) / D) .* Aperture; % 关键; 上面对rho的定义
|
||
|
||
Phase = Phi_SA_hat(rho);
|
||
offset = -min(min(Phi_SA_hat(rho)));
|
||
Phase = Phi_SA_hat(rho) + offset; %相位数值转变为全正
|
||
Phase = mod(Phase, 2 * pi); %相位折叠
|
||
PhaseHolo = round((Phase * 255 / (2 * pi))) .* Aperture; %相位归一化到0-255
|
||
|
||
ApertureN = (x .^ 2 + y .^ 2) .* 4 ./ pixel .^ 2;
|
||
ApertureN(ApertureN <= 1) = 0;
|
||
ApertureN(ApertureN > 1) = 1;
|
||
Noise = round(255 * rand(pixely, pixelx)) .* ApertureN;
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%生成0-255间随机噪声,并设置相反约束孔径ApertureN ; 增加噪声的实验
|
||
|
||
PhaseHolo = PhaseHolo + Noise; %添加随机噪声后的相位图
|
||
|
||
figure(1)
|
||
imshow(PhaseHolo, [])
|
||
figure(2)
|
||
r1 = linspace(-1, 1, pixelx);
|
||
% plot(r1,PhaseHolo(512,:))
|
||
plot(r1, PhaseHolo(512, :) * 2 * pi / 255, 'r')
|
||
axis([-1, 1, 0, 6 * pi])
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%水平直径上的相位分布
|
||
filename = ['C:\Users\simin\Desktop\球差校正_SiC加工相位图1280X1024_8位\', 'd=', num2str(d_nom), 'um', '_F=', num2str(F), '.bmp'];
|
||
imwrite(uint8(PhaseHolo), filename); % % % % % % % % % % % % % % % % % % % % % % % % % %导出8位相位图存储
|