From b61ff7513efd53d1fdc330b8b84ee75777a8b0cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jostein=20B=C3=B8=20Fl=C3=B8ystad?= Date: Wed, 19 Jun 2013 00:12:14 +0200 Subject: [PATCH] transform.iradon: Refactoring for shorter functions. Will facilitate testing. --- skimage/transform/radon_transform.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/skimage/transform/radon_transform.py b/skimage/transform/radon_transform.py index 4bd03fdb..8ed11cc7 100644 --- a/skimage/transform/radon_transform.py +++ b/skimage/transform/radon_transform.py @@ -113,6 +113,14 @@ def radon(image, theta=None, circle=False): return out +def _sinogram_circle_to_square(sinogram): + size = int(np.ceil(np.sqrt(2) * sinogram.shape[0])) + sinogram_padded = np.zeros((size, sinogram.shape[1])) + pad = int(np.ceil((size - sinogram.shape[0] - 1) / 2)) + sinogram_padded[pad:pad + sinogram.shape[0], :] = sinogram + return sinogram_padded + + def iradon(radon_image, theta=None, output_size=None, filter="ramp", interpolation="linear", circle=False): """ @@ -177,12 +185,7 @@ def iradon(radon_image, theta=None, output_size=None, output_size = int(np.floor(np.sqrt((radon_image.shape[0])**2 / 2.0))) if circle: - radon_size = int(np.ceil(np.sqrt(2) * radon_image.shape[0])) - radon_image_padded = np.zeros((radon_size, radon_image.shape[1])) - radon_pad = int(np.floor((radon_size - radon_image.shape[0] - 1) / 2.)) - radon_image_padded[radon_pad:radon_pad + radon_image.shape[0], :] \ - = radon_image - radon_image = radon_image_padded + radon_image = _sinogram_circle_to_square(radon_image) n = radon_image.shape[0]