แนะนำรูปแบบการบีบอัดภาพ QOI

มีการแนะนำรูปแบบการบีบอัดภาพแบบไม่สูญเสียน้ำหนักเบาแบบใหม่ - QOI (Quite OK Image) ซึ่งช่วยให้คุณบีบอัดภาพในพื้นที่สี RGB และ RGBA ได้อย่างรวดเร็ว เมื่อเปรียบเทียบประสิทธิภาพกับรูปแบบ PNG การใช้การอ้างอิงแบบเธรดเดี่ยวของรูปแบบ QOI ในภาษา C ซึ่งไม่ใช้คำสั่ง SIMD และการเพิ่มประสิทธิภาพแอสเซมบลีจะมีความเร็วการเข้ารหัสเร็วกว่าไลบรารี libpng และ stb_image ถึง 20-50 เท่า และ 3 ความเร็วในการถอดรหัสเร็วขึ้น -4 เท่า ในแง่ของประสิทธิภาพการบีบอัด QOI ใกล้เคียงกับ libpng ในการทดสอบส่วนใหญ่ (ในการทดสอบบางอย่างจะเหนือกว่าเล็กน้อย และในการทดสอบอื่นๆ ก็ด้อยกว่า) แต่โดยทั่วไปแล้วจะเหนือกว่า stb_image อย่างเห็นได้ชัด (ได้รับมากถึง 20%)

การใช้งานอ้างอิงของ QOI ใน C นั้นมีโค้ดเพียง 300 บรรทัด ซอร์สโค้ดถูกแจกจ่ายภายใต้ใบอนุญาต MIT นอกจากนี้ ผู้ที่ชื่นชอบได้เตรียมการใช้งานตัวเข้ารหัสและตัวถอดรหัสในภาษา Go, Zig และ Rust โปรเจ็กต์นี้ได้รับการพัฒนาโดย Dominic Szablewski ผู้พัฒนาเกมที่มีประสบการณ์ในการสร้างไลบรารีสำหรับการถอดรหัสวิดีโอ MPEG1 เมื่อใช้รูปแบบ QOI ผู้เขียนต้องการแสดงให้เห็นว่าเป็นไปได้ที่จะสร้างทางเลือกที่มีประสิทธิภาพและเรียบง่ายแทนรูปแบบการเข้ารหัสรูปภาพสมัยใหม่ที่ซับซ้อนเกินไป

ประสิทธิภาพ QOI ไม่ขึ้นกับความละเอียดและลักษณะของภาพที่เข้ารหัส (O(n)) การเข้ารหัสและถอดรหัสจะดำเนินการในครั้งเดียว - แต่ละพิกเซลจะถูกประมวลผลเพียงครั้งเดียวและสามารถเข้ารหัสได้ด้วยวิธีใดวิธีหนึ่งจาก 4 วิธี โดยเลือกขึ้นอยู่กับค่าของพิกเซลก่อนหน้า หากพิกเซลถัดไปตรงกับพิกเซลก่อนหน้า ตัวนับการทำซ้ำจะเพิ่มขึ้นเท่านั้น หากพิกเซลตรงกับค่าใดค่าหนึ่งในบัฟเฟอร์พิกเซล 64 ที่ผ่านมา ค่าจะถูกแทนที่ด้วยออฟเซ็ต 6 บิตเป็นพิกเซลที่ผ่านมา หากสีของพิกเซลก่อนหน้าแตกต่างออกไปเล็กน้อย ความแตกต่างจะถูกระบุในรูปแบบสั้น (การเข้ารหัสสั้น ๆ ของความแตกต่างของส่วนประกอบสีที่พอดีกับ 2,4, 5 และ XNUMX บิต) หากการปรับให้เหมาะสมไม่สามารถทำได้ ค่า rgba แบบเต็มจะถูกจัดเตรียมไว้

ที่มา: opennet.ru

เพิ่มความคิดเห็น