Το προφίλ μας στο Google Plus
3

Content aware image resizing

Hacking στην επεξεργασία εικόνας; Κι όμως – η προσαρμογή του μεγέθους είναι μια από τις πιο βασικές λειτουργίες ενός προγράμματος επεξεργασίας εικόνων και μέχρι πρόσφατα, κάποιος που ήθελε να αλλάξει το μέγεθος μιας εικόνας (resize) έπρεπε να χρησιμοποιήσει είτε την μέθοδο του επαναπροσδιορισμού κλίμακας (rescale) είτε την μέθοδο της περικοπής (crop). Πριν ένα χρόνο περίπου όμως, στην διεθνή έκθεση SIGGRAPH 2007, παρουσιάστηκε ένας νέος επαναστατικός αλγόριθμος resizing που ονομάστηκε seam carving και είναι αρκετά «έξυπνος» ώστε να προσαρμόζει το μέγεθος μιας εικόνας λαμβάνοντας υπόψη το περιεχόμενό της. Εδώ θα αναλύσουμε την ανάγκη ύπαρξης, τον τρόπο λειτουργίας και την εφαρμογή στην πράξη αυτής της μεθόδου.

Image retargeting και περιορισμοί των συμβατικών μεθόδων

Image retargeting είναι η διαδικασία με την οποία μια εικόνα που προορίζεται για μια συγκεκριμένη εφαρμογή σε κάποιο μέσο αλλάζει μέγεθος για να χρησιμοποιηθεί σε μια άλλη εφαρμογή ή και μέσο.
Ένα σύνηθες παράδειγμα είναι όταν έχετε φωτογραφίες που τραβήξατε με την ψηφιακή σας μηχανή και θέλετε να τις ανεβάσετε στην προσωπική σας σελίδα στο διαδίκτυο. Οι φωτογραφίες αυτές προορίζονται κυρίως για εκτύπωση και συνεπώς έχουν μεγάλη ανάλυση ενώ καταλαμβάνουν και αρκετό χώρο (π.χ. μια φωτογραφία των 10 megapixel καταλαμβάνει συνήθως περίπου 4Mbytes). Έτσι, εφόσον το μέσο παρουσίασης αλλάζει (από χαρτί σε οθόνη υπολογιστή) το μέγεθος της φωτογραφίας πρέπει να ελαττωθεί για να μην καταναλώνεται πολύ traffic/bandwidth κατά την λήψη των φωτογραφιών από τους επισκέπτες της σελίδας. Άλλωστε η ανάλυση των 10 megapixel είναι τεράστια υπερβολή όταν οι φωτογραφίες πρόκειται απλά να εμφανιστούν σε κάποια οθόνη, της οποίας η ανάλυση, κατά μέσο όρο δεν ξεπερνά το 1.5 megapixel. Σε αυτήν την περίπτωση, η αναλογία ύψους-πλάτους (aspect ratio) των φωτογραφιών μας είναι αδιάφορη και οι μέθοδοι rescale και crop ή κάποιος συνδυασμός τους μπορούν να κάνουν την δουλειά τους μια χαρά.
Τι γίνεται όμως όταν κατά την διαδικασία του image retargeting μαζί με το μέγεθος πρέπει να αλλάξει και το aspect ratio; Ας υποθέσουμε λόγου χάρη ότι οι φωτογραφίες που αναφέρθηκαν παραπάνω έχουν ανάλυση 3648 x 2736 (10mp), δηλαδή έχουν λόγο διαστάσεων 4:3, και μια από αυτές σας άρεσε τόσο πολύ που θέλετε να την χρησιμοποιήσετε ως ταπετσαρία στην επιφάνεια εργασίας του laptop σας, η ευρεία οθόνη του οποίου έχει ανάλυση 1440×900 (λόγος διαστάσεων 16:10).
Η μέθοδος crop δεν μπορεί να δώσει αποδεκτά αποτελέσματα αφού κόβοντας ένα κομμάτι 1440×900 από την πλήρη εικόνα θα χάσετε το 87% του περιεχομένου της φωτογραφίας.
Αν πάλι επιλέξετε την μέθοδο rescale θα πρέπει να αποφασίσετε αν θα ορίσετε ανεξάρτητα την οριζόντια και την κάθετη διάσταση ή αν θα χρησιμοποιήσετε τον ίδιο παράγοντα κλιμάκωσης οριζόντια και κάθετα (ανάλογα με το πρόγραμμα η επιλογή αυτή μπορεί να ονομάζεται maintain ή keep ή lock ή constrain aspect ratio/proportions). Στην πρώτη περίπτωση το αποτέλεσμα θα είναι παραμορφωμένο αφού η οριζόντια διάσταση θα μειωθεί κατά 60% ενώ η κάθετη θα μειωθεί κατά 67% (τα αντικείμενα στην φωτογραφία θα φαίνονται πιο «κοντά» και πιο «χοντρά» απ’ ότι είναι στην πραγματικότητα). Στην δεύτερη περίπτωση το αποτέλεσμα δεν μπορεί να έχει διαστάσεις 1440×900, αλλά για να «χωράει» στην ανάλυση της οθόνης και να διατηρεί ταυτόχρονα τις αναλογίες, η ανάλυση πρέπει να ελαττωθεί σε (το μέγιστο) 1200×900. Έτσι όμως η ταπετσαρία δεν θα «γεμίζει» την επιφάνεια εργασίας και συνεπώς ούτε η μέθοδος rescale μπορεί να σας βοηθήσει.
Χρησιμοποιώντας τις συμβατικές μεθόδους crop και rescale, το καλύτερο αποτέλεσμα μπορεί να επιτευχθεί με συνδυασμό και των δύο μεθόδων. Συγκεκριμένα, στο δικό μας παράδειγμα, το καλύτερο που μπορείτε να κάνετε είναι να χρησιμοποιήσετε αρχικά την μέθοδο rescale για να ελαττώσετε την ανάλυση της εικόνας σε 1440×1080, διατηρώντας τις αναλογίες. Στην συνέχεια με χρήση της μεθόδου crop, θα κόψετε κομμάτι(α) συνολικού ύψους 180pixels από το πάνω, το κάτω ή και από τα δύο αυτά άκρα της εικόνας, ώστε να καταλήξετε στην επιθυμητή ανάλυση 1440×900. Από την περικοπή αυτή θα χάσετε μόλις το 17% του περιεχομένου της εικόνας.

