# Perceptywny hash: jak algorytmy znajdują podobne obrazy
Perceptywny hash pozwala określać wizualne podobieństwo obrazów, nawet jeśli różnią się rozmiarem, kolorem lub stopniem kompresji. W przeciwieństwie do kryptograficznych hashów, takich jak SHA1, perceptywne hashe zachowują informacje o strukturze obrazu i są odporne na nieznaczne modyfikacje. To czyni je niezastąpionymi w systemach wyszukiwania duplikatów, rozpoznawania treści i cyfrowej ekspertyzy.
Podstawy perceptywnego hashowania
Kryptograficzne funkcje haszujące służą do sprawdzania dokładnego zgodności danych: nawet najmniejsza zmiana pliku źródłowego powoduje całkowicie inny hash. Perceptywne hashe rozwiązują inne zadanie — powinny pozostawać podobne przy wizualnie nieznaczących zmianach obrazu. Taki podejście opiera się na tym, że ludzkie postrzeganie ignoruje drobne detale i skupia się na ogólnej strukturze.
Algorytmy perceptywnego hashowania zazwyczaj:
- Są odporne na zmianę rozmiaru i proporcji;
- Są niezmienniczo względem transformacji jasności i kontrastu;
- Zachowują podobieństwo przy lekkiej kompresji lub szumie;
- Działają szybko i skalowalnie.
Do porównania dwóch obrazów oblicza się ich hashe, a następnie mierzy odległość Hamminga — liczbę różniących się bitów. Im mniejsza ta odległość, tym większe wizualne podobieństwo.
Najprostsza metoda: hash na podstawie średniej wartości
Jeden z najbardziej dostępnych algorytmów perceptywnego hashowania opiera się na uśrednianiu pikseli. Składa się z następujących kroków:
- Zmniejszenie do 8×8 pikseli — to gwałtownie zmniejsza wpływ wysokoczęstotliwościowych detali.
- Przekształcenie na odcienie szarości — eliminuje zależność od kanału kolorowego.
- Obliczenie średniej jasności wszystkich 64 pikseli.
- Binarizacja: każdy piksel jest zastępowany przez 1, jeśli jego jasność jest wyższa od średniej, i przez 0 — jeśli niższa.
- Tworzenie 64-bitowego hasha poprzez sekwencyjne zapisanie bitów (zazwyczaj od lewej do prawej, od góry do dołu).
Ta metoda jest niezwykle szybka i efektywna do wyszukiwania dokładnych lub prawie dokładnych duplikatów. Jednak jest wrażliwa na nieliniowe transformacje, takie jak korekcja gamma czy zmiana histogramu, ponieważ średnia wartość się przesuwa, a wiele bitów się odwraca.
Ulepszone podejście: pHash na podstawie DCT
Algorytm pHash (perceptual hash) wykorzystuje dyskretne przekształcenie kosinusowe (DCT), aby skupić się na niskoczęstotliwościowych składowych obrazu — to właśnie one określają ogólną strukturę. Etapy działania pHash:
- Skalowanie do 32×32 pikseli — wystarczające do poprawnego zastosowania DCT.
- Przekształcenie na odcienie szarości.
- Zastosowanie DCT do całego obrazu (w przeciwieństwie do JPEG, gdzie DCT jest stosowane do bloków 8×8).
- Wyodrębnienie górnego lewego bloku 8×8 z uzyskanej macierzy częstotliwości — zawiera on najniższe częstotliwości.
- Obliczenie średniej wartości tych 64 współczynników, z wyjątkiem pierwszego (składowej DC), aby uniknąć zależności od ogólnej jasności.
- Binarizacja współczynników względem tej średniej.
- Tworzenie 64-bitowego hasha.
Takie podejście jest znacznie bardziej odporne na zniekształcenia kolorowe i jasnościowe. Nawet po korekcji gamma lub lokalnych zmianach (np. dodaniu znaku wodnego na małej części obrazu) hash pozostaje zbliżony do oryginału.
Praktyczne zastosowanie i ograniczenia
W rzeczywistych systemach, takich jak TinEye czy wewnętrzne narzędzia cyfrowej ekspertyzy, często łączy się kilka metod:
- Używa prekomputerowanych hashów dla całego archiwum;
- Stosuje szybki hash na podstawie średniej do wstępnej filtracji;
- Uruchamia pHash lub inne zaawansowane algorytmy do doprecyzowania wyników;
- Integruje dodatkowe cechy: rozkład kolorów, pozycję obiektów, obecność twarzy.
Na przykład, w systemie rozpoznawania twarzy można obliczać oddzielne hashe tylko dla obszarów z twarzami, co zwiększa dokładność wyszukiwania w kolekcjach portretów.
Jednak żaden perceptywny hash nie gwarantuje 100% dokładności. Znaczące zmiany — takie jak wymiana tła, obrót o duży kąt czy zastąpienie kluczowych obiektów — mogą sprawić, że obrazy wizualnie różnią się, ale hashe nadal będą podobne, albo odwrotnie.
Co ważne
- Perceptywny hash mierzy podobieństwo wizualne, a nie bitowe.
- Odległość Hamminga między hashami to główny sposób oceny podobieństwa.
- Najprostszy hash na podstawie średniej jest szybki, ale podatny na nieliniowe transformacje.
- pHash na podstawie DCT zapewnia lepszą odporność na modyfikacje.
- W systemach przemysłowych stosuje się kombinację metod i wstępne indeksowanie.
Porównanie metod
| Kryterium | Hash na podstawie średniej | pHash (DCT) |
|--------------------------|----------------------------|------------------|
| Szybkość | Bardzo wysoka | Umiarkowana |
| Odporność na szum | Średnia | Wysoka |
| Odporność na gamma | Niska | Wysoka |
| Wymagana pamięć | Minimalna | Umiarkowana |
| Nadaje się do masowego wyszukiwania | Tak | Tak (z indeksowaniem) |
Wybór metody zależy od zadania: do wyszukiwania dokładnych kopii nada się prosty hash, a do analizy zmodyfikowanych obrazów — pHash.
— Editorial Team
Brak komentarzy.