【发布时间】:2016-07-15 02:38:27
【问题描述】:
使用 Matlab,我正在尝试解决 6 个三角形的仿射变换(请参阅 A 和 Aprime)...
三个三角形在A
triangle1: points 1,2,3 of A
triangle2: points 4,5,6 of A
triangle3: points 7,8,9 of A
其中 A 的 X/Y 坐标为:A.x = [x1 x2 x3; x4 x5 x6; x7 x8 x9]
和
A.y = [y1 y2 y3; y4 y5 y6; y7 y8 y9]
Aprim 中还有 3 个三角形。
triangle5:points 1,2,3 of Aprim
triangle6:points 4,5,6 of Aprim
triangle7:points 7,8,9 of Aprim
Aprim 的 X/Y 坐标为:Aprim.x = [xp1 xp2 xp3; xp4 xp5 xp6; xp7 xp8 xp9]
和 Aprim.y = [yp1 yp2 yp3; yp4 yp5 yp6; yp7 yp8 yp9]
我需要找到仿射变换,以这种方式将A 的每个三角形映射到Aprim 的三角形:
- t1 是将 A 的 triangle1 映射到 Aprim 的 triangle1 的仿射变换。
- t2 是将 A 的 triangle2 映射到 Aprim 的 triangle2 的仿射变换。
- t3 是将 A 的点 triangle3 映射到 triangle3 的仿射变换 四月的。
问题 #1 :在我的代码中,tform 只给我仿射变换 t3。我不知道如何更改它以了解 t1、t2、t3 的仿射变换。
问题 #2 :我的另一个问题是在 tform 矩阵中,哪些元素是平移、旋转、缩放值?如何找到缩放、旋转角度和平移值?
谁能帮我更正下面的matlab代码?如何解决t1、t2和t3?
我的代码是:
A.x=[309 367 295;273 268 298;295 367 298];
A.y=[292 259 277;228 253 225;277 259 225];
Aprim.x=[267 211 265;267 261 295;259 261 211];
Aprim.y=[301 222 325;301 270 306;213 112 222];
for i=1:3
A_xprim(1:3,i)= transpose(Aprim.x(i,1:3));
A_yprim(1:3,i)=transpose(Aprim.y(i,1:3));
Ax(1:3,i)= transpose(A.x(i,1:3));
Ay(1:3,i)=transpose(A.y(i,1:3));
tform = maketform('affine',[A_xprim(1:3,i) A_yprim(1:3,i)],[ Ax(1:3,i) Ay(1:3,i)]);
end
【问题讨论】:
-
您是否有其他人可以快速为您检查的代码尝试?如果您展示您的尝试,您将获得更快的答案。
-
我不使用 Matlab,所以无法帮助编写代码。这个 manual page 可能会帮助您解决变换矩阵问题...
标签: matlab image-processing matrix geometry coordinate