Για επίδειξη των περιορισμών των συμβατικών μεθόδων image retargeting, θα επιχειρήσουμε να αλλάξουμε το αρχικό μέγεθος της φωτογραφίας αυτής από 3648x2736 (10megapixel, ratio 4:3) σε 1440x900 (ratio 16:9) για χρήση ως wallpaper σε οθόνη υπολογιστή. Στις 4 επόμενες εικόνες μπορείτε να δείτε τα απότελέσματα με απλό crop, δυσανάλογο rescale, αναλογικό rescale και συνδυασμό αναλογικού rescale και crop αντίστοιχα.

Με απλό crop η φωτογραφία καταστρέφεται αφού χάνεται ένα πολύ μεγάλο μέρος του θέματος.Με δυσανάλογο rescale, παρά την μικρή αλλαγή στο aspect ratio, υπάρχει εμφανής παραμόρφωση.Με rescale που διατηρεί το aspect ratio είναι αδύνατο να καταλήξουμε στο επιθυμητό ratio, όπως μαρτυρούν οι μάυρες λωρίδες αριστερά και δεξιά.Με συνδυασμό αναλογικού rescale και crop καταλήγουμε στο επιθυμητό μέγεθος, αποφεύγουμε την παραμόρφωση αλλά πάλι χάνουμε ένα κομμάτι από το πάνω ή το κάτω μέρος της εικόνας (που σε αυτήν την φωτογραφία είναι σημαντικό - είτε τα πόδια του μοντέλου μας, είτε το όμορφο αέτωμα από το παλάτι του Buckingham)

