我需要一个代码嵌入和提取水印的图像(DCT域)。请帮助。

33视图(30天)
我们想d -嵌入一个水印提取水印——防止攻击提供额外的功能,如安全、健壮性……
8的评论
迪帕拉克希
迪帕拉克希 2017年2月23日
先生我需要隐藏整个文件的图像通过使用LSB隐写术,没有水印请帮我先生

登录置评。

接受的答案

图像分析
图像分析 2013年2月9日
编辑:图像分析 2013年2月9日
有一个巨大的身体之前,你在这一领域的工作。请回顾之前所作的: http://iris.usc.edu/Vision-Notes/bibliography/contentschar.html OCR, % 20文档% 20分析% 20和% 20字符% 20识别% 20系统 :
23.3水印,水印
23.3.1水印,调查比较,评估
23.3.2水印技术
23.3.3水印基于人类视觉系统的技术、感性模型
23.3.4传播谱水印
23.3.5水印在变换域、压缩图片
23.3.6适应性水印技术
23.3.7小波对水印
23.3.8形象隐藏、数据隐藏隐写术,隐写式密码解密
23.3.8.1数据隐藏,LSB隐写术有效位
23.3.8.2网板图片、压缩图片:图片隐藏、数据隐藏隐写术
23.3.8.3调查、形象隐藏、数据隐藏隐写术
23.3.9水印版权,所有权保护、身份验证、验证、伪造的
23.3.9.1夯检测
23.3.9.2脆弱水印
23.3.9.3加密、视觉密码学、身份验证
23.3.10水印:提取、检测或恢复
23.3.11水印在视频和多媒体,其他数据
23.3.11.1视频数据隐藏、数据躲在视频、视频隐写术
的价值,这是我的水印的代码。它使用您想要使用的概念。
%演示水印图像通过隐藏另一个图像在某一点
%的飞机。有时被称为“LSB水印”或类似的东西。
%用户问他们想要隐藏哪位平面图像。
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
imtool关闭所有;%关闭所有imtool数字。
清晰;%擦掉所有现有的变量。
工作空间;%确定工作区面板显示。
字形大小= 12;
%读入图像会有另一个图像隐藏。
baseFileName =“moon.tif”;
% baseFileName =“cameraman.tif”;
文件夹= fullfile (matlabroot,“\工具箱\ \ imdemos图像”);
%得到完整的文件名,路径前缀。
fullFileName = fullfile(文件夹,baseFileName);
如果~存在(fullFileName“文件”)
%没有找到它。检查它的搜索路径。
fullFileName = baseFileName;%没有路径。
如果~存在(fullFileName“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (错误:%年代并不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
originalImage之下= imread (fullFileName);
%得到原始图像的行和列的数量。
[visibleRows visibleColumns numberOfColorChannels] =大小(originalImage之下);
如果numberOfColorChannels > 1
%如果颜色,提取红色通道。
originalImage之下= originalImage之下(:,:1);
结束
%显示原始灰度图像。
次要情节(3、3、4);
imshow (originalImage之下,[]);
标题(“原始灰度图像开始”,“字形大小”、字形大小);
%全屏放大图。
集(gcf,“单位”,“归一化”,“outerposition”,(0 0 1 1));
集(gcf,“名字”,“由ImageAnalyst演示”,“numbertitle”,“关闭”)
%读消息图片你想躲在封面图片
baseFileName =“cameraman.tif”;
% baseFileName =“moon.tif”;
%得到完整的文件名,路径前缀。
fullFileName = fullfile(文件夹,baseFileName);
如果~存在(fullFileName“文件”)
%没有找到它。检查它的搜索路径。
fullFileName = baseFileName;%没有路径。
如果~存在(fullFileName“文件”)
%仍然没有找到它。提醒用户。
errorMessage = sprintf (错误:%年代并不存在。,fullFileName);
uiwait (warndlg (errorMessage));
返回;
结束
结束
hiddenImage = imread (fullFileName);
%得到隐藏图像的行和列的数量。
[hiddenRows hiddenColumns numberOfColorChannels] =大小(hiddenImage);
如果numberOfColorChannels > 1
%如果颜色,提取红色通道。
hiddenImage = hiddenImage (:: 1);
结束
%显示图像。
次要情节(3,- 3,- 1);
imshow (hiddenImage []);
标题(图像被隐藏的,“字形大小”、字形大小);
%计算并显示直方图。
[pixelCount灰度]= imhist (hiddenImage);
次要情节(3、3、2);
酒吧(pixelCount);
标题(直方图的图像隐藏的,“字形大小”、字形大小);
xlim([0灰度(结束)]);% x轴手动。
网格;
thresholdValue = 70;
binaryImage = hiddenImage < thresholdValue;
%显示图像。
次要情节(3,3,3);
imshow (binaryImage []);
标题= sprintf (的隐藏图像阈值% d ',thresholdValue);
标题(标题,“字形大小”、字形大小);
%得到隐藏图像的位平面。
提示=“输入你想隐藏图像的位平面(1 - 8)”;
dialogTitle =输入位平面来代替的;
numberOfLines = 1;
defaultResponse = {“6”};
bitToSet = str2double (cell2mat (inputdlg(提示,dialogTitle、numberOfLines defaultResponse)));
%如果图像隐藏的比原始图像更大,规模。
如果hiddenRows > visibleRows | | hiddenColumns > visibleColumns
amountToShrink = min ([visibleRows / hiddenRows visibleColumns / hiddenColumns]);
binaryImage = imresize (binaryImage amountToShrink);
%需要更新的行数和列。
[hiddenRows hiddenColumns] =大小(binaryImage);
结束
% hiddenImage瓷砖,如果是小的,这样它将覆盖原来的形象。
如果hiddenRows < visibleRows | | hiddenColumns < visibleColumns
水印= 0(大小(originalImage之下),“uint8”);
列= 1:visibleColumns
行= 1:visibleRows
水印(行、列)= binaryImage (mod(行,hiddenRows) + 1,国防部(列,hiddenColumns) + 1);
结束
结束
%作物与原始图像相同大小。
水印=水印(1:visibleRows, 1: visibleColumns);
其他的
%水印与原始图像大小相同。
水印= binaryImage;
结束
%显示阈值的二进制图像,水印。
次要情节(3、3、5);
imshow(水印,[]);
标题= sprintf (而“隐藏图像\插入位平面% d ',bitToSet);
标题(标题,“字形大小”、字形大小);
%设置一些originalImage之下(一份,实际上)水印的价值。
watermarkedImage = originalImage之下;%初始化
列= 1:visibleColumns
行= 1:visibleRows
watermarkedImage(行、列)= bitset (bitToSet originalImage之下(行、列),水印(行、列));
结束
结束
%显示图像。
次要情节(3、3、6);
imshow (watermarkedImage []);
标题= sprintf (最后有水印的图像\ nwithout说噪音”);
标题(标题,“字形大小”、字形大小);
%添加噪声有水印的图像
noisyWatermarkedImage = imnoise (watermarkedImage,“高斯”,0,0.0005);
%显示图像。
次要情节(3、3、7);
imshow (noisyWatermarkedImage []);
标题= sprintf (有水印的图像\ nwith说噪音”);
标题(标题,“字形大小”、字形大小);
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
%现在让我们假装我们的起点是有水印的噪声损坏的图像。
%我们想恢复水印。
%使用已知bitplane有水印的图像恢复水印。
recoveredWatermark = 0(大小(noisyWatermarkedImage));
recoveredNoisyWatermark = 0(大小(noisyWatermarkedImage));
列= 1:visibleColumns
行= 1:visibleRows
recoveredWatermark(行、列)= bitget (watermarkedImage(行、列),bitToSet);
recoveredNoisyWatermark(行、列)= bitget (noisyWatermarkedImage(行、列),bitToSet);
结束
结束
%恢复水印0 = 255
recoveredWatermark = uint8 (255 * recoveredWatermark);
recoveredNoisyWatermark = uint8 (255 * recoveredNoisyWatermark);
%显示图像。
次要情节(3、3、8);
imshow (recoveredWatermark []);
标题= sprintf (水印的恢复\ nfrom位平面% d \ nNoise-Free有水印的图像”,bitToSet);
标题(标题,“字形大小”、字形大小);
%显示图像。
次要情节(3、3、9);
imshow (recoveredNoisyWatermark []);
标题= sprintf (水印的恢复\ nfrom位平面% d \ nNoisy有水印的图像”,bitToSet);
标题(标题,“字形大小”、字形大小);
对话框(“完成了演示!”);
7评论
图像分析
图像分析 2020年3月26日
这不是我的领域。我是一个简单的演示我张贴。我没有给你任何其他代码。如果你需要更多的帮助,请点击 这个链接 他们会 很高兴 你需要编写代码,如果你想要的。

登录置评。

更多的答案(2)

莱斯特
莱斯特 2013年2月10日
非常感谢先生……但是您提供的代码是LSB水印。在DCT域的代码呢?是相同的吗?

diksha
diksha 2013年7月16日
请告诉我最新项目水印,我能做什么呢?&帮助我编码,这样我可以很容易地理解和matlab的项目。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!