def benchmark_extract_step(self, path, image, attack_name, attacked, attacked_path, watermark_file): wmark, gamma = self.extract_specific(numpy.array(Image.open(image)), attacked_path) wmark = wmark.clip(0,255) wmark = wmark.astype('uint8') gamma = Metrics.gamma(wmark.ravel(), numpy.array(Image.open(watermark_file)).ravel()) wmark = Image.fromarray(wmark) wmark.save(os.path.join(path, attack_name + "-extracted-wm-" + os.path.split(image)[1])) return wmark, gamma
def extract_specific(self, image, watermark): f_dct = TwoDimensionalDCT.forward(image) w = self.load_watermark(watermark) xi = [] xo = [] for entry in w: xo.append( entry[self.INSERTED_WATERMARK_VALUE_KEY] ) xi.append( (f_dct[tuple(entry[self.INDEX_KEY])] - entry[self.ORIGINAL_VALUE_KEY]) /\ (self.alpha)) return None, Metrics.gamma(xi, xo)