我目前正在从事一个涉及使用电子枪的项目,如果知道从电子枪射出的电子的点形状(距离电子束中心某个 x、y 处的电子频率),那就太好了)。我们目前的假设是光束的光斑形状有点高斯。
我们有一个连接到探测器的皮安计,该探测器输出与撞击探测器的电子数量相对应的电流。检测器是具有一定半径 R 的圆形。
如果我没记错的话,扫描光束并记录皮安计的读数将产生一个矩阵,该矩阵是光束点形状的卷积和一个 2D 阶跃函数,该函数在 R 之外为 0,在 R 内为非零。我看过通过一些关于与具有高斯模糊的图像相关的反卷积的先前问题,看起来这非常相似,除了函数是阶跃函数而不是高斯函数。
我已经尝试使用 Matlab 的 conv2、FFT2 和 iFFT2 函数来获得该线程建议的反卷积,但它会产生如下所示的内容:
产生这个的代码是:
mu = [0 0];
Sigma = [1 0; 0 1];
x = -3:.2:3;
[X1,X2] = meshgrid(x,x);
F = mvnpdf([X1(:) X2(:)],mu,Sigma);
F = reshape(F,length(x),length(x));
for i=1:31
for j=1:31
if x1(i)^2+x2(i)^2 >= 4
circ(i,j)=0;
else
circ(i,j)=1;
end
end
end
conv = conv2(F,circ,'same');
D = ifft2( fft2(conv) ./ fft2(circ) );
surf(x1,x2,D);
尝试对阶跃函数进行反卷积是否存在固有问题?另外,我尝试使用全卷积,但这似乎产生了更奇怪的反卷积......
我只是以错误的方式解决这个问题吗?(我已经包含了 python,因为如果存在解决方案,我更愿意使用 python,但 matlab 也可以)