您好,看到您的关于matlab的水印程序,您有没有相应的水印提取程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您好,看到您的关于matlab的水印程序,您有没有相应的水印提取程序相关的知识,希望对你有一定的参考价值。

我是刚开始接触这方面,不是很懂,如能赐教,万分感激!

参考技术A function dwtgl
clear all
clc;
%保存开始时间
start_time=cputime;
figure(1);
%读出原始图像
subplot(2,2,1);
input=imread('image.bmp');
imshow(input);
title('原始图像');
%读出水印
subplot(2,2,2);
water=imread('watermark.bmp');
imshow(water);
title('水印');
%三色分离
input=double(input);
water=double(water);
inputr=input(:,:,1);
waterr=water(:,:,1);
inputg=input(:,:,2);
waterg=water(:,:,2);
inputb=double(input(:,:,3));
waterb=double(water(:,:,3));
%系数r大,增加鲁棒性,r小增加透明性
r=0.04;
%水印R的分解
[Cwr,Swr]=wavedec2(waterr,1,'haar');
%图像R的分解
[Cr,Sr]=wavedec2(inputr,2,'haar');
%水印的嵌入
Cr(1:size(Cwr,2)/16)=...
Cr(1:size(Cwr,2)/16)+r*Cwr(1:size(Cwr,2)/16);
k=0;
while k<=size(Cr,2)/size(Cwr,2)-1
Cr(1+size(Cr,2)/4+k*size(Cwr,2)/4:size(Cr,2)/4+...
(k+1)*size(Cwr,2)/4)=Cr(1+size(Cr,2)/4+...
k*size(Cwr,2)/4:size(Cr,2)/4+(k+1)*size(Cwr,2)/4)+...
r*Cwr(1+size(Cwr,2)/4:size(Cwr,2)/2);
Cr(1+size(Cr,2)/2+k*size(Cwr,2)/4:size(Cr,2)/2+...
(k+1)*size(Cwr,2)/4)=Cr(1+size(Cr,2)/2+...
k*size(Cwr,2)/4:size(Cr,2)/2+(k+1)*size(Cwr,2)/4)+...
r*Cwr(1+size(Cwr,2)/2:3*size(Cwr,2)/4);
Cr(1+3*size(Cwr,2)/4+k*size(Cwr,2)/4:3*size(Cwr,2)/4+...
(k+1)*size(Cwr,2)/4)=Cr(1+3*size(Cr,2)/4+...
k*size(Cwr,2)/4:3*size(Cr,2)/4+(k+1)*size(Cwr,2)/4)+...
r*Cwr(1+3*size(Cwr,2)/4:size(Cwr,2));
k=k+1;
end;
Cr(1:size(Cwr,2)/4)=Cr(1:size(Cwr,2)/4)+r*Cwr(1:size(Cwr,2)/4);
g=0.02;
%水印G的分解
[Cwg,Swg]=WAVEDEC2(waterg,1,'haar');
%图像G的分解
[Cg,Sg]=WAVEDEC2(inputg,2,'haar');
%水印的嵌入
Cg(1:size(Cwg,2)/16)=...
Cg(1:size(Cwg,2)/16)+g*Cwg(1:size(Cwg,2)/16);
k=0;
while k<=size(Cg,2)/size(Cwg,2)-1
Cg(1+size(Cg,2)/4+k*size(Cwg,2)/4:size(Cg,2)/4+...
(k+1)*size(Cwg,2)/4)=Cg(1+size(Cg,2)/4+...
k*size(Cwg,2)/4:size(Cg,2)/4+(k+1)*size(Cwg,2)/4)+...
g*Cwg(1+size(Cwg,2)/4:size(Cwg,2)/2);
Cg(1+size(Cg,2)/2+k*size(Cwg,2)/4:size(Cg,2)/2+...
(k+1)*size(Cwg,2)/4)=Cg(1+size(Cg,2)/2+...
k*size(Cwg,2)/4:size(Cg,2)/2+(k+1)*size(Cwg,2)/4)+...
g*Cwg(1+size(Cwg,2)/2:3*size(Cwg,2)/4);
Cg(1+3*size(Cg,2)/4+k*size(Cwg,2)/4:3*size(Cg,2)/4+...
(k+1)*size(Cwg,2)/4)=Cg(1+3*size(Cg,2)/4+...
k*size(Cwg,2)/4:3*size(Cg,2)/4+(k+1)*size(Cwg,2)/4)+...
g*Cwg(1+3*size(Cwg,2)/4:size(Cwg,2));
k=k+1;
end;
Cg(1:size(Cwg,2)/4)=Cg(1:size(Cwg,2)/4)+g*Cwg(1:size(Cwg,2)/4);
b=0.16;
%水印B的分解
[Cwb,Swb]=WAVEDEC2(waterb,1,'haar');
%图像B的分解
[Cb,Sb]=WAVEDEC2(inputb,2,'haar');
%水印的嵌入
Cb(1:size(Cwb,2)/16)+b*Cwb(1:size(Cwb,2)/16);
k=0;
while k<=size(Cb,2)/size(Cwb,2)-1
Cb(1+size(Cb,2)/4+k*size(Cwb,2)/4:size(Cb,2)/4+...
(k+1)*size(Cwb,2)/4)=Cb(1+size(Cb,2)/4+...
k*size(Cwb,2)/4:size(Cb,2)/4+(k+1)*size(Cwb,2)/4)+...
g*Cwb(1+size(Cwb,2)/4:size(Cwb,2)/2);
Cb(1+size(Cb,2)/2+k*size(Cwb,2)/4:size(Cb,2)/2+...
(k+1)*size(Cwb,2)/4)=Cb(1+size(Cb,2)/2+...
k*size(Cwb,2)/4:size(Cb,2)/2+(k+1)*size(Cwb,2)/4)+...
b*Cwb(1+size(Cwb,2)/2:3*size(Cwb,2)/4);
Cb(1+3*size(Cb,2)/4+k*size(Cwb,2)/4:3*size(Cb,2)/4+...
(k+1)*size(Cwb,2)/4)=Cb(1+3*size(Cb,2)/4+...
k*size(Cwb,2)/4:3*size(Cb,2)/4+(k+1)*size(Cwb,2)/4)+...
b*Cwb(1+3*size(Cwb,2)/4:size(Cwb,2));
k=k+1;
end;
Cb(1:size(Cwb,2)/4)=Cb(1:size(Cwb,2)/4)+b*Cwb(1:size(Cwb,2)/4);
%图像的重构
inputr=WAVEREC2(Cr,Sr,'haar');
inputg=WAVEREC2(Cg,Sg,'haar');
inputb=WAVEREC2(Cb,Sb,'haar');
%三色的叠加
temp=size(inputr);
pic=zeros(temp(1),temp(2),3);
for i=1:temp(1);
for j=1:temp(2);
pic(i,j,1)=inputr(i,j);
pic(i,j,2)=inputg(i,j);
pic(i,j,3)=inputb(i,j);
end
end
%转化为uint8
output=uint8(round(pic));
imwrite(output,'watermarked.bmp','bmp');
%显示时间
elapsed_time=cputime-start_time,
%输出结果
%subplot(2,2,3);
figure(3);
imshow(output);
title('水印图像');
%保存开始时间
start_time=cputime;
figure(1);
%读出原始图像
subplot(1,2,1);
input=imread('image.bmp');
imshow(input);
title('原始图像');
%读出水印图像
subplot(1,2,2);
watermarked_image=imread('watermarked.bmp');
imshow(watermarked_image,[]);
title('水印图像');
%三色分离
input=double(input);
watermarked_image=double(watermarked_image);
inputr=input(:,:,1);
watermarked_imager=watermarked_image(:,:,1);
inputg=input(:,:,2);
watermarked_imageg=watermarked_image(:,:,2);
inputb=input(:,:,3);
watermarked_imageb=watermarked_image(:,:,3);
%水印图像R的分解
[Cwr,Swr]=WAVEDEC2(watermarked_imager,2,'haar');
%图像R的分解
[Cr,Sr]=WAVEDEC2(inputr,2,'haar');
%水印图像G的分解
[Cwg,Swg]=WAVEDEC2(watermarked_imageg,2,'haar');
%图像G的分解
[Cg,Sg]=WAVEDEC2(inputg,2,'haar');
%水印图像B的分解
[Cwb,Swb]=WAVEDEC2(watermarked_imageb,2,'haar');
%图像B的分解
[Cb,Sb]=WAVEDEC2(inputb,2,'haar');
%提取水印的小波系数
r=0.04;
for k=0:3
whr(k+1,:)=Cwr(1+size(Cwr,2)/4+k*size(Cwr,2)/16:...
size(Cwr,2)/4+(k+1)*size(Cwr,2)/16)-...
Cr(1+size(Cr,2)/4+k*size(Cr,2)/16:...
size(Cr,2)/4+(k+1)*size(Cr,2)/16);
wvr(k+1,:)=Cwr(1+size(Cwr,2)/2+k*size(Cwr,2)/16:...
size(Cwr,2)/2+(k+1)*size(Cwr,2)/16)-...
Cr(1+size(Cr,2)/2+k*size(Cr,2)/16:...
size(Cr,2)/2+(k+1)*size(Cr,2)/16);
wdr(k+1,:)=Cwr(1+3*size(Cwr,2)/4+k*size(Cwr,2)/16:...
3*size(Cwr,2)/4+(k+1)*size(Cwr,2)/16)-...
Cr(1+3*size(Cr,2)/4+k*size(Cr,2)/16:...
3*size(Cr,2)/4+(k+1)*size(Cr,2)/16);
end
whr=(whr(1,:)+whr(2,:)+whr(3,:)+whr(4,:))/(4*r);
wvr=(wvr(1,:)+wvr(2,:)+wvr(3,:)+wvr(4,:))/(4*r);
wdr=(wdr(1,:)+wdr(2,:)+wdr(3,:)+wdr(4,:))/(4*r);
war=(Cwr(1:size(Cwr,2)/16)-Cr(1:size(Cr,2)/16))/r;
g=0.02;
for k=0:3
whg(k+1,:)=Cwg(1+size(Cwg,2)/4+k*size(Cwg,2)/16:...
size(Cwg,2)/4+(k+1)*size(Cwg,2)/16)-Cg(1+...
size(Cg,2)/4+k*size(Cg,2)/16:...
size(Cg,2)/4+(k+1)*size(Cg,2)/16);
wvg(k+1,:)=Cwg(1+size(Cwg,2)/2+k*size(Cwg,2)/16:...
size(Cwg,2)/2+(k+1)*size(Cwg,2)/16)-Cg(1+...
size(Cg,2)/2+k*size(Cg,2)/16:...
size(Cg,2)/2+(k+1)*size(Cg,2)/16);
wdg(k+1,:)=Cwg(1+3*size(Cwg,2)/4+k*size(Cwg,2)/16:...
3*size(Cwg,2)/4+(k+1)*size(Cwg,2)/16)-...
Cg(1+3*size(Cg,2)/4+k*size(Cg,2)/16:...
3*size(Cg,2)/4+(k+1)*size(Cg,2)/16);
end
whg=(whg(1,:)+whg(2,:)+whg(3,:)+whg(4,:))/(4*g);
wvg=(wvg(1,:)+wvg(2,:)+wvg(3,:)+wvg(4,:))/(4*g);
wdg=(wdg(1,:)+wdg(2,:)+wdg(3,:)+wdg(4,:))/(4*g);
wag=(Cwg(1:size(Cwg,2)/16)-Cg(1:size(Cg,2)/16))/g;
b=0.08;
for k=0:3
whb(k+1,:)=Cwb(1+size(Cwb,2)/4+k*size(Cwb,2)/16:...
size(Cwb,2)/4+(k+1)*size(Cwb,2)/16)-...
Cb(1+size(Cb,2)/4+k*size(Cb,2)/16:...
size(Cb,2)/4+(k+1)*size(Cb,2)/16);
wvb(k+1,:)=Cwb(1+size(Cwb,2)/2+k*size(Cwb,2)/16:...
size(Cwb,2)/2+(k+1)*size(Cwb,2)/16)-...
Cb(1+size(Cb,2)/2+k*size(Cb,2)/16:...
size(Cb,2)/2+(k+1)*size(Cb,2)/16);
wdb(k+1,:)=Cwb(1+3*size(Cwb,2)/4+k*size(Cwb,2)/16:...
3*size(Cwb,2)/4+(k+1)*size(Cwb,2)/16)-...
Cb(1+3*size(Cb,2)/4+k*size(Cb,2)/16:...
3*size(Cb,2)/4+(k+1)*size(Cb,2)/16);
end
whb=(whb(1,:)+whb(2,:)+whb(3,:)+whb(4,:))/(4*b);
wvb=(wvb(1,:)+wvb(2,:)+wvb(3,:)+wvb(4,:))/(4*b);
wdb=(wdb(1,:)+wdb(2,:)+wdb(3,:)+wdb(4,:))/(4*b);
wab=(Cwb(1:size(Cwb,2)/16)-Cb(1:size(Cb,2)/16))/b;
%重构水印图像
cwr=[war,whr,wvr,wdr];
swr(:,1)=[sqrt(size(war,2)),sqrt(size(war,2)),2*sqrt(size(war,2))];
swr(:,2)=[sqrt(size(war,2)),sqrt(size(war,2)),2*sqrt(size(war,2))];
wr=waverec2(cwr,swr,'haar');
cwg=[wag,whg,wvg,wdg];
swg(:,1)=[sqrt(size(wag,2)),sqrt(size(wag,2)),2*sqrt(size(wag,2))];
swg(:,2)=[sqrt(size(wag,2)),sqrt(size(wag,2)),2*sqrt(size(wag,2))];
wg=waverec2(cwg,swg,'haar');
cwb=[wab,whb,wvb,wdb];
swb(:,1)=[sqrt(size(wab,2)),sqrt(size(wab,2)),2*sqrt(size(wab,2))];
swb(:,2)=[sqrt(size(wab,2)),sqrt(size(wab,2)),2*sqrt(size(wab,2))];
wb=waverec2(cwb,swb,'haar');
%三色叠加
temp=size(wr);
pic=zeros(temp(1),temp(2),3);
for i=1:temp(1);
for j=1:temp(2);
pic(i,j,1)=wr(i,j);
pic(i,j,2)=wg(i,j);
pic(i,j,3)=wb(i,j);
end
end
output=uint8(round(pic));
%转化为uint8
watermark_image_uint8=uint8(output);
imwrite(watermark_image_uint8,'extract.bmp','bmp');
figure(2);
subplot(1,2,1);
imshow(watermark_image_uint8);
title('提取水印');
subplot(1,2,2);
imshow('watermark.bmp');
title('原始水印');
%显示时间
elapsed_time=cputime-start_time,

