จะคำนวณกล้องถ่ายรูปอย่างไรจาก Homography matrix


13

ว่าฉันใช้กล้องสอบเทียบเพียงหนึ่ง จากกล้องนี้ผมได้รับภาพ A และ B ฉันรู้ homography ระหว่าง A และ B ที่คำนวณผ่านOpenCV 's findHomography ()

ฉันรู้ว่าโพสท่า (เมทริกซ์การหมุน R และเวกเตอร์การแปล t) ของภาพ A และฉันต้องการรูปของบีเมื่อฉันได้รับมันฉันคิดว่าฉันจะสามารถคำนวณทุก ๆ ท่าของภาพต่อไปนี้ได้

คุณรู้หรือไม่ว่าการนำโพรเซสซิงของ B มาใช้? ฉันพบบทความหลายบทความบนเว็บ แต่ไม่พบวิธีแก้ปัญหาที่ใช้งานได้ง่าย ...


ฉันไม่แน่ใจว่าฉันเข้าใจวิธีการใช้รหัสของคุณ ฉันใช้ OpenCV เพื่อดึง Homography แต่เมื่อฉันส่ง Homography นั้นผ่านอัลกอริทึมมันจะส่งคืนสิ่งนี้เสมอ cameraPose [1, 0, 0, 0; 0, 1, 0, 0; 0, 0, 1, 0]
LeRoss

คำตอบ:


8

แม้ว่าคำตอบของฉันจะสายเกินไปสำหรับคุณบางทีคนอื่นอาจพบว่ามีประโยชน์ ฉันมีรหัสสำหรับ openCV Pose จาก Homography ผมพบว่าวิธีการนี้ในเว็บไซต์ที่มีประโยชน์จริงๆeuclideanspace

void cameraPoseFromHomography(const Mat& H, Mat& pose)
{
    pose = Mat::eye(3, 4, CV_64FC1); //3x4 matrix
    float norm1 = (float)norm(H.col(0)); 
    float norm2 = (float)norm(H.col(1));
    float tnorm = (norm1 + norm2) / 2.0f;

    Mat v1 = H.col(0);
    Mat v2 = pose.col(0);

    cv::normalize(v1, v2); // Normalize the rotation

    v1 = H.col(1);
    v2 = pose.col(1);

    cv::normalize(v1, v2);

    v1 = pose.col(0);
    v2 = pose.col(1);

    Mat v3 = v1.cross(v2);  //Computes the cross-product of v1 and v2
    Mat c2 = pose.col(2);
    v3.copyTo(c2);      

    pose.col(3) = H.col(2) / tnorm; //vector t [R|t]
}

////


ฉันใช้ฟังก์ชันของคุณในโค๊ดของฉันเมทริกซ์ที่คำนวณโดยใช้วิธีนี้จะเป็น [1 0 0 0 เสมอ; 0 1 0 0; 0 0 1 0; 0 0 0 0] คุณมีคำอธิบายไหม?
Muhammet Ali Asan

คุณใช้โพสของ A อยู่หรือเปล่า? ดูเหมือนว่าคุณจะใช้อินพุต H
Guig

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


0

คุณสามารถใช้วิธีการสลายตัว Homography ที่นำมาใช้ใน Opencv 3.0+

decomposeHomographyMat

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