图像的PSF(点扩散函数)(2D)

时间:2017-12-01 02:42:58

标签: python image-processing blur deconvolution

我是图像分析的新手(使用Python),我想在我的数据(CT扫描)上应用richardson_lucy deconvolution(来自skimage)。出于这个原因,我估计了PSF中的体素数量"通过特定的软件。它的价值大约是6.73体素,但我不知道如何将它作为函数中的参数。

该函数使用PSF参数作为ndarray,所以我尝试了这样:

from skimage import io
from pylab import array
img = io.imread ("Slice1.tif")
import skimage.restoration as rst
PSF = array (6.7)
img_dbl = rst.richardson_lucy (img, PSF, iterations=10)

它显示了此错误:IndexError: too many indices for array

在CT扫描中,两种不同材料之间的模糊可以与高斯PSF相关联。如果你有更多关于去模糊的技巧(可能比RL更好),那就写下来吧。

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

有类似的问题,仍然在研究它。就我而言,如果我没有使用np.uint8作为类型,它就无法工作。 CT数据应该是16位,但只使用前12位(映射到[-1024,3096]之间的值。所以我必须将我的图像数据重新缩放到[0-255],然后才能获得除黑色或白色之外的任何值

如果我理解正确,PSF的总和应该总是1.我可以从你的问题中猜出,你认为点扩散函数是一个有意义的(95%的值?)传播的高斯函数6.7像素。在这种情况下,你必须将PSF建模为高斯(我来这里的目的)。

您可以使用this post中的@FuzzyDuck描述的方法创建一个。

PSF = gkern(5,2)

这将使用@FuzzyDuck提出的方法使用sigma为2创建高斯1的高斯5x5内核。注意,点扩散函数可以应用多次,因此您必须对这些值进行一些实验(或使用近似的算法。

相关问题