หน้าแรก · Lab · Tracking และ matchmove

TR1 เลือกจุดสำหรับ track

จุดที่ดี กล่อง pattern กับ search และการอ่าน error curve

Tracking และ matchmove · ~8 นาที · ฟรี

1 อธิบาย

point track ตามหาภาพชิ้นเล็ก ๆ ชิ้นเดียวจากเฟรมหนึ่งไปอีกเฟรม จะเกาะอยู่ได้ก็ต่อเมื่อชิ้นนั้นหาเจอซ้ำได้ง่าย คือมีคอนทราสต์สองทิศ ไม่มีจุดหน้าตาเหมือนกันอยู่ใกล้ ๆ และไม่ถูกอะไรบังตลอดช็อต

คลิกหลาย ๆ จุดแล้วดูค่า ความแรงของ feature (มุม) ปรับ Pattern box กับ Search แล้วกด Track จากนั้นเทียบสองเส้นในกราฟ คือ match error ของ tracker ที่ tracker เห็นเอง กับ error จริง ที่ปกติเรามองไม่เห็น

2 ลงมือลอง

โจทย์: วาง tracker บนจุดที่ดี แล้ว track ให้ครบทั้ง 48 เฟรม โดย error จริงไม่เกิน 1.5 px ทุกเฟรม

เทียบความแรงของ feature ของหลาย ๆ จุดก่อนกด Track ถ้า error จริงพุ่งหรือค่อย ๆ ไต่ขึ้น ให้เลื่อนไปเฟรมนั้นแล้วดูว่าในกล่อง pattern มีอะไร และกล่อง search ใหญ่พอกับการสั่นของกล้องหรือยัง

SkyVFX Lab · TR1interactive · 1001

3 เจาะลึก

feature ที่ดีหน้าตาเป็นอย่างไร

tracker หาว่า pattern ไปอยู่ตรงไหนในเฟรมถัดไปโดยเทียบภาพในกล่อง search ถ้า pattern ดูเหมือนกันไปทั้งแถบ เช่นทรายเรียบหรือท้องฟ้า มันจะเจอคำตอบที่ใกล้เคียงได้หลายที่ แล้วค่อย ๆ ไหลออกจากจุดเดิม

เส้นตรงยาวบอกตำแหน่งได้แค่แนวขวางเส้น มุม กากบาท หรือขอบหินที่มี texture มีคอนทราสต์สองทิศ จึงล็อกได้ทั้ง x และ y และต้องอยู่ในเฟรมโดยไม่ถูกโดรนหรืออะไรผ่านมาบังตลอด shot

จุดใช้ได้ไหมเพราะ
ทรายเรียบไม่ดีเข้ากันได้ทุกที่ ไหล
ท้องฟ้าไม่ดีแทบไม่มีคอนทราสต์
สันเขาเส้นตรงอ่อนตามแนวเส้นคอนทราสต์ทิศเดียว
ขอบหินมี textureดีคอนทราสต์สองทิศ
กากบาท markerดี ถ้าไม่ถูกบังสองทิศ และไม่ซ้ำกับรอบ ๆ

กล่อง pattern กับกล่อง search

กล่องในคือ pattern ภาพชิ้นที่ tracker จะหาให้เจอ กล่องนอกคือ search ระยะที่ยอมให้ pattern ขยับไปได้ตั้งแต่เฟรมก่อน ในช็อตนี้จุดที่อยู่นิ่งในฉากขยับได้มากสุดราว 3.5 px ต่อเฟรม search box ต้องเหลือที่รอบ pattern พอให้ขยับได้ขนาดนั้น

pattern ใหญ่ขึ้นมีรายละเอียดให้จับมากขึ้น แต่ถ้าใหญ่จนกินพื้นหลังที่อยู่คนละระยะ ส่วนนั้นจะขยับต่างกันเพราะ parallax แล้วดึง track ให้เพี้ยน

ตั้งไว้อาการ
search เล็กเกินหลุดหรือกระโดดไปจุดผิดตอนกล้องสั่นแรง
search ใหญ่เกินมีโอกาสเจอจุดหน้าตาคล้ายกันในกล่องมากขึ้น
pattern เล็กเกินรายละเอียดน้อย สับสนกับจุดอื่นง่าย
pattern ใหญ่เกินกินพื้นหลังคนละระยะเข้ามา

อ่านสองเส้นในกราฟ

error ของ tracker บอกแค่ว่าภาพที่เจอเหมือน pattern แค่ไหน ส่วน true error คือระยะห่างจากตำแหน่งจริงของจุดนั้น ซึ่งได้จากข้อมูล 3D ของเรนเดอร์ ในงานจริงเรามีแค่เส้นแรก

ยอดแหลมแปลว่า tracker กระโดดไปจุดผิดในเฟรมนั้น เส้นที่ไต่ขึ้นเรื่อย ๆ แปลว่ามันค่อย ๆ ไหลออกจากจุด ในฉากนี้กากบาทกับกล่องค่าเริ่มต้นได้ true error สูงสุดราว 0.26 px ส่วนทรายเรียบขึ้นไปถึงราว 7 px

สีแดง เหลือง เขียวที่ Tracker ใน Nuke แสดง สะท้อนว่า pattern เข้ากันดีแค่ไหน จึงมีจุดบอดเดียวกับ match error คือภาพที่ดูเข้ากันดีอาจอยู่ผิดที่ก็ได้

error ต่ำแปลว่าภาพหน้าตาคล้ายกัน ไม่ได้แปลว่าอยู่ถูกที่

ยืนยันด้วย stabilise

