图像 (2D) 的 PSF(点扩散函数)
PSF (point spread function) for an image (2D)
我是图像分析新手(使用 Python),我想对我的数据(CT 扫描)应用 richardson_lucy 反卷积(来自 skimage)。为此,我通过特定软件估算了"number of voxels"中的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 更好),请写下来。
谁能帮帮我。
有类似问题,正在研究中。在我的例子中,如果我不使用 np.uint8
作为类型,它就不起作用。 CT 数据应该是 16 位,但只使用前 12 位(映射到 [-1024, 3096] 之间的值)。所以我必须将我的图像数据重新调整为 [0-255],然后再得到除黑色或白色以外的任何东西.
如果我理解正确,PSF 的总和应该始终为 1。我可以从你的问题中猜到你假设点扩散函数是一个有意义的高斯函数(95% 的值?)传播 6.7 像素。在那种情况下,您必须将 PSF 建模为高斯分布(这就是我来这里的目的)。
您可以使用中@FuzzyDuck描述的方法创建一个。
PSF = gkern(5,2)
这将使用@FuzzyDuck 提出的方法创建一个总和为 1 的高斯 5x5 核,西格玛为 2。请注意,点扩散函数可以应用多次,因此您必须对值进行一些试验 (或使用算法对其进行近似)。
我是图像分析新手(使用 Python),我想对我的数据(CT 扫描)应用 richardson_lucy 反卷积(来自 skimage)。为此,我通过特定软件估算了"number of voxels"中的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 更好),请写下来。
谁能帮帮我。
有类似问题,正在研究中。在我的例子中,如果我不使用 np.uint8
作为类型,它就不起作用。 CT 数据应该是 16 位,但只使用前 12 位(映射到 [-1024, 3096] 之间的值)。所以我必须将我的图像数据重新调整为 [0-255],然后再得到除黑色或白色以外的任何东西.
如果我理解正确,PSF 的总和应该始终为 1。我可以从你的问题中猜到你假设点扩散函数是一个有意义的高斯函数(95% 的值?)传播 6.7 像素。在那种情况下,您必须将 PSF 建模为高斯分布(这就是我来这里的目的)。
您可以使用
PSF = gkern(5,2)
这将使用@FuzzyDuck 提出的方法创建一个总和为 1 的高斯 5x5 核,西格玛为 2。请注意,点扩散函数可以应用多次,因此您必须对值进行一些试验 (或使用算法对其进行近似)。