论文的算法,继续与大家分享
修改最大像素值的可逆数字算法的实现
%designed by 李立宗
%lilizong@gmail.com
%t4311.m
c=imread('e:\lena.bmp');
subplot(1,3,1),imshow(c),title('嵌入水印前图像');
[m,n]=size(c);
dix=zeros(255);
for i=1:512
for j=1:512
for k=1:255
if c(i,j)==k
dix(k)=dix(k)+1;
end
end
end
end
% subplot(3,3,2),plot(dix);
max=dix(1);
for i=1:255
if max<dix(i)
max=dix(i);
maxi=i;
end
end
max
c1=c;
for i=1:512
for j=1:512
if c(i,j)<maxi
c1(i,j)=c(i,j)-1;
else
c1(i,j)=c(i,j);
end
end
end
dix2=zeros(255);
for i=1:512
for j=1:512
for k=1:255
if c1(i,j)==k
dix2(k)=dix2(k)+1;
end
end
end
end
% subplot(3,3,3),plot(dix2);
% subplot(3,3,4),plot(dix,'r'),hold on,plot(dix2,'g:');
mark=imread('e:\logo1.bmp');
mark=im2bw(mark);
subplot(1,3,2),imshow(mark),title('水印图像');
%读入水印图像,并将之二值化处理
% figure,imshow(mark),title('水印图像');
mark1=zeros(1,1600);
n=1;
for i=1:40
for j=1:40
mark1(n)=mark(i,j);
n=n+1;
end
end
% mark1=reshape(mark,1,1600);
%测试mark1的正确与否
% n=1;
% for i=1:40
% for j=1:40
% mark2(i,j)=mark1(n);
% n=n+1;
% end
% end
% subplot(1,3,3),imshow(mark2),title('水印图像');
c2=zeros(512,512);
c2=c1;
n=0;
for i=1:512
for j=1:512
if c2(i,j)==maxi
n=n+1;
if(n==1600)
n=1;
end
if mark1(n)==1
c2(i,j)=c2(i,j)-1;
end
end
end
end
% n=1;
% for i=1:512
% for j=1:512
% ifc2(i,j)==maxi && mark1(n)==1
% c2(i,j)=c2(i,j)-1;
% n=n+1;
%
% end
% end
% end
subplot(1,3,3),imshow(c2),title('嵌入水印后图像');
markshow=zeros(1,5000);
%分配一个大数组,这样可以存储冗余量
n=1;
for i=1:512
for j=1:512
if c2(i,j)==maxi
markshow(n)=0;
n=n+1;
elseif c2(i,j)==(maxi-1)
markshow(n)=1;
n=n+1;
end
end
end
markshow;
markshow1=zeros(40,40);
%定义一个数组,用来存储恢复的水印
n=1;
for i=1:40
for j=1:40
markshow1(i,j)=markshow(n);
n=n+1;
end
end
% subplot(1,3,3),imshow(markshow1),title('恢复水印图像');
c3=c2;
for i=1:512
for j=1:512
if c2(i,j)<maxi
c3(i,j)=c2(i,j)+1;
else
c3(i,j)=c2(i,j);
end
end
end
% subplot(1,3,3),imshow(c3),title('恢复原始载体图像');
分享到:
相关推荐
基于公钥的可逆数字水印算法。本文详细介绍水印的嵌入和提取,以及水印的鲁棒性分析。
本文讨论了一种基于直方图的可逆数字水印算法,
c# 可逆 加密 解密算法
C#可逆加密算法收集
算法首先把图像划分成4×4的图像块,然后每4个像素为一组,选取1个像素和它周边的3个像素,使用周边3个像素生成预测值,使用预测值与选取的像素进行比较,产生差值,差值进行向下取整,一个图像块内生成4个差值。...
该算法采用可逆细胞自动机可实现信号子带编码的思想, 实现了一个四子带可逆细胞自动机, 并用其将二值图像信号分解为一个低频子带和三个高频子带。然后用改进的跳白块算法对各子带分别进行压缩编码。实验结果表明, 该...
A Reversible Watermarking Based on Histogram Shifting可逆水印算法方面的经典文献,利用直方图平移成像质量高的特点,结合位图技术给出了一个无需附加信息的高质量可逆算法。
针对传统差值扩展可逆水印算法的缺陷,提出了一种基于整数小波变换(IWT)和广义差值扩展的可逆水印算法。它将原始图像划分成4×4大小的互不重叠的像素块;计算各分块的近似平滑度值,该值在水印嵌入前后保持不变;...
C# MD5 加密算法 不可逆,作者花费了四个小时由 JAVA 的MD5不可逆加密算法而来。
新算法只需考虑相邻像素对中像素值一个为奇数、另一个为偶数的情况,且只需分别统计奇数较大的相邻像素对的个数与偶数较大的相邻像素对的个数,统计量小,实现简单。实验结果表明,新的隐写分析算法具有较高的检测...
为此,将传统的基于差分扩展的可逆水印算法引入到无线传感器网络,并结合无线传感器网络节点协同工作的特点,将已有基于差分扩展的可逆水印算法发展为多节点协商可逆的数字水印算法。该算法针节点结构松散、自身防御...
基于DCT-SVD和标记矩阵的鲁棒可逆数字水印算法.docx
相比一般图像医学图像拥有更多接近0值的像素点在嵌入过程中容易溢出 通过测试选择像素中嵌入水印信息不会引起溢出的像素携带水印信息 本算法充分利用了医学图像中所有能携带水印信息的像素提高了医学图像的嵌入率 ...
针对现有的基于运动矢量的视频信息隐藏算法存在破坏矢量局部最优性这一问题,提出一种基于视频运动矢量的可逆信息隐藏算法。算法对利用增强预测区域搜索(enhance predictive zonal search,EPZS)算法得到的最优预测...
当前矢量地图可逆水印算法中,缺乏针对水印提取结果纠错方法的研究,算法的稳健性还有较大提升空间。为此,提出一种基于纠错编码的矢量地图可逆水印算法。采用二值数组表达版权信息并生成其纠错编码,将两者合并组成...
文中提出了一种基于动态峰值的大容量可逆图像水印算法。该算法利用分块图像直方图的分布特点来确定新峰值,并通过修改相应的像素灰度值实现了在空间域中隐藏信息。该算法还可以利用嵌入点的信息无损地恢复原始图像。
基于广义直方图旋转的图像水印鲁棒可逆水印算法
为了满足密文域水印可逆嵌入的需要,利用一种直方图平移与同态加密相结合的技术,提出了一种新颖的差值域直方图平移密文图像可逆水印算法。该算法可以在没有原始图像信息的情况下直接对密文域图像嵌入水印,即实现...
大容量的密文域图像可逆信息隐藏算法实现 使用同一密钥对原始图像中每 个不重叠分块中的像素进行加密,在保证原始图像内容安全的同时,利用块内相邻像素相关 性特征和游程编码在加密图像中嵌入秘密信息.对于嵌入...