aaaa

aaaa

   

 

 

a



Babushka
νευροβιολογική τέχνη / οπτική κρυπτογράφηση


του Άγγελου Σπάρταλη__
Μηχανολόγου Μηχανικού Ε.Μ.Π.
__
angelosspartalis@yahoo.gr__


Τον αλγόριθμο
Babushka τον σχεδίασα αρχικά για να τον εντάξω στο βιβλίο μου "Μέρες με τον Νίκο". Σκοπός μου ήταν να κατασκευάσω ένα πολύ απλό μαθηματικό μοντέλο οπτικής κρυπτογράφησης, ώστε να μπορέσω να "κρύψω" μέσα σε μία εικόνα του Κούνδουρου τον Μπάυρον και αντίστροφα. 

Ξεκίνησα με δύο ασπρόμαυρες εικόνες:
 

1. Nίκος Κούνδουρος
498
x 600 px

2. Λόρδος Μπάυρον
498 x 600 px

 
 


Το μέγεθος των εικόνων είναι καλό να είναι το ίδιο. Όσο μεγαλύτερη είναι η ανάλυση τόσο μεγαλύτερη και η οπτική «απάτη». Οι διαστάσεις των εικόνων είναι καλό να διαιρούνται ακέραια με το 3 (498/3=166, 600/3=200). Η οπτική ομοιότητα των εικόνων δεν έχει σημασία: Παρατηρήστε ότι αν και πρόκειται για δύο αντρικά πορτραίτα με το ίδιο "καδράρισμα", οι διαφορές είναι πολλές και έντονες, αφού ο νεαρός Κούνδουρος φορά σκούρο πουκάμισο σε φωτεινό φόντο και ο νεαρός Μπάυρον φορά φωτεινό πουκάμισο σε σκούρο φόντο.

Εφάρμοσα πάνω στις δύο αυτές εικόνες (Pic1, Pic2) των ακόλουθο αλγόριθμο:

ΚΡΥΠΤΟΓΡΑΦΗΣΗ
For x = 0 To Pic1.Width - 1 Step 3
For y = 0 To Pic1.Height - 1 Step 3
      Gray1 = Get_Gray (Pic1, x, y)
      Gray2 = Get_Gray (Pic2, x, y)
      Dif = (Gray2 - Gray1) / 8
      For i = 0 To 2
      For j = 0 To 2
            If (i = 0 And j = 0) Then
                  Gray3 = Gray1
            Else
                  Gray3 = Gray1 + Dif
            End If
            Pic3.
Set_Gray  (x + i, y + j), Gray3
      Next j
      Next i
Next y
Next x

Το αποτέλεσμα (Pic3) ήταν μία εικόνα του Κούνδουρου που περιέχει τον Μπάυρον. Στη συνέχεια αντέστρεψα τη σειρά των αρχικών εικόνων και εφάρμοσα ξανά τον αλγόριθμο πάνω τους. Το αποτέλεσμα (Pic3) ήταν μια εικόνα του Μπάυρον που περιέχει τον Κούνδουρο:
 

3α. o Κούνδουρος περιέχει τον Μπάυρον

3β. O Μπάυρον περιέχει τον Κούνδουρο

 


Εφαρμόζοντας τον αλγόριθμο αποκρυπτογράφησης που παρατίθεται στη συνέχεια, σε οποιοδήποτε από αυτά τα δύο πορτραίτα που προέκυψαν (3α, 3β), θα πάρετε σαν αποτέλεσμα το άλλο. Αυτό θα συμβεί γιατί η φωτογραφία του νεαρού Κούνδουρου περιέχει κρυπτογραφημένο μέσα της τον νεαρό Μπάυρον και αντίστροφα. Η περιοχή V1 του ανθρώπινου εγκεφάλου «ξεγελιέται» και αδυνατεί να αναγνωρίσει την διπλοτυπία αλλά όχι και ο ηλεκτρονικός υπολογιστής που αποκρυπτογραφεί ταχύτατα με χρονική πολυπλοκότητα Οt = Width x Height και χωρική πολυπλοκότητα Om ≈ 0

ΑΠΟΚΡΥΠΤΟΓΡΑΦΗΣΗ
For x = 0 To Pic1.Width - 1 Step 3
For y = 0 To Pic1.Height - 1 Step 3
      Gray1 = Get_Gray (Pic1, x, y)
      Gray2 = Get_Gray (Pic1, x + 1, y)
      Gray3 = Gray1 + (Gray2 - Gray1) * 8
      For i = 0 To 2
      For j = 0 To 2
              Pic2.Set_Gray (x + i, y + j), Gray3
      Next j
      Next i