您好,看到您的回答对您非常佩服,同时也有些问题想问一下,关于AIX服务器重启后PING不通也不能telnet。

确定网线没问题,在HMC中看到操作系统的状态也是RUNNING的,麻烦您帮忙分析下到底是什么问题呢,非常感谢!
是网卡的配置问题吗?对于网卡的配置不是很了解,具体应该做些什么来确认是不是网卡的问题呢?我用lsdev -Cc if查看网卡状态en0显示的是Available,lo0也是Available,其余都是Defined。然后我用ifconfig en0 显示的是co<UP,这个是表示网卡正常启用吗?IP地址也是正确的。

ifconfig -a 里面显示co<UP ,但是我输入entstat -d ent0 Link Status这项显示UNKNOW,然后我又执行ifconfig en0 up,再执行entstat -d ent0 Link Status这项还是显示UNKNOW,这是说明我的网线问题吗?可是我的网线没问题啊,我已经试过了,别的机器用这根网线都可以PING的通的,。

参考技术A lsdev -Cc adapter 查看状态,几块网卡。

rmdev -Rdl ent0 删掉网卡,cfgmgr扫一下,smit tcpip 配置一下ip,网关,start now试一下。
试着看看ssh和telnet服务是否开启,估计不是这个问题。
参考技术B 看一下网卡硬件是否被禁用,再查看一下服务是否启动追问

