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');






  • 相关阅读:
    jmeter的插件安装
    linux下性能监控工具nmon的使用
    kafka如何保证不重复消费又不丢失数据_Kafka写入的数据如何保证不丢失?
    Goroutine和Panic
    go 并发有趣现象和要避开的坑
    Go语言宕机恢复(recover)——防止程序崩溃
    invalid character 'è' looking for beginning of value
    golang实现RPC的几种方式
    channl与select
    我要在栈上。不,你应该在堆上
  • 原文地址:https://www.cnblogs.com/saliency/p/3741866.html
Copyright © 2011-2022 走看看