19 marca 2020

Identicon, avatar, robohash i inne graficzne reprezentacje danych

Widzieliście nieraz ikonki generowane z automatu i być może zastanawia Was, czym są, jak powstają, czy ich ilość jest skończona. W tym wpisie postaram się nakreślić ogólnie zarys koncepcji kilku powszechnych:

Naturalnie w/w identyfikatory można wygenerować sobie przy pomocy kodu OpenSource (linki pod w/w nazwami). To nie jest koniec, jeśli chodzi o eksplorację indenticon, oto lista na githubie do wyników wyszukiwania implementacji identicons w różnych językach programowania.

Rozpocznę kilkoma wygenerowanymi przykładami, które przybliżą, o czym chciałbym tutaj napisać:







Jak niektórzy zdążyli zauważyć najbliższy branży IT identicon to wizualizacja odcisku klucza OpenSSH. Kiedy generujemy klucz, jak pamiętacie pojawia się taka jak w animacji powyżej tekstowa reprezentacja.
Wszelkie identicony mają na celu pokazać w postaci obrazka odcisk/odpowiednik klucza lub napisu, który wprowadza się na wejście.

Jak pewnie niektórzy kojarzą, domyślny avatar w githubie jest właśnie generowany takim sposobem. Projekt WordPress również ma swoje odpowiedniki.
Często mamy sytuację, w której chcemy w łatwy sposób rozróżnić osoby, których tylko imię lub pseudonim znamy - tutaj przydają się identikony. Prawdopodobnie najczęstszymi ich przykładami są różne osoby na różnych platformach dyskusyjnych, takich jak czaty, fora, strony wiki lub systemy śledzenia incydentów/problemów.

Punktem wyjścia do wizualizacji dowolnych danych jest często funkcja skrótu lub z ang. hashowanie. Hashowanie w tym kontekście ma na celu przedstawienie wartości stałej długości na podstawie zmiennej długości danych wejściowych. Ta reprezentacja stałej długości jest tylko dużą liczbą, która może być następnie wykorzystana jako punkt wyjścia do rozróżnienia różnych informacji.

W momencie, kiedy mamy już liczbę możemy w powtarzalny sposób stworzyć reprezentację na jej podstawie. I tak dzięki trickom programistycznym, artystycznej fantazji i oszukiwaniu wzroku można ukrywać ale też przekazywać informację wizualną ludziom. Jest taki dość znaczący rozdział psychologii oraz dziedzin pochodnych t.j. doświadczenie użytkownika (ang. User Experience / UX), gdzie tzw. Pre-attentive Processing jest wykorzystywany. Zakładamy, że człowiek posiada ograniczoną percepcję wzrokową i aparat wzroku działa w sposób specyficzny. To oznacza, że niektórymi cechami obrazu można na odbiór informacji wpływać świadomie lub podświadomie.
Czyli np. bazując na mieszaniu koloru, nasycenia barwy, jasności, formy, położenie przestrzenne i przesunięcia można zbudować dość atrakcyjne wizualizację i ikony. Jest też ogromna dziedzina (ikono)grafiki komputerowej, która bazuje zasadniczo m. in. na tych założeniach.

Z punktu widzenia realizacji i algorytmów używanych w identicons, są to sprytne kilku linijkowe przesunięcia bitów/maskowania/mieszania z losowaniem wartości. Istnieją też opcje losowania elementów identicon z listy kilku obrazków bazowych i składanie w całość t.j. tutaj w MonsterID:



Kolejnym wartościowym przykładem użycia identiconów są portfele wirtualnej waluty (kryptowalutyEthereum:



Moim faworytem ze względu na zainteresowanie robotyką oraz atrakcyjny wygląd są RoboHASHe. 
Istnieje wiele gotowych generatorów t.j. np: ten dla RoboHash.



Obliczmy liczbę różnych robotów, które możemy wygenerować:
- Istnieje 5 różnych części ciała
- Istnieje 10 różnych kształtów dla każdej części ciała
- Istnieje 10 różnych kolorów robota
- Istnieje 10 różnych kolorów tła
W sumie to 10⁵ * 10 * 10 = 10 000 000 różnych robotów. 
Nie jest to nawet blisko liczby różnych adresów, która wynosi ~ 2²⁵⁶ = 10⁷⁷. 
Chociaż prawdopodobnie niemożliwe jest wygenerowanie czegoś zbliżonego do 10⁷⁷ różnych, 
dobrze rozpoznawalnych, dobrze zapamiętywalnych identiconów na powierzchni 128x128 pikseli, 
tylko dlatego, że zdolność ludzi do przetwarzania obrazów jest ograniczona. 
Dlatego identicons nigdy nie może być pomiarem bezpieczeństwa 
i nigdy nie zastąpi potrzeby dokładnego sprawdzenia adresu przed potwierdzeniem krytycznego transferu. 
Chociaż ich entropia jest pomijalna w porównaniu do przestrzeni adresowej, 
aby szybko uzyskać przegląd historii transakcji lub rozróżnić własne konta, identicons są bardzo cenne.

Warto zdawać sobie sprawę, że w branży IT potrzeba jest matką wynalazców i tak też w przypadku identiconów było - po prostu ludzie nie wgrywali swoich avatarów/ikonek, przez co pustka została zapewniona twórczością artystów-programistów :-)

Jeśli posiadacie swoje patenty/algorytmy na identicony, zapraszam do umieszczania w komentarzach linków do kodu lub gotowych generatorów.



Materiały:

  


1 komentarz:

Marcin Bielak | bieli - architekt oprogramowania i programista pisze...

https://github.com/enjeck/Blobby

https://blobby-figures.herokuapp.com/

https://georgefrancis.dev/writing/generative-svg-blob-characters/