1

我试图通过关键点检测复制移动伪造。我正在使用这个

上面的图像已被篡改(数字 4 被复制和移动)。我得到了每个关键点的关键点(数字 = 891)和描述符。的形状descriptors = (891x128)。这是绘制关键点的图像。

现在我必须对这些描述符进行聚类,对吗?我应该怎么做?我参考了很多论文,他们只展示了流程图而不是如何去做,而且大多数都是混合的。大多数 StackOverflow 问题都涉及多个图像(来自图像相似域)。

我认为位于两个 4 上的关键点的描述符是相同的,我尝试使用以下代码在描述符矩阵中查找重复值:

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:这是我在这里的第一个问题。如果我不清楚或我问的内容太宽泛,请告诉我。如果您有任何不确定的地方,我会尝试添加更多信息。我整天都在做这个,我很累,请帮忙。

4

0 回答 0