我用lsdev -Cc if查看网卡状态en0显示的是Available,lo0也是Available,其余都是Defined。

追答

当然,如果想查看任意网卡的详细信息,可以使用lscfg命令,如
#lscfg -vl ent0
ent0 U5791.001.9180185-P1-C04-T1 10/100/1000 Base-TX PCI-X Adapter (14106902)10/100/1000 Base-TX PCI-X Adapter:Part Number.................00P6130FRU Number..................00P6130EC Level....................H12818Manufacture ID..............YL1021Network Address.............001125081671ROM Level (alterable).......GOL021Device Specific.(YL)........U5791.001.9180185-P1-C04-T1
上面详细的限制了网卡的位置,速度类型,型号,网络地址等详细信息。

查看网卡的工作模式,可以用如下命令
#netstat -v ent3 | grep -p “Specific Statistics”
10/100/1000 Base-TX PCI-X Adapter (14106902) Specific Statistics: --------------------------------------------------------------------Link Status: UpMedia Speed Selected: Auto negotiationMedia Speed Running: 1000 Mbps Full DuplexPCI Mode: PCI-X (100-133)PCI Bus Width: 64-bit……
可以看到上面显示的1000全双工,如果是千兆网卡,则表示网卡工作正常。全双工表示同时发送与接收包,而半双工需要分成两次完成,所以半双工将有很大的性能损耗,如果是连接到交换机,必须要求这里是全双工。

