[image] 여러 이미지의 유사성을 비교하기위한 이미지 지문

모든 이미지를 다른 모든 이미지와 매우 빠르게 비교하려면 많은 이미지의 지문 (기존 이미지 약 100.000 개, 매일 새 이미지 1000 개, RGB, JPEG, 최대 크기 800×800)을 만들어야합니다. 거의 비슷한 이미지도 인식해야하므로 바이너리 비교 방법을 사용할 수 없습니다.

가장 좋은 것은 기존 라이브러리이지만 기존 알고리즘에 대한 몇 가지 힌트도 많은 도움이 될 것입니다.



답변

일반 해싱 또는 CRC 계산 알고리즘은 이미지 데이터에서 제대로 작동하지 않습니다. 정보의 차원 적 특성을 고려해야합니다.

아핀 변환 (크기 조정, 회전, 변환, 뒤집기)을 고려하는 매우 강력한 지문이 필요한 경우 이미지 소스 에서 라돈 변환을 사용 하여 이미지 데이터의 표준 매핑을 생성 할 수 있습니다. 이를 각 이미지와 함께 저장하고 그런 다음 지문 만 비교합니다. 이것은 복잡한 알고리즘이며 희미한 심장을위한 것이 아닙니다.

몇 가지 간단한 솔루션이 가능합니다.

  1. 이미지에 대한 광도 히스토그램을 지문으로 생성
  2. 각 이미지의 축소 된 버전을 지문으로 생성
  3. 비교 품질 향상을 위해 기술 (1) 및 (2)를 하이브리드 접근 방식으로 결합

광도 히스토그램 (특히 RGB 구성 요소로 분리 된 것)은 이미지에 대한 합리적인 지문이며 매우 효율적으로 구현할 수 있습니다. 하나의 히스토그램을 다른 히스토그램에서 빼면 두 이미지가 얼마나 유사한 지 결정하기 위해 처리 할 수있는 새로운 히스토그램이 생성됩니다. 히스토그램은 광도 / 색상 정보의 분포 및 발생을 평가하기 때문에 아핀 변환을 아주 잘 처리합니다. 각 색상 구성 요소의 광도 정보를 8 비트 값으로 양자화하면 거의 모든 합리적인 크기의 이미지 지문에 768 바이트의 저장 공간이 충분합니다. 광도 히스토그램은 이미지의 색상 정보를 조작 할 때 위음성을 생성합니다. 대비 / 밝기, 포스터 화, 색상 이동, 광도 정보 변경과 같은 변형을 적용하면.

크기 조정 된 이미지를 사용하는 것은 이미지의 정보 밀도를 비교하기 쉬운 수준으로 줄이는 또 다른 방법입니다. 원본 이미지 크기의 10 % 미만으로 축소하면 일반적으로 사용하기에 너무 많은 정보가 손실됩니다. 따라서 800×800 픽셀 이미지는 80×80으로 축소 될 수 있으며 여전히 적절한 지문을 수행하기에 충분한 정보를 제공 할 수 있습니다. 히스토그램 데이터와 달리 소스 해상도가 다양한 종횡비를 가질 때 이미지 데이터의 이방성 스케일링을 수행해야합니다. 즉, 300×800 이미지를 80×80 미리보기 이미지로 줄이면 이미지가 변형되어 300×500 이미지 (매우 비슷 함)와 비교할 때 거짓 음성이 발생합니다. 썸네일 지문은 아핀 변환이 관련 될 때 종종 위음성을 생성합니다. 이미지를 뒤집거나 회전하면

두 가지 기술을 결합하는 것은 베팅을 헤지하고 거짓 긍정과 거짓 부정의 발생을 줄이는 합리적인 방법입니다.


답변

여기에 제안 된 축소 된 이미지 변형보다 훨씬 덜 임시적인 접근 방식이 있습니다. 여기서 제안 된 일반적인 특징은 유지하지만 진행 상황에 대해 훨씬 더 엄격한 수학적 기반을 제공합니다.

이미지 의 Haar 웨이블릿 을 가져옵니다 . 기본적으로 Haar 웨이블릿은 저해상도 이미지에서 각 고해상도 이미지까지의 차이가 연속되지만 밉맵의 ‘트리’에 얼마나 깊이 있는지에 따라 가중치가 부여됩니다. 계산은 간단합니다. 그런 다음 Haar 웨이블릿에 적절한 가중치가 부여되면 k 개의 가장 큰 계수 (절대 값 측면)를 제외한 모든 계수를 버리고 벡터를 정규화하고 저장합니다.

