问题描述
这是我在这里的第一篇文章,因此,如果未正确完成操作,请原谅我。
我基本上是在尝试使用Python实现QIM水印脚本。为此,我在转换域中嵌入了水印(图片的索引在数据库中)。
例如:
我将这个水印:Index of watermark in database嵌入到该图像:the image to be watermarked中,并且得到以下结果:enter image description here。现在看来,它可以正常工作,所以我将当前代码留在下面。
def Watermarking(original,watermark,key,alpha,step_size,name_of_file):
watermarked = DCT(original)
# Embed Watermark in DCT
columns = np.shape(watermark)[1]
lines = np.shape(watermark)[0]
for k in range(lines):
for j in range(columns):
quant = step_size * round((watermarked[k+100][j+100]-step_size*((watermark[k][j]/2)+key))/step_size)-(watermarked[k+100][j+100]-step_size*((watermark[k][j]/2)+key))
watermarked[k + 100][j + 100] = watermarked[k+100][j+100]+(alpha*quant)
# Preventing rewriting on original image because of DCT
ImWrite("Watermarked/Watermarked" + str(name_of_file) + ".png",iDCT(watermarked))
print("Watermarked image " + str(name_of_file) + " created")
我尝试检测水印时遇到的问题是,我得到了以下结果:Not the watermark at all...。
起初我以为这是编码错误,但后来我尝试了一些方法。我直接在水印脚本的DCT上使用了检测脚本,它可以正常工作。但是,当我使用检测脚本的DCT时,似乎无法获得正确的结果...因此,如果有人有任何想法,我将在下面保留检测代码。预先感谢。
def DetectWatermark(image,nof):
bis_image = DCT(image)
columns = 64
lines = 64
result = np.full((lines,columns),255)
for k in range(lines):
for j in range(columns):
decision = step_size*round((bis_image[k+100][j+100]-(key*step_size))/step_size)-(bis_image[k+100][j+100])+(key*step_size)
if abs(decision) < ((1 - alpha) * (step_size / 2)):
result[k][j] = 0
else:
result[k][j] = 255
ImWrite("Retrieved/Retrieved" + str(nof) + ".png",result)
print("Retrieved Watermark for Image " + str(nof))
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)