3
用傅里叶方法进行层析成像重建的代码有什么问题?
最近,我一直在研究层析重建算法。我已经有了FBP,ART,类似于SIRT / SART的迭代方案甚至使用直线线性代数的慢速工作实现(慢!)。 这个问题与这些技术无关 ; “为什么有人会那样做,这里是一些FBP代码”这样的形式的答案并不是我想要的。 我要对该程序执行的下一件操作是“ 完成设置 ”并实现所谓的“ 傅立叶重构方法 ”。我对此的理解基本上是将1D FFT应用于正弦图“曝光”,将其作为放射状的“轮辐”安排在2D傅立叶空间中(这是非常有用的事情,直接根据中心切片定理可以得出) ,从这些点插值到该2D空间中的规则网格,然后应该可以进行傅立叶逆变换以恢复原始扫描目标。 听起来很简单,但是我运气不佳,无法进行任何看起来像原始目标的重建。 下面的Python(numpy / SciPy / Matplotlib)代码是我想做的最简洁的表达式。运行时,它将显示以下内容: 图1:目标 图2:目标的正弦图 图3:FFT编辑的正弦图行 图4:第一行是从傅立叶域正弦图行内插的二维FFT空间;最下面一行是(出于比较目的)目标的直接2D FFT。这是我开始变得可疑的地方。从正弦图FFT插值的图看起来与通过直接对目标进行2D FFT绘制的图相似...但有所不同。 图5:图4的傅立叶逆变换。我希望它比实际更能被识别为目标。 有什么想法我做错了吗?不知道我对傅立叶方法重构的理解是否存在根本性缺陷,或者我的代码中仅存在一些错误。 import math import matplotlib import matplotlib.pyplot as plt import numpy as np import scipy.interpolate import scipy.fftpack import scipy.ndimage.interpolation S=256 # Size of target, …