実験で得たサイノグラムから断面画像を得る方法

Python初心者です。

下記のURLを参考にしています。
https://scikit-image.org/docs/stable/auto_examples/transform/plot_radon_transform.html#reconstruction-with-the-simultaneous-algebraic-reconstruction-technique

上記のURLではimage(断面画像)がshepp_logan_phantomと分かっており、
それをラドン変換してサイノグラムを描いています。
実際には正解の断面画像が分からないときに、実験でサイノグラムを描いて、それを再構成して断面画像を得ると思います。
そこで、shepp_logan_phantomのサイノグラムが与えられているときに、
断面画像を再構成するプログラムをPythonで書こうと思いました。
以下のコードで、プログラムは動きますが、結果が正しくはありませんでした。

どこをどう直せばよいか分からないので教えてください。
■ reconstruction_fbp = iradon(sino, filter_name='ramp')
の辺が怪しい気がしています・・・

(コードここから)
import numpy as np
import matplotlib.pyplot as plt
import cv2
import os
from skimage.transform import iradon

sino = cv2.imread('sinogram_SLphantom.png', 0)
cv2.imshow('sinogram', sino)
cv2.waitKey(0)
####ここまでは正しい結果が出ます(サイノグラムが表示されます)

reconstruction_fbp = iradon(sino, filter_name='ramp')
imkwargs = dict(vmin=-0.2, vmax=0.2)
fig, ax1 = plt.subplots(1, 1, figsize=(8, 8),
sharex=True, sharey=True)
ax1.set_title("Reconstruction\nFiltered back projection")
ax1.imshow(reconstruction_fbp, cmap=plt.cm.Greys_r)
plt.savefig('FBP.png')
plt.show()

コメントを投稿

0 コメント