我正在嘗試為大學專案撰寫這篇
我用的64*64水印

帶水印的圖片:

我得到的提取水印:

我使用 SSIM 計算了兩個水印之間的相似度:
from skimage.metrics import structural_similarity
original_Watermark = cv2.imread('Copyright.png')
extracted_watermark = cv2.imread('Extracted_Watermark.png')
# Convert images to grayscale
original_watermark = cv2.cvtColor(original_Watermark, cv2.COLOR_BGR2GRAY)
extracted_Watermark = cv2.cvtColor(extracted_watermark, cv2.COLOR_BGR2GRAY)
# Compute SSIM between two images
(score, diff) = structural_similarity(original_Watermark, extracted_Watermark, full=True)
print("SSIM = ", score)
我沒有對帶水印的影像進行任何修改,我得到的 SSIM 是 0.8445354561524052。但是根據論文,提取的水印的 SSIM 應該是 0.99。我不知道我的代碼有什么問題,兩天后我有截止日期,所以我真的需要幫助。提前致謝。
uj5u.com熱心網友回復:
有兩個問題:
- 在
Merge_W1_W2您使用intto 轉換時float,int這會為浮點表示不準確的數字引入錯誤(例如14.99999999999997);這可以通過使用round來解決。 - 保存
cv2.imwrite('Watermarked_img.png', IDWT)是一種有損操作,因為它將值四舍五入為IDWT最接近的整數;如果您使用Watermarked_Image = IDWT,那么您將獲得完全相同的水印影像。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/494693.html
