`
- 浏览:
1895322 次
- 性别:
- 来自:
北京
-
下面是上述仿真的部分代码,供参考。
%a原始数据数组
%aa存储像素从1到255
%bb存储aa中每个像素所对应的个数
%cc将a化成一列后,所形成的数组
%dd,cc中小于最大个数的像素值,减1处理后的结果
%copyrightbylilizong
a=imread('c:oat.png');
figure,imshow(a),title('嵌入水印前原图像');
fori=1:255
aa(i)=i;%用于存储像素值
end
fori=1:255
bb(i)=0;%用于存储每个像素的个数
end
[m,n]=size(a);
k=m*n;%a的大小
cc=a(:);
tt=1;%循环遍历向量
%求出某个像素的个数

fori=1:k
forj=1:255
if(cc(i)==aa(j))
bb(j)=bb(j)+1;
end
end
end
%求出哪个像素的个数是最大

max=bb(1);
fori=1:255
if(bb(i)>max)
max=bb(i);
maxi=i;
end
end
%将所有小于max的像素的值都减1
ddd=zeros(m,n);
dd=ddd(:);%产生和cc同样大小的数组,用于存放cc处理后结果;

fori=1:k
if(cc(i)<max)
dd(i)=cc(i)-1;
end
end
%读入水印,并将水印转换成一列,
watermark=imread('c:watermark1.png');
figure,imshow(watermark),title('水印图像');
[w1,w2]=size(watermark);
watermark_line=watermark(:);
oo=w1*w2;
%开始嵌入水印
tt=1;%让tt加1来遍历整个水印图像
fori=1:k
if(dd(i)==max)
if(tt>oo)
tt=1;%如果超出水印的范围从头开始
if(watermark_line(tt)==1)
dd(i)=dd(i)-1;
end

end
tt=tt+1;
end
end

%显示嵌入水印的图像


embed=dd;
embed=reshape(dd,m,n);
figure,imshow(embed,[]),title('嵌入水印后图像');
imwrite(embed,'c:embed2.gif');

%提取水印

fori=1:k
if(dd(i)==max)
watermark(tt)=0;
tt=tt+1;
elseif(dd(i)==(max-1))
watermark(tt)=1;
tt=tt+1;
end
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(dd(i)==(max-1))
dd(i)=dd(i)+1;
elseif(dd(i)<max)
dd(i)=dd(i)+1;
end
end
dd=reshape(dd,m,n);
figure,imshow(dd,[]),title('恢复后图像');


%对原图和恢复图像进行比较








分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
这个标题"有关arm的部分源代码"指的是包含有针对ARM处理器编写的源代码文件。这些源代码是用于理解和控制ARM硬件行为的基础,通常由C或C++等编程语言编写,有时也会包括汇编语言。 描述中的“嵌入式的简单程序”...
android 系统部分源代码android 系统部分源代码
《奇迹MUS10部分源代码》是一份与知名网络游戏《奇迹MU》相关的源代码集合。这份源代码是由一位私人开发商开发并意外流失的,它揭示了游戏内部机制的冰山一角,对于开发者和研究者来说,具有极高的学习和研究价值。...
《奇迹世界游戏部分源代码》是一份珍贵的编程资源,主要涵盖了游戏服务器的三大核心组件:MasterServer、GameServer和WorldServer。这些源代码对于理解网络游戏的架构设计、服务器端逻辑以及多玩家同步机制有着极大...
深度学习每周练习P部分源代码,由于大小限制删了一些,具体可以看原文章。深度学习每周练习P部分源代码,由于大小限制删了一些,具体可以看原文章。深度学习每周练习P部分源代码,由于大小限制删了一些,具体可以看...
深度学习每周练习J部分源代码,由于大小限制删了一些,具体可以看原文章。深度学习每周练习J部分源代码,由于大小限制删了一些,具体可以看原文章。深度学习每周练习J部分源代码,由于大小限制删了一些,具体可以看...
深度学习每周练习R部分源代码,由于大小限制删了一些,具体可以看原文章。深度学习每周练习R部分源代码,由于大小限制删了一些,具体可以看原文章。深度学习每周练习R部分源代码,由于大小限制删了一些,具体可以看...
WQX-SQ开发板PCB+原理图+部分源代码WQX-SQ开发板PCB+原理图+部分源代码WQX-SQ开发板PCB+原理图+部分源代码WQX-SQ开发板PCB+原理图+部分源代码WQX-SQ开发板PCB+原理图+部分源代码WQX-SQ开发板PCB+原理图+部分源代码WQ...
【标题】:“基本部分源代码”这一标题表明我们即将探讨的是与Android开发相关的基础源代码。在Android应用开发中,源代码是程序员用编程语言编写的原始程序,它包含了实现特定功能的所有指令和逻辑。这部分源代码是...
此外,通过学习这部分源代码,你还可以了解到良好的编程实践,如代码结构、注释规范、错误处理和异常处理等。这些都是提升代码质量和可维护性的重要因素。对于初学者来说,了解并遵循这些最佳实践将有助于成长为一名...
部分源代码。 部分源代码公开,可以直接编译运行哟。 欢迎大家提建议和意见,互相交流才能提高 只要知道了这部分源代码,其他的都很容易写出来。这些毕竟都是些很基础的东西 只有自己写出来全部程序,才能真正...
提供部分源代码对编写有帮助,希望对大家有点帮助
基于python的svm部分源代码基于python的svm部分源代码
Ext 深入浅出的部分源代码 完整的,可以运行
通过工具下载的.net framework的部分源代码,大家可以下来研究下.......(由于上传限制分为2部分)
5. 前端框架:部分源代码可能基于流行的前端框架,如Bootstrap、Angular或React,这可以帮助开发者快速构建界面,同时保持代码的整洁和可维护性。 6. 数据交互:网站可能使用AJAX(异步JavaScript和XML)与服务器...
这是Jlink部分源代码。低调。。。严禁用于商业目的。
重写WINDOWS扫雷程序部分源代码,感觉 还成吧
这部分源代码涉及进程创建、销毁、线程上下文切换以及调度策略的实现。 2. **内存管理**:内核源代码中的内存管理模块负责分配、释放和管理物理及虚拟内存。这部分包括页表维护、内存分配策略、页面交换等技术。 3...
实验5 树和二叉树--部分源代码.c