หน้าแรก · Lab · Case Files: แก้ปัญหา comp จากงานจริง

CF2 เคส 2: ขอบสว่างรอบ key ทั้งที่ matte ไม่ได้เปลี่ยน

ก่อนแก้ matte ให้เช็กสีที่ขอบก่อน

Case Files: แก้ปัญหา comp จากงานจริง · ~6 นาที · ฟรี

1 อธิบาย

อาการ: หุ่นจาก green screen มีเส้นขอบสว่างบาง ๆ รอบขาและไหล่ และมีแถบจาง ๆ สว่างขึ้นตามรอยต่อพื้นกับฉากเขียว คนส่วนใหญ่จะรีบ erode หรือบีบ matte แต่ลองกด Viewer ไปที่ช่อง a แล้วเทียบ node Premult กับ Grade: alpha เหมือนกันทุกพิกเซล เพราะ Grade ตัวนี้ไม่แตะ alpha สิ่งที่เปลี่ยนคือสี

Grade ตัวนี้ดัน gamma ขึ้นเพื่อให้หุ่นจางเหมือน plate ที่มีหมอก gamma ไม่ใช่การคูณล้วน พอทำกับสีที่ premult แล้ว พิกเซลขอบที่สีถูกคูณ alpha ไว้จะถูกมองเป็น "สีมืด" แล้วถูกยกขึ้นมากเกิน ทั้งขอบและเศษ alpha เล็ก ๆ ที่รอยต่อพื้นจึงสว่างผิด

on a premult edge: (c·a)^(1/γ) ≠ c^(1/γ)·a

2 ลงมือใน mini compositor

โจทย์: แก้ขอบสว่างโดยไม่แตะ matte และไม่เปลี่ยนค่า gamma

ดูตัวเลือกใน Properties ของ Grade ที่ทำ unpremult → grade → premult ให้ในตัว

SkyVFX mini compositor · CF2640×360 · float · 1001

3 เจาะลึก

แยกให้ออก: ปัญหา alpha หรือปัญหาสี

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

วิธีแยกเร็วที่สุดคือเทียบช่อง a ระหว่าง node ถ้า alpha ไม่เปลี่ยนแต่ขอบเปลี่ยน ปัญหาอยู่ที่สี การ erode หรือบีบ matte จะกินรายละเอียดโดยไม่แก้อะไร

ขอบเปลี่ยนแต่ alpha ไม่เปลี่ยน: เช็ก grade สีก่อนแตะ matte

ตัวเลขที่ขอบ

สมมติขอบหุ่นมีสีจริง 0.3 และ alpha 0.5 ภาพ premult เก็บ 0.15 ถ้าใส่ gamma 1.6 กับ 0.15 ตรง ๆ ได้ราว 0.31 แต่ถ้า unpremult ก่อน: 0.3 ผ่าน gamma ได้ราว 0.47 คูณ alpha กลับได้ราว 0.24 ขอบที่ผิดสว่างกว่าที่ควรราว 30%

การปรับบนภาพ premult ตรง ๆเหตุผล
gain / multiplyได้การคูณสลับลำดับกับ premult ได้
gammaไม่ได้ขอบสว่างหรือมืดผิด
lift / offsetไม่ได้บวกค่าให้พิกเซล alpha ต่ำด้วย
saturationได้ (คูณรอบ luma)Rec.709 luma เป็นเส้นตรง

เศษ alpha ที่ถูกขยาย

gamma ที่มากกว่า 1 ดันค่าเล็ก ๆ ขึ้นแรง พิกเซลที่ alpha ต่ำมากตามรอยต่อพื้นกับฉาก ซึ่งปกติแทบมองไม่เห็น จึงสว่างขึ้นเป็นแถบ พอ grade แบบ unpremult สีของพิกเซลเหล่านั้นถูกคูณกลับด้วย alpha เล็ก ๆ จึงกลับไปจางเหมือนเดิม

4 ในงานจริง

ทำใน Nuke

  1. Grade: ติ๊ก "(un)premult by" แล้วเลือก rgba.alpha ทุกครั้งที่ใช้ gamma, lift หรือ offset กับภาพ premult
  2. หรือทำเป็นสาย: Unpremult → Grade/ColorCorrect → Premult
  3. Viewer กด A เพื่อดู alpha แล้วกดดู node ก่อนและหลังสลับกัน
  4. ตรวจขอบที่ gain ×4 และ saturation สูง เพื่อให้เส้นขอบโผล่ชัด

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

  • ✗ เห็นขอบผิดแล้ว erode ทันที✓ เทียบ alpha ก่อน ถ้า alpha ไม่เปลี่ยนแปลว่าสีผิด
  • ✗ ใส่ gamma หรือ lift กับภาพ premult ตรง ๆ✓ unpremult ก่อน หรือใช้ "(un)premult by" ใน Grade
  • ✗ วัดขอบที่ output ของ key อย่างเดียว✓ วัดที่ comp จริงด้วย เพราะ grade ระหว่างทางเปลี่ยนขอบได้

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

  • alpha กับสีของขอบ ตรวจแยกกัน
  • ทุก gamma, lift หรือ offset บนภาพ premult ทำแบบ unpremult
  • ดูขอบที่ gain ×4 บนพื้นหลังทั้งสว่างและมืด
  • ไม่มีเศษ alpha ที่สว่างขึ้นตามรอยต่อพื้น

5 เช็กตัวเอง

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

alpha ก่อนและหลัง Grade เหมือนกัน แต่ขอบสว่างขึ้น ควรสงสัยอะไรก่อน

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

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

คำถามเพิ่ม

1. อันไหนทำกับภาพ premult ได้โดยขอบไม่เพี้ยน

2. alpha ก่อนและหลัง node เหมือนกัน แต่ขอบเปลี่ยน แปลว่าอะไร

ตัวเลขมาจากไหน: เคสจากปัญหาที่เจอในงานจริง เล่าใหม่แบบไม่ระบุงาน และสร้างซ้ำด้วยภาพ Blender ของเราเอง ภาพคำนวณในเบราว์เซอร์: Merge, Grade, Premult, Keymix, Invert, Clamp ตรงกับ Nuke 17.0v2 (ตรวจแล้ว) ส่วน Toe, Defocus, Sharpen, Grain, Keyer และ Despill เป็นแบบสอนหลักการ ไม่เท่า node ใน Nuke เป๊ะ