伪随机数DFT水印matlab代码
时间: 2023-10-31 10:35:58 浏览: 71
数字水印matlab代码.zip
以下是一个实现伪随机数DFT水印的 MATLAB 代码示例:
% 读取原始图像和水印图像
im = imread('original_image.jpg');
watermark = imread('watermark_image.jpg');
% 将图像转换为灰度图像
im_gray = rgb2gray(im);
watermark_gray = rgb2gray(watermark);
% 设置水印大小,这里假设水印大小小于原始图像大小
watermark_size = size(watermark_gray);
watermark_rows = watermark_size(1);
watermark_cols = watermark_size(2);
% 生成伪随机数序列
rand_seq = randi([0, 1], watermark_rows * watermark_cols, 1);
% 将伪随机数序列重塑为水印矩阵
watermark_matrix = reshape(rand_seq, watermark_rows, watermark_cols);
% 对水印矩阵进行DFT变换
watermark_dft = fft2(watermark_matrix);
% 对原始图像进行DFT变换
im_dft = fft2(im_gray);
% 将水印DFT矩阵嵌入原始图像DFT矩阵中
im_dft_watermarked = im_dft + watermark_dft;
% 将嵌入水印后的DFT矩阵转换为图像
im_watermarked = uint8(ifft2(im_dft_watermarked));
% 显示原始图像、水印图像和嵌入水印后的图像
figure;
subplot(1, 3, 1);
imshow(im);
title('Original Image');
subplot(1, 3, 2);
imshow(watermark);
title('Watermark Image');
subplot(1, 3, 3);
imshow(im_watermarked);
title('Watermarked Image');
% 保存嵌入水印后的图像
imwrite(im_watermarked, 'watermarked_image.jpg');
阅读全文