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"
49 lines
2.1 KiB
Matlab
49 lines
2.1 KiB
Matlab
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面)上的幅度和相位分布,其中幅度是=abs(D),相位是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)
|