Όμως αυτό το κόλπο δεν δίνει αποδεκτά αποτελέσματα πάντα. Για παράδειγμα μπορεί στην φωτογραφία σας τα σημαντικότερα μέρη του θέματος να βρίσκονται στο πάνω και στο κάτω άκρο της φωτογραφίας και έτσι ακόμα και το σχετικά μικρό «κόψιμο» του 17% να υποβαθμίζει σημαντικά την αξία του αποτελέσματος. Άλλωστε μην ξεχνάτε ότι στο συγκεκριμένο παράδειγμα επιλέξαμε μια σχετικά μικρή αλλαγή στο aspect ratio της εικόνας, από 16:12 (4:3) σε 16:10. Τι θα συνέβαινε όμως αν -λόγου χάρη- θέλαμε να χρησιμοποιήσουμε μια ταπετσαρία από την οθόνη του laptop μας (landscape – 1440×900) ως ταπετσαρία στην οθόνη του κινητού μας τηλεφώνου (portrait – 240×320); Σε αυτήν την περίπτωση το aspect ratio θα έπρεπε να μετατραπεί από 16:10 σε 3:4 (ή 7.5:10) και με την μέθοδο που παρουσιάσαμε παραπάνω ως βέλτιστη, θα έπρεπε να αφαιρέσουμε 1 ή 2 συμπαγή κομμάτια από το αριστερό και δεξιό άκρο, συνολικής επιφάνειας πολύ μεγαλύτερης από το 17% της εικόνας (~53%).
Τα παραδείγματα που αναφέρθηκαν μέχρι στιγμής αφορούν την μείωση του μεγέθους μιας εικόνας. Ωστόσο, εύκολα μπορείτε να επαληθεύσετε μόνοι σας ότι και σε περιπτώσεις που το image retargeting αφορά μεγέθυνση, το συμπέρασμα είναι το ίδιο: οι συμβατικές μέθοδοι crop και rescale επαρκούν όταν θέλετε να προσαρμόσετε το μέγεθος μιας εικόνας διατηρώντας την αναλογία των διαστάσεων αλλά, σε πάρα πολλές περιπτώσεις, όταν το image retargeting απαιτεί αλλαγή αυτής της αναλογίας, χρειάζεστε κάποια ίσως πιο «έξυπνη» μέθοδο.

Seam carving – Η θεωρία

