Jpegli ไลบรารีสำหรับเข้ารหัสไฟล์ JPEG ประสิทธิภาพสูงที่ Google แนะนำ

    By: DH

    Published: April 4, 2024

single_news.title

Google ได้เปิดตัว Jpegli ซึ่งเป็นไลบรารีสำหรับเข้ารหัส (encode) ไฟล์ JPEG แบบใหม่ที่มีประสิทธิภาพสูงกว่ามาตรฐานเดิม พัฒนาด้วยภาษา C++

Jpegli คืออะไร

เว็บไซต์ที่โหลดข้อมูลช้าอาจก่อให้เกิดความรำคาญและสร้าง UX (User Experience) ที่ไม่ดีต่อผู้ใช้งานเว็บของเราได้ การเข้ารหัสไฟล์ภาพก็เป็นหนึ่งในสาเหตุของปัญหานี้ครับ

ดังนั้น Jpegli จึงถูกคิดค้นขึ้นมาเพื่อเป็นทางเลือกใหม่สำหรับการเข้ารหัสฟอร์แมตภาพแบบ JPEG แบบเดิมที่เราคุ้นเคยกันดี โดยให้ประสิทธิภาพสูงกว่า และสามารถเข้ากันได้กับมาตรฐานเดิมได้เป็นอย่างดี พร้อมทั้งมีความสามารถเพิ่มเติม และบีบอัดไฟล์ได้ดีกว่าถึง 35% ในการตั้งค่าคุณภาพสูง



GitHub ของ Jpegli


คุณสมบัติของ Jpegli

  • รองรับการเข้ารหัสและถอดรหัสได้สอดคล้องกับมาตรฐาน JPEG เดิมทั้งหมด รวมถึงรูปแบบ 8 บิต จึงมีความเข้ากันได้สูงกับซอฟต์แวร์และเว็บบราวเซอร์ต่าง ๆ
  • ให้คุณภาพของภาพหลังการเข้า/ถอดรหัส (encode/decode) ดีกว่า ด้วยการคำนวณค่าต่าง ๆ อย่างแม่นยำและมีประสิทธิภาพมากขึ้นตามหลักการทางสายตา ภาพจะมีความคมชัดมากขึ้นและมีจุดบกพร่องที่น้อยกว่า
  • ประสิทธิภาพการทำงานสูง โดยมีความเร็วในการเข้า/ถอดรหัส เทียบเท่ากับเทคนิคเดิม ๆ เช่น libjpeg-turbo และ MozJPEG ทำให้ชาว dev สามารถนำ Jpegli มาใช้ได้โดยไม่กระทบประสิทธิภาพของระบบ
  • รองรับข้อมูลภาพความละเอียดสูงถึง 10 บิต/element ซึ่งมากกว่ามาตรฐาน 8 บิต แบบเดิม ช่วยลดปัญหาแถบสีในภาพโทนสีค่อย ๆ เปลี่ยน โดยไฟล์ผลลัพธ์ก็ยังคงเข้ากันได้กับโปรแกรมแสดงผล 8 บิต
  • บีบอัดภาพได้อย่างมีประสิทธิภาพมากกว่า codecs เข้ารหัส JPEG แบบดั้งเดิม ส่งผลให้ประหยัดแบนด์วิดท์และพื้นที่จัดเก็บข้อมูล รวมถึงเพิ่มความเร็วในการโหลดเว็บไซต์


วิธีการทำงานของ Jpegli

Jpegli ทำงานโดยใช้เทคนิคใหม่ ๆ ในการลดสัญญาณรบกวน (noise) และปรับปรุงคุณภาพของภาพส่วนใหญ่โดยใช้เทคนิคการสกัดค่า quantization แบบปรับเปลี่ยนตามบริเวณ (adaptive quantization heuristics)

จากมาตรฐาน JPEG XL การเลือกค่า quantization matrix ที่เหมาะสม และการคำนวณค่าต่างๆ อย่างแม่นยำ นอกจากนี้ยังสามารถเลือกใช้ระบบสี (colorspace) ที่ทันสมัยกว่าได้ โดยวิธีการเหล่านี้ถูกออกแบบมาอย่างละเอียดถี่ถ้วนเพื่อให้ไฟล์ผลลัพธ์ยังคงมีรูปแบบ 8 บิตเช่นเดียวกับมาตรฐานเดิม จึงรักษาความเข้ากันได้กับผู้ใช้งานทั่วไปได้เป็นอย่างดี



กราฟ ELO (Image source: Google Blog)

จากกราฟแสดงคะแนน ELO ด้านบนซึ่งใช้วัดผลการประเมินคุณภาพภาพที่เข้ารหัสด้วยเทคนิคต่าง ๆ เราสามารถสังเกตได้ว่า Jpegli ที่อัตราบิตเรท 2.8 บิตต่อพิกเซล (BPP) ได้คะแนน ELO สูงกว่า libjpeg-turbo ที่อัตราบิตเรทสูงถึง 3.7 บิตต่อพิกเซล ซึ่งสูงกว่าของ Jpegli ถึง 32%


ดังนั้นจากการทดสอบเปรียบเทียบกับเทคนิคการเข้ารหัสภาพแบบเดิมโดยผู้เชี่ยวชาญ พบว่า Jpegli ให้คุณภาพของภาพที่ดีกว่าในอัตราบิตเรทที่ต่ำกว่า สามารถบีบอัดภาพคุณภาพสูงได้มากกว่า 35% เมื่อเทียบกับ libjpeg-turbo ซึ่งเป็นเครื่องมือมาตรฐานที่ใช้งานกันอยู่ในปัจจุบัน


ที่มา


เปิดโลกการเขียนโปรแกรมและ Software Development ด้วย online courses ที่จะพาคุณอัพสกิลและพัฒนาสู่การเป็นมืออาชีพ เรียนออนไลน์ เรียนจากที่ไหนก็ได้ พร้อมซัพพอร์ตหลังเรียน

คอร์สเรียนเขียนโปรแกรม