⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a101.m

📁 小波分析 是用matlab写得 可用于 基于信息隐藏的密钥传输等信息安全方向
💻 M
字号:
 clear;
 %装入原图像1
 load woman;
 I=X;
 
 %小波函数
 type='db1';
 
 %2维离散Daubechies小波变换
 [CA1,CH1,CV1,CD1]=dwt2(I,type);
 C1=[CH1 CV1 CD1];
 
 %系数矩阵大小
 [length1,width1]=size(CA1);
 [M1,N1]=size(C1);
 
 %定义阀值T1
 T1=50;
 alpha=0.2;
 
 %在图像中加入水印
 for counter2=1:1:N1
       for counter1=1:1:M1
           if(C1(counter1,counter2)>T1)
              marked1(counter1,counter2)=randn(1,1);
              NEWC1(counter1,counter2)=double(C1(counter1,counter2))+...
 alpha*abs(double(C1(counter1,counter2)))*marked1(counter1,counter2);
         else
             marked1(counter1,counter2)=0;
             NEWC1(counter1,counter2)=double(C1(counter1,counter2));
         end;
      end;
   end;
   
 %重构图像
 NEWCH1=NEWC1(1:length1,1:width1);
 NEWCV1=NEWC1(1:length1,width1+1:2*width1);
 NEWCD1=NEWC1(1:length1,2*width1+1:3*width1);
 
 R1=double(idwt2(CA1,NEWCH1,NEWCV1,NEWCD1,type));
 
 %分离水印
 watermark1=double(R1)-double(I);
 
 figure(1);
 subplot(1,2,1);
 image(I);
 axis('square');
 title('原始图像');
 subplot(1,2,2);
 imshow(R1/250);
 axis('square');
 title('Daubechies 小波变换后图像');
 
 figure(2);
 imshow(watermark1*10^16);
 axis('square');
 title('水印图像');
 
 %水印检测
 newmarked1=reshape(marked1,M1*N1,1);
 %检测阀值
 T2=60;
  for counter2=1:1:N1
             for counter1=1:1:M1
                 if(NEWC1(counter1,counter2)>T2)
                    NEWC1X(counter1,counter2)=NEWC1(counter1,counter2);
                 else
                    NEWC1(counter1,counter2)=0;
                 end;
             end;
         end;
         
 NEWC1X=reshape(NEWC1,M1*N1,1);
 
 correlation1=zeros(1000,1);
 for corrcounter=1:1:1000
         if(corrcounter==500)
          correlation1(corrcounter,1)=NEWC1X'*newmarked1/(M1*N1);
         else
          rnmark=randn(M1*N1,1);
          correlation1(corrcounter,1)=NEWC1X'*rnmark/(M1*N1);
         end;
 end;
 
 %计算阀值
 originalthreshold=0;
 for counter2=1:1:N1
            for counter1=1:1:M1
                if(NEWC1(counter1,counter2)>T2)
                  originalthreshold=originalthreshold+abs(NEWC1(counter1,counter2));
                end;
            end;
 end;
 originalthreshold=originalthreshold*alpha/(2*M1*N1);
 
 corrocounter=1000;
 originalthresholdvector=ones(corrocounter,1)*originalthreshold;
 
 figure(3);
 plot(correlation1,'-');
 hold on;
 plot(originalthresholdvector,'--');
 title('原始的加水印图像');
 xlabel('水印');
 ylabel('检测响应');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -