ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于dwt(离散小波变换)实现彩色图像水印嵌入部分_2.0

2022-02-25 22:34:42  阅读:236  来源: 互联网

标签:waterImg 彩色图像 dwt Img cv2 num path new 2.0


修改了尺寸变换导致的图像失真问题,同时简化了部分代码。

本次内容为验证嵌入流程,所以过程不算繁杂,关键参数和小波变换级数后期可作为密钥。

import cv2
import pywt
import numpy as np
from PIL import Image

def inches3(num,times):
    for i in range(times):
        num = round((num/2+1))
    return num

def Icm(Img_path):
    def maxRC():
        Img = cv2.imread(Img_path, 0)
        R = Img.shape[0]
        C = Img.shape[1]
        num = max(R, C)
        return num
    num = maxRC()
    rc_new = inches3(num, 2) # 3-1(3维小波-1维小波)
    return rc_new

Img_path = '100_10.bmp'
waterImg_path = 'new.bmp'
Img = cv2.imread(Img_path)
Img = Img[:, :, [2, 1, 0]] # 调整通道顺序
waterImg = cv2.imread(waterImg_path, 0) # 读取水印灰度图像

rcnew = Icm(Img_path) # 对应1920,此处值为482
waterImg_new = cv2.resize(waterImg, (rcnew, rcnew))

R = Img.shape[0]
C = Img.shape[1]
RC_new = max(R, C)
Img_new = cv2.resize(Img, (RC_new, RC_new))
(r, g, b) = cv2.split(Img_new)

# 原图像三级小波变换
coeffs1 = pywt.wavedec2(b, 'db2', level=3)
[ca, (ch3, cv3, cd3), (ch2, cv2, cd2), (ch1, cv1, cd1)] = coeffs1

# 水印图像一级小波变换
coeffs2 = pywt.wavedec2(waterImg_new, 'db2', level=1)
[cA, (cH1, cV1, cD1)] = coeffs2

# 自定义嵌入系数
a1 = 0.1
a2 = 0.2
a3 = 0.1
a4 = 0.1

# 嵌入部分 ca = ca + cA * a1 ch3 = ch3 + cH1 * a2 cv3 = cv3 + cV1 * a3 cd3 = cd3 + cD1 * a4 newImg = pywt.waverec2([ca, (ch3, cv3, cd3), (ch2, cv2, cd2), (ch1, cv1, cd1)], 'db2') merged = np.ones(Img_new.shape, dtype=np.uint8) merged[:, :, 2] = newImg merged[:, :, 1] = g merged[:, :, 0] = r Img = Image.fromarray(merged) Img = Img.resize((1920, 1080), Image.ANTIALIAS) #重新调整大小,抗锯齿 Img.save('test.png')

原图像为1920*1080 .bmp格式(从视频中抽取)

因为后期将用于视频文件处理,所以代码中的尺寸变换暂时只针对这一固定尺寸。

结果示例:

嵌入后

 

原图(.bmp格式无法上传,此处为截图)1920*1080

 

 水印图像( 经过Arnold置乱处理)100*100

 

 Arnold阿诺德置乱(猫脸变换)图像盲水印注入预处理(python)

基于dwt(离散小波变换)实现彩色图像水印嵌入部分_1.0

 

标签:waterImg,彩色图像,dwt,Img,cv2,num,path,new,2.0
来源: https://www.cnblogs.com/hortz/p/15937985.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有