Χωρίς μεταφόρτωση, 100% τοπικά, χωρίς λογαριασμό

Άρθρο

Γιατί οι εικόνες χάνουν ποιότητα με κάθε αποθήκευση

Μια φωτογραφία που φαινόταν ευκρινής στο άλμπουμ της κάμερας βγαίνει ψηφιδωτή αφού προωθηθεί μέσα από μερικές ομαδικές συνομιλίες και αναρτηθεί ξανά μερικές φορές. Κανείς δεν την επεξεργάστηκε επίτηδες· απλώς πέρασε από αρκετές επανακωδικοποιήσεις, και καθεμιά πέταξε λίγη ακόμα λεπτομέρεια. Αυτή είναι η απώλεια γενιάς, μια παλιά και καλά κατανοητή ιδιότητα της lossy συμπίεσης, και εξηγεί γιατί οι εικόνες που έχουν μοιραστεί έντονα τείνουν να φαίνονται προοδευτικά χειρότερες. Δείτε τι πραγματικά απορρίπτει μια lossy επανακωδικοποίηση, γιατί συσσωρεύεται, και πώς να σταματήσετε ένα αρχείο από το να υποβαθμίζεται περαιτέρω.

Τι πραγματικά πετά το «lossy»

Το JPEG, η μορφή πίσω από τις περισσότερες φωτογραφίες που μοιράζονται online, είναι lossy εξ ορισμού: το πρότυπο πίσω του, ITU-T T.81, δουλεύει μετατρέποντας μπλοκ pixel σε δεδομένα συχνότητας και μετά στρογγυλοποιώντας εκείνα τα δεδομένα λίγο ή πολύ επιθετικά ανάλογα με τη ρύθμιση ποιότητας, ένα βήμα που ονομάζεται κβαντοποίηση. Η στρογγυλοποίηση δεν μπορεί να αναιρεθεί ακριβώς· η απορριφθείσα λεπτομέρεια έχει γνήσια χαθεί, δεν είναι κρυμμένη κάπου στο αρχείο. Μια υψηλή ρύθμιση ποιότητας στρογγυλοποιεί ήπια και η απώλεια είναι δύσκολο να φανεί, μια χαμηλή στρογγυλοποιεί σκληρά και το αρχείο γίνεται ορατά ψηφιδωτό, αλλά ακόμα και μία μόνο αποθήκευση JPEG πάντα πετά κάτι.

Κάθε επανακωδικοποίηση είναι νέα γενιά

Την πρώτη φορά που μια φωτογραφία αποθηκεύεται ως JPEG, τα δεδομένα pixel της κάμερας κβαντοποιούνται μία φορά. Το να ανοίξετε ξανά εκείνο το JPEG και να το αποθηκεύσετε ξανά, ακόμα και χωρίς καμία επεξεργασία, αποκωδικοποιεί τα ήδη προσεγγισμένα pixel και τα κβαντοποιεί για δεύτερη φορά, πάνω στην πρώτη στρογγυλοποίηση, όχι αντί για αυτήν. Κάθε επιπλέον αποθήκευση είναι άλλη μια γενιά, και καθεμιά συσσωρεύει ό,τι ψηφιδωτότητα και ζώνωση χρώματος είχε ήδη εισαγάγει η προηγούμενη γενιά. Ένα μόνο πέρασμα σε λογική ρύθμιση ποιότητας είναι σχεδόν αόρατο· η ίδια ρύθμιση εφαρμοσμένη πέντε ή έξι φορές στη σειρά στο ίδιο αρχείο υποβαθμίζει ορατά μια φωτογραφία, επειδή τα σφάλματα από κάθε προηγούμενη γενιά είναι ακόμα εκεί όταν η επόμενη στρογγυλοποιεί ξανά.

Μια αλυσίδα πέντε γενιών JPEG: κάθε επανακωδικοποίηση ξεκινά από τα ήδη στρογγυλοποιημένα pixel της προηγούμενης, και η εικόνα γίνεται ορατά πιο ψηφιδωτή έως την πέμπτη γενιά

Γιατί οι εικόνες που μοιράζονται έντονα φαίνονται χειρότερες

Μια φωτογραφία που ταξιδεύει μέσα από αρκετές συνομιλίες, ροές και επανα-ανεβάσματα αποκτά νέα γενιά σε σχεδόν κάθε πέρασμα: μια εφαρμογή μηνυμάτων την επανασυμπιέζει για τη συνομιλία, μια κοινωνική πλατφόρμα την επανακωδικοποιεί ξανά για τη δική της ροή παράδοσης, κάποιος τραβά στιγμιότυπο του αποτελέσματος και ανεβάζει ξανά εκείνο το στιγμιότυπο, που είναι ακόμα μια πλήρης επανακωδικοποίηση μιας ήδη υποβαθμισμένης εικόνας. Κανένα από αυτά τα βήματα δεν χρειάζεται να είναι απρόσεκτο ή να χρησιμοποιήσει ασυνήθιστα χαμηλή ρύθμιση ποιότητας για να αθροιστεί το αποτέλεσμα· είναι σωρευτικό από τη φύση του, γι' αυτό ακριβώς μια εικόνα που έχει κυκλοφορήσει ευρέως για πολύ καιρό συχνά δείχνει ορατά περισσότερη ψηφιδωτότητα και ζώνωση χρώματος από ένα φρέσκο αντίγραφο της ίδιας φωτογραφίας.