Το seam carving (σε ελεύθερη μετάφραση «χάραξη διαδρομών») είναι ένας αλγόριθμος προσαρμογής του μεγέθους μιας εικόνας που αναπτύχθηκε από τους Shai Avidan και Ariel Shamir, δύο ισραηλινούς μαθηματικούς με διδακτορικό στην πληροφορική. Ο αλγόριθμος αλλάζει τις διαστάσεις μιας εικόνας αφαιρώντας ή προσθέτοντας με έξυπνο τρόπο εικονοστοιχεία (pixels) που δεν είναι ιδιαίτερα σημαντικά στην σύνθεση του θέματος. Πώς όμως γίνεται αυτό;
Αρχικά ο αλγόριθμος πρέπει να υπολογίσει την σημαντικότητα του κάθε pixel, κάτι που οι δημιουργοί της μεθόδου προτιμούν να ονομάζουν «ενέργεια» των pixel. Η ενέργεια ενός pixel υπολογίζεται μέσω μιας μαθηματικής συνάρτησης (energy function) που μετρά κυρίως την αντίθεση (contrast) του συγκεκριμένου pixel σε σχέση με τα γειτονικά του, ενώ μπορεί να χρησιμοποιηθούν και άλλα μέτρα.
Με την εφαρμογή της συνάρτησης ενέργειας σε μια εικόνα μπορεί να κατασκευαστεί ένας ενεργειακός χάρτης όπου θα φαίνονται καθαρά ποια pixel έχουν χαμηλή ενέργεια, δηλαδή τα pixel που μένουν σχετικά απαρατήρητα στο μάτι του θεατή καθώς «δένουν» αρμονικά με τον χρωματικό περίγυρο. Ωστόσο, η διασπορά αυτών των pixel στην εικόνα πιθανότατα δεν είναι ομοιόμορφη σε όλο το μήκος και το πλάτος της εικόνας, οπότε ο αλγόριθμος δεν μπορεί να τα αφαιρέσει ή να τα πολλαπλασιάσει ακόμα (στοχεύοντας την σμίκρυνση ή την μεγέθυνση της εικόνας αντίστοιχα) γιατί αυτό θα έχει ως αποτέλεσμα μια εικόνα που αφενός θα παρουσιάζει ασυνέχειες και αφετέρου δεν θα έχει καν ορθογώνιο παραλληλόγραμμο σχήμα.
Για την αποφυγή αυτού του προβλήματος εισάγεται η έννοια της διαδρομής (seam). Σε μια εικόνα, ένα seam είναι μια ακολουθία από pixel τα οποία συνιστούν μια συνεχή γραμμή που ξεκινά από μια πλευρά της εικόνας και καταλήγει στην απέναντι. Ένα seam ονομάζεται οριζόντιο αν συνδέει την αριστερή με την δεξιά πλευρά της εικόνας ενώ αν συνδέει την πάνω με την κάτω πλευρά ονομάζεται κάθετο. Ένα οριζόντιο (αντίστοιχα κάθετο) seam περιλαμβάνει ακριβώς ένα pixel από κάθε στήλη (αντίστοιχα γραμμή) της εικόνας.
Σύμφωνα με την τελευταία ιδιότητα των seam είναι σαφές ότι αν αφαιρεθεί ένα οριζόντιο ή ένα κάθετο seam από μια εικόνα τότε το σχήμα της εικόνας θα παραμείνει ορθογώνιο παραλληλόγραμμο με μόνη διαφορά ότι το ύψος ή το πλάτος της εικόνας θα μειωθεί κατά 1 μια γραμμή ή στήλη αντίστοιχα. Ομοίως, αν ακριβώς δίπλα από ένα τέτοιο seam προστεθεί ένα όμοιό του με παρεμβολή (interpolation) το ορθογώνιο σχήμα πάλι θα διατηρηθεί με μόνη διαφορά την αύξηση κατά 1 γραμμή ή στήλη του ύψους ή του πλάτους της εικόνας αντίστοιχα.

Ένα παραδειγμα seam carving αναλυτικά. Θα επιχειρήσουμε να αλλάξουμε το ratio αυτής της αρχικής φωτογραφίας από 16:9 σε 10:9 χωρίς παραμόρφωση των βασικών στοιχείων του θέματος. Στις 3 επόμενες εικόνες, δείτε τον τρόπο λειτουργίας του αλγορίθμου και το τελικό αποτέλεσμα.Ο ενεργειακός χάρτης της φωτογραφίας. Οι φωτεινές περιοχές έχουν υψηλή ενέργεια και ο αλγόριθμος θα αποφύγει να επιλέξει seam που να διέρχονται απ’ αυτές (όπως θα δείτε στην επόμενη εικόνα).Το πρώτο seam που επιλέγει ο αλγόριθμος (το seam με την χαμηλότερη ενέργεια). Προσέξτε πως ελίσσεται μέσα στον «ασήμαντο» ουρανό αποφεύγοντας τον γλάρο και το κυάλι. Παρατηρώντας ταυτόχρονα και τον χάρτη της προηγούμενης εικόνας, παρατηρήστε την «ενεργειακή τρύπα» μέσα από την οποία το seam εισέρχεται από τον ουρανό στον κάθετο πάσαλο για να συνεχίσει μέχρι το κάτω μέρος της φωτογραφίας.
Αφού αφαιρέθηκαν 440 κάθετα seam, η τελική φωτογραφία με νέα αναλογία διαστάσεων 10:9. Το αποτέλεσμα είναι σχεδόν μαγικό: το aspect ratio της φωτογραφίας άλλαξε χωρίς να εξαφανιστούν ή να παραμορφωθούν αντικείμενα!

