matlab練習程序(盲水印)


盲水印加入的信息不容易被察覺到,加水印后和原圖從空域中幾乎看不出區別。

原理:

1. 對原圖像x做FFT,得到FFT(x).

2. 將水印圖像y疊加到FFT(x)之上,疊加時通常會引入隨機函數來平均化能量或乘以系數對水印增強,得到FFT(x)+F(y)。

3. 對疊加后頻域圖像進行IFFT,得到加水印后圖像。

水印還原就是對上述步驟反向執行一遍就行。

matlab代碼如下:

clear all;
close all;
clc;

%%加水印 img = double(imread('lena.jpg')); wm = double(imread('watermark.png')); imshow(wm); fimgre = fft2(img) + wm*10; imgre = uint8(real(ifft2(fimgre))); figure; imshow(imgre); imwrite(imgre,'lena_watermark.png'); %%解水印 img = double(imread('lena.jpg')); img_watermark = double(imread('lena_watermark.png')); wm = fft2(img_watermark) - fft2(img); figure; imshow(mat2gray(real(wm)/10)); imwrite(mat2gray(real(wm)/10),'re.png');

結果如下:

原圖像:

水印圖像:

加水印:

解水印:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM