are downsampled by a factor of two. The rotational axis is the `y`-axis. A total of 180 projections are used for the reconstruction. A detailed description of this phantom is given in :cite:`Mueller2015`. .. _`meep`: http://ab-initio.mit.edu/wiki/index.php/Meep """ import matplotlib.pylab as plt import numpy as np import odtbrain as odt from example_helper import load_data sino, angles, phantom, cfg = \ load_data("fdtd_3d_sino_A180_R6.500.tar.lzma") A = angles.shape[0] print("Example: Backpropagation from 3D FDTD simulations") print("Refractive index of medium:", cfg["nm"]) print("Measurement position from object center:", cfg["lD"]) print("Wavelength sampling:", cfg["res"]) print("Number of projections:", A) print("Performing backpropagation.") # Apply the Rytov approximation sinoRytov = odt.sinogram_as_rytov(sino) # perform backpropagation to obtain object function f f = odt.backpropagate_3d(uSin=sinoRytov,
projections. The second column shows the reconstruction without angular weights and the third column shows the reconstruction with angular weights. The keyword argument `weight_angles` was introduced in version 0.1.1. """ import matplotlib.pylab as plt import numpy as np import unwrap import odtbrain as odt from example_helper import load_data sino, angles, cfg = load_data("mie_2d_noncentered_cylinder_A250_R2.zip", f_angles="mie_angles.txt", f_sino_real="sino_real.txt", f_sino_imag="sino_imag.txt", f_info="mie_info.txt") A, size = sino.shape # background sinogram computed with Mie theory # miefield.GetSinogramCylinderRotation(radius, nmed, nmed, lD, lC, size, A,res) u0 = load_data("mie_2d_noncentered_cylinder_A250_R2.zip", f_sino_imag="u0_imag.txt", f_sino_real="u0_real.txt") # create 2d array u0 = np.tile(u0, size).reshape(A, size).transpose() # background field necessary to compute initial born field # u0_single = mie.GetFieldCylinder(radius, nmed, nmed, lD, size, res) u0_single = load_data("mie_2d_noncentered_cylinder_A250_R2.zip",
reconstruction of the refractive index with the Rytov approximation is in good agreement with the phantom that was used in the simulation. .. _`meep`: http://ab-initio.mit.edu/wiki/index.php/Meep """ import matplotlib.pylab as plt import numpy as np import odtbrain as odt from example_helper import load_data sino, angles, phantom, cfg = load_data( "fdtd_2d_sino_A100_R13.zip", f_angles="fdtd_angles.txt", f_sino_imag="fdtd_imag.txt", f_sino_real="fdtd_real.txt", f_info="fdtd_info.txt", f_phantom="fdtd_phantom.txt", ) print("Example: Backpropagation from 2D FDTD simulations") print("Refractive index of medium:", cfg["nm"]) print("Measurement position from object center:", cfg["lD"]) print("Wavelength sampling:", cfg["res"]) print("Performing backpropagation.") # Apply the Rytov approximation sino_rytov = odt.sinogram_as_rytov(sino) # perform backpropagation to obtain object function f f = odt.backpropagate_2d(uSin=sino_rytov,
reconstruction that does not take into account the tilted axis of rotation; the result is a blurry reconstruction. The third column shows the improved reconstruction; the known tilted axis of rotation is used in the reconstruction process. .. _`meep`: http://ab-initio.mit.edu/wiki/index.php/Meep """ import matplotlib.pylab as plt import numpy as np import odtbrain as odt from example_helper import load_data sino, angles, phantom, cfg = \ load_data("fdtd_3d_sino_A220_R6.500_tiltyz0.2.tar.lzma") A = angles.shape[0] print("Example: Backpropagation from 3D FDTD simulations") print("Refractive index of medium:", cfg["nm"]) print("Measurement position from object center:", cfg["lD"]) print("Wavelength sampling:", cfg["res"]) print("Axis tilt in y-z direction:", cfg["tilt_yz"]) print("Number of projections:", A) print("Performing normal backpropagation.") # Apply the Rytov approximation sinoRytov = odt.sinogram_as_rytov(sino) # Perform naive backpropagation
perfect sphere using 200 projections. Missing angle artifacts are visible along the :math:`y`-axis due to the :math:`2\pi`-only coverage in 3D Fourier space. .. _`GMM-field`: https://code.google.com/p/scatterlib/wiki/Nearfield """ import matplotlib.pylab as plt import nrefocus import numpy as np import odtbrain as odt from example_helper import load_data Ex, cfg = load_data("mie_3d_sphere_field.zip", f_sino_imag="mie_sphere_imag.txt", f_sino_real="mie_sphere_real.txt", f_info="mie_info.txt") # Manually set number of angles: A = 200 print("Example: Backpropagation from 3D Mie scattering") print("Refractive index of medium:", cfg["nm"]) print("Measurement position from object center:", cfg["lD"]) print("Wavelength sampling:", cfg["res"]) print("Number of angles for reconstruction:", A) print("Performing backpropagation.") # Reconstruction angles angles = np.linspace(0, 2 * np.pi, A, endpoint=False)