บีบอัดรูปภาพที่คล้ายกัน


10

ฉันต้องการลดขนาดของคลังรูปภาพของฉันดังนั้นฉันจึงต้องการบีบอัด หลายคนไม่เหมือนกัน แต่ยังคงคล้ายกันมาก (ภาพต่อมาของฉากเดียวกัน) มีอัลกอริทึมการบีบอัดใด ๆ ที่ใช้ประโยชน์จากข้อเท็จจริงนี้เพื่อบีบอัดรูปภาพเหล่านี้อย่างมีประสิทธิภาพหรือไม่ 7zip (LZMA) ไร้ประโยชน์

คำตอบ:


11

คุณอาจลองPaq 8 (fp8_v2.zip) ฉันลองด้วยตัวเองในภาพ PNG ที่คล้ายกัน 1440 ภาพจากนั้นลองอีกครั้งบนภาพ JPG ที่คล้ายกัน 111 ภาพ นี่คือผลลัพธ์

  • 1440 ไฟล์ PNG, 28,631,615 ไบต์ => 2,058,653 ไบต์บีบอัด
  • ไฟล์ JPG 111 ไฟล์บีบอัด 15,003,820 ไบต์ => 489,096 ไบต์

การบีบอัดไฟล์ PNG ใช้เวลาประมาณ 8 นาทีและหน่วยความจำ 550 MB เมื่อใช้:

fp8_v2.exe -7 images *.png

การบีบอัดไฟล์ JPG ใช้เวลาประมาณ 5 นาทีและ 125 MB ของหน่วยความจำเมื่อใช้:

fp8_v2.exe -5 images image12*.jpg

ดูเพิ่มเติม: jpg การทดสอบการบีบอัดภาพแบบไม่สูญเสีย


การบีบอัด 97% สำหรับ JPG ดูเหมือนจะไม่สมจริง ตัวเลขในการทดสอบเปรียบเทียบที่คุณลิงก์เพื่อบอกว่ามีการบีบอัดประมาณ 20%
OneSolitaryNoob

@OneSolitaryNoob คุณลืมหรือไม่ว่า JPEG มีความคล้ายคลึงกัน? 110/111 = การบีบอัดที่คาดหวัง99.1% การทดสอบเปรียบเทียบที่เขาเชื่อมโยงนั้นเกี่ยวกับการบีบอัด JPEG หนึ่งรายการ
Navin

@Navin มันไม่น่าเป็นไปได้จริงๆ แม้ว่าพวกเขาจะมีลักษณะเกือบเหมือนกันส่วนใหญ่ของพิกเซลจะแตกต่างกันเล็กน้อย
OneSolitaryNoob

@OneSolitaryNoob งั้นเหรอ? 1 วินาทีของวิดีโอ (30 เฟรม) สามารถบีบอัดให้มีขนาดใกล้เคียงกับเฟรมเดียว ตราบใดที่ความแตกต่างเพียงเล็กน้อยทำให้ข้อมูลเพียงเล็กน้อยคุณก็เป็นคนดี
Navin

@Navin นั้นการบีบอัดแบบสูญเสียรายละเอียดมากมายหายไป แต่คนส่วนใหญ่จะไม่สังเกตเห็น Paq * เป็นการบีบอัดแบบไม่สูญเสีย
OneSolitaryNoob

1

ฉันคิดว่าการขุดโพรงล้อด้วยเครื่องแปลงเลขคณิตจะเหมาะสำหรับหน้าต่างบานใหญ่พอ จะเกิดอะไรขึ้นถ้าคุณกำหนดค่า BZIP2 ให้ใช้ขนาดบล็อกเท่ากับรูปถ่ายขนาดเล็ก มันจะช้ากว่าและใช้หน่วยความจำมากกว่า แต่อัตราส่วนการบีบอัดควรเพิ่มสูงขึ้น คุณลอง LZMA ด้วยขนาดบล็อกที่ใหญ่ขึ้นแล้วหรือยัง?


1

นี่เป็นวิธีง่ายๆที่ไม่ได้ผลสำหรับภาพถ่าย แต่อาจใช้งานได้หากมีภาพหลายภาพที่มีพื้นที่เหมือนกันขนาดใหญ่พิกเซลต่อพิกเซล: บันทึกภาพในรูปแบบที่คลายการบีบอัดเช่น BMP (ไม่ใช่ PNG หรือ GIF) จากนั้นตัดและบีบอัด ด้วยคอมเพรสเซอร์ที่ดีเช่น XZ, บน Linux ที่มีบางอย่างคล้ายกัน

tar -c myDirectory | xz -9 >myDirectory.tar.xz

แทนที่จะใช้ TAR และ XZ อาจใช้ 7-Zip พร้อมกับตัวเลือก“ solid archive” เพื่อให้ได้ประสิทธิภาพที่เหมือนกัน ด้วยวิธีนี้ฉันสามารถบีบอัดภาพหน้าจอที่คล้ายกัน 16 ภาพซึ่งถ่ายได้ประมาณ 900 KB แต่ละภาพเมื่อบันทึกเป็นไฟล์ PNG แยกเป็นไฟล์เก็บถาวร 2 MB ประโยชน์ของการแก้ปัญหานี้คือมันใช้รูปแบบไฟล์ทั่วไปจึงทำงานได้โดยไม่ต้องติดตั้งซอฟต์แวร์ใหม่ (น่าเสียดายที่โปรแกรมเก่ากว่าและทั่วไปยิ่งกว่านั้น GZIP และ BZIP2 ไม่ทำงานได้ดีสำหรับฉัน - อาจเป็นเพราะขนาดบล็อกของ BZIP2 ไม่สามารถกำหนดค่าให้มีขนาดใหญ่กว่า 900 KB ได้)


0

ไม่ใช่ว่าฉันเคยเห็น น่าจะเป็นสิ่งที่ใกล้เคียงที่สุดที่จะนำ JPEG ที่คล้ายกันหลายอย่างและวางลงในภาพยนตร์ MJPEG คุณสามารถใช้ APNG หรือ GIF แบบเคลื่อนไหวเพื่อจุดประสงค์ที่คล้ายกัน

ฉันไม่แน่ใจว่ามันจะใช้งานได้ดีแค่ไหนและดูเหมือนว่าคุณกำลังพูดถึง screencaps ภาพยนตร์อยู่แล้วดังนั้นการบรรจุมันใหม่ลงในไฟล์เสียงของภาพยนตร์ ... ต่อต้าน

อาจเป็นวิธีที่ดีกว่าถ้าคุณยังมีคลิปที่หน้าจอมาจากนั้นก็คือการหาเครื่องมือบรรทัดคำสั่งที่สามารถแยกเฟรมที่แน่นอนสำหรับคุณคัดลอกตัวระบุที่ไม่ซ้ำกันไปยังแฟ้มข้อความบางแห่งแล้วคุณก็สามารถทำได้เสมอ แยกเฟรมอีกครั้งได้อย่างง่ายดายเมื่อคุณต้องการ


GIF ไม่เหมาะสำหรับการบีบอัดรูปภาพและ GIF แบบเคลื่อนไหวยังน้อยกว่า แม้แต่การบีบอัดรูปภาพไปยังวิดีโอ MJPEG ก็ไม่ได้มีประโยชน์ในสายตาของฉันเพราะการกู้คืนรูปภาพเดี่ยวอาจทำได้ยาก
Martin

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