07 สิงหาคม 2553

ซอร์สโค้ด Matlab การทำอินเวอร์ส Transformation ของการแม็บ สีเหลี่

ซอร์สโค้ด Matlab การทำอินเวอร์ส Transformation ของการแม็บจุดใน สีเหลี่ยมใดๆ ไปสีเหลี่ยมใดๆ
Keyword: การแม็บจุดจากสี่เหลี่ยมใดๆไปยังสี่เหลียมใด, Quadrilateral to Quadrilateral mapping, inverse, matlab, Algorithm, Source Code

ถ้าหากเรามีพารามิเตอร์  a-h ที่แปลงจาก สีเหลี่ยมQ ไป สีเหลี่ยมR แล้ว
หากต้องการหาพารามิเตอร์ a-h ที่แปลงจาก สีเหลี่ยมR ไป สีเหลี่ยมQ
สามารถใช้วิธีการ Inverse ได้
การทำ Inverse มี 2 วิธี
1 หาอินเวอร์สเมตริกธรรมดาตรงๆ
ข้อดี ง่ายตรงไปตรงมาก ได้ค่าที่ถูกต้อง
ข้อเสีย ใช้เวลาในการคำนวณมาก
input: Transformation matrix ที่มีพารามิเตอร์ a-h
output: Transformation matrix ที่มีพารามิเตอร์ A-H
%% inverse simple  
% map destination quadrilater to source qudrilater
iTf = inv(Tf);
A = iTf(1,1);
B = iTf(1,2);
C = iTf(1,3);
D = iTf(2,1);
E = iTf(2,2);
F = iTf(2,3);
G = iTf(3,1);
H = iTf(3,2);
I = iTf(3,3);

% Ex sample
% use point from previous step (x,y)
% if inverse correct (u,v) must close to (154,154)

W = G*x + H*y + I;
u = (A*x + B*y + C) / W
v = (D*x + E*y + F) / W

2 หาอินเวอร์แบบใช้สูตรClose From(ไม่ทราบที่มาขออภัยด้วย search เจอในเน็ต)
ข้อดี ใช้เวลาคำนวนน้อย เขียนโปรแกรมง่าย
ข้อเสีย ได้ค่าที่ใกลเคียง มี Error เพียงเล็กน้อย
input: Transformation matrix ที่มีพารามิเตอร์ a-h
output: Transformation matrix ที่มีพารามิเตอร์ A-H
%% inverse faster but have a little error
% Reference Mapping to Polygon Mesh Object
% invF = (1/ae-bd)*[ ei?fh   ch?bi   bf?ec ]
%                  | fg?di   ai?cg   dc?af |
%                  [ dg?eg   bg?ah   ae?bd ]
A = e*i - f*h;
B = c*h - b*i;
C = b*f - e*c;
D = f*g - d*i;
E = a*i - c*g;
F = d*c - a*f;
G = d*g - e*g;
H = b*g - a*h;
I = a*e - b*d;


iTf = (1/(a*e - b*d))* [A B C; D E F; G H I];
A = iTf(1,1);
B = iTf(1,2);
C = iTf(1,3);
D = iTf(2,1);
E = iTf(2,2);
F = iTf(2,3);
G = iTf(3,1);
H = iTf(3,2);
I = iTf(3,3);

% Ex sample
% use point from previous step (x,y)
% if inverse correct (u,v) must close to (154,154)

W = G*x + H*y + I;
u = (A*x + B*y + C) / W
v = (D*x + E*y + F) / W

ดาวน์โหลด Source Code

ข้อมูลอื่นๆที่เกี่ยวข้อง
การหา Transformation Matrix การแม็บจุดจากสี่เหลี่ยมใดๆไปยังสี่เหลียมใด

ไม่มีความคิดเห็น: