def main(): # Variables to be set. wavelength = 0.5 * pow(10, -6) pixeltom = 6 * pow(10, -6) distance = 0.1 propagation_type = 'Fraunhofer' k = wavenumber(wavelength) sample_field = np.zeros((150, 150), dtype=np.complex64) sample_field[40:60, 40:60] = 10 sample_field = add_random_phase(sample_field) hologram = propagate_beam(sample_field, k, distance, pixeltom, wavelength, propagation_type) if propagation_type == 'Fraunhofer': distance = np.abs(distance) reconstruction = propagate_beam(hologram, k, distance, pixeltom, wavelength, 'Fraunhofer Inverse') from odak.visualize.plotly import detectorshow detector = detectorshow() detector.add_field(sample_field) detector.show() detector.add_field(hologram) detector.show() detector.add_field(reconstruction / np.amax(np.abs(reconstruction))) detector.show() assert True == True
def compare(): wavelength = 0.5 * pow(10, -6) pixeltom = 6 * pow(10, -6) distance = 0.2 propagation_type = 'IR Fresnel' k = wavenumber(wavelength) sample_field = np.zeros((500, 500), dtype=np.complex64) sample_field[240:260, 240:260] = 1000 random_phase = np.pi * np.random.random(sample_field.shape) sample_field = sample_field * np.cos( random_phase) + 1j * sample_field * np.sin(random_phase) sample_field_torch = torch.from_numpy(sample_field) ## Propagate and reconstruct using torch. hologram_torch = propagate_beam_torch(sample_field_torch, k, distance, pixeltom, wavelength, propagation_type) reconstruction_torch = propagate_beam_torch(hologram_torch, k, -distance, pixeltom, wavelength, propagation_type) ## Propagate and reconstruct using np. hologram = propagate_beam(sample_field, k, distance, pixeltom, wavelength, propagation_type) reconstruction = propagate_beam(hologram, k, -distance, pixeltom, wavelength, propagation_type) np.testing.assert_array_almost_equal(hologram_torch.numpy(), hologram, 3)
def main(): # Variables to be set. wavelength = 0.5*pow(10,-6) pixeltom = 6*pow(10,-6) distance = 10.0 propagation_type = 'Fraunhofer' k = wavenumber(wavelength) sample_field = np.zeros((150,150),dtype=np.complex64) sample_field = np.zeros((150,150),dtype=np.complex64) sample_field[ 65:85, 65:85 ] = 1 sample_field = add_random_phase(sample_field) hologram = propagate_beam( sample_field, k, distance, pixeltom, wavelength, propagation_type ) if propagation_type == 'Fraunhofer': # Uncomment if you want to match the physical size of hologram and input field. #from odak.wave import fraunhofer_equal_size_adjust #hologram = fraunhofer_equal_size_adjust(hologram,distance,pixeltom,wavelength) propagation_type = 'Fraunhofer Inverse' distance = np.abs(distance) reconstruction = propagate_beam( hologram, k, -distance, pixeltom, wavelength, propagation_type ) #from odak.visualize.plotly import detectorshow #detector = detectorshow() #detector.add_field(sample_field) #detector.show() #detector = detectorshow() #detector.add_field(hologram) #detector.show() #detector = detectorshow() #detector.add_field(reconstruction) #detector.show() assert True==True
def main(): # Variables to be set. wavelength = 0.5*pow(10,-6) pixeltom = 6*pow(10,-6) distance = 0.2 propagation_type = 'IR Fresnel' k = wavenumber(wavelength) sample_field = np.zeros((500,500),dtype=np.complex64) sample_field[ 240:260, 240:260 ] = 1000 random_phase = np.pi*np.random.random(sample_field.shape) sample_field = sample_field*np.cos(random_phase)+1j*sample_field*np.sin(random_phase) hologram = propagate_beam( sample_field, k, distance, pixeltom, wavelength, propagation_type ) reconstruction = propagate_beam( hologram, k, -distance, pixeltom, wavelength, propagation_type ) # from odak.visualize.plotly import detectorshow # detector = detectorshow() # detector.add_field(sample_field) # detector.show() # detector.add_field(hologram) # detector.show() # detector.add_field(reconstruction) # detector.show() assert True==True