帮助解卷积分布在相邻像素上的光子读数

信息处理 图像处理 反卷积
2022-02-14 03:44:56

我正在构建一个辐射探测器,它收集 CCD 像素中的光子,我们可以将光子的能量与像素的强度联系起来。为了测试探测器,我采用了 Iron 55 的以下光谱,预计在 6 keV 处有一个单峰:

在此处输入图像描述

较低能量值的尾巴很有趣,因为它不应该存在。仔细观察这个范围内的像素,我发现它们彼此相邻聚集,似乎来自单个光子的能量分布到多个相邻像素中。

在此处输入图像描述

我对通过将这些像素收集在一起获得更清晰光谱的可能性很感兴趣。我可以尝试手动遍历每个像素并进行聚类,但我认为更优雅的方法是使用简单的点扩散函数对图像进行反卷积。在这个反卷积的结果中,我需要两件事是真实的:

  1. 系统的能量应该是守恒的,所以像素的总和(范数)应该是守恒的。L1
  2. 不应该有负像素强度,因为那些是非物理的。

我这样做了,使用具有半像素标准偏差的高斯 PSF。但是,我发现我要么需要违反我的要求的条件 1,要么违反我的要求的条件 2。仅使用具有范数 1 的高斯 PSF 来保存能量,就可以得到如下图:L1

在此处输入图像描述

白色像素是负的、非物理的值。在这一点上,我很困惑,但也对这个问题很着迷,因为它似乎应该有一个干净的解决方案。有什么建议吗?

1个回答

有一些工作可以从称为超分辨率的平滑信号中解析点源,以及一些使用凸编程解决它的优雅方法。这个想法是,如果你知道你的信号由尖峰(单点能量)组成,你可以从平滑的信号中解决它们,即使平滑会导致尖峰之间的干扰。

我在博士期间使用这种方法从低通滤波信号中找到一维尖峰的幅度,使用这里发表的研究(不是我的)。我没有像您那样查看 2D 信号,但我记得已经对其进行了一些工作,因此您也许可以找到一些代码。

对于您的方法,我猜测会出现负像素,因为您的 PSF 并未完全模拟涂抹

简单的东西呢:

  • 假设涂抹发生在 3 x 3 半径内。
  • 使用 3 x 3 过滤器对图像进行卷积。这将添加该区域中的所有值。
  • 在原始图像中找到 3 x 3 半径内的局部最大值点。
  • 将这些点的值替换为卷积图像的值,其余的为零。