I=imread('sy.png'); W=imread('3.jpg'); WR=rgb2gray(W); W2=R_dwt(W); I=imresize(I,size(WR)); Ir=I(:,:,1); Ir=im2double(Ir);%图像转化为双精度值,blockproc函数需要 T=dctmtx(8);%得到8*8正交矩阵 %对图像分块,每块进行离散余弦变换 fun1=@(block_struct) T*block_struct.data*T'; B=blockproc(Ir,[8 8],fun1); %定义掩模矩阵,保留每个数据块中的主要部分 mask = [1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; I2= blockproc(B,[8 8],@(block_struct) mask .* block_struct.data); w_cH2=imsubtract(W2,I2);%对HL2嵌入水印 [M,N]=size(w_cH2); a=mat2cell(w_cH2,[M/2 M/2],[N/2 N/2]); IA2=a{1,1}; IH2=a{1,2}; IV2=a{2,1}; ID2=a{2,2}; W3=idwt2(IA2, IH2, IV2, ID2,'haar'); [IA3, IH3, IV3, ID3] = dwt2(W3, 'haar'); W4=[IA3, IH3; IV3, ID3]; w_cH3=imsubtract(W2,W4);%对HL2嵌入水印 fun3=@(block_struct) T'*block_struct.data*T; I3=blockproc(w_cH3,[8 8],fun3); imshow(w_cH3);
时间: 2023-12-08 15:06:57 浏览: 33
这段代码实现了数字图像水印嵌入的过程。首先,使用 `imread` 函数读取原始图像 `W` 和水印图像 `I`。然后,将 `W` 转换为灰度图像,并对其进行小波变换,将水印图像 `I` 调整为与原始图像 `W` 灰度图像的大小一致,并对其进行DCT变换。接着,定义一个掩模矩阵 `mask`,用于保留每个数据块中的主要部分,并将其与 `I` 中的每个数据块进行点乘,得到加密后的水印信息 `I2`。然后,将加密后的水印信息与原图的小波系数进行差分操作,得到需要嵌入水印的小波系数 `w_cH2`。接下来,将 `w_cH2` 按照Haar小波变换进行逆变换,得到嵌入水印后的图像 `W3`。然后,将 `W3` 再进行一次Haar小波变换,得到新的小波系数 `W4`。接着,将 `W4` 与原图的小波系数进行差分操作,得到需要嵌入水印的小波系数 `w_cH3`。最后,将 `w_cH3` 进行DCT逆变换,得到嵌入水印后的图像 `I3`。在代码的最后,使用 `imshow` 函数显示嵌入水印后的图像。
相关问题
image = cv2.imread('./img/bao.png')
这行代码使用OpenCV库中的`imread`函数从指定路径 `./img/bao.png` 读取图像,并将其赋值给变量 `image`。该函数可以读取各种图像格式的文件,并将其作为一个多维数组加载到内存中,以便后续的图像处理和分析操作。通过提供文件的路径,`imread`函数会返回一个表示读取图像的NumPy数组。在这个例子中,`bao.png` 是要读取的图像文件名,`./img/` 是文件所在的相对路径。
img=cv2.imread(input.jpg)
`cv2.imread()` 是 OpenCV 中一个用于读取图像的函数,它可以读取常见的图像格式(如 JPG、PNG、BMP 等),并将其转换为 NumPy 数组的形式。其中,`input.jpg` 是要读取的图像文件的路径,可以是相对路径或绝对路径。
读取后的图像数据以 NumPy 数组的形式返回,并存储在变量 `img` 中。这个数组的维度是 `(height, width, channels)`,其中 `height` 表示图像高度,`width` 表示图像宽度,`channels` 则表示图像的通道数,比如灰度图像的 `channels=1`,RGB 彩色图像的 `channels=3`。
需要注意的是,`cv2.imread()` 默认情况下会将图像读取为 BGR 格式,而不是常见的 RGB 格式。如果要将 BGR 格式转换为 RGB 格式,可以使用 `cv2.cvtColor()` 函数进行转换。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)