หากวัตถุของคุณมี 6 จุดที่รู้จักกัน (พิกัด 3D ที่รู้จัก,และ ) คุณสามารถคำนวณตำแหน่งของกล้องที่เกี่ยวข้องกับระบบพิกัดวัตถุX,YZ
ก่อนพื้นฐานบางอย่าง
พิกัดที่เป็นเนื้อเดียวกันคือการนำเสนอเวกเตอร์ของยูคลิดพิกัดซึ่งเราได้ต่อท้ายเรียกว่าสเกลแฟกเตอร์ดังนั้นพิกัดที่เป็นเนื้อเดียวกันคือ T ในการคำนวณของคุณให้พยายามเก็บบ่อยที่สุดเท่าที่จะทำได้ (หมายความว่าคุณ "ทำให้ปกติ" พิกัดที่เป็นเนื้อเดียวกันโดยการหารด้วยองค์ประกอบสุดท้าย: ) นอกจากนี้เรายังสามารถใช้การนำเสนอที่เป็นเนื้อเดียวกันสำหรับจุด 2 มิติเช่น (จำได้ว่าและ(X,Y,Z)ωX=ω[XYZ1]Tω=1X←Xωx=ω[XY1]ω,X,YZแตกต่างกันไปในแต่ละจุดไม่ว่าจะเป็นแบบ 2D หรือ 3D) งานนำเสนอที่เป็นเนื้อเดียวกันทำให้การคำนวณง่ายขึ้น
เมทริกซ์ของกล้องคือเมทริกซ์การฉายจากโลก 3 มิติไปยังเซ็นเซอร์ภาพ:3×4
x=PX
โดยที่เป็นจุดที่เซ็นเซอร์ภาพ (มีหน่วยพิกเซล) และเป็นจุด 3D ที่ฉาย (สมมติว่ามันมีหน่วยเป็นมิลลิเมตร)xX
เราจำได้ว่าครอสโปรดัคระหว่าง 3 เวกเตอร์สองตัวสามารถนิยามเป็นเมทริกซ์ - เวกเตอร์ - การคูณเช่น:
v×u=(v)xu=⎡⎣⎢0v3−v2−v30v1v2−v10⎤⎦⎥u
นอกจากนี้ยังมีประโยชน์ที่จะต้องทราบว่าการผลิตข้าม v×v=0.
ทีนี้ลองลองแก้เมทริกซ์การฉาย Pจากสมการก่อนหน้า ให้คูณสมการการฉายจากด้านซ้ายด้วยxเมทริกซ์ผลิตภัณฑ์ข้าม:
(x)xx=(x)xPX=0
Aha! ผลลัพธ์ต้องเป็นศูนย์เวกเตอร์ ถ้าเราเปิดสมการเราจะได้:
⎡⎣⎢0W- ปี- น้ำหนัก0xY- x0⎤⎦⎥⎡⎣⎢P1 , 1P2 , 1P3 , 1P1 , 2P2 , 2P3 , 2P1 , 3P2 , 3P3 , 3P1 , 4P2 , 4P3 , 4⎤⎦⎥X=⎡⎣⎢P3 , 4WY-P2 , 1Xw -P2 , 2Yw -P2 , 4Ww +P3 , 1XY-P2 , 3Zw +P3 , 2YY+P3 , 3ZYP1 , 4Ww +P1 , 1Xw -P3 , 4Wx +P1 , 2Yw -P3 , 1Xx +P1 , 3Zw -P3 , 2Yx -P3 , 3ZxP2 , 4Wx +P2 , 1Xx -P1 , 4WY-P1 , 1XY+P2 , 2Yx -P1 , 2YY+P2 , 3Zx -P1 , 3ZY⎤⎦⎥= 0
ด้วยการปรับเปลี่ยนเล็กน้อยเราสามารถรับเมทริกซ์การฉายได้ P ด้านนอกของเมทริกซ์:
⎡⎣⎢⎢⎢0XW- XY0YW- YY0ZW- ZY0WW- W.Y- XW0Xx- YW0Yx- ZW0Zx- W.W0WxXY- Xx0YY- Yx0ZY- Zx0WY- W.x0⎤⎦⎥⎥⎥⎡⎣⎢⎢P1P2P3⎤⎦⎥⎥= 0
ที่ไหน Pn เป็นทรานส n: แถวที่สองของเมทริกซ์กล้อง P. แถวสุดท้ายของสมการเมทริกซ์ก่อนหน้า (ใหญ่) คือการรวมกันเชิงเส้นของสองแถวแรกดังนั้นจึงไม่นำข้อมูลเพิ่มเติมใด ๆ มาใช้และสามารถละไว้ได้
หยุดชั่วคราวเล็กน้อยเพื่อให้เราสามารถรวบรวมความยากลำบากของเรา โปรดทราบว่าจะต้องมีการสร้างสมการเมทริกซ์ก่อนหน้าสำหรับการติดต่อ 3D-> 2D ที่รู้จักแต่ละตัว (ต้องมีอย่างน้อย 6 ตัว)
ทีนี้สำหรับการโต้ตอบแต่ละจุดให้คำนวณสองแถวแรกของเมทริกซ์ด้านบน 2 × 12 เมทริกซ์อยู่ด้านบนของกันและกันและคุณจะได้เมทริกซ์ใหม่ A ซึ่ง
A⎡⎣⎢P1P2P3⎤⎦⎥= 0
เนื่องจากเรามี 12 unknowns และ (อย่างน้อย) 12 สมการสิ่งนี้สามารถแก้ไขได้ ปัญหาเดียวคือเราไม่ต้องการคำตอบที่ไม่สำคัญ
⎡⎣⎢P1P2P3⎤⎦⎥= 0
โชคดีที่เราสามารถใช้เอกพจน์การสลายตัวของค่า (SVD) เพื่อบังคับ
∥⎡⎣⎢P1P2P3⎤⎦⎥∥ = 1
เพื่อแก้สมการคำนวณ SVD ของเมทริกซ์ Aและเลือกเวกเตอร์เอกพจน์ที่สอดคล้องกับค่า eigen ที่น้อยที่สุด เวกเตอร์นี้เป็นเวกเตอร์โมฆะของเมทริกซ์ A และวิธีแก้ปัญหาสำหรับเมทริกซ์กล้องP. เพียงแค่ยกเลิกการสแต็ค[P1P2P3]T และรูปแบบ P.
ตอนนี้คุณอยากรู้ระยะห่างของวัตถุ P หมายถึง:
P= K[R- R C]
ที่ไหน คเป็นตำแหน่งกล้องที่สัมพันธ์กับวัตถุกำเนิด มันสามารถแก้ไขได้จากP โดยการคำนวณ Pเวกเตอร์ null
(Hartley, Zisserman - เรขาคณิตหลายมุมมองในการมองเห็นคอมพิวเตอร์)
ในที่สุดเมื่อคุณคำนวณตำแหน่งกล้องสำหรับสองเฟรมคุณสามารถคำนวณตำแหน่งวัตถุที่ไม่รู้จัก (หรือตำแหน่งของบางจุดของวัตถุ) โดยการแก้สมการสองสมการ X:
x1=P1Xx2=P2X
ซึ่งไปในทิศทางเดียวกันกับวิธีที่เราแก้ไขเมทริกซ์กล้อง:
(x1)xP1X = 0(x2)xP2X = 0
และอื่น ๆ