Algorithm 如何用y'确定旋转角度和旋转中心;坐标未知

Algorithm 如何用y'确定旋转角度和旋转中心;坐标未知,algorithm,matlab,image-processing,imagej,Algorithm,Matlab,Image Processing,Imagej,我有一组20个已知的坐标点{x,y},它被提交到一个未知中心和角度的刚性旋转(和小平移) 在结果中,我知道每个20点的终点{x',?},其中y'坐标未知 使用Matlab,当初始物体及其变换已知时,可以使用多种方法计算刚体变换 我正在考虑测试耦合{Theta,Xc,Zc},直到结果足够令人满意(参数的范围相对较小),但这将是资源密集型的 如果您能为我指出一个更优雅的现有解决方案,或者即使我的方法是可行的,我将不胜感激。您有仿射变换 P * [A] = P' 对于您的情况,仿射矩阵包含四个未知值

我有一组20个已知的坐标点{x,y},它被提交到一个未知中心和角度的刚性旋转(和小平移)

在结果中,我知道每个20点的终点{x',?},其中y'坐标未知

使用Matlab,当初始物体及其变换已知时,可以使用多种方法计算刚体变换

我正在考虑测试耦合{Theta,Xc,Zc},直到结果足够令人满意(参数的范围相对较小),但这将是资源密集型的


如果您能为我指出一个更优雅的现有解决方案,或者即使我的方法是可行的,我将不胜感激。

您有仿射变换

P * [A] = P'
对于您的情况,仿射矩阵包含四个未知值-Cos(Fi)、Sin(Fi)(它们不是真正独立的)、XTerm和YTerm,其中

XTerm = RotCenterX * (1 - Cos(Fi)) + RotCenterY * Sin(Fi) + ShiftX
你可以建立方程组

XTerm + X(i) * Cos(Fi) - Y[i] * Sin(Fi) = X'(i)
并用奇异值分解法求解未知量Cos(Fi)、Sin(Fi)、XTerm

或者选择方程的非退化子集,用任何方法(高斯等)求解

请注意,解决方案可能不存在(退化情况)

编辑:

然后您可以在
XTerm
方程中替换
Cos(Fi)
Sin(Fi)
,但无法从单个方程中获得三个未知数(
RotCenterX、RotCenterY、ShiftX
)。而且没有办法从给定的数据中获得
ShiftY

欢迎光临!你能表现出你的努力吗?看看这个来改进你的问题。我明白了主要意思。虽然我不明白关于ShiftX的XTerm是什么?在你的第二个等式中,XTerm似乎取代了ShiftX?不,XTerm由一些部分组成-旋转取决于一个部分,旋转后再移动。问题是我们不能把这些部分分开。即使我们没有位移,我们也只有一个关于RotCenterX,RotCenterY的方程