Επίσης, εφόσον ορίστηκε η ενέργεια ενός pixel, μπορεί να οριστεί επαγωγικά η ενέργεια ενός seam ως το άθροισμα των τιμών ενέργειας όλων των pixel που ανήκουν στο συγκεκριμένο seam.
Επιστρέφοντας λοιπόν στον αλγόριθμο του seam carving, αφού δημιουργηθεί ο ενεργειακός χάρτης της δοσμένης εικόνας, εφαρμόζονται τεχνικές δυναμικού προγραμματισμού για να εντοπιστεί στον χάρτη με σύντομο τρόπο (χωρίς brute force) από όλα τα πιθανά seam, εκείνο που έχει την ελάχιστη ενέργεια. Με αυτή την ιδιότητα γίνεται φανερό ότι η αφαίρεση αυτού του seam από την εικόνα ή η πρόσθεση ενός ομοίου seam με παρεμβολή δίπλα από αυτό είναι η βέλτιστη μέθοδος με την οποία μπορεί να μειωθεί ή να αυξηθεί το μήκος ή το πλάτος της εικόνας κατά 1 στήλη ή γραμμή αντίστοιχα, διατηρώντας το ορθογώνιο παραλληλόγραμμό σχήμα της εικόνας και χωρίς εμφανή αλλοίωση στο θέμα της εικόνας.
Αυτό το βήμα του αλγορίθμου μπορεί να εξειδικευτεί στην εύρεση αποκλειστικά οριζοντίων ή κάθετων seam, οπότε με επαναλαμβανόμενη εκτέλεσή του, η μέθοδος seam carving μπορεί να αυξήσει ή να ελαττώσει το ύψος ή το πλάτος μιας εικόνας κατά παραγγελία για όσες γραμμές ή στήλες επιθυμεί ο χρήστης της. Έτσι, η μέθοδος αντικαθιστά την απλή crop και την ασύμμετρη rescale αλλά χρησιμοποιείται συμπληρωματικά με την μέθοδο rescale που διατηρεί τις αναλογίες και η οποία τις περισσότερες φορές δίνει τα καλύτερα δυνατά αποτελέσματα όταν θέλετε να πειράξετε και τις δύο διαστάσεις ταυτόχρονα. Συνεπώς, όταν το project σας απαιτεί επαναπροσδιορισμό του aspect ratio με ταυτόχρονη αλλαγή και στις δύο διαστάσεις, αρχικά χρησιμοποιείτε την μέθοδο seam carving για να διορθώσετε το aspect ratio αυξάνοντας ή μειώνοντας μόνο ένα από το ύψος ή το πλάτος της εικόνας και στην συνέχεια την rescale για να πάρετε τις ακριβείς διαστάσεις που θέλετε.
Φυσικά, αν ζητηθεί μια αναπροσαρμογή μεγέθους που χαρακτηρίζεται από υπερβολική αλλαγή στην αναλογία διαστάσεων, σταδιακά τα seam χαμηλής ενέργειας θα εκλείψουν και θα αρχίσουν να διαγράφονται ή να παρεμβάλλονται σημαντικά seam (υψηλής ενέργειας) αλλοιώνοντας σημαντικά το θέμα. Ανάλογα με την περιπλοκότητα του θέματος της εικόνας το όριο της υπερβολής αυτής είναι διαφορετικό αλλά στις περισσότερες περιπτώσεις ο αλγόριθμος θα λειτουργήσει αποδοτικά αν η σμίκρυνση ή η μεγέθυνση στον άξονα που επιλέχθηκε (ύψος ή πλάτος) δεν είναι μικρότερη από 0.5x ή 2x αντίστοιχα.
Επισκεφθείτε την επίσημη σελίδα της μεθόδου αν θέλετε να δείτε ένα κατατοπιστικό βίντεο για τον τρόπο λειτουργίας και αν ενδιαφέρεστε (και έχετε τις κατάλληλες μαθηματικές γνώσεις) να κατεβάσετε το ανάλογο paper με όλες τις λεπτομέρειες σχετικά με τις τεχνικές που χρησιμοποιούνται από τον αλγόριθμο.

rsizr – Seam carving on the web

