การเข้ารหัส JPEG ควรคำนึงถึงแกมม่าหรือไม่?


11

เมื่อรูปภาพถูกเข้ารหัสด้วย JPEG พิกเซล RGB จะถูกเข้ารหัสเป็น YUV ก่อนจากนั้นช่อง UV จะลดลง ก่อนทำการ DCT จริงและเข้ารหัสสัมประสิทธิ์ JPEG ไม่แกมมาแก้ไขช่องสัญญาณ Y ถูกต้องหรือไม่ เราไม่ควรกำหนดสัมประสิทธิ์ DCT ที่จะส่งผลต่อผลลัพธ์ที่เราดูมากที่สุด?


ฉันไม่รู้ แต่มันก็สมเหตุสมผลที่จะไม่แก้ไขแกมม่า
joojaa

ฉันไม่ได้โพสต์สิ่งนี้เป็นคำตอบเนื่องจากฉันไม่มั่นใจในมัน แต่การรับรู้ของมนุษย์ต่อความสว่างไม่ได้เป็นเส้นตรง ในความเป็นจริง sRGB ทำงานได้ค่อนข้างดีในการชดเชยสิ่งนั้นและให้ความแม่นยำสูงสุดในพื้นที่ที่มีความสำคัญ ดังนั้นคุณอาจพบว่าการแก้ไขแกมม่าก่อนการบีบอัดลูม่าอาจทำให้ได้ผลลัพธ์ที่แย่ลง
yuriks

AFAIK มาตรฐานวิดีโอถือว่า R'G'B 'เช่น พื้นที่สีที่ไม่ใช่เชิงเส้นเมื่อใช้การแปลงสี 3x3 เป็น / จาก YCbCr ในแอปพลิเคชันเช่นวิดีโอที่ต้องการเพิ่มคุณภาพต่อบิตมันไม่สมเหตุสมผลเลยที่จะใช้เชิงเส้น ฉันคิดว่าส่วนคำถามที่ 27 และ 29 ของคำถามที่พบบ่อยเกี่ยวกับสีของ Charles Poyton แสดงชัดเจนยิ่งขึ้น: poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC27
Simon F

"Video demystified" ยังกล่าวอีกว่า: "YCbCr เป็นพื้นที่สีที่กำหนดโดย BT.601 และตอนนี้ใช้สำหรับรูปแบบวิดีโอคอมโพเนนต์ดิจิทัลทั้งหมด .... สัญกรณ์ที่ถูกต้องทางเทคนิคคือ Y'Cb'Cr 'เนื่องจากทั้งสามองค์ประกอบคือ มาจาก R'G'B '"
Simon F

เลขชี้กำลังแกมม่าถูกเก็บไว้ในข้อมูล JPEG exif ซอฟต์แวร์ส่วนใหญ่ไม่สนใจมันทั้งหมด แต่คุณสามารถสันนิษฐานได้ว่าหลังจากถอดรหัส jpeg ไปแล้วในพื้นที่ gamma ดังนั้นจึงไม่มีการแปลงให้ทำก่อนส่งค่า rgb บนบัฟเฟอร์การแสดงผล
v.oddou

คำตอบ:


2

ตาม Wikipedia (แทรกความถูกต้องปฏิเสธความรับผิดชอบมาตรฐาน):

JPEG ไม่ได้กำหนดการเข้ารหัสสีที่จะใช้สำหรับรูปภาพ JFIF กำหนดรูปแบบสีที่จะใช้: Y สำหรับ greyscale หรือ YCbCr ตามที่กำหนดโดย CCIR 601

YCbCr เป็นรูปแบบที่ไม่ใช่เชิงเส้น ดังที่ฉันได้กล่าวก่อนหน้านี้สถานะ "Video Demystified":

"YCbCr เป็นพื้นที่สีที่กำหนดโดย BT.601 และตอนนี้ใช้สำหรับรูปแบบวิดีโอคอมโพเนนต์ดิจิทัลทั้งหมด .... สัญกรณ์ทางเทคนิคที่ถูกต้องคือ Y'Cb'Cr 'เนื่องจากส่วนประกอบทั้งสามมาจาก R'G'B '."

และชาร์ลส์ Poynton ของสีคำถามที่พบบ่อยรัฐ

ระบบวิดีโอโดยประมาณตอบสนองต่อความสว่างของการมองเห็นโดยใช้สัญญาณ R'G'B ซึ่งแต่ละฟังก์ชั่นใช้พลังงาน 0.45

ด้วยการบีบอัดเราอยู่หลังการแสดงภาพที่ดีที่สุดต่อบิตและเนื่องจากตาเป็นแบบไม่เป็นเชิงเส้นด้วยวิธีนี้จึงเหมาะสมที่จะใช้การนำเสนอที่ไม่ใช่เชิงเส้น


จากรายละเอียดเหล่านี้ตามที่ฉันเข้าใจ JPEG คาดว่าค่าอินพุต RGB จะถูกเข้ารหัสในลักษณะที่จอแสดงผลจะใช้ฟังก์ชั่นพลังงานเมื่อแสดงผล เพื่อสร้างค่า RGB เฉพาะเหล่านั้นใหม่พวกเขาไม่ควรได้รับการแก้ไขก่อนการเข้ารหัส
Mokosha

1
ปัญหาเกี่ยวกับการระบุว่าเป็นแบบนั้นมันค่อนข้างคลุมเครือ เราควรระบุว่าหากข้อมูล "RGB" ของคุณคือ R'G'B '(และสมมติว่า sRGB อยู่ในหมวดหมู่นั้น) ดังนั้นคุณไม่ควรแก้ไขค่าก่อนที่จะใช้ R'G'B' => YCbCr เมทริกซ์ อย่างไรก็ตามหากข้อมูลมีการพูดถูกคำนวณด้วย renderer (อาจเป็นเชิงเส้น) ถูกประมวลผลโดยใช้การลดขนาด (ซึ่งควรทำในพื้นที่เชิงเส้น) หรือพูดจับ (และทำความสะอาด) ด้วย CCD (ซึ่งฉัน คิดว่าเป็นเชิงเส้น) จากนั้นจะต้องมีการแมปใหม่ก่อนการบีบอัด JPEG
Simon F

7

คำตอบสั้น ๆ ว่า "ไม่" สำหรับเหตุผลที่ครอบคลุมในบันทึก Alvy เรย์สมิ ธ ,แกมมาแก้ไข แกมม่าไม่ได้เกี่ยวกับความไม่เชิงเส้นในการรับรู้ของมนุษย์ แต่เกี่ยวกับความไม่เชิงเส้นในอุปกรณ์แสดงผล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.