利用Matlab,我試圖解決的6個三角形(見A
和Aprime
)仿射變換...如何查找三角形之間的仿射變換?
3三角形在A
triangle1: points 1,2,3 of A
triangle2: points 4,5,6 of A
triangle3: points 7,8,9 of A
其中,X/Y A的座標爲:
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
其中,X/Y Aprim的座標爲:
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的三角形1映射到Aprim的三角形1的仿射變換。
- t2是將A的三角形2映射到Aprim的三角形2的仿射變換。
- t3是仿射變換,將A點的三角形3映射到Aprim的三角形3 。
問題#1:在我的代碼,TForm的只給我仿射變換T3。我不知道如何改變它以知道t1,t2,t3的仿射變換。
問題#2:我的其他問題是在tform矩陣中,哪些元素是平移,旋轉,縮放值?如何找到縮放比例,旋轉角度和平移值?
任何人都可以幫我糾正我下面的matlab代碼嗎?如何解決t1,t2 and 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,所以我不能幫助代碼。這** [手冊頁](http://www.mathworks.com/help/images/performing-general-2-d-spatial-transformations.html#f12-33299)**可能會幫助您瞭解該變換矩陣問題... –