zoukankan      html  css  js  c++  java
  • 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');

    结果如下:

    原图像:

    水印图像:

    加水印:

    解水印:

  • 相关阅读:
    sql刷题day03
    sql刷题day2
    sql刷题day1
    Vue学习
    HashMap学习笔记整理
    数组问题(鸽巢原理、数字交换、链表寻环)
    mybatis参数设置问题
    codeforces 327A
    codeforces 189A
    codeforces-455A
  • 原文地址:https://www.cnblogs.com/tiandsp/p/13907950.html
Copyright © 2011-2022 走看看