วิสัยทัศน์กล้องเดียวและระบบการทำแผนที่


17

เมื่อไม่นานมานี้ฉันเห็นตัวอย่างของ 'ของเล่นถัง' ขนาดเล็กที่มีกล้องเดียวติดตั้งอยู่ รถถังคันนี้สามารถขับไปรอบ ๆ พื้นและตรวจจับวัตถุแล้วเคลื่อนย้าย / คัดท้ายเพื่อหลีกเลี่ยงพวกมัน ส่วนที่น่าสนใจคือมันใช้ระบบการมองเห็นกล้องเดียวและเท่าที่ผมจำได้ก็คือการใช้ประโยชน์จากพื้นราบ จากนั้นใช้อัตราที่คุณสมบัติถ่ายในฉากที่สัมพันธ์กับมอเตอร์และทิศทางของการเดินทางเพื่อประเมินผลและทำแผนที่ฉาก

ทุกคนสามารถส่งพอยน์เตอร์ให้ฉันเพื่อค้นหาข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้หรือชี้ไปที่โค้ดเบสที่สามารถทำได้

เหตุผลที่ฉันถามคือนี่เป็นระบบกล้องเดียวเมื่อหลายปีก่อน (5+) และดังนั้น (จากสิ่งที่ฉันจำได้) คือการคำนวณที่ค่อนข้างต่ำ ฉันตั้งใจจะลองใช้ Raspberry PI เพื่อสร้างรถยนต์ / รถถังที่แมปห้องหรือชุดของห้อง


2
ยินดีต้อนรับสู่หุ่นยนต์เบ็น กรุณาตรวจสอบวิธีการขอและการท่องเที่ยวสำหรับคำแนะนำบางอย่างเกี่ยวกับวิธีการเขียนการปฏิบัติคำถามคำตอบขึ้นอยู่กับปัญหาที่เกิดขึ้นจริงที่คุณต้องเผชิญ ขอบคุณ
Mark Booth

คำตอบ:


4

มันยากที่จะบอกว่าสิ่งที่พวกเขากำลังทำอยู่ แต่คำที่คุณอาจต้องการที่นี่คือ " การไหลของแสง " และ " egomotion " เสียงเหมือนอาจมีการตรวจจับคุณสมบัติและการจับคู่บางอย่าง (เช่น SURF หรือ SIFT) หรือการแบ่งส่วนหน้า / พื้นหลังที่มีการแสดง

OpenCVน่าจะเป็น codebase ใช้กันอย่างแพร่หลายมากที่สุดสำหรับคอมพิวเตอร์วิสัยทัศน์ที่พวกเขามีจำนวนมากของการทำงานสำหรับการวิเคราะห์การเคลื่อนไหว OpenCV ควรรันบน Raspberry Pi แม้ว่าอัลกอริทึมของคุณอาจถูก จำกัด ด้วยพลังในการคำนวณ


4

อาคารWildCrustceanการตอบสนองของ possiblity อื่นจะเป็นวิสัยทัศน์สเตอริโอ ในขณะที่เรามักจะนึกถึงภาพสเตอริโอที่ใช้กล้องสองตัวเทคนิคต่าง ๆ ต้องการเพียงแค่ภาพที่ถูกแทนที่ในอวกาศและแบบจำลองของการกระจัด กล่าวอีกนัยหนึ่งฉันสามารถถ่ายรูปย้ายจากนั้นถ่ายรูปอีกภาพ ตราบใดที่ฉันรู้การเปลี่ยนแปลงระหว่างสองภาพนี้ฉันก็สามารถใช้เทคนิคการมองเห็นสเตอริโอเพื่อคำนวณระยะทางถึงจุดหนึ่งในภาพ


2
ฉันคิดว่าเทคนิคที่คุณพูดถึงเรียกว่า "โครงสร้างจากการเคลื่อนไหว"
Kozuch

1

มันอาจใช้การติดตาม Parellel และการทำแผนที่PTAM PTAMPTAM เป็นการใช้งานของปัญหาการแปลและการแมปพร้อมกัน (SLAM) ที่ใช้กล้องเดียวในการสร้างแผนที่ 3 มิติของโลกและ จำกัด วงโดยการติดตามคุณสมบัติด้านภาพ

ทีมของฉันเคยทดลองใช้แพคเกจ PTAM ใน ROSROS

เรากำลังใช้งาน Ubuntu บน Intel Atom และในขณะที่ฉันจำได้ว่ามันไม่ได้ทำให้หน่วยประมวลผลมากเกินไป เราไม่ได้ใช้มันเป็นส่วนใหญ่เพราะเราไม่สามารถหาคุณสมบัติที่เพียงพอในสภาพแวดล้อมที่หุ่นยนต์ของเราจะทำงาน


0

โดยทั่วไปแล้วคุณไม่สามารถแยกระยะทางเมตริกได้จากภาพเดียวเว้นแต่ว่าคุณมีข้อมูลเพิ่มเติมเกี่ยวกับโลก ตัวอย่างเช่นถ้าคุณรู้ว่าโลกเป็นระนาบ (หรือคุณสามารถตรวจจับพื้นซึ่งเป็นพื้นที่ระนาบ) จากนั้นคุณสามารถประมาณ homography

homography เป็นการแปลง projective ระหว่างระนาบ (เมทริกซ์ 3x3) ด้วยการปรับเทียบภายในกล้องคุณสามารถสลายการถ่ายภาพที่เกิดจากระนาบนี้เป็นการหมุนและการแปล การแปลขึ้นอยู่กับขนาด คุณสามารถแก้ไขความคลุมเครือในระดับนี้ได้โดยการทราบระยะทางจากกล้องถึงพื้น (เครื่องบิน)

เมื่อคุณมี homography คุณสามารถตรวจจับวัตถุที่ไม่ได้อยู่บนเครื่องบิน การ homography ช่วยให้คุณบิดภาพแรกไปยังภาพที่สอง วัตถุบนระนาบจะจัดเรียงและจะมีข้อผิดพลาดเล็กน้อย วัตถุที่ไม่ได้อยู่บนเครื่องบินจะไม่เรียงตัว สิ่งนี้เรียกว่าพารัลแลกซ์

วิธีหนึ่งในการดำเนินการนี้อาจเป็น

  1. ดึงคุณสมบัติจากภาพทั้งสอง
  2. จับคู่ฟีเจอร์หรือติดตามพวกเขา
  3. ประมาณค่า homography โดยใช้ RANSAC
  4. แยก homography เป็นการหมุนและการแปลโดยใช้การสอบเทียบ
  5. วาปภาพแรกเข้าสู่ภาพที่
    สอง พิกเซลที่มีข้อผิดพลาดขนาดใหญ่ไม่ได้อยู่บนพื้นและอาจเป็น
    อุปสรรค

Building Block ส่วนใหญ่ใช้งานใน opencv (ดูที่http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html )

โชคดี.

ป.ล. การสลายตัวแบบ homography จะให้ค่าปกติของระนาบ แต่เนื่องจากคุณสมมุติว่านี่คือระนาบพื้นเรามีการชี้ปกติในทิศทางขึ้น โซลูชันที่แม่นยำยิ่งขึ้นสามารถทำได้ในกระบวนการสอบเทียบของคุณ คุณสามารถใช้เป้าหมายกระดานหมากรุกและประเมินการก่อให้เกิด ท่าจะมีระนาบปกติและระยะห่างจากกล้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.