การประมาณตำแหน่ง 3D โดยใช้กล้อง 2D


9

ฉันมีกล้อง (iPhone) ฉันมีวัตถุควบคุม 3 มิติในภาพที่ฉันรู้คุณสมบัติของมันเป็นอย่างดี (วัตถุควบคุมของฉัน) นอกจากนี้ยังมีวัตถุรองในการเคลื่อนไหว เป้าหมายสูงสุดคือการสร้างวิถี 3D ของวัตถุที่เคลื่อนไหวในช่วงเวลาที่กำหนด (ติดตาม)

ฉันอยากถามฉันจะหาคำตอบได้ไหม?

  • ระยะทางของโทรศัพท์ไปยังวัตถุควบคุม (เพื่อการสนทนาลองสมมติว่ากล้องมีความสูงแน่นอนและไม่ทราบระยะทางที่แน่นอน แต่กล้องตั้งฉากกับพื้นผิวซึ่งเป็นที่รู้จัก)

  • วัตถุรองที่ฉันสามารถค้นหาวัตถุในแต่ละเฟรมที่ตามมา เป้าหมายของฉันคือการประเมินวิถี 3D ตามที่ฉันได้ระบุไว้ข้างต้น

คำถามโบนัสเราสามารถสร้างระบบที่สามารถตั้งค่าระยะทางโทรศัพท์ไปยังวัตถุควบคุม (แม้ว่าจะไม่ต้องการ) สิ่งนี้จะช่วยฉันในจุดที่สองหรือไม่?


คุณคุ้นเคยกับวรรณคดีในพื้นที่นี้หรือไม่? ถ้าไม่ใช่ฉันสามารถแนะนำเอกสารบางอย่าง แต่ควรได้รับการเตือน: คณิตศาสตร์มีส่วนเกี่ยวข้อง
Emre

@ มันจะดีถ้าคุณสามารถให้พอยน์เตอร์ได้บ้าง คณิตศาสตร์นั้นไม่มีปัญหาเรารักคณิตศาสตร์
Ktuncer


@emre ฉันลองดูที่กระดาษตรวจทานอย่างรวดเร็ว .. นี่เป็นอีกการติดตามฉันสามารถติดตามวัตถุได้อย่างง่ายดายนั่นไม่ใช่ปัญหา ฉันสามารถระบุจุดในสิ่งที่พิกเซลเป็นวัตถุ ปัญหาอยู่ที่วัตถุอยู่ในพื้นที่ 3 มิติ เป็นไปได้ไหม โดยพื้นฐานแล้วฉันมีวัตถุอื่นในพื้นที่ 3 มิติที่ฉันรู้คุณสมบัติที่ฉันสามารถใช้เป็นกรอบอ้างอิง แต่นั่นคือมัน
Ktuncer

ฉันขอโทษกระดาษผิด บางทีคุณสามารถปรับการติดตามวิถีแบบ 3D ตามวิสัยทัศน์สำหรับสภาพแวดล้อมที่ไม่รู้จัก [PDF]? พวกเขาใช้กล้องสเตอริโอ เป็นไปได้สำหรับคุณไหม?
Emre

คำตอบ:


15

หากวัตถุของคุณมี 6 จุดที่รู้จักกัน (พิกัด 3D ที่รู้จัก,และ ) คุณสามารถคำนวณตำแหน่งของกล้องที่เกี่ยวข้องกับระบบพิกัดวัตถุX,YZ

ก่อนพื้นฐานบางอย่าง

พิกัดที่เป็นเนื้อเดียวกันคือการนำเสนอเวกเตอร์ของยูคลิดพิกัดซึ่งเราได้ต่อท้ายเรียกว่าสเกลแฟกเตอร์ดังนั้นพิกัดที่เป็นเนื้อเดียวกันคือ T ในการคำนวณของคุณให้พยายามเก็บบ่อยที่สุดเท่าที่จะทำได้ (หมายความว่าคุณ "ทำให้ปกติ" พิกัดที่เป็นเนื้อเดียวกันโดยการหารด้วยองค์ประกอบสุดท้าย: ) นอกจากนี้เรายังสามารถใช้การนำเสนอที่เป็นเนื้อเดียวกันสำหรับจุด 2 มิติเช่น (จำได้ว่าและ(X,Y,Z)ωX=ω[XYZ1]Tω=1XXωx=ω[XY1]ω,X,YZแตกต่างกันไปในแต่ละจุดไม่ว่าจะเป็นแบบ 2D หรือ 3D) งานนำเสนอที่เป็นเนื้อเดียวกันทำให้การคำนวณง่ายขึ้น

เมทริกซ์ของกล้องคือเมทริกซ์การฉายจากโลก 3 มิติไปยังเซ็นเซอร์ภาพ:3×4

x=PX

โดยที่เป็นจุดที่เซ็นเซอร์ภาพ (มีหน่วยพิกเซล) และเป็นจุด 3D ที่ฉาย (สมมติว่ามันมีหน่วยเป็นมิลลิเมตร)xX

เราจำได้ว่าครอสโปรดัคระหว่าง 3 เวกเตอร์สองตัวสามารถนิยามเป็นเมทริกซ์ - เวกเตอร์ - การคูณเช่น:

v×u=(v)xu=[0v3v2v30v1v2v10]u

นอกจากนี้ยังมีประโยชน์ที่จะต้องทราบว่าการผลิตข้าม v×v=0.

ทีนี้ลองลองแก้เมทริกซ์การฉาย Pจากสมการก่อนหน้า ให้คูณสมการการฉายจากด้านซ้ายด้วยxเมทริกซ์ผลิตภัณฑ์ข้าม:

(x)xx=(x)xPX=0

Aha! ผลลัพธ์ต้องเป็นศูนย์เวกเตอร์ ถ้าเราเปิดสมการเราจะได้:

[0-WYW0-x-Yx0][P1,1P1,2P1,3P1,4P2,1P2,2P2,3P2,4P3,1P3,2P3,3P3,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 ด้านนอกของเมทริกซ์:

[0000-XW-YW-ZW-WWXYYYZYWYXWYWZWWW0000-Xx-Yx-Zx-Wx-XY-YY-ZY-WYXxYxZxWx0000][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]

ที่ไหน เป็นตำแหน่งกล้องที่สัมพันธ์กับวัตถุกำเนิด มันสามารถแก้ไขได้จากP โดยการคำนวณ Pเวกเตอร์ null

(Hartley, Zisserman - เรขาคณิตหลายมุมมองในการมองเห็นคอมพิวเตอร์)

ในที่สุดเมื่อคุณคำนวณตำแหน่งกล้องสำหรับสองเฟรมคุณสามารถคำนวณตำแหน่งวัตถุที่ไม่รู้จัก (หรือตำแหน่งของบางจุดของวัตถุ) โดยการแก้สมการสองสมการ X:

x1=P1Xx2=P2X

ซึ่งไปในทิศทางเดียวกันกับวิธีที่เราแก้ไขเมทริกซ์กล้อง:

(x1)xP1X=0(x2)xP2X=0

และอื่น ๆ


ถูกต้องหรือไม่ที่จะบอกว่าวิธีการคำนวณตำแหน่ง 3D ของกล้องนั้นเทียบเท่ากับ OpenCV solutionPnp? docs.opencv.org/2.4/modules/calib3d/doc/ ...... (ค้นหา solPnP ในหน้าฉันไม่สามารถวาง URL ด้วย #)
gregoiregentil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.