>

compareImages( Imagick $compare , int $metric ) 를 사용하여 두 이미지를 비교할 수 있습니다 (파일 형식, EXIF ​​등을 확인하지 않고 시각적으로 동일한 지 확인)   ImageMagick 의 기능  PHP 라이브러리 (다른 프로그래밍 언어로도 사용 가능).

PHP에서 두 이미지를 비교하는 샘플 코드 :

<?php
$image1 = new imagick("image1.png");
$image2 = new imagick("image2.png");
// TODO: have to resize 2 images to same dimension first
$result = $image1->compareImages($image2, Imagick::METRIC_MEANSQUAREERROR);
$result[0]->setImageFormat("png");
header("Content-Type: image/png");
echo $result[0]; // display the result
// TODO: Add exception handling
?>

그러나 비교할 수천 개의 이미지가있는 경우이 기능은 하나씩 만 비교할 수 있으므로 비효율적 인 것 같습니다. 데이터베이스에서 쉽게 검색 할 수 있도록 이미지의 지문을 만드는 데 사용할 수있는 기능이 있습니까?

내가 생각할 수있는 방법 :

<올>
  • 이미지를 Base64 문자열로 변환
  • 각 이미지에서 몇 개의 샘플 픽셀을 가져 와서 데이터베이스에 색상을 저장하십시오 (그러나이 방법은 정확하지 않습니다)
  • 이미지 인식 라이브러리 (머신 러닝과 같은 것)를 사용하여 각 이미지에 태그를 추가 한 다음 태그로 검색하십시오 (이 방법은 정확하지 않음)
  • (다른 것?)
  • 모든 제안을 환영합니다.

    p.s. 프로그래밍 언어는 PHP에있을 필요는 없습니다.

    • 답변 # 1

      getImageSignature 를 사용할 수 있습니다  이 함수는 파일의 SHA-256 해시를 포함하는 문자열을 반환합니다.

      따라서 모든 이미지를 반복하고 이미지 서명을 이미지 데이터베이스에 추가하거나 수행 할 때마다 서명을 추가하십시오.

      도움이됩니다.

    관련 자료

  • 이전 bulk_write가 mongodb에서 실행 된 후 writeErrors를보고하는 올바른 방법
  • 다음 python - 다른 셀의 값을 기준으로 조건부로 셀을 채우는 방법