Files
MPID/testing_filter_radius.py
T

56 lines
1.8 KiB
Python

#use this file to import some test phase masks and observe
#the effect of changing the filtering radius
import numpy as np
import matplotlib.pyplot as plt
from autograd import tensor_jacobian_product
class TempGrid:
def __init__(self, Nx, Ny, res): self.Nx, self.Ny, self.res = Nx, Ny, res
def get_Nx(self): return self.Nx
def get_Ny(self): return self.Ny
def get_resolution(self): return self.res
grid = TempGrid(Nx=1025, Ny=1025, res=0.7)
radius_to_test = [2.0, 5.0, 11.0]
input_mask = np.load('results/mask_2.npy')
#make a plot of the input mask
# fig, ax = plt.subplots()
# ax.imshow(input_mask, cmap='inferno')
# #zoom in the center region
# center_x, center_y = grid.get_Nx() // 2, grid.get_Ny() // 2
# zoom_size = 100 # adjust as needed
# ax.set_xlim(center_x - zoom_size, center_x + zoom_size)
# ax.set_ylim(center_y - zoom_size, center_y + zoom_size)
# plt.savefig('input_mask.pdf')
#apply the filter
from filters import Filter
center_x, center_y = grid.get_Nx() // 2, grid.get_Ny() // 2
zoom_size = 80
colormap = 'gray_r'
fig, ax = plt.subplots(1,4, figsize=(12, 3))
ax[0].imshow(input_mask, cmap=colormap)
ax[0].set_title('Input', fontsize=20)
ax[0].set_xlim(center_x - zoom_size, center_x + zoom_size)
ax[0].set_ylim(center_y - zoom_size, center_y + zoom_size)
ax[0].set_xticks([])
ax[0].set_yticks([])
for i, radius in enumerate(radius_to_test, start=1):
filt = Filter(radius, grid)
output_mask = filt.apply_filter(input_mask)
ax[i].imshow(output_mask.reshape(grid.get_Nx(), grid.get_Ny()), cmap=colormap)
ax[i].set_title(f'r={radius} \u03BCm', fontsize=20)
ax[i].set_xlim(center_x - zoom_size, center_x + zoom_size)
ax[i].set_ylim(center_y - zoom_size, center_y + zoom_size)
ax[i].set_xticks([])
ax[i].set_yticks([])
plt.tight_layout()
plt.savefig('filtered_masks.pdf')