หน้าแรก · Lab · Keying Lab

K3 Despill: average vs max

แสงเขียวที่สะท้อนติดตัวหุ่น

Keying Lab · ~6 นาที · ฟรี

1 อธิบาย

สกรีนเขียวสว่างสะท้อนแสงเขียวใส่ตัวหุ่น (spill) แม้ matte จะดี หุ่นก็ยังดูเขียว despill คือจำกัดช่องเขียวไม่ให้เกินค่าอ้างอิงที่คำนวณจากแดงและน้ำเงิน

แบบ average (เทียบกับค่าเฉลี่ยของแดงและน้ำเงิน) ตัดเขียวแรงกว่าแบบ max (เทียบกับช่องที่มากกว่า) แบบ max อ่อนโยนกับสีผิวและสีเหลืองมากกว่า แต่ทิ้งเขียวไว้มากกว่า

average: g′ = min(g, (r + b)/2 · L) · max: g′ = min(g, max(r, b) · L)

2 ลงมือใน mini compositor

โจทย์: เปิด Despill แล้วเลือกวิธีให้ spill บนตัวหุ่นเหลือ ≤ 0.0079

เปิด node Despill ก่อน (ติ๊ก "ปิด node" ออก) แล้วลองสองแบบ

SkyVFX mini compositor · K3640×360 · float · 1001

3 เจาะลึก

สองสูตรกับสี่สี

average: g′ = min(g, (r+b)/2) และ max: g′ = min(g, max(r, b)) (ตารางใช้ L = 1) สีเทาที่โดน spill ทั้งสองแบบแก้ได้ใกล้กัน แต่สีเหลืองกับสีฟ้าอมเขียว average ตัดเขียวที่เป็นของจริงทิ้ง สีจึงเพี้ยน

สีr, g, baverage g′max g′
หุ่นเทาโดน spill0.40, 0.55, 0.420.410.42
สีเหลือง0.80, 0.70, 0.100.45 (เป็นส้ม)0.70 (เท่าเดิม)
ผิวคน0.70, 0.50, 0.400.50 (เท่าเดิม)0.50 (เท่าเดิม)
ฟ้าอมเขียว0.10, 0.60, 0.700.40 (เพี้ยน)0.60 (เท่าเดิม)

Despill ทำให้มืดลง

เขียวมีน้ำหนักในความสว่างมาก (Rec.709 ให้ G = 0.7152) หุ่นเทาข้างบนถูกตัดเขียว 0.14 (แบบ average) ความสว่างหายไปราว 0.1 ขอบจึงดูหม่นเป็นสีเทาดำ

คืนความสว่าง: เอา plate ลบภาพที่ despill แล้ว (คือ spill ที่ถูกตัด) ทำให้เป็นขาวดำ แล้วบวกกลับ ใช้เมื่อฉากหลังสว่างพอ ๆ กับจอ ถ้าฉากหลังมืดกว่าจอให้ปิด หรือ respill ด้วยสีของฉากหลังแทน

ภาพ plate − despill คือ mask ฟรีของบริเวณที่โดน spill

Despill อยู่สายของตัวเอง

คีย์มีสามงานแยกกัน: alpha, despill และการ merge ทำ despill แยกจาก plate ต้นฉบับ แล้ว Copy alpha ที่เสร็จแล้วเข้ามา Premult ครั้งเดียว แล้วค่อย Merge over ถ้ารวมหลายคีย์ อย่าใช้ despill ในตัว keyer เพราะแต่ละตัวทำไม่เหมือนกัน จะเห็นรอยต่อ

งานจริงมักใช้สอง despill: ที่ขอบแรงและดันไปทางสีฉากหลัง ที่ core อ่อนและเก็บสีเดิม แล้ว Keymix ด้วย core matte ที่เบลอ

  1. 1plate
  2. 2Despill (RGB)
  3. 3Copy alpha
  4. 4Premult
  5. 5Merge over BG

เลือกเป้าหมายจากฉากหลัง

ใส่ฉากหลังจริงก่อนทำ despill แล้วถามสองข้อ: ฉากหลังหลังขอบนี้สว่างแค่ไหน และสีของตัวตรงนี้คืออะไร สีเทากลางเหมาะกับฉากหลังเทากลางเท่านั้น ฉากหลังทะเลทรายสีอุ่นควรได้ขอบที่อุ่นตาม

หน้ากอง: ให้ตัวแสดงห่างจอเท่าที่ทำได้ spill จะน้อยลงตั้งแต่ต้น

4 ในงานจริง

ทำใน Nuke

  1. Expression node: ช่อง g = min(g, max(r,b)) สำหรับ core หรือ min(g, (r+b)/2) สำหรับขอบ
  2. HueCorrect: กดเส้น g_sup ลงเฉพาะช่วงสีเขียว หยุดก่อนถึงสีที่ไม่ใช่เขียว
  3. คืนความสว่าง: Merge (minus) plate − despill → Saturation 0 → Merge (plus) เข้ากับภาพที่ despill
  4. Despill สองแบบ (ขอบ/core) รวมด้วย Keymix ผ่าน core matte ที่เบลอ
  5. Despill หลัง Copy ต้องเขียนแค่ RGB ไม่งั้นทับ alpha ที่ทำไว้ แล้ว Premult → Merge over

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

  • ✗ ใช้ despill ในตัว keyer ตอนรวมหลายคีย์✓ despill แยกสายจาก plate ต้นฉบับ
  • ✗ ใช้ average ทั้งตัว เสื้อเหลืองกลายเป็นส้ม✓ ใช้ max ใน core เก็บ average ไว้ที่ขอบ
  • ✗ ลืมว่า despill ทำให้มืด ขอบเป็นเทาหม่น✓ คืนความสว่าง หรือ respill ด้วยสีฉากหลัง
  • ✗ Erode matte เพื่อลบขอบเขียว✓ ขอบเขียวเป็นงาน despill ไม่ใช่ alpha erode แค่ตัดขอบทิ้ง ไม่ได้แก้สี (ดู K4)
  • ✗ Despill node ทับ alpha หลัง Copy✓ ตั้งให้ออกแค่ RGB

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

  • ไม่มีขอบเขียวเมื่อเร่ง saturation ขึ้นไว้ดู
  • สีเหลือง ผิว และสีฟ้าบนตัวไม่เพี้ยน
  • ความสว่างขอบเข้ากับฉากหลังจริง
  • alpha ไม่ถูก despill ทับ
  • Premult แค่ครั้งเดียวก่อน Merge over

5 เช็กตัวเอง

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

ตัวละครใส่เสื้อเหลือง despill แบบไหนทำให้เสื้อเพี้ยนน้อยกว่า

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

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

คำถามเพิ่ม

1. พิกเซล (0.30, 0.60, 0.50) despill แบบ max ได้ g′ เท่าไหร่

2. หุ่นอยู่บนถนนกลางคืนที่มืด เปิด restore luminance แล้วขอบเรืองแสง เพราะอะไร

ตัวเลขมาจากไหน: Keyer ในห้องนี้เป็นแบบ green-difference ง่าย ๆ (ไม่ใช่ Keylight หรือ IBK) สูตร despill มาจากหลักการ despill มาตรฐาน คะแนนเทียบกับ matte จริงที่เรนเดอร์จาก Blender พร้อมกับ plate กรีน (หุ่นตัวเดียวกันและกล้องตัวเดียวกับ plate) เป้าหมายวัดจากภาพชุดนี้ เทียบกับคีย์ที่ดีที่สุดที่ Keyer นี้ทำได้