обнаружение подделки при копировании-перемещении с использованием ключевых точек в python - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь обнаружить фальсификацию копирования-перемещения через ключевые точки.Я использую это

Это изображение подделано (номер 4 скопирован и перемещен).Я получил ключевые точки (число = 891) и дескрипторы для каждой ключевой точки.Форма descriptors = (891x128).Это изображение, на котором нарисованы ключевые точки.

Теперь я должен сгруппировать эти дескрипторы, верно?Как именно я должен это сделать?Я сослался на многие статьи, и они показывают только блок-схему, а не то, как это сделать, и большинство из них являются гибридными.Большинство вопросов StackOverflow касаются нескольких изображений (из области сходства изображений).

Я думал, что дескрипторы для ключевых точек, лежащих на обеих четверках, будут одинаковыми, и я попытался найти повторяющиеся значения в матрице дескрипторов с помощьюследующий код:

import cv2
from collections import Counter 
import numpy as np
img = cv2.imread('img_tamp_1.bmp')

gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
sift = cv2.xfeatures2d.SIFT_create()
kp, des = sift.detectAndCompute(gray,None)

print('number of key points:', len(kp))

kp = np.array(kp)
des = np.array(des)
u = np.unique(des, axis = 0)

print('unique:', len(u))
img=cv2.drawKeypoints(gray,kp,img)
cv2.imwrite('sift_keypoints.jpg',img)

Вывод:

number of key points: 891
unique: 880

, то есть только 11 являются дублирующими ключевыми точками.Это меня смущает.

Так как мне кластеризовать векторы строк, чтобы продолжить и пометить поддельный регион?

Я буду рад, если кто-то сможет интуитивно объяснить обработку кластеризации с помощью некоторого визуальноговыход.

PS: Это мой первый вопрос здесь.Пожалуйста, дайте мне знать, если мне неясно или то, что я спросил, слишком широкое.Если что-то для вас неясно, я постараюсь добавить больше информации.Я работаю над этим целый день и очень устала, помогите, пожалуйста.

...