将网格拟合到 STM 图像

计算科学 回归 计算机视觉 模式识别
2021-11-26 09:32:05

假设我有一个 STM 图像的扫描(非常像你在这里看到的东西)。假设我有一个简单的方形格子,格子参数为 a。

我想做的是在数字上找到以像素为单位测量的晶格参数,假设校准是在其他地方完成的。

我的第一个想法是创建一个具有点阵常数 a 的点网格的函数,网格开始的一些偏移量以及点阵旋转的一些角度。然后我将每个网格点的 STM 图像的值相加并返回。然后我会使用一些优化工具箱(MATLAB、Python、...)来找到使这个总和最大化的参数。

不幸的是,我在这样做时遇到了问题。例如,网格点是根据角度、晶格常数和偏移量计算得出的,然后四舍五入为整数值,这样我就可以实际处理我的 2D 图像的形式

图像数据[x][y]

但是大多数优化例程将继续仅非常轻微地改变参数,因此圆角坐标不会改变。然后程序假设它已经找到了一个局部最小值/最大值,因为如果参数只是轻微改变,函数值不会改变。

这种方法的稳定性还有其他问题,所以我想知道是否有更复杂的方法以自动化方式执行此操作。我总是可以获取图像数据的 FT 并手动读取晶格常数,但我仍然想在我的图像数据上放置一个最佳网格覆盖,因此我必须优化角度和偏移。

1个回答

您正在做的类似于傅立叶变换:您将图像投影到函数上(eikx在 FT 的情况下,在你的情况下是一种周期性的“块”功能)。它可能有点慢,但是您可以计算每个可能的格子函数的格子函数和图像的内积,然后找到最大值。

如果这不起作用,则有一个技巧可以使 FT 在您的情况下工作。您可以选择某个值,然后将图像中低于该值的所有部分归零。如果图像中的缺陷大多是低幅度的,这可以确保最大的 FT 峰值是正确的。