Next y
Next x

 

Η κεντρική ιδέα είναι η ακόλουθη: Υποβιβάζουμε τη διάσταση της πρώτης εικόνας στο 1/3 και την ανάλυση στο 1/9, αποδίδοντας σε κάθε 3χ3 πλέγμα pixels την τονική τιμή του πρώτου από αυτά. Ένας πιο προχωρημένος αλγόριθμός θα τους απέδιδε τη μέση τιμή τους, αλλά εδώ το θέμα μας είναι και η απλότητα ή αν προτιμάτε καλύτερα, η "κομψότητα" του αλγόριθμου. Κρατάμε ακέραιο μόνο το πρώτο από τα εννέα pixels και στα υπόλοιπα οκτώ, στα οποία ήδη αποδώσαμε αρχικά την τιμή του πρώτου pixel, προσθέτουμε ισοκατανεμημένα το ένα όγδοο της τονικής τιμής του αντίστοιχου πρώτου από τα εννέα pixels της δεύτερη εικόνας.

Στον πίνακα (α) βλέπουμε ένα 3x3 πλέγμα pixels της πρώτης εικόνας και στον πίνακα (β) το αντίστοιχο πλέγμα 3x3 πλέγμα pixels της δεύτερης εικόνας, το οποίο έχει τις ίδιες συντεταγμένες με εκείνο της πρώτης. Οι αριθμητικές τιμές στους πίνακες παριστάνουν την τονική τιμή του κάθε pixel, από 0=μαύρο, έως 100=λευκό. Στον πίνακα (γ), η τιμή 56 που βλέπουμε πάνω αριστερά είναι ίδια με την αντίστοιχη του πίνακα (α), ενώ το επαναλαμβανόμενο 68 που συμπληρώνει τον υπόλοιπο πίνακα, είναι το 56+96/8, όπου 96 η πάνω αριστερά τιμή του πίνακα (β). Η τιμή 96, που συμπληρώνει τον πίνακα (δ), προκύπτει σαν (68-56)*8 = 12*8 = 96. Τελικά, ο πίνακας (γ) παριστάνει απλοποιημένο τον πίνακα (α) που έχει μέσα του κρυπτογραφημένο απλοποιημένα τον πίνακα (β) και όταν ο πίνακας (γ) αποκρυπτογραφηθεί δίνει τον πίνακα (δ) που είναι μια απλοποιημένη εκδοχή του πίνακα (β). Σε έναν λίγο πιο εξελιγμένο αλγόριθμο, αν πάρουμε από τον πίνακα (α) την μέση τιμή των pixels του (56+50+65+57+55+63+50+45+60)/9 = 56 (εδώ συμπτωματικά ταυτίζεται με την τιμή του πρώτου pixel) και από τον πίνακα (β) επίσης την μέση τιμή των pixels του (96+89+99+93+99+90+89+98+91)/9 = 94 (εδώ δεν ταυτίζεται με την τιμή του πρώτου pixel που ήταν 96 αντί του μέσου 94), θα έχουμε μεγαλύτερη ακρίβεια.

 

Πως λειτουργεί: Θεωρούμε τους τόνους του γκρι από 0% (μαύρο) έως και 100% (λευκό). Ο ανθρώπινος εγκέφαλος αναγνωρίζει με πολύ ευκολία επτά ισαπέχοντες κατά 17% διαφορετικούς τόνους του γκρι:

Αν μισοκλείσετε τα μάτια κοιτώντας το παραπάνω διάγραμμα, θα παρατηρήσετε ότι τα όρια των διαφορετικών περιοχών του γκρί, τείνουν να χαθούν, ειδικά στις σκουρότερες περιοχές. Όταν οι τόνοι του γκρι είναι ακόμα περισσότεροι και κοντινότεροι μεταξύ τους, τότε o εγκέφαλος έχει την τάση να τους συγχέει εντελώς, ακόμα και με τα μάτια ορθάνοικτα. Διαιρώντας την τονική τιμή του κάθε pixel της δεύτερης εικόνας στα οκτώ και ισοκατανέμοντας αυτή την τιμή σε οκτώ αντίστοιχα pixel της πρώτης εικόνας, η πρώτη εικόνα αλλάζει αλλά όχι "αισθητά" για τον άνθρωπο.

 

Άγγελος Σπάρταλης
6 Ιανουαρίου 2018, Κρήτη