`
- 浏览:
704193 次
- 性别:
- 来自:
上海
-
部分仿真代码,供参考
%designedbylilizong
%lilizong[at]gmail
a=imread('c:bbb.png');%读入图像
figure,imshow(a),title('原图像');%显示图像
figure,imhist(a);
b=a(:);
[m,n]=size(a);
k=size(b);
%下述操作可以实现像素的显示
c=linspace(0,0,256);
fori=1:k
forj=1:256
if(b(i)==j)
c(j)=c(j)+1;
end
end
end
%以下步骤简单实现读取整个图像的峰值点
max=c(1);
maxi=0;
fori=1:256
if(c(i)>max)
max=c(i);
maxi=i;
end
end
max
maxi
%下面步骤实现对各个峰值的读取
d=c;%作为临时操作数组,以不破坏原数组
emax=linspace(0,0,256);
emaxi=linspace(0,0,256);
a=1;
forj=2:256
if(d(j)>d(j-1)&d(j)>d(j+1)&d(j)~=8888)
emax(a)=d(j);
emaxi(a)=j;
d(j)=8888;
a=a+1;%开始没有想明白,用额外的循环变量
end
end
%下面的程序读取四个高峰值,并进行显示
fmax=linspace(0,0,10);
fmaxi=linspace(0,0,10);
bnum=1;
fori=1:10
fmax(bnum)=emax(1);
forj=2:256
if(emax(j)>fmax(bnum))
fmax(bnum)=emax(j);
fmaxi(bnum)=emaxi(j);
t=j;
end
end
emax(t)=0;
bnum=bnum+1;
end
fori=1:10
fmax(i)
fmaxi(i)
end
%至此峰值已经提出出来了
%在第一个峰值嵌入水印
%首先把小于最大的像素值的都减去2
cc=zeros(m,n);
c=cc(:);
fori=1:k
if(b(i)<fmax(1))
c(i)=b(i)-2;
end
end
watermark=imread('c:watermark.png');
figure,imshow(watermark);
[w1,w2]=size(watermark);
watermark_line=watermark(:);
oo=w1*w2;
%开始嵌入水印
%第一次水印
tt=1;%让tt加1来遍历整个水印图像
fori=1:k
if(c(i)==fmax(1))
if(tt>oo)
tt=1;%如果超出水印的范围从头开始
if(watermark_line(tt)==1)
c(i)=c(i)-1;
end
end
tt=tt+1;
end
end
%第二次水印
tt=1;%让tt加1来遍历整个水印图像
fori=1:k
if(c(i)==fmax(2))
if(tt>oo)
tt=1;%如果超出水印的范围从头开始
if(watermark_line(tt)==1)
c(i)=c(i)-2;
end
end
tt=tt+1;
elseif(c(i)==fmax(2)+1)
if(tt>oo)
tt=1;
if(watermar_line(tt)==1)
c(i)=c(i)-2;
end
end
end
end
%显示嵌入水印的图像
embed=c;
embed=reshape(c,m,n);
figure,imshow(embed,[]),title('嵌入水印的图像');
%提取水印
%提取第一层
fori=1:k
if(c(i)==fmax(2))
watermark(tt)=0;
%tt=tt+1;
%elseif(c(i)==(fmax(1)+1))
%watermark(tt)=0;
%tt=tt+1;
%elseif(c(i)=fmax(1)-1)
%elseif(c(i)=fmax(1)-1)
%watermark(tt)=1;
%tt=tt+1;
%elseif(c(i)=fmax(1)-2)
%watermark(tt)=1;
%tt=tt+1;
%end
else
if(c(i)==fmax(2)+1)
watermark(tt)=0;
else
if(c(i)==fmax(2)-1)
watermark(tt)=1;
else
if(c(i)==fmax(2)-2)
watermark=1;
end
end
end
tt=tt+1;
end
end
%提取第二层
fori=1:k
if(c(i)==fmax(1))
watermark(tt)=0;
tt=tt+1;
elseif(c(i)==(fmax(1)-1))
watermark(tt)=1;
tt=tt+1;
end
end
fori=1:oo
watermark_dect(i)=watermark(i);
end
fori=1:oo
watermark_dect(i)=watermark(i);
end
watermark_dect=reshape(watermark_dect,w1,w2);
figure,imshow(watermark_dect,[]),title('提取出来的水印');
%恢复原图像
dd=embed(:);
fori=1:k
if(c(i)==(max-2))
c(i)=c(i)+2;
elseif(c(i)<max-2)
c(i)=c(i)+2;
end
end
dd=reshape(c,m,n);
figure,imshow(dd,[]),title('恢复的图像');
a=imread('c:bbb.png');
x=a;
x1=embed;
x=double(x);
x1=double(x1);
fori=1:256;
forj=1:256;
MYa(i,j)=x(i,j)^2;%afterfiltering'ssingle
MYb(i,j)=x(i,j)-x1(i,j);
end
end
d=0;
e=0;
fori=1:256;
forj=1:256;
d=d+MYa(i,j);
e=e+MYb(i,j)*MYb(i,j);
end
end
f=log10(d/e);
g=10*f
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
代码 人员疏散过程建模仿真代码代码 人员疏散过程建模仿真代码代码 人员疏散过程建模仿真代码代码 人员疏散过程建模仿真代码代码 人员疏散过程建模仿真代码代码 人员疏散过程建模仿真代码代码 人员疏散过程建模仿真...
代码 强插型有优先级的M_M_m排队系统仿真代码代码 强插型有优先级的M_M_m排队系统仿真代码代码 强插型有优先级的M_M_m排队系统仿真代码代码 强插型有优先级的M_M_m排队系统仿真代码代码 强插型有优先级的M_M_m排队...
光纤光栅matlab仿真代码,多个,有图,打开matlab文件即可运行,包括均匀光栅,取样光栅,取样周期,折射率,占空比,光栅长度仿真。
WSN matlab 代码 算法 无线传感器网络仿真代码
Robocup 仿真救援代码 研究学习用代码
通信天线建模与MATLAB仿真分析代码 通信天线建模与MATLAB仿真分析代码 通信天线建模与MATLAB仿真分析代码 通信天线建模与MATLAB仿真分析代码 通信天线建模与MATLAB仿真分析代码 通信天线建模与MATLAB仿真分析代码 ...
演化博弈群体仿真代码,通过仿真能观察出群体的演化特征以及演化趋势。
基于Matlab的卫星轨道仿真(源代码) 基于Matlab的卫星轨道仿真(源代码) 基于Matlab的卫星轨道仿真(源代码) 基于Matlab的卫星轨道仿真(源代码) 基于Matlab的卫星轨道仿真(源代码) 基于Matlab的卫星轨道...
雷达系统 matlab 代码 雷达系统仿真代码
机器人控制系统的设计与MATLAB仿真 附带MATLAB仿真程序代码 全套 资料 亲测可用,书+程序
MATLAB 雷达仿真全套代码
带详细说明 QPSK仿真代码 QPSK仿真代码 QPSK仿真代码
仿真代码,可以直接用的代码。60690095peg_ldpc
代码 各个城市之间基于sis的传染病matlab仿真代码代码 各个城市之间基于sis的传染病matlab仿真代码代码 各个城市之间基于sis的传染病matlab仿真代码代码 各个城市之间基于sis的传染病matlab仿真代码代码 各个城市...
202-秒表(51单片机C语言实例Proteus仿真和代码)202-秒表(51单片机C语言实例Proteus仿真和代码)202-秒表(51单片机C语言实例Proteus仿真和代码)202-秒表(51单片机C语言实例Proteus仿真和代码)202-秒表(51单片机C语言...
智能扫地机器人仿真代码,使用平台Matlab、VS,使用语言C++、C
ofdm的MATLAB仿真代码,带有详细注释,帮助理解学习OFDM原理
全维状态观测器simulink仿真m代码连续定常系统全维状态观测器simulink仿真m代码连续定常系统全维状态观测器simulink仿真m代码连续定常系统全维状态观测器simulink仿真m代码连续定常系统全维状态观测器simulink仿真m...
用于室内定位的TDOA算法matlab仿真代码.rar
113-串口通讯(51单片机C语言实例Proteus仿真和代码)113-串口通讯(51单片机C语言实例Proteus仿真和代码)113-串口通讯(51单片机C语言实例Proteus仿真和代码)113-串口通讯(51单片机C语言实例Proteus仿真和代码)113-串口...