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"
87 lines
2.4 KiB
Python
87 lines
2.4 KiB
Python
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)
|
|
|
|
print(matrix_A[27,15])
|
|
|
|
# 获取已知点和对应的值
|
|
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
|
|
|
|
# 将矩阵保存为CSV文件
|
|
df = pd.DataFrame(matrix)
|
|
df.to_csv('matrix.csv', index=False, header=False)
|
|
|
|
# 创建矩阵B的网格坐标
|
|
x = np.linspace(0, 1279, 1280)
|
|
y = np.linspace(0, 1023, 1024)
|
|
xx, yy = np.meshgrid(x, y)
|
|
|
|
# 保存 x 和 y 的值到 CSV 文件
|
|
xy_values = np.column_stack((xx.flatten(), yy.flatten()))
|
|
df_xy = pd.DataFrame(xy_values, columns=['x', 'y'])
|
|
df_xy.to_csv('xy_values.csv', index=False)
|
|
|
|
# 使用双线性插值进行插值
|
|
matrix_B = griddata(known_points, known_values, (xx, yy), method='linear')
|
|
|
|
# 将矩阵B中的未知位置填充为0
|
|
matrix_B = np.nan_to_num(matrix_B, nan=0)
|
|
|
|
# # 保存中间图像
|
|
# matrix_B_gray = matrix_B * (255 / np.max(matrix_B))
|
|
# matrix_B_gray = matrix_B_gray.astype(np.uint8)
|
|
# image = Image.fromarray(matrix_B_gray, mode='L')
|
|
# image.save('B_linear.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')
|