1 อธิบาย
หลายคนเรียก sRGB ว่า "gamma 2.2" ช่วงกลางถึงสว่างสองเส้นแทบทับกันจริง แต่ sRGB มีช่วงเส้นตรงสั้น ๆ ใกล้ดำ (ต่ำกว่า 0.0031308) ทำให้เงาต่างกันได้หลายระดับ
ถ้าแปลงเข้าด้วย sRGB แต่แปลงออกด้วย gamma 2.2 (หรือกลับกัน) ดำในงานจะลอยหรือจม นี่คือที่มาหนึ่งของ "ดำไม่ตรงกันระหว่างโปรแกรม"
2 ลงมือลอง
กดดูช่วง "ดำ 0 – 0.02" แล้วเลื่อนหาจุดที่ต่างกันมากที่สุด
3 เจาะลึก
ข้างในเส้นโค้ง sRGB
sRGB มีสองท่อน ต่ำกว่า 0.0031308 เป็นเส้นตรงคูณ 12.92 สูงกว่านั้นเป็นยกกำลัง 1/2.4 แล้วปรับด้วย 1.055 และ −0.055 ขาถอดกลับใช้จุดต่อที่ 0.04045
ท่อนตรงมีไว้กันไม่ให้เส้นชันไม่สิ้นสุดที่ศูนย์ เส้น power ล้วนจะชันมากใกล้ดำ ทำให้ค่าเล็ก ๆ อย่าง noise ถูกขยายและถอดกลับได้ไม่เสถียร โดยรวม sRGB จึงเฉลี่ยใกล้ 2.2 แต่ไม่ใช่ 2.2
ช่องว่างอยู่ตรงไหน
ช่วงกลางถึงสว่างสองเส้นห่างกันไม่เกินราว 1.5 ระดับ แต่ในเงาลึกต่างกันชัด ช่องว่างใหญ่สุดราว 8.5 ระดับจาก 255 อยู่แถวค่า linear 0.002 (แถว 0.002 ในตาราง)
| ค่า linear | sRGB (จาก 255) | gamma 2.2 (จาก 255) |
|---|---|---|
| 0.001 | 3.3 | 11.0 |
| 0.002 | 6.6 | 15.1 |
| 0.005 | 15.6 | 22.9 |
| 0.01 | 25.5 | 31.4 |
| 0.18 | 117.6 | 117.0 |
Rec.709 คือเส้นที่สาม
sRGB กับ Rec.709 ใช้ primaries และ white point (D65) ชุดเดียวกัน ต่างกันแค่เส้นโค้ง ตัวเลือก “rec709” ใน Nuke คือเส้นสำหรับเข้ารหัสฝั่งกล้อง ส่วนจอทีวี HD ตามมาตรฐาน BT.1886 ถอดรหัสด้วย power ราว 2.4
ผลคือไฟล์เดียวกันดูบนจอ sRGB กับทีวี Rec.709 จะไม่เหมือนกัน ก่อนส่งต้องถามว่าลูกค้าดูบนอะไร
| เส้นโค้ง | รูปร่าง | เจอที่ไหน |
|---|---|---|
| sRGB | ท่อนตรง + power 1/2.4 | texture, เว็บ, จอคอม |
| gamma 2.2 | power ล้วน | บางโปรแกรมและบางไฟล์เก่า |
| Rec.709 (กล้อง) | ท่อนตรง + power อีกชุด | วิดีโอ HD ฝั่งเข้ารหัส |
| BT.1886 (จอ) | power ราว 2.4 | ทีวีและจอ grade HD |
มีผลจริงตอนไหน
ช็อตกลางคืน ควันดำ หรือเงาใต้หุ่นยนต์ CG คือที่ที่ช่องว่างนี้โผล่ ถ้า Read ด้วย sRGB แต่ Write ด้วย gamma 2.2 ดำจะลอยขึ้นหลายระดับ ทั้งที่ไฮไลต์แทบไม่เปลี่ยน คนจึงไม่ค่อยเห็นจนไปถึงห้อง grade
- 1Read plate (sRGB)
- 2Write แบบไม่แก้อะไร (sRGB)
- 3Read ไฟล์ที่ออกมา
- 4Merge difference = ดำสนิท
ทำ round-trip test ครั้งเดียวตอนเริ่มโชว์ ประหยัดการแก้ทีหลังได้มาก
4 ในงานจริง
ทำใน Nuke
- ใน color management แบบ Nuke ตัวเลือก sRGB, rec709 และ Gamma2.2 แยกกันทั้งใน Read และ Write เลือกตามที่ไฟล์ถูกสร้างมาจริง
- ใน config แบบ OCIO ชื่อจะต่างไปตาม config เช่น config ACES บางรุ่นใช้ชื่อแนว “Utility - sRGB - Texture” ให้ดูรายชื่อใน config ของโชว์
- ตรวจ round trip ด้วย Merge (operation: difference) ระหว่างต้นฉบับกับไฟล์ที่ Write ออกแล้ว Read กลับ
- ยก gain ของ Viewer ขึ้นมาก ๆ เพื่อดูความต่างในเงาให้เห็นชัด
พลาดบ่อย → แก้ยังไง
- ✗ ใช้ sRGB กับ gamma 2.2 สลับกันเหมือนเป็นอันเดียวกัน✓ ใช้เส้นเดียวกันทั้งขาเข้าและขาออก ไม่งั้นเงาเลื่อนได้ถึงราว 9 ระดับ
- ✗ แปลงเป็น linear ด้วย Grade gamma แทนการตั้ง colorspace✓ ใช้ colorspace ที่ Read หรือ node แปลงสี จะได้เส้นที่ถูกและถอดกลับได้พอดี
- ✗ ส่งไฟล์เว็บด้วย Write rec709 (หรือกลับกัน) โดยไม่ถามสเปก✓ ถามก่อนว่าดูบนจออะไร แล้วเลือกเส้นให้ตรง
- ✗ ดำไม่ตรงระหว่างโปรแกรม แล้วรีบ grade แก้✓ เช็ก transfer function ของแต่ละโปรแกรมก่อน ส่วนใหญ่แก้ได้ที่การตั้งค่า ไม่ต้อง grade
เช็กก่อนส่งช็อต
- Read และ Write ของ plate ใช้เส้นโค้งชื่อเดียวกัน
- Round-trip difference ได้ดำสนิท
- เส้นโค้งของไฟล์ส่งตรงกับสเปกและจอของลูกค้า
- ช็อตมืดเช็กค่าในเงาด้วย Viewer gain สูง
5 เช็กตัวเอง
sRGB กับ gamma 2.2 ต่างกันชัดที่สุดตรงไหน
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. ทำไมเส้น sRGB มีท่อนตรงใกล้ดำ
2. plate กลางคืน Read ด้วย sRGB แล้ว Write ด้วย Gamma2.2 จะเกิดอะไร
ตัวเลขมาจากไหน: เส้นโค้งและเมทริกซ์คำนวณจากนิยามที่เผยแพร่ (sRGB IEC 61966-2-1, ARRI LogC3 EI 800, primaries ของ Rec.709/P3/Rec.2020/ACES AP1) ตรวจกับตัวเลขอ้างอิงที่เผยแพร่แล้ว ส่วน tone curve เป็นสูตรตัวอย่าง ไม่ใช่ ACES/AgX/Filmic