zoukankan      html  css  js  c++  java
  • 基于小波变换的数字图像处理(MATLAB源代码)

    基于小波变换的数字图像处理(MATLAB源代码)

    clear all; close all; clc;
    M=256;%原图像长度
    N=64; %水印长度
    [filename1,pathname]=uigetfile('*.*','select the image'); 
    image1=imread(num2str(filename1));
    subplot(2,2,1);imshow(image1); title('original image');     % orginal image for watermarking
    image1=double(image1);
    imagew=imread('dmg2.tif');
    subplot(2,2,2);imshow(imagew);title('original watermark');   %original watermark
    %嵌入水印
    [ca,ch,cv,cd] = dwt2(image1,'db1');
    [cas,chs,cvs,cds] = dwt2(ca,'db1');
    for i=1:N
        for j=1:N
            if imagew(i,j)==0
                a=-1;
            else
                a=1;
            end
            Ca(i,j)=cas(i,j)*(1+a*0.03);
        end
    end
    IM= idwt2(Ca,chs,cvs,cds,'db1') ;
    markedimage=double(idwt2(IM,ch,cv,cd,'db1'));
    %显示嵌入后水印图像
    subplot(2,2,3);colormap(gray(256));image(markedimage);title('marked image');
    imwrite(markedimage,gray(256),'watermarked.bmp','bmp');

    %提取水印
    image1=imread(num2str(filename1));image1=double(image1);
    imaged=imread('watermarked.bmp');
    [ca,ch,cv,cd] = dwt2(image1,'db1');
    [cas,chs,cvs,cds]=dwt2(ca,'db1');
    [caa,chh,cvv,cdd]=dwt2(imaged,'db1');
    [caas,chhs,cvvs,cdds]=dwt2(caa,'db1');
    for p=1:N
        for q=1:N
            a=caas(p,q)/cas(p,q)-1;
            if a<0
                W(p,q)=0;
            else
                W(p,q)=255;
            end
        end
    end
    %显示提取的水印
    subplot(2,2,4);
    colormap(gray(256));image(W);title('从含水印图像中提取的水印');
    imwrite(W,gray(256),'watermark.bmp','bmp');






  • 相关阅读:
    CWMP开源代码研究6——libcwmp动态库开发
    CWMP开源代码研究5——CWMP程序设计思想
    CWMP开源代码研究4——认证流程
    CWMP开源代码研究2——easycwmp安装和学习
    CWMP开源代码研究3——ACS介绍
    CWMP开源代码研究1——开篇之作
    usb驱动开发之大结局
    usb驱动开发24之接口驱动
    usb驱动开发23之驱动生命线
    usb驱动开发22之驱动生命线
  • 原文地址:https://www.cnblogs.com/saliency/p/3741866.html
Copyright © 2011-2022 走看看