Files
slm/sp.m
wxchen ba13a3f053 Initial commit
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"
2023-08-29 23:06:40 +08:00

65 lines
2.1 KiB
Matlab
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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(填充因子)
[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;
%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=['','d=',num2str(d_nom),'um','_F=',num2str(F),'.bmp'];
imwrite(uint8(PhaseHolo),filename); %%%%%%%%%%%%%%%%%%%%%%%%%%导出8位相位图存储