การตรวจหลักของ track ทุกแบบคือ stabilise ภาพด้วย track นั้น ซูมเข้า แล้ว scrub ไปมาเร็ว ๆ ถ้า track ดี จุดนั้นต้องนิ่งอยู่กับที่ ถ้าเห็นมันขยับหรือสั่น track ยังไม่ดีพอ

ภาพที่ stabilise แล้วถูก resample ด้วยระยะเศษพิกเซลที่ต่างกันทุกเฟรม ขอบจึงอาจสั่นจากการ filter ไม่ใช่จาก track มุมมองนี้จึงเข้มงวดกว่าผลจริง การตัดสินสุดท้ายให้ดูผลที่ไม่ stabilise ขณะเล่น

  1. 1Track
  2. 2Stabilise ด้วย track
  3. 3ซูมเข้า
  4. 4Scrub ไปมาเร็ว ๆ
  5. 5ตัดสินตอนเล่นแบบไม่ stabilise

เตรียม plate ก่อน track

denoise ก่อน track และ pre-render ผลไว้ track จะสะอาดขึ้น channel สีน้ำเงินมักมี noise มากที่สุด ปิดไว้ตอน track ได้

ถ้า marker เริ่มช็อตแบบเบลอโฟกัส ให้ track ย้อนจากฝั่งที่โฟกัสชัด และถ้าจะใช้วิธี track อัตโนมัติแบบใหม่ ให้ลองบนเฟรมที่มี track ที่เชื่อถือได้อยู่แล้วก่อน เทียบกันให้ผ่านก่อนเอาไปใช้กับเฟรมใหม่

วิธีที่ยังไม่เคยทดสอบ ให้ลองกับเฟรมที่รู้คำตอบอยู่แล้วก่อน

4 ในงานจริง

ทำใน Nuke

  1. Denoise plate แล้ว pre-render ไว้ track บนไฟล์นั้น
  2. Tracker: เพิ่ม track บนจุดที่เลือก ปรับกล่อง pattern (ใน) และ search (นอก) ปิด channel สีน้ำเงินถ้ามี noise มาก
  3. track ไปข้างหน้า หรือย้อนจากฝั่งที่โฟกัสชัด แล้วดูกราฟหาจุดกระโดด
  4. แท็บ Transform ของ Tracker ตั้ง transform เป็น stabilize (หรือ export เป็น Transform แบบ stabilize) ซูม viewer เข้าแล้ว scrub เร็ว ๆ
  5. อย่าตัดสินจากสีแดง เหลือง เขียวของ Tracker อย่างเดียว

พลาดบ่อย → แก้ยังไง

  • ✗ track บนทรายเรียบหรือท้องฟ้า✓ เลือกจุดที่มีคอนทราสต์สองทิศ เช่นมุมหินหรือกากบาท
  • ✗ เลือกจุดที่ภายหลังถูกโดรนบินผ่านบังหรือหลุดออกนอกเฟรม✓ scrub ดูทั้งช็อตก่อนเลือก ให้แน่ใจว่าจุดนั้นเห็นทุกเฟรม
  • ✗ กล่อง search เล็กกว่าระยะที่กล้องมือถือสั่นต่อเฟรม✓ ขยาย search ให้ครอบระยะขยับต่อเฟรมที่มากที่สุด
  • ✗ เชื่อสีของ error อย่างเดียว✓ stabilise ด้วย track ซูมเข้า แล้ว scrub เร็ว ๆ
  • ✗ กล่อง pattern กินพื้นหลังคนละระยะ หรือ offset track ไปจุดที่อยู่คนละระยะ✓ ให้ pattern อยู่บนระยะเดียว และ offset เฉพาะจุดที่อยู่ระยะเดียวกัน

เช็กก่อนส่งช็อต

  • จุดที่ track เห็นครบทุกเฟรม ไม่ถูกบัง ไม่หลุดเฟรม
  • กราฟ error ไม่มียอดแหลมหรือเส้นที่ไต่ขึ้นเรื่อย ๆ
  • stabilise ด้วย track ซูมเข้า scrub เร็ว ๆ แล้วจุดนิ่ง
  • กล่อง pattern มีแค่ระยะเดียว
  • ตัดสินสุดท้ายจากผลที่ไม่ stabilise ขณะเล่น

5 เช็กตัวเอง

เช็กตัวเอง 1 ข้อ

จุดไหนเหมาะเป็น feature สำหรับ point track ที่สุด

สิ่งที่ได้เรียน

🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด

คำถามเพิ่ม

1. track หลุดเฉพาะเฟรมที่กล้องสั่นแรงที่สุด สาเหตุที่น่าจะเป็นที่สุดคืออะไร

2. error ของ tracker ต่ำทุกเฟรม ก่อนเอา track ไปใช้ควรทำอะไร

ตัวเลขมาจากไหน: shot มือถือ 48 เฟรม (640×360) เรนเดอร์ใน Blender (Cycles) จากฉากทะเลทรายของเรา เพิ่มจอเขียวบนเสาและโดรนบินผ่าน เฟรม 1 คือกล้องเดียวกับ plate นิ่ง ตำแหน่งจริงของทุกจุดมาจาก 3D ของฉากเอง (truth.json, dist.f32) tracker ในบทนี้เป็นแบบสอนหลักการ (normalised cross-correlation เทียบกับ pattern จากเฟรมแรก และหาตำแหน่งละเอียดกว่าพิกเซลด้วยการ fit parabola) ไม่ใช่ Tracker ของ Nuke ส่วน error จริงคำนวณจากข้อมูล 3D ของเรนเดอร์เอง