通过激光光斑尺寸展宽的信号去卷积

信息处理 反卷积
2022-02-13 13:49:59

我有一个信号,我使用聚焦激光通过光学方式测量。激光扫描微观特征(步长为 0.33 微米),我将测量结果绘制为距离的函数(x 刻度为微米):

信号图像:

在此处输入图像描述

我对我正在测量的特征的宽度感兴趣,但是在这种情况下,宽度似乎与激光光斑尺寸相同(甚至更小)。这导致信号为高斯形状,可能只是激光光斑的形状。但我不能确定,因为我正在尝试测量此功能的宽度。特征本身给出高斯响应是完全合理的,我希望它不是一个非常尖锐的边缘。但我正在尝试确定边缘的精确程度,并且激光光斑尺寸现在受到限制。

假设该特征非常薄且锐利,那么测量确实会产生这种高斯形状。然而,这个特征绝对不是无限尖锐的,我相信我可以通过使用反卷积更准确地测量它的形状。

我试图通过扫描绝对 100% 清晰的特征来测量激光光斑尺寸(我猜这将是系统响应函数?)。如果一切都是完美的,那么来自它的信号将是一个阶跃函数,但当然由于激光光斑尺寸大,我实际上得到了一种误差函数形状,我相信我可以从中确定激光光斑尺寸:

锐边信号图像:

在此处输入图像描述

除非我弄错了,适合的参数 C 给了我 1/e^2 的光束宽度(0.785 微米)。我想我可以用它来形成系统响应函数,假设我的激光束是高斯的(这可能不是真的,但这是我能做的最好的)。

我测量的原始信号应该是实际特征和这个高斯系统响应的卷积,所以我也应该能够用同样的高斯系统响应对信号进行反卷积,从而获得更好的特征测量,对吧?

我该怎么做呢?我有原始信号数据(图 1,距离与信号),我可以假设我的激光器的高斯光斑作为系统响应函数,其尺寸是从完美锐利边缘的测量中获得的(图 2),直到我了解(仅此而已……)这应该足以进行反卷积吗?

1个回答

不久前这里有一个类似的问题,概念上类似的问题。
链接到前面的问题。

那是关于用电子束扫描目标。问题是如果使用已知目标,如何确定光束的真实形状。你似乎有一个已知形状的梁。因为您处理的是单一维度而不是二维形状,所以您会更容易一些。

最简单的开始方法是查看 Matlab deconv 方法的示例。

基本上,您需要两个向量 - 一个代表光束,另一个代表用光束扫描的对象。将它们输入 deconv 方法,您将得到一个仅表示对象的向量。

一种方法是为已知大小的对象创建一个向量 - 假设您有一个正好 5 微米宽的样本。你制作一个代表 10 微米的矢量,然后在中间放置一个 5 微米宽的台阶。现在你扫描一个真正的 5 微米宽的物体,然后用你生成的 5 微米向量去卷积那个向量。现在,您可以在测量未知物体时使用光束矢量。

如果你没有 Matlab,你可以使用Gnu Octave,它几乎就像 Matlab 一样工作 - 许多 Matlab 示例 Just Work in Octave。

八度代码示例:

calibration_target=[1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1];
simulated_beam=[1,1,2,2,2,1,1];
calibration_scan=conv(simulated_beam,calibration_target,"full");
[recovered_beam_shape,beam_remainder]=deconv(calibration_scan,calibration_target);

test_item=[0,0,0,1,1,0,0,0];
simulated_testscan=conv(simulated_beam,test_item,"full");
corrected_test_item_scan=deconv(simulated_testscan,recovered_beam_shape);

subplot(4,2,1);
plot(calibration_target);
title("calibration target");

subplot(4,2,2);
plot(calibration_scan);
title("simulated scan of target with simulated beam");

subplot(4,2,3);
plot(simulated_beam);
title("simulated beam");

subplot(4,2,4);
plot(recovered_beam_shape);
title("recovered beam shape");

subplot(4,2,5);
plot(simulated_testscan);
title("simulated testscan");

subplot(4,2,6);
plot(corrected_test_item_scan);
title("corrected test item scan");

subplot(4,2,7);
plot(test_item);
title(" test item true shape");

结果:

结果


添加以回答评论中的问题。

  1. 卷积和反卷积作用于均匀间隔的向量。您所需要的只是强度值 - 放下您的 x 坐标。如果您的数据点不是均匀分布的,那么您就有问题了。如果您对点进行插值以获得均匀的间距,那么您可能会引入一些模糊性。我不知道这会对反卷积产生多大的不良影响。至于确定校正光束的矢量,我会扫描一个具有已知形状和锐利边缘的目标。然后我将扫描数据与目标的理想图像进行反卷积 - 基本上是一个与扫描对象一样宽的向量,目标外部区域的值为零,目标内部的值为 1。例如,以 1 微米步长扫描 5 微米宽的目标将是 [0,0,0,0,0,1,1,1,1,1,0,0,0,0,
  2. “大小”无关紧要 - 假设您的意思是幅度或强度。我将缩放生成的数据以使 1 代表最大强度的扫描区域。如果您的意思是元素的数量,那么这很重要。您需要进行足够多的过度扫描,以确保您的光束实际上离开目标到每一侧。如果您没有进行足够的过度扫描,那么您将无法获得目标的真实图像。