如何使用 deconvwnr 或其他反卷积方法对反卷积的输出信号施加约束?
How can I put a constraint on the output signal from deconvolution using deconvwnr or other deconvolution methods?
我想用点扩散函数对信号进行反卷积以检索 "ground truth" 信号。我知道ground truth大致是高斯分布的,应该是7x7像素。
这在我对原始信号进行反卷积时有效。然而,当我用插值改变信号然后尝试去卷积时,我得到了这个奇怪的周期性半高斯信号,它与点扩散函数(47 像素)的长度相同。
是否可以将输出尺寸限制为 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
我想用点扩散函数对信号进行反卷积以检索 "ground truth" 信号。我知道ground truth大致是高斯分布的,应该是7x7像素。
这在我对原始信号进行反卷积时有效。然而,当我用插值改变信号然后尝试去卷积时,我得到了这个奇怪的周期性半高斯信号,它与点扩散函数(47 像素)的长度相同。
是否可以将输出尺寸限制为 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