Files
slm/rect_MRAF_SiminCao.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

88 lines
3.2 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.

%MARF algorithm for the generation of Holograms of arbitrary designed beam shape
close all
clear all
clc
m=0.5;%mixing parameter when iterating,if m=1,then it is totally GS algorithm 混合参数进行迭代时,如果m = 1,那么它是完全GS算法
row=1280;%resolution of DOE in x direction
column=1024;%resolution of DOE in y direction
[x,y]=meshgrid(1:row,1:column);
R=0.0003;%curvature of quadratic phase profile 二次相轮廓的曲率
Alpha=0.5;%aspect ratio of quadratic phase profile 二次相轮廓的长宽比
Phase=zeros(column,row);%initial phase 初始相位i
K1=zeros(column,row);
for j=1:row
for k=1:column
K1(k,j)=4*R*(Alpha*(j-row/2)^2+(1-Alpha)*(k-column/2)^2);%initial quadratic phase 最初的二次相
Phase(k,j)=mod(K1(k,j),2*pi);
end
end
figure,imshow(mod(Phase.*255./(2*pi),256),[0 255]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%初始相位图计算
F=0.04; %矩形光斑区域占相位图比例
w=F*row;
h=w*30/50; %矩形长w,宽h
for j=1:row
for k=1:column
if j>row/2-w/2&j<row/2+w/2&k>column/2-h/2&k<column/2+h/2
Photo(k,j)=255;
else
Photo(k,j)=0;
end
end
end
A=Photo;%target pattern
goals=double(A);%target pattern
figure(),surfc(x,y,goals), title('Target intensity distribution'), colormap jet, axis equal, axis tight, view([45, 45]), shading interp
SigRegion=((x-(row+1)/2).^2+(y-(column+1)/2).^2)./(2*w).^2; %信号区域尺寸是2w大小
SigRegion(SigRegion<=1)=1;
SigRegion(SigRegion>1)=0;
A0=exp(-((x-row/2).^2+(y-column/2).^2)./(750^2));%Gaussian incident光斑大小该如何设置
Efficiency=[];%diffraction efficiency
Accuracy=[];%accuracy of the generated laser pattern
tic %tic/toc配合使用来计时
h=waitbar(0,'Caculating ...');
index=0;
loop=100;%times of iterative
for k=1:loop
f=exp(1i.*Phase).*A0;
f1=fftshift(fft2((fftshift(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=fftshift(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;
figure(),surfc(x,y,Intensity), title('Simulated intensity distribution'), colormap jet, axis equal, axis tight, view([45, 45]), shading interp;
figure(),imshow(abs(f1),[])
figure,plot(Efficiency,'*'),title('efficiency');%Efficiency varies with iterative
figure,plot(Accuracy,'*'),title('accuracy');%Accuracy varies with iterative
Phase=Phase-min(min(Phase));
Phase=mod(Phase,2*pi);
hologram=round(Phase.*255./(2.*pi));
figure(),imshow(hologram,[0 255]);
imwrite(uint8(hologram),'MRAF.bmp');
% Addition=zeros(1080,420);
% hologramStandard=[Addition hologram Addition];
% figure,imshow(hologramStandard,[]);
% imwrite(uint8(hologram),'E:\CGH\MRAF\letter\APL\apl30点\holo\L1920_03.bmp');