首页 > 解决方案 > 仅沿一个方向测量两个图像之间的偏移

问题描述

我必须测量两个单色图像之间的偏移。

这些图像实际上是校准前的光谱,非常嘈杂并且充满了不需要的特征,但它们基本上看起来像下面这样光谱的抽象图像

知道在不同的图像之间,它们沿 x 方向移动,但不会沿 y 方向移动。我想知道它们之间沿 x 方向的偏移量。

幸运的是,我在 , 中找到了一个函数skimageregister_translation它可以用于任意亚像素精度。但问题是,我只想知道沿 x 方向的偏移,并且我希望得到的 y 方向偏移为 0,但程序发现同时向 x 和 y 偏移,大概是沿着垂直于特征。(图中标注为蓝色箭头) 像素坐标和

所以,我想知道:

  1. 是否有任何功能或包python可以仅测量两个图像之间沿一个方向的偏移,或者甚至有任何先验知识?

  2. 找到两个嘈杂图像之间的变化的正确方法是什么?在 FFT 空间中找到最大的互相关值会起作用吗?

标签: pythonimage-processingscikit-imageimage-registration

解决方案


register_translation在这种情况下,如果给你 xy 移位,应该做一些简单的数学运算,无论是向量还是分量形式。如果不存在 y 偏移,您可以计算所需的 x 移动,这正是您想要的。我正在旅行,所以很遗憾现在不能给你图表,建议把三角形画出来。

所需的额外 x 位移 ( x_extra) 定义为:

x_extra = y * tan[arctan(y_shift/x_shift)]

简化为:

x_extra = y_shift^2 / x_shift

因此,x 的总偏移为:

x_shift_total = x_shift + x_extra

x_shift 由register_translation.

如果你然后移动imageAx_shift_total它应该与 对齐imageB,假设x_shift给定的register_translation是正确的。

@jni我很想将其作为一个选项来实现register_translation


推荐阅读