python - 根据近似相对距离估计绝对位置

标签 python algorithm image-processing

我的问题如下:

我有一个平面上分散的点之间的相对 XY 距离列表,这些距离的测量存在一定的误差。 我已将一个点定义为原点,并且我想估计该引用系中所有其他点的绝对位置。 每个点至少有两条路径将它们链接到原点,并且由于测量误差,我从每条路径获得的绝对位置是不同的。 我想知道:

  • 这个问题有名字吗?
  • 您知道有一种算法可以很好地猜测绝对位置吗?

文本的其余部分只是详细信息,如果您已经清楚问题,则可以跳过。


这个问题的背景是我想从许多按顺序拍摄但位置不规则的较小图像中构建合成图像。我通过计算序列中每个图像之间的互相关性来计算第一组距离,从而对绝对位置进行第一次粗略估计。这些绝对位置存在很大的漂移,而本应完全重叠的图像却没有。 然后,我使用它计算每个重叠图像之间的互相关性,因此我现在拥有图像之间的距离网络,我希望能够使用它来细化绝对位置并获得更好的最终图像。

这是我制作的第一张合成图像: enter image description here

基础图像略透明并置于白色背景上。多个图像堆叠在同一位置 = 较暗的图像,没有数据 = 白色。彩色蛇是我用来计算第一个绝对定位的序列,每个片段都说明了它所在图像与下一个图像之间测量的距离,它从左下角开始。在左下角,我们可以看到两个图像覆盖了相同的角特征,但在 x 和 y 方向上都有 200 像素的误差。

我尝试使用自动拼接工具,但它们都失败了,因为许多图像普遍缺乏对比鲜明的特征。

最佳答案

为了简化描述,我假设这些点由复数表示。

您的问题可以这样表述:

我们有 n+1 个点,任意设置为 (0,0) 和 n 个“未知”点,并且您有 m 个噪声观测值,m(远)大于n

观察对应于点ij之间差异的(轻微)错误估计:

Y[k] = X[i] - X[j]

那么,关系集可以表示为:

Y = A X + N

其中X是未知点的向量,向量Y对应于观测值,A是定义观测值的矩阵,Y是定义观测值的矩阵>N代表观测值的误差。

第一种方法是 LS(最小二乘法)。

通过使用Moore-Penrose伪逆,我们可以得到LS估计:

X1 = (A^H A)^(-1) A^H Y

其中 A^H 是 A 的埃尔米特转置。由于这里 A 是实数,因此它对应于 A 的转置。这个估计最小化了

min norm of (AX - AX1)

另一种方法是假设N是方差为s2的加性高斯噪声。我们可以通过以下方式获得 MMSE/Wiener 估计:

X2 = (A^H A + s2 I)^(-1) A^H Y

其中 I 是大小为 n 的单位矩阵。此估计最小化:

min E (norm (X2 - X)) = min MSE (Mean Square error)

其中 E(.) 表示统计平均值(期望)。这是一种随机方法(我们最小化期望),与 LS 方法相反。

有时,我们不能假设噪声是高斯分布的,或者我们不知道方差。此外,根据矩阵 A 的奇异值,LS 估计可能看起来并不完全稳定。然后,有时会使用第三种方法:

X2 = (A^H A + lambda I)^(-1) A^H Y

其中 lambda 是一个(小的)松弛系数,以避免 LS 方法可能出现的不稳定。

注意:如果矩阵求逆过于复杂,并且观测误差相当小,当然可以使用迭代方法来改进估计。

关于python - 根据近似相对距离估计绝对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62959009/

相关文章:

python - 如何检查 MPL 3d 使用什么坐标系?

python - 枕头 python : Improve script performance

algorithm - 用给定的概率在MATLAB中计算协方差矩阵

python - 无法使用 Pillow 将图像调整为更大的尺寸?

python - 将 OpenCV 图像转换为黑白图像

visual-c++ - 使用 matchTemplate 使用 opencv 查找两个图像之间的变换、旋转和缩放量

python - 是否有针对 bool 列表的元素明智 bool 运算符的内置函数?

python - Redis 实现后 Django session 停止工作

java - 基数排序数字比较

寻找附近点的算法?