Powrót do strony głównej

Percepcyjny hash: wyszukiwanie podobnych obrazów

Artykuł wyjaśnia zasady działania hashowania percepcyjnego obrazów. Omówiono dwie główne metody — hash według średniej i pHash oparty na dyskretnej transformacie kosinusowej. Przedstawiono porównanie wydajności i odporności na modyfikacje.

Jak znaleźć podobne obrazki: percepcyjny hash dla programistów
Advertisement 728x90

# 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:

Google AdInline article slot
  • 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.

Google AdInline article slot

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:

Google AdInline article slot
  • 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

Advertisement 728x90

Czytaj dalej