두 개의 정규화 된 벡터의 내적을 취하면 1이 거의 동일한 유사성의 척도를 제공합니다. 여기 에 더 많은 정보를 게시했습니다 .


답변

당신은 확실히 phash를 봐야한다 .

이미지 비교를 위해 다음 PHP 프로젝트가 있습니다 :
https://github.com/kennethrapp/phasher

그리고 내 작은 자바 스크립트 복제 :
https://redaktor.me/phasher/demo_js/index.html

불행히도 이것은 “bitcount”기반이지만 회전 된 이미지를 인식합니다. 자바 스크립트의 또 다른 접근 방식은 캔버스를 사용하여 이미지에서 광도 히스토그램을 만드는 것입니다. 캔버스에서 다각형 히스토그램을 시각화하고 데이터베이스에서 해당 다각형을 비교할 수 있습니다 (예 : mySQL 공간 …).


답변

오래 전에 비슷한 특성을 가진 시스템에서 작업했는데 이것이 우리가 따랐던 알고리즘의 근사치입니다.

  1. 그림을 영역으로 나눕니다. 우리의 경우 4 : 3 해상도 비디오를 다루고 있었으므로 12 개의 영역을 사용했습니다. 이렇게하면 사진에서 소스 이미지의 해상도가 제거됩니다.
  2. 각 영역에 대해 전체 색상 (영역에있는 모든 픽셀의 평균)을 계산합니다.
  3. 전체 이미지에 대해 전체 색상 계산-모든 영역의 평균

따라서 각 이미지에 대해 n + 1정수 값을 저장 합니다. 여기서 n추적하는 영역의 수입니다.

비교를 위해 각 색상 채널을 개별적으로 살펴 봐야합니다.

  1. 전체 이미지의 경우 전체 색상의 색상 채널을 비교하여 특정 임계 값 (예 : 10 %) 내에 있는지 확인합니다.
  2. 이미지가 임계 값 내에 있으면 다음으로 각 영역을 비교합니다. 모든 영역이 임계 값 내에있는 경우 이미지는 적어도 추가 비교를 위해 플래그를 지정할 수있을만큼 충분히 강한 일치입니다.

이렇게하면 일치하지 않는 이미지를 빠르게 삭제할 수 있습니다. 더 많은 영역을 사용하거나 알고리즘을 재귀 적으로 적용하여 더 강력한 일치 신뢰도를 얻을 수도 있습니다.


답변

Ic의 답변과 유사-여러 해상도에서 이미지를 비교해 볼 수 있습니다. 따라서 각 이미지는 1×1, 2×2, 4×4 .. 800×800으로 저장됩니다. 최저 해상도가 일치하지 않는 경우 (임계 값에 따라) 즉시 거부 할 수 있습니다. 일치하는 경우 다음 더 높은 해상도에서 비교할 수 있습니다.

또한 이미지가 의료 이미지와 같은 유사한 구조를 공유하는 경우 비교하기 더 쉽고 / 빠른 설명으로 해당 구조를 추출 할 수 있습니다.


답변

따라서 “이미지 일치”와는 매우 다른 “지문 일치”를 수행하려고합니다. 지문의 분석은 지난 20 년 동안 깊이 연구되어 왔으며 올바른 탐지율을 보장하기 위해 몇 가지 흥미로운 알고리즘이 개발되었습니다 ( FARFRR 측정 과 관련하여 -False Acceptance RateFalse Rejection Rate ).

나는 주로 세부 검사를 기반으로 구축 된 LFA (Local Feature Analysis) 검출 기술 클래스 를 더 잘 살펴볼 것을 제안합니다 . 세부 사항은 지문의 특정 특성이며 여러 등급으로 분류되었습니다. 래스터 이미지를 세부지도에 매핑하는 것은 실제로 대부분의 공공 기관이 범죄자 또는 테러리스트를 신고하기 위해 수행하는 작업입니다.

추가 참조는 여기 를 참조 하십시오.


답변

iPhone 이미지 비교 및 ​​이미지 유사성 개발은 http://sites.google.com/site/imagecomparison/을 확인하세요.

실제로 확인하려면 iTunes AppStore에서 eyeBuy Visual Search를 확인하십시오.