กล้องแบบประมาณขั้นตอนโดยประมาณสำหรับการติดตามด้วยภาพและเครื่องหมายบนภาพถ่าย


21

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

ฉันคิดว่าคำถามต่อไปควรได้รับคำตอบทีละขั้นตอนอย่างละเอียด

  • กล้องที่แท้จริงคืออะไร?
  • Extrinsics กล้องคืออะไร?
  • ฉันจะคำนวณ homography จากเครื่องหมายระนาบได้อย่างไร
  • หากฉันมี homography ฉันจะทำให้กล้องถ่ายรูปได้อย่างไร

ฉันคลุมเครือเกี่ยวกับการปรับสภาพให้เป็นปกติที่คุณทำ: 1 H เป็นคำพ้องเสียงที่พบจากข้อมูลโดยใช้ขั้นตอนบางอย่าง (พูด SVD) 2. inv (K) * H = A คือสิ่งที่คุณทำงานด้วยที่นี่ จากนั้นคุณสร้าง q1 = a1 / norm (a1) และ q2 = a2 / norm (a2) เป็นคอลัมน์ orthonormal ของเมทริกซ์การหมุนและทำให้ q3 = q1xq2 ... จากนั้นคุณใช้ t / (บางสิ่ง) เพื่อรับเวกเตอร์การแปล คุณสามารถแบ่ง q1 และ q2 ด้วยสิ่งต่าง ๆ ได้อย่างไรและคุณจะเลือกสิ่งที่จะหารด้วยได้อย่างไร? หรือเป็นความคิดที่ว่ากระบวนการ SVD และการคูณด้วย inv (K) ให้บางสิ่งบางอย่างที่ใกล้เคียงกันแต่ไม่ใช่เมทริกซ์การหมุนแบบ orthogonal / orthonormal ดังนั้น th
user2600616

แต่ฉันจะหาจุด 3D ได้อย่างไร (X, Y, 1)
waschbaer

คำตอบ:


19

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

กล้องที่แท้จริงคืออะไร?

K เราสามารถเขียนK

K=[αusu00αvv0001]

ที่ไหน

  • α v u v f α u = k u f α v = k v f k u k v u vαuและ มีปัจจัยระดับในและประสานทิศทางและเป็นสัดส่วนกับความยาวโฟกัสของกล้อง:และฉ และคือจำนวนพิกเซลต่อหน่วยระยะทางในทิศทางและαvuvfαu=kufαv=kvfkukvuv

  • c=[u0,v0]Tเรียกว่าจุดหลักซึ่งโดยปกติคือพิกัดของศูนย์กลางภาพ

  • u vsคือความเบ้เพียงไม่เป็นศูนย์ถ้าและนั้นไม่ตั้งฉากuv

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

Extrinsics กล้องคืออะไร?

Extrinsics กล้องหรือพารามิเตอร์ภายนอกเป็นเมทริกซ์ที่สอดคล้องกับการเปลี่ยนแปลงแบบยุคลิดจากระบบพิกัดโลกไปยังระบบพิกัดของกล้อง หมายถึงหมุนเมทริกซ์และการแปล3 × 4 R 3 × 3 t[R|t]3×4R3×3t

แอปพลิเคชันที่มองเห็นด้วยคอมพิวเตอร์มุ่งเน้นไปที่การประเมินเมทริกซ์นี้

[R|t]=[R11R12R13TxR21R22R23TyR31R32R33Tz]

ฉันจะคำนวณ homography จากเครื่องหมายระนาบได้อย่างไร

Homography คือ homogeneaous matrix ที่เกี่ยวข้องกับระนาบ 3 มิติและการฉายภาพ ถ้าเรามีระนาบ homographyที่แมปจุดบนระนาบนี้และจุดสองมิติสอดคล้องกันภายใต้การฉายคือZ = 0 H M = ( X , Y , 0 ) T m P = K [ R | t ]3×3Z=0HM=(X,Y,0)TmP=K[R|t]

m~=K[R1R2R3t][XY01]

=K[R1R2t][XY1]

H=K[R1R2t]

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

เราแค่ต้องการ 4 คู่เพื่อคำนวณ homography โดยใช้ Direct Linear Transform

หากฉันมี homography ฉันจะทำให้กล้องถ่ายรูปได้อย่างไร