Η online υπηρεσία rsizr.Το rsizr είναι μια πρακτική online υπηρεσία, στην οποία μπορείτε να εφαρμόσετε το seam carving στις εικόνες σας. Η υπηρεσία βασίζεται σε Flash που εκτελείται μέσα στον browser οπότε ο χρόνος που απαιτείται για τους υπολογισμούς δεν είναι ο καλύτερος δυνατός. Επίσης, ο αλγόριθμος που χρησιμοποιείται δεν έχει τις βελτιώσεις που έχουν ενσωματωθεί στο CAIR οπότε το αποτέλεσμα δεν είναι τόσο καλό, αλλά εφόσον η αλλαγή στο aspect ratio δεν είναι τρομερά μεγάλη δεν θα απογοητευτείτε.
Κατά τα άλλα, το rsizr παρέχει σε ένα πρακτικό interface όλες τις βασικές ρυθμίσεις/λειτουργίες του seam carving, καθώς και λειτουργίες για προσαρμογή του μεγέθους εικόνας με συμβατικές μεθόδους όπως crop και rescale. Έτσι, ακόμα και όταν δεν βρίσκεστε στον υπολογιστή σας, μπορείτε να καλύψετε τις ανάγκες σας για image retargeting, αρκεί να έχετε πρόσβαση σε ένα υπολογιστή με flash enabled browser και σύνδεση στο internet.
Ωστόσο, ο κύριος λόγος για τον οποίο συνιστάται να χρησιμοποιήσετε το rsizr, ακόμα και όταν δεν υπάρχει λόγος να καταφύγετε σε online υπηρεσίες, είναι ο «οπτικός» τρόπος με τον οποίο λειτουργεί, παρουσιάζοντας ένα-ένα όλα τα seam που επιλέγει και ο οποίος θα σας βοηθήσει να κατανοήσετε καλύτερα τον τρόπο λειτουργίας του seam carving.

Seam carving – Η πράξη

To SeamCarvingGUI είναι ένα πρόγραμμα που αναλαμβάνει να μετατρέψει την θεωρία της μεθόδου σε πράξη βασιζόμενο στο CAIR (Content Aware Image Resizer), μια υλοποίηση του αλγορίθμου των Avidan και Shamir σε C++. Το SeamCarvingGUI δεν είναι το μοναδικό πρόγραμμα που μπορεί να κάνει αυτή τη δουλειά αλλά επιλέχθηκε για 4 λόγους:

  • Είναι open source (GPLv2)
  • Είναι πολύ γρήγορο (multithreaded)
  • Ελέγχεται από ένα εύχρηστο γραφικό περιβάλλον αντί της γραμμής εντολών
  • Διατίθενται precompiled binaries για όλα τα δημοφιλή λειτουργικά

Το πρόγραμμα είναι πολύ απλό στην χρήση. Αφού το εκτελέσετε, ανοίγετε την εικόνα της οποίας το aspect ratio θέλετε να αλλάξετε, επιλέγετε τις νέες διαστάσεις στον τομέα Resize dimensions και κάνετε κλικ στο κουμπί Resize. Θυμηθείτε ότι στις περισσότερες περιπτώσεις δεν έχει νόημα να αλλάξετε το ύψος και το πλάτος της εικόνας ταυτόχρονα. Όταν τελειώσετε με την επεξεργασία της εικόνας μπορείτε είτε να αποθηκεύσετε το αποτέλεσμα στον δίσκο (υποστηρίζονται τα jpg, png, bmp, ppm, xbm, xpm), είτε να χρησιμοποιήσετε την διαδικασία της αντιγραφής και επικόλλησης για να συνεχίσετε την επεξεργασία σε κάποιο άλλο πρόγραμμα.

