Zpět na domů

Perceptuální haš: vyhledávání podobných obrázků

Článek vysvětluje principy fungování perceptuálního hašování obrázků. Jsou zváženy dvě hlavní metody — haš podle průměru a pHash na bázi diskrétní kosinusové transformace. Je uvedeno srovnání výkonu a odolnosti vůči modifikacím.

Jak se hledají podobné obrázky: perceptuální haš pro vývojáře
Advertisement 728x90

# Perceptuální hash: jak algoritmy nacházejí podobné obrázky

Perceptuální hash umožňuje určovat vizuální podobnost obrázků, i když se liší velikostí, barvou nebo stupněm komprese. Na rozdíl od kryptografických hashů, jako je SHA1, perceptuální hashe zachovávají informace o struktuře obrázku a jsou odolné vůči drobným modifikacím. To je činí nezbytnými v systémech pro hledání duplicit, rozpoznávání obsahu a digitální expertizu.

Základy perceptuálního hašování

Kryptografické hash-funkce jsou určeny pro kontrolu přesné shody dat: i minimální změna zdrojového souboru vede k úplně jinému hash. Perceptuální hashe řeší jinou úlohu – musí zůstat blízké při vizuálně zanedbatelných změnách obrázku. Tento přístup vychází z toho, že lidské vnímání ignoruje drobné detaily a soustředí se na celkovou strukturu.

Algoritmy perceptuálního hašování obvykle:

Google AdInline article slot
  • Odolné vůči změně velikosti a poměru stran;
  • Invariantní vůči transformacím jasu a kontrastu;
  • Zachovávají podobnost při mírné kompresi nebo šumu;
  • Pracují rychle a škálovatelně.

Pro porovnání dvou obrázků se počítají jejich hashe, poté se měří Hammingovo vzdálenost – počet odlišných bitů. Čím menší je tato vzdálenost, tím vyšší je vizuální podobnost.

Nejjednodušší metoda: hash podle průměrné hodnoty

Jeden z nejpřístupnějších algoritmů perceptuálního hašování vychází z průměrování pixelů. Skládá se z těchto kroků:

  • Zmenšení na 8×8 pixelů – to výrazně snižuje vliv vysokofrekvenčních detailů.
  • Převod do odstínů šedi – eliminuje závislost na barevném kanálu.
  • Výpočet průměrné hodnoty jasu všech 64 pixelů.
  • Binarizace: každý pixel se nahradí 1, pokud je jeho jas vyšší než průměr, a 0 – pokud nižší.
  • Vytvoření 64bitového hash spojením bitů v řadě (obvykle zleva doprava, shora dolů).

Tato metoda je extrémně rychlá a efektivní pro hledání přesných nebo téměř přesných duplicit. Nicméně je citlivá na nelineární transformace, jako je gama-korekce nebo změna histogramu, protože průměrná hodnota se posune a mnoho bitů se invertuje.

Google AdInline article slot

Vylepšený přístup: pHash na bázi DCT

Algoritmus pHash (perceptual hash) využívá diskrétní kosinové transformace (DCT), aby se soustředil na nízkofrekvenční složky obrázku – právě ty určují celkovou strukturu. Kroky pHash:

  • Škálování na 32×32 pixelů – dostatečné pro správné použití DCT.
  • Převod do odstínů šedi.
  • Aplikace DCT na celý obrázek (na rozdíl od JPEG, kde se DCT aplikuje na bloky 8×8).
  • Extrakce horního levého bloku 8×8 z výsledné frekvenční matice – obsahuje nejnižší frekvence.
  • Výpočet průměrné hodnoty těchto 64 koeficientů, s výjimkou prvního (DC složky), aby se vyhnuli závislosti na celkovém jasu.
  • Binarizace koeficientů vzhledem k tomuto průměru.
  • Vytvoření 64bitového hash.

Tento přístup je výrazně odolnější vůči barevným a jasovým zkreslením. I po gama-korekci nebo lokálních změnách (např. přidání vodoznaku na malou část obrázku) zůstává hash blízko originálu.

Praktické použití a omezení

V reálných systémech, jako je TinEye nebo interní nástroje digitální expertizy, se často kombinují více metod:

Google AdInline article slot
  • Používají předem vypočítané hashe pro celý archiv;
  • Aplikují rychlý hash podle průměru pro primární filtrování;
  • Spouštějí pHash nebo jiné pokročilé algoritmy pro upřesnění výsledků;
  • Integrují další znaky: rozložení barev, polohu objektů, přítomnost tváří.

Například při systému rozpoznávání tváří lze počítat samostatné hashe jen pro oblasti s tvářemi, což zvyšuje přesnost hledání v kolekcích portrétů.

Nicméně žádný perceptuální hash negarantuje 100% přesnost. Podstatné změny – jako výměna pozadí, otočení o velký úhel nebo výměna klíčových objektů – mohou obrázky vizuálně odlišit, ale hashe zůstanou blízké, nebo naopak.

Co je důležité

  • Perceptuální hash měří vizuální, ne bitovou podobnost.
  • Hammingovo vzdálenost mezi hashi je hlavní způsob hodnocení podobnosti.
  • Nejjednodušší hash podle průměru je rychlý, ale zranitelný vůči nelineárním transformacím.
  • pHash na bázi DCT zajišťuje lepší odolnost vůči modifikacím.
  • V průmyslových systémech se používá kombinace metod a předchozí indexace.

Srovnání metod

| Kritérium | Hash podle průměru | pHash (DCT) |

|------------------------|---------------------|------------------|

| Rychlost | Velmi vysoká | Střední |

| Odolnost vůči šumu | Střední | Vysoká |

| Odolnost vůči gamě | Nízká | Vysoká |

| Požadovaná paměť | Minimální | Střední |

| Vhodné pro hromadné hledání | Ano | Ano (s indexací) |

Výběr metody závisí na úloze: pro hledání přesných kopií stačí jednoduchý hash, pro analýzu modifikovaných obrázků je ideální pHash.

— Editorial Team

Advertisement 728x90

Číst dál