Tests for the projection_shifts functionality of iradon_sart.

This commit is contained in:
Jostein Bø Fløystad
2013-06-09 17:06:39 +02:00
parent 1e1dd180d2
commit d5f323eec0
@@ -330,6 +330,29 @@ def test_iradon_sart():
print('delta (2 iterations) =', delta)
assert delta < 0.015
np.random.seed(1239867)
shifts = np.random.uniform(-3, 3, sinogram.shape[1])
x = np.arange(sinogram.shape[0])
sinogram_shifted = np.vstack(np.interp(x + shifts[i], x, sinogram[:, i])
for i in range(sinogram.shape[1])).T
reconstructed = iradon_sart(sinogram_shifted, theta,
projection_shifts=shifts)
if debug:
from matplotlib import pyplot as plt
plt.figure()
plt.subplot(221)
plt.imshow(image, interpolation='nearest')
plt.subplot(222)
plt.imshow(sinogram_shifted, interpolation='nearest')
plt.subplot(223)
plt.imshow(reconstructed, interpolation='nearest')
plt.subplot(224)
plt.imshow(reconstructed - image, interpolation='nearest')
plt.show()
delta = np.mean(np.abs(reconstructed - image))
print('delta (1 iteration, shifted sinogram) =', delta)
assert delta < 0.025
if __name__ == "__main__":
from numpy.testing import run_module_suite