MatLab和Octave函数之间的区别cp2tform

时间:2016-05-27 15:49:15

标签: matlab octave transformation

我在MatLab中有一个函数cp2tform。我假设Octave中的函数cp2tform应该提供与MatLab中的函数相同的输出。

问题是在某些情况下输出是不同的。

示例:

MatLab代码:

A = [1,5; 8,7; 10,15];
B = [0,7; 0,4; 0,5];
cp2tform(A,B,'nonreflective similarity')

输出:

  -0.148848198464265  -0.305965741287655                   0
   0.305965741287655  -0.148848198464265                   0
  -1.810986414648551   8.610750147666863   1.000000000000000

八度代码:

A = [1,5; 8,7; 10,15];
B = [0,7; 0,4; 0,5];
cp2tform(A,B,"nonreflective similarity")

输出:

-0.05960  -0.12252   0.00000
 0.12252  -0.05960   0.00000
-0.72517   6.64570   1.00000

我的问题

我做错了什么?

1 个答案:

答案 0 :(得分:4)

这是因为您无法使用'nonreflective similarity'描述各点之间的转换。

正确答案是:MATLAB和OCTAVE都错了。

来自MATLAB的

'nonreflective similarity'

  

当输入图像中的形状不变时,使用此变换,   但是图像因翻译的某种组合而扭曲,   旋转和缩放。直线保持笔直,平行   线仍然是平行的。

enter image description here

但如果你看看你的观点:

enter image description here

您无法将三角形转换为具有旋转平移和缩放的线条。因此,计算失败。