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:
91
wavef/pha_wavef_step.py
Normal file
91
wavef/pha_wavef_step.py
Normal 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')
|
||||
Reference in New Issue
Block a user