การเขียนและกล้องที่ก่อให้เกิดมีข้อมูลเดียวกันและง่ายต่อการส่งผ่านจากที่หนึ่งไปยังอีกที่หนึ่ง คอลัมน์สุดท้ายของทั้งสองคือเวกเตอร์การแปล หนึ่งคอลัมน์และสองของ homography นอกจากนี้ยังมีคอลัมน์หนึ่งและสองของกล้องก่อให้เกิดเมทริกซ์ มันเป็นคอลัมน์ที่เหลือเพียงสามของและเนื่องจากมันต้องเป็นมุมฉากจึงสามารถคำนวณได้เป็น crossproduct ของคอลัมน์หนึ่งและสอง:K [ R | t ] H 1 H 2 R 1 R 2 R 3 [ R | t ]HK[R|t]H1H2R1R2R3[R|t]

R3=R1R2

เนื่องจากความซ้ำซ้อนจึงจำเป็นต้องทำให้ปกติหารด้วยเช่นองค์ประกอบ [3,4] ของเมทริกซ์[R|t]


4
ฉันคิดว่ามันเป็นความเข้าใจผิดที่จะบอกว่าการสอบเทียบนั้น "ง่ายและไม่ใช่เป้าหมายของ CV" ในกรณีปกติเราต้องประมาณค่าพารามิเตอร์การบิดเบือน แทนที่จะทำการปรับเทียบด้วยตนเองฉันขอแนะนำการปรับเทียบแบบระนาบ (จาง - เทคนิคใหม่ที่ยืดหยุ่นสำหรับการปรับเทียบกล้อง) เนื่องจากมีความยืดหยุ่นมากกว่าหากขั้นตอนการสอบเทียบแยกสามารถทำได้ คุณมีข้อผิดพลาดเล็ก ๆ น้อย ๆ ใน "ถ้าฉันมีการทำ homography ฉันจะทำให้กล้องถ่ายรูปได้อย่างไร" เนื่องจากคุณไม่ได้คำนึงถึงการปรับเทียบ (H_ {calib} = K ^ -1H)
buq2

3
กล้องถ่ายรูปจากการทำ homography ผิด มีหลายวิธีที่จะทำ 'บางคนไม่สูงมาก
mirror2image

ฉันไม่เห็นว่าทำไมมันผิด ฉันคำนวณด้วยวิธีนี้และได้ผล ทำไมคุณพูดว่ามันผิด
Jav_Rock

3
คุณเขียนในส่วนสุดท้ายว่า H ^ 1 และ R ^ 1 และเท่ากัน แต่ในส่วนที่ 3 คุณระบุว่า H = K [RT] ซึ่งจะหมายถึงว่า R ^ 1 เป็น K ^ -1H ^ 1 จริง ๆ แต่นี่ไม่เป็นความจริงอย่างแน่นอนเนื่องจากมีจำนวน H ที่ไม่สิ้นสุดซึ่งจะตอบสนองสมการและจะทำให้เกิดปัญหาเมื่อแก้ R ^ 1, R ^ 2 และ T (สเกลที่ไม่รู้จัก) คำตอบของคุณไม่คำนึงถึงการสอบเทียบที่แท้จริงและการบิดเบือนที่มีประสิทธิภาพและสมการบางอย่างไม่ถูกต้องซึ่งเป็นเหตุผลที่นี่ไม่ใช่คำตอบที่ดีสำหรับคำถาม
buq2

ใช่ฉันไม่มีเมทริกซ์คาลิเบรชันในขั้นตอนที่สามเนื่องจากฉันเอาสิ่งนี้จากรหัสของฉันและฉันคูณด้วย K ในฟังก์ชันที่แตกต่างกันของรหัส
Jav_Rock

3

ในขณะที่การอธิบายกรณีสองมิติเป็นอย่างดีคำตอบที่เสนอโดย Jav_Rock ไม่ได้ให้วิธีแก้ปัญหาที่ถูกต้องสำหรับกล้องถ่ายรูปในพื้นที่สามมิติ โปรดทราบว่าสำหรับปัญหานี้มีวิธีแก้ไขที่เป็นไปได้หลายวิธี

กระดาษนี้มีสูตรปิดสำหรับการย่อยสลาย homography แต่สูตรค่อนข้างซับซ้อน

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

เมทริกซ์ intrinsics ในกรณีนี้ความต้องการที่จะได้รับในหน่วยพิกเซลนั่นหมายความว่าจุดหลักของคุณเป็นปกติและความยาวโฟกัสของคุณจะเป็น(imageWidth / 2, imageHeight / 2)focalLengthInMM / sensorWidthInMM * imageHeight


เมทริกซ์ intrinsics ที่ถูกต้องคืออะไร
Guig

1
ฉันได้อัพเดตคำตอบแล้ว โปรดดูด้านบน
Emiswelt

เฮ้ @ Emmeltelt ความยาวโฟกัสไม่ใช่focalLengthInMM / sensorWidthInMM * imageWidthเหรอ? ทำไมคุณถึงเลือกความสูงแทน
El Marce
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.