1

我是图像分析方面的新手(使用 Python),我想在我的数据(CT 扫描)上应用richardson_lucy 反卷积(来自 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 更好),请写出来。

谁能帮帮我吗。

4

1 回答 1

0

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

如果我理解正确,PSF 的总和应该始终为 1。我可以从您的问题中猜到,您假设点扩散函数是具有 6.7 像素的有意义(95% 的值?)扩散的高斯函数。在这种情况下,您必须将 PSF 建模为高斯(这就是我来这里的目的)。

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

PSF = gkern(5,2)

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

于 2018-04-19T15:51:22.033 回答