Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从近似相对距离估计绝对位置_Python_Algorithm_Image Processing - Fatal编程技术网

Python 从近似相对距离估计绝对位置

Python 从近似相对距离估计绝对位置,python,algorithm,image-processing,Python,Algorithm,Image Processing,我的问题如下: 我有一个平面上分散的点之间的相对XY距离的列表,这些点的测量有一定的误差。 我已将一个点定义为原点,我想估算该参考系中所有其他点的绝对位置。 每个点至少有两条路径将它们链接到原点,由于测量误差,我从每条路径获得的绝对位置是不同的。 我想知道: 这个问题有名字吗 你知道一种算法可以很好地猜测绝对位置吗 文本的其余部分只是一些细节,如果问题已经很清楚,您可以跳过这些细节 这个问题的背景是,我想从大量按顺序但不规则位置拍摄的较小图像中构建一个合成图像。我通过计算序列中每个图像之间

我的问题如下:

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

  • 这个问题有名字吗
  • 你知道一种算法可以很好地猜测绝对位置吗
文本的其余部分只是一些细节,如果问题已经很清楚,您可以跳过这些细节


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

这是我制作的第一张合成图像:

基本图像是半透明的,并放在白色背景上。多个图像堆叠在同一位置=较暗的图像,无数据=白色。colorfull snake是我用来计算第一个绝对定位的序列,每个片段显示了它所在的图像和下一个图像之间的距离,它从左下角开始。在左下角,我们可以看到两幅图像,它们覆盖了相同的角点特征,但在x和y方向上都存在200像素的误差


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

我不知道这个问题的名称,但可以找到最小化误差平方和的解决方案


您已经在原点处固定了第一个点。您可以坚持第二个点位于x轴上。这就产生了这样一个点列表:
(0,0),(0,y1),(x2,y2),(x3,y3),…,(xn,yn)
。现在,您只需编写一个函数,它接受
[y1,x2,y2,x3,yx,…,xn,yn]
并返回误差平方和。优化它。
BFGS
方法可能是一个很好的选择。

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

你的问题可以这样表述:

我们有n+1个点,任意设置为(0,0)和n*未知“点,有m个噪声观测值,m比n大(很多)

观察结果对应于对点i和点j之间差异的(轻微)错误估计:

然后,关系集可以表示为:

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

第一种方法是最小二乘法

通过使用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方法可能的不稳定性


注意:如果矩阵反演太复杂,并且观测误差很小,那么当然可以使用迭代方法来改进估计。

确切地说,XY距离是什么?这似乎有点类似于从运动中产生的SLAM和曲面。@Damien沿X轴的距离和沿Y轴的距离。在换句话说:一个点相对于另一个点的位置。因此有符号距离,即向量AB?@Damien是的,准确地说我不会说谎:我需要一点时间来计算你的答案……但我发现你作为线性代数问题的重新表述非常有趣!谢谢!
X2 = (A^H A + lambda I)^(-1) A^H Y