홈으로 돌아가기

Perceptual hash: 유사 이미지 검색

이 기사는 perceptual 이미지 hashing의 원리를 설명합니다. 두 가지 주요 방법 — average hash와 discrete cosine transform 기반 pHash — 을 검토합니다. 성능 및 수정에 대한 견고성 비교를 제공합니다.

유사 사진 찾는 방법: 개발자를 위한 perceptual hash
Advertisement 728x90

# 지각 해시: 알고리즘이 유사한 이미지를 찾는 방법

지각 해싱은 이미지의 크기, 색상, 또는 압축 수준이 다르더라도 이미지 간의 시각적 유사성을 감지할 수 있게 합니다. SHA1 같은 암호화 해시와 달리 지각 해시는 이미지 구조에 대한 정보를 보존하며 사소한 수정에도 강인합니다. 이로 인해 중복 파일 찾기, 콘텐츠 인식, 디지털 포렌식 시스템에서 필수적인 역할을 합니다.

지각 해싱의 기본

암호화 해시 함수는 정확한 데이터 일치를 검증하도록 설계되었습니다. 입력 파일에 아주 사소한 변화가 생기더라도 완전히 다른 해시 값이 나옵니다. 지각 해시는 다른 문제를 해결합니다. 이미지에 시각적으로 무의미한 변화가 생겨도 해시 값이 유사하게 유지되는 것입니다. 이는 인간의 지각이 세밀한 부분을 무시하고 전체 구조에 집중한다는 사실에 기반합니다.

지각 해싱 알고리즘은 일반적으로 다음과 같은 특징을 가집니다.

Google AdInline article slot
  • 크기와 종횡비 변화에 강인함;
  • 밝기와 대비 조정에 불변함;
  • 가벼운 압축이나 노이즈 하에서 유사성 보존;
  • 빠르고 확장 가능함.

두 이미지를 비교할 때는 각 이미지의 해시를 계산한 후 해밍 거리(Hamming distance)를 측정합니다. 이는 서로 다른 비트의 개수입니다. 거리가 작을수록 시각적 유사성이 높습니다.

가장 간단한 방법: 평균 해시

가장 접근하기 쉬운 지각 해싱 알고리즘 중 하나는 픽셀 평균을 기반으로 합니다. 다음 단계를 따릅니다:

  • 8×8 픽셀로 리사이즈—고주파 세부 사항의 영향을 크게 줄입니다.
  • 그레이스케일로 변환—색상 채널 의존성을 제거합니다.
  • 64개 픽셀 전체의 평균 밝기 계산.
  • 이진화: 각 픽셀의 밝기가 평균 이상이면 1, 이하면 0으로 대체.
  • 비트를 연결하여 64비트 해시 생성 (보통 왼쪽부터 위에서 아래로).

이 방법은 매우 빠르며 정확하거나 거의 정확한 중복을 찾는 데 효과적입니다. 하지만 감마 보정이나 히스토그램 변화 같은 비선형 변환에는 민감합니다. 평균이 변하면 많은 비트가 뒤집히기 때문입니다.

Google AdInline article slot

개선된 접근: DCT 기반 pHash

pHash(지각 해시) 알고리즘은 이산 코사인 변환(DCT)을 사용해 이미지의 저주파 성분에 초점을 맞춥니다. 이는 전체 구조를 정의합니다. pHash의 단계:

  • 32×32 픽셀로 리사이즈—DCT 적용에 적합한 크기.
  • 그레이스케일로 변환.
  • 전체 이미지에 DCT 적용 (JPEG처럼 8×8 블록 단위가 아님).
  • 결과 주파수 행렬에서 왼쪽 위 8×8 블록 추출—가장 낮은 주파수를 포함.
  • 이 64개 계수의 평균 계산, 첫 번째(DC 성분) 제외—전체 밝기 의존성 피함.
  • 이 평균을 기준으로 계수 이진화.
  • 64비트 해시 생성.

이 접근은 색상과 밝기 왜곡에 훨씬 더 강인합니다. 감마 보정이나 로컬 변화(예: 이미지 일부에 워터마크 추가) 후에도 원본 해시와 가깝게 유지됩니다.

실제 적용과 한계

TinEye나 내부 디지털 포렌식 도구 같은 실제 시스템에서는 여러 방법을 조합합니다:

Google AdInline article slot
  • 전체 아카이브에 대한 사전 계산된 해시;
  • 초기 필터링을 위한 빠른 평균 해시;
  • 세밀한 검증을 위한 pHash나 다른 고급 알고리즘;
  • 추가 기능: 색상 분포, 객체 위치, 얼굴 존재 여부.

예를 들어 얼굴 인식 시스템에서는 얼굴 영역만 별도로 해시를 계산해 인물 사진 컬렉션의 정확도를 높입니다.

하지만 어떤 지각 해시도 100% 정확성을 보장하지 않습니다. 배경 교체, 큰 각도 회전, 주요 객체 교환 같은 큰 변화는 이미지를 시각적으로 다르게 만들지만 해시가 여전히 가깝거나 그 반대가 될 수 있습니다.

주요 포인트

  • 지각 해시는 비트 단위가 아닌 시각적 유사성을 측정합니다.
  • 해시 간 해밍 거리가 유사성 평가의 주요 방법입니다.
  • 평균 해시는 빠르지만 비선형 변환에 취약합니다.
  • DCT 기반 pHash는 수정에 더 강인합니다.
  • 산업 시스템은 방법 조합과 사전 인덱싱을 사용합니다.

방법 비교

| 기준 | 평균 해시 | pHash (DCT) |

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

| 속도 | 매우 높음 | 보통 |

| 노이즈 강인성 | 중간 | 높음 |

| 감마 강인성 | 낮음 | 높음 |

| 메모리 요구량 | 최소 | 보통 |

| 대량 검색 적합성 | 예 | 예 (인덱싱 시) |

작업에 따라 방법 선택: 정확한 복사본에는 평균 해시, 수정된 이미지에는 pHash.

— Editorial Team

Advertisement 728x90

다음 읽기