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

49 lines
2.1 KiB
Matlab
Raw 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.

A = imread('rectangle.tif'); % 读取目标强度图像Target.bmp要求格式是8bit bmp图像
C = double(A); %将uint8格式转化为double格式好进行后续的处理
C1 = abs(C); %得到目标强度分布的幅度值
for p = 1:100; %设置迭代循环次数
C = fftshift(C); %在处理之前进行fftshift处理
D = ifft2(C); %首先是对目标图像进行反向傅里叶变化处理即我ppt中推荐的方法2
D = fftshift(D); %反向傅里叶变换之后再进行fftshift处理从而得到入射面SLM面上的幅度和相位分布其中幅度是=absD相位是angle(D);
D2 = angle(D); %得到SLM上入射面的相位分布
D = ones(size(A)) .* exp(i .* D2); %将SLM入射面的幅度替换为入射光的强度这里入射光强度假设为均匀分布。效果一般也不错如果有有需要将ones(sizes(A))替换为入射光强的图像就可以了。
D = fftshift(D); %然后进行从入射面到傅里叶平面的傅里叶变换首先也是进行fftshift处理
C = fft2(D); %进行fft2处理
C = fftshift(C); %然后ffthisft
C2 = angle(C); %得到相位
C = C1 .* exp(i .* C2); %然后对傅里叶平面,相位把持不变,幅值替换为目标强度分布的幅值
p = p + 1; % 循环次数+1
end
C = fftshift(C); %因为循环结束是得到的傅里叶平面的强度和相位所以需要再进行一次ift变换从而得到SLM上的相位
D = ifft2(C);
D = fftshift(D);
D = angle(D); %这个就是SLM上最终相位
for l = 1:size(D, 1)
for m = 1:size(D, 2)
if D(l, m) < 0
D(l, m) = D(l, m) + 2 * pi; %因为angle函数输出不是0-2pi采用这个部分将其转化为0-2pi。
end
end
end
D = 128 / pi * D; %将0-2pi转化为0-255
D = uint8(D); %转化为8bit 格式
D = repmat(D, 10, 10);
D = D(1:1024, 1:1272);
imwrite(D, 'CGH.bmp'); %存储为8bit bmp
figure, imshow(D)
%如何粗略模拟计算的CGH的结果
c = imread('CGH.bmp');
c = double(c);
a = exp(i .* c * 2 * pi / 255);
d = fft2(a);
d = fftshift(d);
d = abs(d);
imagesc(d)