Προβλήματα της μεθόδου και τρόποι αντιμετώπισης. Επιχειρώντας το image retargeting project μετατροπής μιας 1440x900 (16:10) ταπετσαρίας σε ταπετσαρία κινητού τηλεφώνου 240x320 (3:4), φορτώθηκε η φωτογραφία στο SeamCarvingGUI και στην συνέχεια ζητήθηκε η προσαρμογή του μεγέθους της σε ανάλυση 675x900 ώστε, σε πρώτο στάδιο, να αλλάξει το aspect ratio σε 3:4. Το αποτέλεσμα, όπως θα δείτε στην επόμενη εικόνα δεν ήταν το αναμενόμενο. Στις επόμενες δύο εικόνες, όμως, παρουσιάζεται η λύση του προβλήματος.Ο αλγόριθμος απέτυχε να «αναγνωρίσει» το μπουκάλι ως πολύ σημαντικό αντικείμενο και το αποτέλεσμα είναι τουλάχιστον σουρεαλιστικό ;-)

Εκτός όμως από τον τομέα Resize dimensions, υπάρχουν 3 ακόμα τομείς επιλογών: Mark Areas With Mouse, Remove Marked Areas και Other Parameters.
Ο πρώτος από αυτούς είναι εξαιρετικά χρήσιμος καθώς αρκετές φορές η συνάρτηση ενέργειας του αλγόριθμου δεν θα συμφωνεί μαζί σας, σχετικά με το ποιες περιοχές της εικόνας είναι περισσότερο σημαντικές και ποιες λιγότερο. Έτσι επιλέγοντας το Mark area for retaining μπορείτε να μαρκάρετε περιοχές της εικόνας οι οποίες είναι σημαντικές για σας και θέλετε να μείνουν αμετάβλητες. Αντίστοιχα επιλέγοντας το Mark area for removal μπορείτε να μαρκάρετε ασήμαντες περιοχές ή περιοχές που σκοπίμως θέλετε να αφαιρέσετε από την εικόνα. Παίζοντας με το Brush Size αλλάζετε το μέγεθος της «μύτης» του μαρκαδόρου σας.

Για αποφυγή αυτού του προβλήματος, χρειάστηκε να μαρκαριστεί χειροκίνητα η περιοχή του μπουκαλιού ως πολύ σημαντική (πράσινη περιοχή) ενώ χάρη παραδείγματος μαρκαρίστηκε και ο δεξιός πάσσαλος ως ασήμαντος (κόκκινη περιοχή).Γνωρίζοντας με σιγουριά τις σημαντικές και ασήμαντες περιοχές, ο αλγόριθμος πλέον δεν κάνει λάθη. Παρά την τεράστια αλλαγή στο aspect ratio που απαιτούσε το συγκεκριμένο project, όπως μπορείτε να δείτε, αν εξαιρεθεί η κλίση στην δεξιά πλευρά του πάνω οριζόντιου πάσαλου, το αποτέλεσμα είναι άψογο.

Ουσιαστικά, μαρκάροντας περιοχές με αυτόν τον τρόπο, επεξεργάζεστε χειροκίνητα τον ενεργειακό χάρτη της εικόνας, αυξάνοντας ή μειώνοντας την ενέργεια των pixel που σημαδεύετε. Ο βαθμός στον οποίο αλλάζετε αυτήν την ενέργεια, ρυθμίζεται μέσω της επιλογής Brush Weight. Για μικροεπεμβάσεις στον ενεργειακό χάρτη μετακινήστε τον slider προς τα αριστερά ενώ αν θέλετε μια περιοχή της εικόνας να διατηρηθεί ή να διαγραφεί *οπωσδήποτε*, αναθέστε της άπειρη ή μηδενική ενέργεια αντίστοιχα μετακινώντας τον slider στο δεξί άκρο. 
Αν κάνετε κάποια λάθος κίνηση κατά το μαρκάρισμα επιλέξτε το radio button Clear marked area το οποίο λειτουργεί ως γομολάστιχα ή το ομώνυμο κουμπί για να καθαρίσετε με μιας όλα όσα μαρκάρατε. Η μάσκα που δημιουργείτε μαρκάροντας περιοχές μπορεί να σωθεί σε μορφή png (File  Save Mask…) και να χρησιμοποιηθεί έτοιμη αν αργότερα θέλετε να εφαρμόσετε ξανά κάποιου άλλου είδους image retargeting στην ίδια εικόνα.
Για τους άλλους δύο τομείς επιλογών, οι μεν επιλογές του τομέα Other Parameters αφορούν πολύ τεχνικές λεπτομέρειες με τις οποίες δεν έχει νόημα να ασχοληθούμε στο παρόν. Αν θέλετε να μάθετε περισσότερα γι’ αυτές περάστε μια βόλτα από το site του CAIR. Οι δε λειτουργίες του τομέα Remove Marked Areas δεν αφορούν το image retargeting, είναι όμως εξίσου ενδιαφέρουσες οπότε αναλύονται σε ξεχωριστό box αυτού του άρθρου.

