像素点扩散函数(PSF)对图像(2D)的影响

2024-05-22 20:21:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我是图像分析的新手(使用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更好),就写下来。在

谁能帮帮我吗。在


Tags: 函数fromio图像importimg参数richardson
1条回答
网友
1楼 · 发布于 2024-05-22 20:21:43

有类似的问题,而且还在研究。在我的例子中,如果不使用np.uint8作为类型,它就不能工作。CT数据应为16位,但仅使用前12位(映射到[-10243096]之间的值)。所以我不得不把我的图像数据重新缩放到[0-255],然后再把它变成黑色或白色。在

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

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

PSF = gkern(5,2)

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

相关问题 更多 >

    热门问题