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"
This commit is contained in:
130
MRAF.m
Normal file
130
MRAF.m
Normal file
@@ -0,0 +1,130 @@
|
||||
%MARF algorithm for the generation of Holograms of arbitrary designed beam shape
|
||||
close all
|
||||
clear all
|
||||
clc
|
||||
|
||||
% l=0;%the lth iteration for lth m
|
||||
% for m=0.1:0.1:1
|
||||
% l=l+1;
|
||||
|
||||
%First step: generate initial phase <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>λ
|
||||
shift=33;%period of blazed grating <EFBFBD><EFBFBD>ҫ<EFBFBD><EFBFBD>դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m=1;%mixing parameter when iterating,if m=1,then it is totally GS algorithm <EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>ʱ,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>m = 1,<EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫGS<EFBFBD>㷨
|
||||
row=1080;%resolution of DOE in x direction
|
||||
column=1080;%resolution of DOE in y direction
|
||||
[x,y]=meshgrid(1:row,1:column);
|
||||
R=0.0003;%curvature of quadratic phase profile <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Alpha=0.5;%aspect ratio of quadratic phase profile <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
B_line=0.0;%strength of the gradient of linear gradient phase ǿ<EFBFBD><EFBFBD><EFBFBD>ݶȵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD>
|
||||
u=3*pi/4;%angle of linear gradient phase <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ĽǶ<EFBFBD>
|
||||
B_conical=0;%strength of the gradient of conical phase <EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>
|
||||
Phase=zeros(size(x));%initial phase <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>λi
|
||||
K1=zeros(size(x));
|
||||
K2=zeros(size(x));
|
||||
K3=zeros(size(x));
|
||||
|
||||
for j=1:row
|
||||
for k=1:column
|
||||
K1(j,k)=4*R*(Alpha*(j-row/2)^2+(1-Alpha)*(k-column/2)^2);%initial quadratic phase <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
K2(j,k)=B_line*((j-row/2)*cos(u)+(k-column/2)*sin(u));%initial linear phase <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
K3(j,k)=B_conical*sqrt((j-column/2)^2+(k-row/2)^2);%initial conical phase <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD>
|
||||
Phase(j,k)=mod(K1(j,k)+K2(j,k)+K3(j,k),2*pi);
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
figure,imshow(mod(Phase.*255./(2*pi),256),[0 255]);
|
||||
% Phii=double(imread('E:\cache\axicon\1\60.bmp'));
|
||||
% Phii=Phii(:,:,1);
|
||||
% Phase=Phii./255.*2.*pi;
|
||||
%Second step: iterative fourier transform to generate final phase
|
||||
A=imread('m2.tif');%target pattern
|
||||
A=A(:,:,1);
|
||||
A1=zeros(1080,1080);
|
||||
A1(241:840,241:840)=A;
|
||||
A=A1;
|
||||
% A=255-A;
|
||||
% A(A~=0)=255;
|
||||
% [a,b]=size(A);
|
||||
%
|
||||
% if a<601&&b<601
|
||||
% B=zeros(size(x));
|
||||
% B(row/2-a/2+1:row/2+a/2,column/2-b/2+1:column/2+b/2)=A;
|
||||
% else
|
||||
% B=A;
|
||||
% end
|
||||
B=A;
|
||||
goals=double(B);%target pattern
|
||||
figure(),surfc(x,y,goals), title('Target intensity distribution'), colormap jet, axis equal, axis tight, view([45, 45]), shading interp
|
||||
SigRegion=zeros(size(x));
|
||||
% SigRegion(row/2-a/2+1:row/2+a/2,column/2-b/2+1:column/2+b/2)=ones(a,b);%*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>signal region, need to be decided manually<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for xi=400:680
|
||||
for yi=400:680
|
||||
if (xi-ceil(row/2))^2+(yi-ceil(row/2))^2<(100)^2
|
||||
SigRegion(xi,yi)=1;
|
||||
end
|
||||
end
|
||||
end%Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>
|
||||
% SigRegion(520:560,520:560)=ones(41,41);%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>
|
||||
[dot_num,nonsense]=size(find(B~=0));
|
||||
% r0=750; %waist radius selected<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>,Chameloen<EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1.2mm
|
||||
% A0=(1./(pi*r0^2)).*exp(-((x-row./2).^2+(y-column./2).^2)./(r0^2));%Gauss beam
|
||||
|
||||
A0=exp(-((x-row/2).^2+(y-column/2).^2)./(750^2));%Gaussian incident
|
||||
% A0=1;%Plane wave incident
|
||||
Efficiency=[];%diffraction efficiency
|
||||
Accuracy=[];%accuracy of the generated laser pattern
|
||||
Roughness=[];%roughness of the generated laser pattern
|
||||
|
||||
tic
|
||||
h=waitbar(0,'Caculating ...');
|
||||
index=0;
|
||||
loop=100;%times of iterative
|
||||
|
||||
for k=1:loop
|
||||
f=exp(1i.*Phase).*A0;
|
||||
f1=fftshift(fft2(f));
|
||||
f1=f1.*sqrt(sum(sum(abs(A0).^2))/sum(sum(abs(f1).^2)));
|
||||
factor=sqrt(sum(sum(abs(A0).^2))/sum(sum(abs(f1).^2)));
|
||||
disp(factor);
|
||||
f2=(m*sqrt(goals.*SigRegion)+(1-m)*abs(f1.*~SigRegion)).*exp(1i.*(angle(f1)));
|
||||
f3=ifft2(ifftshift(f2));
|
||||
Phase=angle(f3);
|
||||
Efficiency=[Efficiency sum(sum(abs(f1.*goals./255).^2))/sum(sum(abs(f1).^2))];
|
||||
fTarget=abs(f1).*goals./255;
|
||||
goals_u=1-((max((fTarget(:))))^2-(min((fTarget(fTarget~=0))))^2)./((max((fTarget(:))))^2+(min((fTarget(fTarget~=0))))^2);
|
||||
Accuracy=[Accuracy goals_u];
|
||||
index=index+1;
|
||||
waitbar(index./loop);
|
||||
|
||||
end
|
||||
close(h);
|
||||
toc
|
||||
|
||||
Intensity=abs(f1).^2./sum(sum(abs(f1).^2))*100000;
|
||||
% IntenDistr(:,:,l)=Intensity;
|
||||
figure(),surfc(x,y,Intensity), title('Simulated intensity distribution'), colormap jet, axis equal, axis tight, view([45, 45]), shading interp;
|
||||
figure(),imshow(abs(f1),[])
|
||||
% Effi(:,l)=Efficiency;
|
||||
figure,plot(Efficiency,'*'),title('efficiency');%Efficiency varies with iterative
|
||||
% Accu(:,l)=Accuracy;
|
||||
figure,plot(Accuracy,'*'),title('accuracy');%Accuracy varies with iterative
|
||||
|
||||
for j=1:row %region:0-2pi
|
||||
for k=1:column
|
||||
%Phase(j,k)=Phase(j,k)+2*pi*mod(k,shift)/shift;
|
||||
if Phase(j,k)<0
|
||||
Phase(j,k)=Phase(j,k)+2*pi;
|
||||
end
|
||||
end
|
||||
end
|
||||
Phase=mod(Phase,2*pi);
|
||||
hologram=Phase.*255./(2.*pi);
|
||||
figure(),imshow(hologram,[0 255]);
|
||||
imwrite(uint8(hologram),'U3.bmp');
|
||||
% Addition=zeros(1080,420);
|
||||
% hologramStandard=[Addition hologram Addition];
|
||||
% figure,imshow(hologramStandard,[]);
|
||||
% imwrite(uint8(hologram),'E:\CGH\MRAF\letter\APL\apl30<EFBFBD><EFBFBD>\holo\L1920_03.bmp');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user