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"
56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
import numpy as np
|
|
import pandas as pd
|
|
from scipy.spatial import KDTree
|
|
from PIL import Image
|
|
|
|
# 读取CSV文件
|
|
data = np.genfromtxt('PHA SID230828-2003.csv', delimiter=',')
|
|
|
|
# 创建矩阵A
|
|
A = np.zeros((120, 120))
|
|
A[:data.shape[0], :data.shape[1]] = data
|
|
|
|
# 创建矩阵B
|
|
B = np.zeros((1280, 1024))
|
|
|
|
# 进行映射和填充已知点
|
|
for u in range(120):
|
|
for v in range(120):
|
|
x = 0.211 * u - 4.538 * v + 894.754
|
|
y = -4.594 * u - 0.1044 * v + 800.7384
|
|
|
|
# 判断坐标是否在矩阵B的范围内
|
|
if 0 <= int(x) < 1280 and 0 <= int(y) < 1024:
|
|
B[int(x), int(y)] = A[u, v]
|
|
|
|
# 寻找未知点的最近邻并进行填充
|
|
known_points = np.argwhere(B != 0) # 获取已知点的坐标
|
|
tree = KDTree(known_points) # 构建KD树
|
|
|
|
unknown_points = np.argwhere(B == 0) # 获取未知点的坐标
|
|
for u, v in unknown_points:
|
|
x = 0.211 * u - 4.538 * v + 894.754
|
|
y = -4.594 * u - 0.1044 * v + 800.7384
|
|
|
|
# 寻找最近邻点的索引
|
|
_, idx = tree.query([u, v])
|
|
nearest_point = known_points[idx]
|
|
nearest_u, nearest_v = nearest_point[0], nearest_point[1]
|
|
|
|
# 用最近邻点的值填充未知点
|
|
B[u, v] = B[nearest_u, nearest_v]
|
|
|
|
# 将矩阵B保存为CSV文件
|
|
df = pd.DataFrame(B)
|
|
df.to_csv('output.csv', index=False, header=False)
|
|
|
|
matrix_B = B.copy()
|
|
# 将矩阵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('output2.bmp')
|