รูปแบบภาพทดลองใหม่ที่เรียกว่า PEP (Prediction-Encoded Pixels) ได้เกิดขึ้น โดยมุ่งเป้าไปที่ pixel art และภาพที่มีสีน้อย พร้อมสัญญาว่าจะให้การบีบอัดที่ดีกว่ารูปแบบที่ยอมรับแล้วอย่าง PNG และ GIF อย่างมีนัยสำคัญ รูปแบบนี้ใช้เทคโนโลยีการบีบอัด Prediction by Partial Matching เพื่อให้ได้ขนาดไฟล์ที่เล็กกว่ารูปแบบดั้งเดิม 20-50% แม้ว่าจะต้องแลกมาด้วยความเร็วในการประมวลผล
คุณสมบัติหลักของรูปแบบ PEP
- กรณีการใช้งานเป้าหมาย: พิกเซลอาร์ตสีน้อย (เหมาะสมที่สุดที่ ≤16 สี รองรับได้สูงสุด 256 สี)
- วิธีการบีบอัด: Prediction by Partial Matching, Order-2 (PPM-2)
- รูปแบบไฟล์: การบีบอัดแบบไม่สูญเสียข้อมูลพร้อมรองรับพาเลต
- ฟังก์ชัน API: pep_compress(), pep_decompress(), pep_save(), pep_load()
- รูปแบบสี: รองรับ RGBA และ BGRA
- สถานะปัจจุบัน: อยู่ในระยะทดลอง
ประสิทธิภาพการบีบอัดแสดงผลลัพธ์ที่หลากหลาย
การทดสอบประสิทธิภาพเบื้องต้นเผยให้เห็นว่าประสิทธิผลของ PEP แตกต่างกันอย่างมากขึ้นอยู่กับประเภทของภาพ สำหรับภาพที่เรียบง่ายมากอย่าง sprite ต้นไม้ 4 สี PEP ได้ผลลัพธ์ 901 ไบต์ เมื่อเทียบกับ PNG ที่ 984 ไบต์ และ GIF ที่ 1,047 ไบต์ อย่างไรก็ตาม ข้อได้เปรียบของรูปแบบนี้กลับไม่ชัดเจนกับภาพประเภทอื่น ในการทดสอบหนึ่งกับภาพฟอนต์ 2 สี PNG กลับมีประสิทธิภาพเหนือกว่า PEP เล็กน้อยที่ 1,318 ไบต์ เทียบกับ PEP ที่ 1,357 ไบต์
การปรับปรุงที่น่าประทับใจที่สุดปรากฏในภาพที่มีจำนวนสีสูงกว่า ฉากที่มี 251 สีถูกบีบอัดเหลือ 73,542 ไบต์ด้วย PEP เมื่อเทียบกับ PNG ที่ 84,657 ไบต์ และ GIF ที่ 96,997 ไบต์ ซึ่งแสดงถึงการประหยัดพื้นที่ที่มีความหมายสำหรับนักพัฒนาที่ทำงานกับ pixel art ที่ซับซ้อนมากขึ้น
การเปรียบเทียบการบีบอัดระหว่าง PEP vs PNG vs GIF
ประเภทรูปภาพ | ขนาด PEP | ขนาด PNG | ขนาด GIF | ข้อได้เปรียบของ PEP |
---|---|---|---|---|
Tree1 (4 สี, 112x96) | 901 ไบต์ | 984 ไบต์ | 1,047 ไบต์ | เล็กกว่า PNG 8.4% |
Font (2 สี, 192x144) | 1,357 ไบต์ | 1,318 ไบต์ | 1,919 ไบต์ | ใหญ่กว่า PNG 3% |
NZ Scene (251 สี, 640x200) | 73,542 ไบต์ | 84,657 ไบต์ | 96,997 ไบต์ | เล็กกว่า PNG 13.1% |
ความกังวลด้านความเร็วครอบงำการอภิปรายในชุมชน
เวลาประมวลผลที่ช้ากว่าของรูปแบบนี้กลายเป็นประเด็นสำคัญในหมู่นักพัฒนา PEP ใช้เวลานานกว่าในการบีบอัดและขยายข้อมูล 2-10 เท่าเมื่อเทียบกับรูปแบบที่มีอยู่ สำหรับฉากที่ซับซ้อน 251 สี การขยายข้อมูลใช้เวลามากกว่า 32 มิลลิวินาทีกับ PEP เทียบกับเพียง 3 มิลลิวินาทีสำหรับ PNG
สมาชิกในชุมชนตั้งคำถามว่าประโยชน์ด้านขนาดไฟล์คุ้มค่ากับการลดประสิทธิภาพหรือไม่ นักพัฒนาบางคนสังเกตว่าการถอดรหัส PNG เร็วพอสำหรับแอปพลิเคชันส่วนใหญ่แล้ว ทำให้การแลกเปลี่ยนความเร็วของ PEP เป็นที่น่าสงสัยสำหรับการใช้งานหลายกรณี
การเปรียบเทียบความเร็วในการประมวลผล
รูปแบบ | เวลาการบีบอัด | เวลาการคลายการบีบอัด | ตัวคูณความเร็ว |
---|---|---|---|
PEP | 0.383-25.652 มิลลิวินาที | 0.412-32.121 มิลลิวินาที | ช้ากว่า 2-10 เท่า |
QOI | 0.023-1.03 มิลลิวินาที | 0.028-1.004 มิลลิวินาที | ความเร็วพื้นฐาน |
PNG | ไม่ระบุ | ~0.25-3.069 มิลลิวินาที | ความเร็วมาตรฐาน |
แอปพลิเคชันเฉพาะทางขับเคลื่อนความสนใจ
แม้จะมีความกังวลด้านความเร็ว รูปแบบนี้ก็พบผู้สนับสนุนในหมู่นักพัฒนาเกม pixel art ที่ให้ความสำคัญกับขนาดไฟล์มากกว่าความเร็วในการประมวลผล การออกแบบของรูปแบบนี้มุ่งเป้าไปที่เกมและการบีบอัด sprite โดยเฉพาะ ซึ่งขนาดไฟล์ที่เล็กกว่าอาจมีความสำคัญอย่างยิ่งสำหรับการแจกจ่ายและการจัดเก็บ
มันเป็นรูปแบบแบบไม่สูญเสียที่ปรับให้เหมาะสมสำหรับขนาดไฟล์มากกว่าความเร็วในการขยายข้อมูล README ดูเหมือนจะชัดเจนพอแล้ว สร้างโดยนักพัฒนาเกม pixel art สำหรับการบีบอัด sprite ในเกม pixel art ดังนั้นฉันคิดว่ามันเหมาะกับช่องว่างที่มีประโยชน์
ผู้ใช้งานแรกได้เริ่มนำการสนับสนุน PEP ไปใช้ในเครื่องมือของพวกเขาแล้ว โดยมีนักพัฒนาอย่างน้อยหนึ่งคนสร้าง command-line interface และเพิ่มการสนับสนุนให้กับแอปพลิเคชัน pixel art ภายในไม่กี่ชั่วโมงหลังจากการประกาศรูปแบบนี้
การนำไปใช้ทางเทคนิคก่อให้เกิดคำถาม
รูปแบบนี้ใช้โมเดลการทำนายที่ค่อนข้างเรียบง่าย ซึ่งดูเพียงสอง pixel ก่อนหน้าเพื่อทำนาย pixel ถัดไป เมื่อเทียบกับแนวทางที่ซับซ้อนกว่าของ PNG ที่ตรวจสอบ pixel ข้างเคียงสี่ตัว วิธีการทำนายที่เรียบง่ายกว่านี้ ร่วมกับ arithmetic encoding และการบีบอัดพาเลต อาจอธิบายได้ว่าทำไมประสิทธิภาพของ PEP จึงแตกต่างกันอย่างมากในภาพประเภทต่างๆ
รูปแบบนี้ยังคงอยู่ในสถานะทดลอง และผู้สร้างยอมรับว่าจำเป็นต้องมีการพัฒนาและข้อเสนอแนะจากชุมชนเพิ่มเติมเพื่อปรับปรุงความสามารถและกำหนดตำแหน่งสุดท้ายในภูมิทัศน์รูปแบบภาพ
อ้างอิง: Prediction-Encoded Pixels