如何使用 deconvwnr 或其他反卷积方法对反卷积的输出信号施加约束?

How can I put a constraint on the output signal from deconvolution using deconvwnr or other deconvolution methods?

我想用点扩散函数对信号进行反卷积以检索 "ground truth" 信号。我知道ground truth大致是高斯分布的,应该是7x7像素。

Desired Output

这在我对原始信号进行反卷积时有效。然而,当我用插值改变信号然后尝试去卷积时,我得到了这个奇怪的周期性半高斯信号,它与点扩散函数(47 像素)的长度相同。

Actual Output

是否可以将输出尺寸限制为 7x7 图像?或者限制它使输出具有高斯分布? 这是代码。变量在保管箱中 link:

    deconvwnr(temp,sptint,0)

https://www.dropbox.com/s/r2ajzo52el6gy57/answers.mat?dl=0

编辑:如果维纳滤波器反卷积做不到,有没有可以的反卷积?或者,是否有一些数学方法可以使用我所拥有的恢复 7x7 高斯信号?

编辑 2:我附上了逗号分隔 sheet:https://www.dropbox.com/s/7tmrpsfbhaxixcj/Alexa%20Fluor%20647.csv?dl=0

我做的是生成高斯分布

w=116.4736
px=106.6667
truth  = fspecial('gaussian',7,w/px);

然后我会生成 sptint

load 'Alexa Fluor 647.csv';
spt = Alexa_Fluor_647(:,3);
sptint=interp1(300:900,spt,600:5:800);

然后我会生成临时文件

sptimg = conv2(truth,spt');
sptimg(:,end-(3-1):end)=[];
sptimg(:,1:3)=[];
sptimg2 = interp1(300:900,sptimg',600:5:800)';
temp=zeros(7,47)
temp(:,4:44)=sptimg2(:,:,1);

可以考虑加权平均。 使用滑动 window,您将 7 x 7 window 从 temp 的左侧移动到右侧,将数字乘以权重(对于 window 的 sptint)并迭代添加结果。

startAvg = 1:47-6;
avg = zeros(7);
for ii = 1:length(startAvg)
    avg = avg + temp(:,startAvg(ii):startAvg(ii)+6)*sptint(ii);
end
avg = avg/ii