Beispiel #1
0
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
Beispiel #2
0
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)
Beispiel #3
0
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
Beispiel #4
0
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