Οι lossless μορφές δεν έχουν αυτό το πρόβλημα

Το PNG και το lossless WebP δουλεύουν διαφορετικά: συμπιέζουν βρίσκοντας μοτίβα στα ακριβή δεδομένα pixel και πακετάροντάς τα πιο αποδοτικά, χωρίς να στρογγυλοποιούν τίποτα, οπότε η αποκωδικοποίηση και επανακωδικοποίηση του ίδιου lossless αρχείου, χωρίς επεξεργασίες, αναπαράγει τα pixel ακριβώς, γενιά μετά γενιά. Αυτή η εγγύηση είναι ο λόγος που τα στιγμιότυπα οθόνης και τα γραφικά με αιχμηρά άκρα ή κείμενο αποθηκεύονται συνήθως ως PNG αντί για JPEG. Έχει ένα κόστος: ένα lossless αρχείο μιας τυπικής φωτογραφίας είναι πολύ μεγαλύτερο από ένα JPEG σε λογική ποιότητα, αφού δεν υπάρχει στρογγυλοποίηση για να το συρρικνώσει.

Σύγκριση δέκα επαναποθηκεύσεων: ένα JPEG δείχνει ορατά ψηφιδωτά τεχνουργήματα να συσσωρεύονται, ένα lossless PNG παραμένει pixel προς pixel πανομοιότυπο με το πρωτότυπο

Διατηρώντας την ποιότητα ενός αρχείου υπό έλεγχο

Η αλυσίδα απώλειας γενιάς συσσωρεύεται μόνο όταν κάθε αποθήκευση ξεκινά από τα ήδη υποβαθμισμένα pixel της προηγούμενης αποθήκευσης. Το να κρατάτε ένα lossless πρωτότυπο, το αρχικό αρχείο κάμερας ή ένα PNG, και να εξάγετε ένα φρέσκο JPEG από εκείνο το πρωτότυπο κάθε φορά αποφεύγει τη στοίβαξη νέας στρογγυλοποίησης πάνω σε παλιά. Ο συμπιεστής εικόνας μας σας αφήνει να επιλέξετε ρύθμιση ποιότητας και να δείτε το προκύπτον μέγεθος αρχείου πριν στείλετε οτιδήποτε, και το εργαλείο σύγκρισης εικόνων μας βάζει το πρωτότυπο και το συμπιεσμένο αντίγραφο δίπλα δίπλα με ολισθητή, ώστε να εντοπίσετε μια κακή ρύθμιση πριν προωθήσετε το αρχείο παρακάτω και ξεκινήσετε άλλη μια γενιά. Και τα δύο τρέχουν εξ ολοκλήρου στο πρόγραμμα περιήγησής σας: η φωτογραφία δεν φεύγει ποτέ από τη συσκευή σας για να ελεγχθεί.

Εργαλεία αυτού του άρθρου

Συχνές ερωτήσεις

Η αντιγραφή ή μετακίνηση ενός αρχείου JPEG το υποβαθμίζει;

Όχι. Η αντιγραφή ενός αρχείου, η επισύναψή του σε email, ή η μετακίνησή του μεταξύ φακέλων αντιγράφει ακριβώς τα ίδια bytes· τίποτα δεν αποκωδικοποιείται ή επανακωδικοποιείται, οπότε τίποτα δεν κβαντοποιείται ξανά. Η απώλεια γενιάς συμβαίνει μόνο όταν τα pixel πράγματι ανοίγονται και αποθηκεύονται ξανά, όχι όταν το ίδιο το αρχείο μετακινείται.

Μπορώ να αναιρέσω την απώλεια γενιάς και να ανακτήσω τη χαμένη λεπτομέρεια;

Όχι. Η κβαντοποίηση είναι γνήσια lossy: τα στρογγυλοποιημένα δεδομένα συχνότητας που απέρριψε μια προηγούμενη αποθήκευση δεν καταγράφονται πουθενά στο αρχείο, οπότε κανένα φίλτρο ή αλγόριθμος δεν μπορεί να τα ανακατασκευάσει. Η όξυνση ή η αφαίρεση θορύβου σε ένα υποβαθμισμένο JPEG μπορεί να κάνει τα τεχνουργήματα λιγότερο οπτικά εμφανή, αλλά δεν επαναφέρει την αρχική λεπτομέρεια.

Η μετατροπή ενός υποβαθμισμένου JPEG σε PNG σταματά το πρόβλημα;

Η μετατροπή αφού έχει γίνει η ζημιά διατηρεί ό,τι ήδη μοιάζει το JPEG σε εκείνο το σημείο, pixel προς pixel, χωρίς να προσθέτει νέο βήμα στρογγυλοποίησης, αλλά δεν μπορεί να επαναφέρει λεπτομέρεια που χάθηκε σε προηγούμενες αποθηκεύσεις. Η λύση είναι να αρχίσετε να κρατάτε ένα lossless πρωτότυπο πριν συμβούν περισσότερες γενιές, όχι να μετατρέψετε μια φωτογραφία αργά στην αλυσίδα.

Πηγές