追问

ifconfig -a 里面显示co<UP ,但是我输入entstat -d ent0 Link Status这项显示UNKNOW,然后我又执行ifconfig en0 up,再执行entstat -d ent0 Link Status这项还是显示UNKNOW,这是说明我的网线问题吗?可是我的网线没问题啊,我已经试过了,别的机器用这根网线都可以PING的通的。
显示UNKNOW都可能是什么问题呢?

追答

你ping自己网卡地址 (ip 地址)看通不通啊,如果是通的肯定就是网线问题

追问

自己PING自己是通的,可是网线没问题啊,我用这个网线连别的机器都可以PING的啊。大神,顺便再问一下,Solaris上电开机之后操作系统就启动好了吗?为什么也PING不通。。。

这个现实Unknow是可以的是吗?

本回答被提问者和网友采纳

以上是关于您好,看到您的关于matlab的水印程序,您有没有相应的水印提取程序的主要内容,如果未能解决你的问题,请参考以下文章

您好,看到您的回答对您非常佩服,同时也有些问题想问一下,关于AIX服务器重启后PING不通也不能telnet。

这是个matlab关于添加水印的程序,帮忙看看错在哪

新星计划Matlab-傅里叶变换隐藏水印

关于Matlab数字水印

您好 看到您的百度回答 想请问您如果在一个python中调用另一个py文件 怎么输出某一个函数名称 不包含def?

关于 matlab 中 quiver 加图例