Seam carving για αφαίρεση αντικειμένων

Εφόσον ο αλγόριθμος του seam carving σας επιτρέπει να ελαττώσετε και στην συνέχεια να αυξήσετε ξανά τις διαστάσεις μιας εικόνας και αφού μπορείτε να μαρκάρετε χειροκίνητα περιοχές χαμηλής ενέργειας, σας δίνεται ουσιαστικά η δυνατότητα να αφαιρέσετε ανεπιθύμητα αντικείμενα απ’ αυτήν, μια ενδιαφέρουσα εφαρμογή πέρα από το image retargeting.
Στο SeamCarvingGUI μάλιστα, αυτή η διαδικασία γίνεται πιο απλή χρησιμοποιώντας τις λειτουργίες του τομέα Remove Marked Areas. Απλά μαρκάρετε τα αντικείμενα που θέλετε να αφαιρέσετε και κάνετε κλικ στο κουμπί Remove.

Άμπρα......κατάμπρα!
Για περισσότερο έλεγχο, η επιλογή Mode σας επιτρέπει να επιλέξετε αν θέλετε να αφαιρούνται αποκλειστικά οριζόντια ή κάθετα seam, αν και τις περισσότερες φορές θα πάρετε καλύτερα αποτελέσματα αφήνοντας αυτή τη ρύθμιση στο Automatic. Επιπλέον, επειδή η διαδικασία της αφαίρεσης μπορεί να σταματήσει όταν τελειώσουν τα σχετικά ασήμαντα seam, η επιλογή του Iterate until all marked removed θα κάνει τον αλγόριθμο να επιμείνει μέχρι να εξαφανιστεί και το τελευταίο pixel της μαρκαρισμένης περιοχής.

Disclaimer αντί επιλόγου

Το seam carving είναι «χακιά» στην επεξεργασία εικόνας. Και όπως για να «χακάρετε» ένα σύστημα πρέπει να υπάρχουν «τρύπες» στην ασφάλειά του, έτσι και το seam carving απαιτεί εικόνες με «αδυναμίες», εικόνες με μεγάλες περιοχές χαμηλής ενέργειας. Μην περιμένετε ότι θα έχετε άψογα αποτελέσματα στην κάθε εικόνα και μην απογοητευτείτε αν η πρώτη προσπάθεια δεν πετύχει. Άλλωστε, το μη-άψογο, προς το παρόν, ποσοστό επιτυχίας της μεθόδου ας ανησυχήσει τους επαγγελματίες γραφίστες. Για μας, το κύριο ενδιαφέρον κρύβεται στην «πονηριά» της μεθόδου και στους τρόπους με τους οποίους μπορεί να βελτιωθεί.

3 Responses to “Content aware image resizing”

  1. ^^TnT^^ | 20/09/2011 at 13:30

    Δεν είχα ακούσει ποτέ για αυτό :) Ευχαριστώ !

  2. Filippos | 21/09/2011 at 00:27

    Αξιόλογο άρθρο. Και εγώ πρώτη φορά το ακούω ;-)

  3. Dissector | 31/10/2011 at 20:18

    Το είχα πρωτοδιαβάσει στον πρόγονο του delta. Ο πρώτος πειραματισμός τότε (μία φίλη με background παραλία) στέφθηκε με απόλυτη επιτυχία. Πραγματικά έξυπνος αλγόριθμος!

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων