답변:
이것들은 내가 문제에 대해 생각했던 아이디어 일뿐 결코 시도하지는 않았지만 이와 같은 문제에 대해 생각하는 것을 좋아합니다!
시작하기 전에
그림을 표준화하는 것을 고려하십시오. 하나가 다른 해상도보다 높은 해상도 인 경우, 그중 하나가 다른 버전의 압축 버전이므로 해상도를 낮추면보다 정확한 결과를 얻을 수 있습니다.
이미지의 확대 된 부분과 다양한 위치 및 회전을 나타낼 수있는 이미지의 다양한 예상 영역을 스캔하는 것을 고려하십시오. 이미지 중 하나가 다른 버전의 왜곡 된 버전 인 경우 까다로워지기 시작합니다. 이러한 유형의 제한 사항은 식별하고 손상시켜야합니다.
Matlab 은 이미지 테스트 및 평가를위한 훌륭한 도구입니다.
알고리즘 테스트
일치 항목을 미리 알고있는 사람이 분석 한 대규모 테스트 데이터 집합을 최소한 테스트해야합니다. 예를 들어 테스트 데이터에 이미지의 5 %가 일치하는 1,000 개의 이미지가있는 경우 합리적으로 신뢰할 수있는 벤치 마크입니다. 10 % 양성을 찾는 알고리즘은 테스트 데이터에서 양성의 4 %를 찾는 알고리즘만큼 좋지 않습니다. 그러나 하나의 알고리즘이 모든 일치 항목을 찾을 수 있지만 20 %의 오 탐지율이 크므로 알고리즘을 평가하는 방법에는 여러 가지가 있습니다.
테스트 데이터는 실제 세계에서 가능한 많은 유형의 역학을 포함하도록 설계되어야합니다.
유용한 각 알고리즘은 무작위 추측보다 성능이 뛰어나야한다는 점을 명심해야합니다. 그렇지 않으면 우리에게는 쓸모가 없습니다!
그런 다음 제어 된 방식으로 소프트웨어를 실제 환경에 적용하고 결과를 분석 할 수 있습니다. 이것은 무한대로 진행될 수있는 일종의 소프트웨어 프로젝트이며, 항상 조정할 수 있고 개선 할 수 있습니다. 끝없는 프로젝트의 함정에 빠지기 쉽기 때문에 디자인 할 때 명심해야합니다.
컬러 버킷
두 장의 사진으로 각 픽셀을 스캔하고 색상을 세십시오. 예를 들어 '버킷'이있을 수 있습니다.
white
red
blue
green
black
(분명히 카운터의 해상도가 높을 것입니다). '빨간색'픽셀을 찾을 때마다 빨간색 카운터가 증가합니다. 각 버킷은 색상의 스펙트럼을 대표 할 수 있으며, 해상도가 높을수록 더 정확하지만 수용 가능한 차이 비율을 실험해야합니다.
총계가 있으면 두 번째 이미지의 총계와 비교하십시오. 각 이미지에는 일치하는 부분을 식별 할 수있을만큼 상당히 고유 한 공간이 있습니다.
가장자리 감지
Edge Detection 사용은 어떻습니까 .
(출처 : wikimedia.org )
두 개의 유사한 그림을 사용하면 가장자리 감지 기능이 유용하고 신뢰할 수있는 고유 한 공간을 제공해야합니다.
두 장의 사진을 모두 찍고 가장자리 감지를 적용하십시오. 가장자리의 평균 두께를 측정 한 다음 이미지 크기를 조정할 수있는 확률을 계산하고 필요한 경우 크기를 조정하십시오. 아래는 다양한 회전에서 적용된 가버 필터 (가장자리 감지 유형)의 예입니다 .
픽셀의 그림 픽셀을 비교하고 일치하는 항목과 일치하지 않는 것을 계산하십시오. 특정 임계 값 내에 있으면 일치하는 것입니다. 그렇지 않으면 해상도를 특정 지점까지 낮추고 일치 확률이 향상되는지 확인할 수 있습니다.
관심 지역
일부 이미지에는 고유 한 세그먼트 / 관심 영역이있을 수 있습니다. 이러한 영역은 나머지 이미지와 대비가 높을 수 있으며 다른 이미지에서 검색하여 일치하는 항목을 찾을 수있는 좋은 항목입니다. 이 이미지를 예로 들어 보겠습니다.
(출처 : meetthegimp.org )
파란색의 건설 작업자는 관심 영역이며 검색 개체로 사용할 수 있습니다. 이 관심 영역에서 특성 / 데이터를 추출하여이를 사용하여 데이터 세트를 검색 할 수있는 몇 가지 방법이있을 수 있습니다.
관심 영역이 3 개 이상인 경우 해당 영역 사이의 거리를 측정 할 수 있습니다. 이 간단한 예를 보자.
(출처 : per2000.eu )
우리는 3 개의 명확한 관심 지역을 가지고 있습니다. 영역 1과 2 사이의 거리는 200 픽셀, 1과 3400 픽셀 사이, 및 2와 3200 픽셀 일 수 있습니다.
비슷한 관심 영역에 대한 다른 이미지를 검색하고 거리 값을 정규화하고 일치하는 항목이 있는지 확인하십시오. 이 기술은 회전 및 크기 조정 된 이미지에 적합합니다. 관심 영역이 많을수록 각 거리 측정이 일치할수록 일치 확률이 높아집니다.
데이터 세트의 컨텍스트에 대해 생각하는 것이 중요합니다. 예를 들어 데이터 세트가 현대 미술인 경우 관심 영역 이 최종 이미지의 기본 부분으로 설계 되었기 때문에 관심 영역이 잘 작동 합니다. 그러나 건설 현장의 이미지를 다루는 경우 관심있는 지역은 불법 복사기에서 추악한 것으로 해석되어 자유롭게 자르거나 편집 할 수 있습니다. 데이터 세트의 공통 기능을 염두에두고 해당 지식을 활용하십시오.
모핑
두 이미지 모핑 은 일련의 단계를 통해 한 이미지를 다른 이미지로 바꾸는 과정입니다.
이것은 하나의 이미지를 다른 이미지로 페이딩하는 것과 다릅니다!
이미지를 모핑 할 수있는 많은 소프트웨어 패키지가 있습니다. 전통적으로 과도기 효과로 사용되었으므로 두 이미지는 일반적으로 중간 정도의 무언가로 변형되지 않으며, 하나의 최종 결과로 극단적 인 형태로 변형됩니다.
이것이 왜 유용 할 수 있습니까? 사용하는 모핑 알고리즘에 따라 이미지의 유사성과 모핑 알고리즘의 일부 매개 변수 사이에 관계가있을 수 있습니다.
크게 단순화 된 예에서 변경 사항이 적을 때 하나의 알고리즘이 더 빠르게 실행될 수 있습니다. 그런 다음이 두 이미지가 서로 속성을 공유 할 확률이 높다는 것을 알고 있습니다.
이 기술 은 회전, 왜곡, 기울어 짐, 확대, 모든 유형의 복사 된 이미지에 적합합니다. 다시 말하지만 이것은 내가 가진 아이디어 일뿐입니다. 아는 내가 아는 한 연구 된 학계를 기반으로하지 않기 때문에 (결과는 어렵지 않습니다) 결과가 제한적이거나 전혀없는 많은 일이있을 수 있습니다.
압축
이 질문에 대한 Ow의 대답은 훌륭합니다. AI를 연구하는 이런 종류의 기술에 대해 읽은 것을 기억합니다. 말뭉치 사전을 비교하는 데 매우 효과적입니다.
시체를 비교할 때 한 가지 흥미로운 최적화는 'The', 'A', 'And'등과 같이 너무 흔한 것으로 간주되는 단어를 제거 할 수 있다는 것입니다.이 단어는 결과를 희석하므로 두 단어의 차이점이 무엇인지 알아 내고 싶습니다. 처리하기 전에 제거 할 수 있습니다. 압축하기 전에 제거 할 수있는 비슷한 공통 신호가 이미지에 있습니까? 살펴볼 가치가 있습니다.
압축 비율은 유사한 두 데이터 집합이 얼마나 유사한지를 결정하는 매우 빠르고 합리적인 방법입니다. 압축이 어떻게 작동하는지 에 대해 읽으면 이것이 왜 그렇게 효과적 일 수 있는지 잘 알 수 있습니다. 빠른 릴리스 알고리즘의 경우 아마도 좋은 출발점이 될 것입니다.
투명도
다시 말하지만 특정 이미지 유형, gif png 등에 대한 투명도 데이터가 어떻게 저장되는지 잘 모르겠지만 추출 가능하며 데이터 세트 투명도와 비교하기 위해 효과적으로 단순화 된 컷 아웃으로 사용됩니다.
반전 신호
이미지는 신호일뿐입니다. 스피커에서 잡음을 재생하고 다른 스피커에서 반대 음을 정확히 동일한 볼륨으로 완벽하게 동기화하면 서로 상쇄됩니다.
(출처 : themotorreport.com.au )
이미지를 뒤집어 다른 이미지에 추가하십시오. 긍정적 인 일치 또는 부분 일치를 제공하기에 충분한 픽셀이 흰색 (또는 검은 색? 중성 캔버스라고 함) 인 결과 이미지를 찾을 때까지 반복 / 위치를 조정합니다.
그러나 두 이미지 중 하나에 밝은 효과가 적용되는 것을 제외하고 동일한 두 이미지를 고려하십시오.
(출처 : mcburrz.com )
그중 하나를 뒤집은 다음 다른 것에 추가하면 우리가 목표로하는 중립 캔버스가되지 않습니다. 그러나 두 원본 이미지의 픽셀을 비교할 때 두 이미지 사이의 명확한 관계를 알 수 있습니다.
나는 몇 년 동안 색상을 연구하지 않았으며 색상 스펙트럼이 선형 스케일인지 확실하지 않지만 두 그림 사이의 평균 색상 차이 요인을 결정한 경우이 값을 사용하여 처리하기 전에 데이터를 정규화 할 수 있습니다 이 기술.
트리 데이터 구조
처음에는 이것이 문제에 적합하지 않은 것 같지만 효과가 있다고 생각합니다.
이미지의 특정 속성 (예 : 색상 저장소)을 추출하고 허프만 트리 또는 유사한 데이터 구조를 생성 할 수 있습니다. 유사성을 위해 두 트리를 비교할 수 있습니다. 예를 들어 색상이 큰 사진 데이터에는 적합하지 않지만 만화 나 다른 축소 된 색상 세트 이미지는 효과가있을 수 있습니다.
아마도 작동하지 않을 수도 있지만 아이디어입니다. 트라이의 자료 구조는 예를 들어 A가 dictionarty 위해 저장 어휘집에서 크다. 접두사 트리입니다. 어쩌면 트라 이어를 구성하기 위해 어휘와 동등한 이미지 (색상 만 생각할 수 있음)를 만들 수 있습니다. 300x300 이미지를 5x5 정사각형으로 줄인 경우 각 5x5 정사각형을 일련의 색상으로 분해하여 결과 데이터에서 trie를 구성 할 수 있습니다. 2x2 정사각형에 다음이 포함 된 경우 :
FFFFFF|000000|FDFD44|FFFFFF
우리는 24 레벨을 확장하는 상당히 독특한 트라이 코드를 가지고 있으며, 레벨을 증가 / 감소 (IE의 정사각형 크기를 증가 / 감소)하면보다 정확한 결과를 얻을 수 있습니다.
트리 트리를 비교하는 것은 상당히 쉬워야하며 효과적인 결과를 제공 할 수 있습니다.
더 많은 아이디어
나는 위성 이미지의 분류에 관한 흥미로운 논문 브리프를 우연히 발견 했다.
고려되는 텍스처 측정은 동시 행렬 매트릭스, 그레이 레벨 차이, 텍스처 톤 분석, 푸리에 스펙트럼에서 파생 된 기능 및 가보 필터입니다. 일부 푸리에 기능과 일부 가버 필터는 특히 단일 주파수 대역이 분류에 사용될 때 좋은 선택으로 나타났습니다.
일부 측정은 데이터 세트와 관련이 없을 수 있지만 해당 측정을보다 자세히 조사 할 가치가 있습니다.
고려해야 할 다른 것들
이런 종류의 일에 대한 많은 논문이있을 수 있으므로 일부 기술 자료를 읽으면 도움이 될 것입니다. 많은 사람들이 비슷한 일을하려고 노력하는 데 많은 시간을 들일 수없는 컴퓨팅 분야에서는 매우 어려운 영역입니다. 간단하게 유지하고 그러한 아이디어를 바탕으로하는 것이 최선의 방법입니다. 랜덤 매치 율보다 나은 알고리즘을 생성하고 개선을 시작하는 것은 실제로 달성하기가 매우 어려워지기 때문에 상당히 어려운 도전이되어야합니다.
각 방법을 테스트하고 철저히 조정해야 할 것입니다. 확인하려는 그림 유형에 대한 정보가 있으면 유용합니다. 예를 들어 광고의 경우 많은 텍스트에 텍스트가 포함되어 있으므로 텍스트 인식을 수행하는 것은 특히 다른 솔루션과 결합 할 때 쉽고 신뢰할 수있는 일치 항목을 찾는 방법 일 것입니다. 앞에서 언급했듯이 데이터 세트의 공통 속성을 활용하십시오.
가중 투표를 할 수있는 각각의 대안 측정 및 기법 (효과에 따라 다름)을 결합하면보다 정확한 결과를 생성하는 시스템을 만들 수 있습니다.
이 답변의 시작 부분에서 언급 한 것처럼 여러 알고리즘을 사용하는 경우 모든 양성을 찾을 수 있지만 20 %의 오 탐률을 갖는 경우 다른 알고리즘의 다른 알고리즘의 특성 / 강도 / 약점을 연구하는 것이 중요합니다. 다른 사람에게서 반환 된 오 탐지를 제거하는 데 효과적입니다.
끝없는 프로젝트를 완료하려고 시도하지 않도록주의하십시오. 행운을 빕니다!
이 백서에 제시된 기술을 사용하여 인접한 웹캠에서 캡처 한 이미지에서 겹치는 영역을 성공적으로 감지 할 수있었습니다. 공분산 행렬은 원래의 그레이 스케일 픽셀뿐만 아니라 Sobel, canny 및 SUSAN 종횡비 검출 출력으로 구성되었습니다.
아이디어:
2 단계는 사소한 것이 아닙니다. 특히 다른 이미지에서 가장 유사한 키포인트를 찾으려면 스마트 알고리즘을 사용해야 할 수도 있습니다. 포인트 디스크립터는 일반적으로 매우 높은 차원 (100 개의 매개 변수와 같은)이며 살펴볼 점이 많습니다. kd-trees는 여기서 유용 할 수 있습니다. 해시 조회는 제대로 작동하지 않습니다.
변형 :
그것은 실제로 보이는 것보다 훨씬 덜 간단합니다 :-) Nick의 제안은 좋은 것입니다.
시작하려면 가치있는 비교 방법은 이미지를 다른 형태 (유사한 특징을 쉽게 선택할 수있는 형태)로 변환함으로써 본질적으로 효과가 있음을 명심하십시오. 일반적 으로이 물건은 매우 가벼운 독서를하지 않습니다 ...
내가 생각할 수있는 가장 간단한 예 중 하나는 단순히 각 이미지의 색상 공간을 사용하는 것입니다. 두 이미지의 색상 분포가 매우 유사한 경우 이미지가 동일한 것을 확실하게 확인할 수 있습니다. 최소한 플래그를 지정하거나 더 많은 테스트를 수행 할 정도로 확실 할 수 있습니다. 색 공간에서 이미지를 비교하면 회전, 크기 조절 및 일부 자르기와 같은 것들에 저항 할 수 있습니다. 물론 이미지의 과도한 수정이나 강한 다시 칠하기에 저항하지는 않습니다 (심지어 간단한 색조 변화조차 다소 까다로울 것입니다).
http://en.wikipedia.org/wiki/RGB_color_space
http://upvector.com/index.php?section=tutorials&subsection=tutorials/colorspace
또 다른 예로는 Hough Transform이라는 것이 있습니다. 이 변환은 본질적으로 이미지를 일련의 선으로 분해합니다. 그런 다음 각 이미지에서 '가장 강한'줄을 가져와 줄이 있는지 확인할 수 있습니다. 회전과 배율 조정을 시도하고 보상하기 위해 추가 작업을 수행 할 수도 있습니다.이 경우 몇 줄을 비교하는 것이 전체 이미지에 대해 동일한 작업을 수행하는 것보다 계산 작업이 훨씬 적기 때문에 그렇게 나쁘지 않습니다.
http://homepages.inf.ed.ac.uk/amos/hough.html
http://rkb.home.cern.ch/rkb/AN16pp/node122.html
http://en.wikipedia.org/wiki/ Hough_transform
귀하가 설명한 형태로, 문제는 어렵습니다. 이미지의 일부를 다른 큰 이미지에 복사하여 붙여 넣기로 복사하는 것을 고려하고 있습니까? 기타
물러 서면 마스터 이미지에 워터 마크를 적용하면 해결하기가 더 쉽습니다. 이미지에 코드를 포함하려면 워터 마킹 구성표를 사용해야합니다. 일부 사람들이 제안한 일부 저수준 접근 방식 (가장자리 감지 등)과 달리 물러나 기 위해서는 워터 마킹 방법이 우수합니다.
신호 처리 공격에 강합니다. ► 신호 향상 – 샤프닝, 대비 등 ► 필터링 – 중간, 저역 통과, 고역 통과 등 ► 부가 노이즈 – 가우스, 균일 등 ► 손실 압축 – JPEG, MPEG 등
기하 공격에 강합니다. ► 변형 수정 ► 데이터 축소 – 자르기, 클리핑 등 ► 임의의 로컬 왜곡 ► 뒤틀림
워터 마킹 알고리즘에 대한 조사를 수행하면 문제를 해결하는 올바른 길을 갈 수 있습니다. (참고 : STIRMARK 데이터 셋을 사용하여 분석법을 벤치마킹 할 수 있습니다 .이 유형의 애플리케이션에 허용되는 표준입니다.
이것은 단지 제안 일 뿐이며 작동하지 않을 수 있으며이를 부를 준비가되었습니다.
이렇게하면 오 탐지가 발생하지만 오 탐지가되지 않기를 바랍니다.
두 이미지의 크기가 동일하도록 크기를 조정합니다 (두 이미지에서 너비와 길이의 비율이 같다고 가정합니다).
무손실 압축 알고리즘 (예 : gzip)으로 두 이미지의 비트 맵을 압축합니다.
파일 크기가 비슷한 파일 쌍을 찾으십시오. 예를 들어, 파일 크기가 얼마나 비슷한 지에 따라 모든 파일 쌍을 정렬하고 상위 X를 검색 할 수 있습니다.
내가 말했듯이, 이것은 확실히 오탐을 일으킬 것이지만, 오탐은 아닐 것이다. Porikil et. 알. 아마도 광범위한 작업이 필요할 것입니다.
가능한 모든 방향과 부정적인 버전에 접근 방식을 적용하려는 경우 이미지 인식을 시작하려면 (신뢰도가 좋은) 고유면을 사용하는 것이 좋습니다 : http://en.wikipedia.org/wiki/Eigenface
다른 아이디어는 두 이미지를 구성 요소의 벡터로 변환하는 것입니다. 이 작업을 수행하는 좋은 방법은 x * y 크기 (x는 이미지 너비이고 y는 높이)에서 작동하며 각 크기 값은 (x, y) 픽셀 값에 적용되는 벡터를 만드는 것입니다. 그런 다음 일치와 일치 없음이라는 두 가지 범주로 K-Nearest Neighbors의 변형을 실행하십시오. 원본 이미지와 충분히 가깝다면 일치 범주에 맞지 않습니다. 그렇지 않으면 일치하지 않습니다.
가장 가까운 이웃 (KNN)은 여기에서 찾을 수 있으며 웹에서도 다른 좋은 설명이 있습니다 : http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm
KNN의 장점은 원본 이미지와 비교할 변형이 많을수록 알고리즘이 더 정확 해집니다. 단점은 시스템을 먼저 훈련시키기 위해 이미지 카탈로그가 필요하다는 것입니다.
이미지의 불법 복제본을 탐지하기위한 다른 접근 방식을 모두 고려하고 싶다면 워터 마킹을 고려할 수 있습니다. (1.4부터)
... 품질 손실없이 저작권 정보를 디지털 객체에 삽입합니다. 디지털 객체의 저작권이 의심 될 때마다이 정보는 올바른 소유자를 식별하기 위해 추출됩니다. 원 구매자의 신원과 저작권 보유자의 신원을 암호화하여 무단 사본을 추적 할 수도 있습니다.
복잡한 분야이기도하지만 워터 마크 정보가 총 이미지 변경을 통해 지속되도록하는 기술이 있습니다 (1.9부터).
... 합리적인 강도의 신호 변환은 워터 마크를 제거 할 수 없습니다. 따라서 워터 마크를 제거 할 의향이있는 문서는 상업적인 목적으로 문서를 너무 많이 훼손하지 않으면 성공하지 못합니다.
물론 faq는 이러한 접근 방식을 구현합니다. "... 매우 도전적"이지만 성공할 경우 이미지가 비율이 아닌 복사본인지 여부에 대한 높은 신뢰를 얻습니다.
Linux를 사용하는 경우 두 가지 도구를 제안합니다.
패키지 hugin-tools의 align_image_stack- 회전, 크기 조절 및 기타 왜곡을 자동으로 수정할 수있는 명령 줄 프로그램입니다 (HDR 사진을 합성하기위한 것이지만 비디오 프레임 및 기타 문서에서도 작동 함). 자세한 정보 : http://hugin.sourceforge.net/docs/manual/Align_image_stack.html
패키지 imagemagick와 비교 -두 이미지에서 다른 픽셀의 양을 찾아 계산할 수있는 프로그램. : 여기에 깔끔한 튜토리얼의 http://www.imagemagick.org/Usage/compare/ 오류 내성을 증가시킬 수 -fuzz N의 %를 uising은. N이 높을수록 오류 허용 오차가 높아져 두 픽셀을 동일하게 계산합니다.
align_image_stack은 오프셋을 수정하여 비교 명령이 실제로 동일한 픽셀을 감지 할 수 있도록해야합니다.