def inner_extract(self,B,signature):
sig_size=np.int(np.sqrt(len(signature)))
size = self.size
ext_sigs =[]
#???????????????
#???????????????????????
# (0,0) (0,w-32)
# (h-32,0) (h-32,w-32)
w ,h = B.shape
embed_pos =[(0,0)]
embed_pos.append((w-sig_size*size,0))
embed_pos.append((0,h-sig_size*size))
embed_pos.append((w-sig_size*size,h-sig_size*size))
for x,y in embed_pos:
ext_sig = np.zeros(len(signature),dtype=np.int)
for i in range(x,x+sig_size*size,size):
for j in range(y,y+sig_size * size,size):
v = cv2.dct(np.float32(B[i:i+size,j:j+size]))
if v[size-1,size-1] > self.Q/2:
ext_sig[((i-x)//size)*sig_size+(j-y)//size] = 1
ext_sigs.append(ext_sig)
ext_sig_arr = np.array(ext_sig).reshape((sig_size,sig_size))
ext_sigs.append(np.rot90(ext_sig_arr,1).flatten())
ext_sigs.append(np.rot90(ext_sig_arr,2).flatten())
ext_sigs.append(np.rot90(ext_sig_arr,3).flatten())
return ext_sigs
评论列表
文章目录