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:
wxchen
2023-08-29 23:06:40 +08:00
commit ba13a3f053
69 changed files with 1320863 additions and 0 deletions

91
wavef/pha_wavef_step.py Normal file
View File

@@ -0,0 +1,91 @@
import numpy as np
import pandas as pd
from scipy.interpolate import griddata
from PIL import Image
# 读取CSV文件并填充矩阵A
data = pd.read_csv('PHA SID230828-2003.csv', header=None)
matrix_A = data.values
# matrix_A = np.flipud(matrix_A)
# 获取已知点和对应的值
known_points = []
known_values = []
for u in range(120):
for v in range(120):
if matrix_A[u, v] != 0:
x = int(0.211 * u - 4.538 * v + 894.754)
y = int(-4.594 * u - 0.1044 * v + 800.7384)
if u == 27 and v == 15:
print(x, y)
known_points.append([x, y])
known_values.append(matrix_A[u, v])
known_points = np.array(known_points)
known_values = np.array(known_values)
# 创建一个1280x1024的矩阵
matrix_size = (1280, 1024)
matrix = np.zeros(matrix_size)
# 根据已知点和对应的值填充矩阵
for i in range(len(known_points)):
x, y = known_points[i]
value = known_values[i]
matrix[x, y] = value
print(matrix.shape)
# 生成网格点坐标
grid_x, grid_y = np.mgrid[0:matrix_size[0], 0:matrix_size[1]]
# 使用双线性插值填充未知点
points = np.transpose(np.nonzero(matrix == 0))
filled_values = griddata(known_points, known_values, points, method='linear')
# 将填充后的值放入矩阵
for i in range(len(points)):
x, y = points[i]
value = filled_values[i]
matrix[x, y] = value
# 将矩阵中的未知位置填充为0
matrix = np.nan_to_num(matrix, nan=0)
# 将矩阵保存为CSV文件
df = pd.DataFrame(matrix)
df.to_csv('matrix_filled.csv', index=False, header=False)
# # 将矩阵保存为CSV文件
# df = pd.DataFrame(matrix)
# df.to_csv('matrix.csv', index=False, header=False)
matrix_B = matrix.copy()
print(matrix_B.shape)
matrix_c = np.where(matrix_B != 0, matrix_B * 217, matrix_B)
image_filled = Image.fromarray(matrix_c.astype(np.uint8))
# 保存为BMP图像
image_filled.save('filled.bmp')
# 将矩阵B中的非零值取反
matrix_B = np.where(matrix_B != 0, -matrix_B, matrix_B)
# 对负数进行+1操作
matrix_B = np.where(matrix_B < 0, matrix_B + 1, matrix_B)
# 再次对负数进行+1操作
matrix_B = np.where(matrix_B < 0, matrix_B + 1, matrix_B)
# 将矩阵B保存为CSV文件
df = pd.DataFrame(matrix_B)
df.to_csv('PHA_bilinear_reversal.csv', header=False, index=False)
# 将矩阵B中的非零值映射到灰度值范围
matrix_B = np.where(matrix_B != 0, matrix_B * 217, matrix_B)
# 将矩阵B转换为8位灰度图像
image = Image.fromarray(matrix_B.astype(np.uint8))
# 保存为BMP图像
image.save('output.bmp')