我怎样才能水印图像?

129(30天)
密特拉
密特拉 2013年3月15日
评论道: 2021年9月13日
我想水印的RGB图像到另一个RGB图像替换宿主图像的第一位(hst)按摩的8位图像(味精)。也没有错误,MATLAB给我没有结果。我用下面的代码:
cman = imread (2. png);
标志= imread (10. png);
graycman = rgb2gray (cman);
graylog = rgb2gray(标志);
amsg = uint8 (graylog);
[r、c] =大小(amsg);
味精= 0 (r、c);
i = 1: r
j = 1: c
bmsg = dec2bin (amsg (i, j), 8);
cmsg = str2double (bmsg);
味精(i, j) = bitget (cmsg 8);
结束
结束
干细胞移植= uint8 (graycman);
[R、C] =大小(ahst);
k = 1: R
L = 1: C
bhst = dec2bin(干细胞移植(k, L), 8);
因此= str2double (bhst);
结束
结束
x = 1: r
y = 1: c
hst = bitset(因此,味精(x, y));
结束
结束
imshow (hst)
2的评论
密特拉
密特拉 2013年3月16日
编辑:密特拉 2013年3月16日
它实际上是打开一个窗口显示,但实际上没有什么但是1所示* 1像素值1,我的意思是白色的现货! ! !我需要知道这段代码怎么了! ? !

登录置评。

答案(4)

图像分析
图像分析 2014年10月10日
卡拉奇警察局:看到我的附加演示可见水印。
1评论
图像分析
图像分析 2014年10月11日
没有书,但在一百年我写的教程/演示。少数在我文件交换: //www.tatmou.com/matlabcentral/fileexchange/?term=authorid%3A31862 。继续关注我的帖子。我发布新老演示。

登录置评。


图像分析
图像分析 2013年3月15日
这是由我的演示:
%演示水印图像通过隐藏另一个图像在某一点
%的飞机。有时被称为“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);
标题(标题,“字形大小”、字形大小);
对话框(“完成了演示!”);
9日评论
密特拉
密特拉 2013年3月18日
编辑:密特拉 2013年3月18日
哦,请不要把错了先生! ! !我从来没有问任何人做我家里为我工作!我只想和我自己的一些指导代码,理解正是导致故障!我已经准备好一些编码的水印,这工作很好,包括你给我的一个。我也谢谢你很多的时间你戴上这个……但我仍然有一个问题:我们总是瓷砖按摩的形象,并使其覆盖原始图像,或者是可选的(不覆盖整个原始图像)? ! ! !

登录置评。


Shivaputra Narke
Shivaputra Narke 2013年3月16日
编辑:沃尔特·罗伯森 2013年3月17日
%,可能工作. .
%编辑你的代码
x = 1: r
y = 1: c
hst (x, y) = bitset(因此,味精(x, y));
结束
结束
imshow (hst);
1评论
密特拉
密特拉 2013年3月16日
编辑:密特拉 2013年3月18日
由于Shivaputra Narke点,但这一次,它显示了一个133 * 81完全白色矩形! ! !任何想法?

登录置评。


卡拉奇警察局AL Aqqad
卡拉奇警察局AL Aqqad 2014年10月10日
伙计们,如果我不想隐藏消息的封面图片(可见水印),我该怎么办?任何想法?

下载188bet金宝搏

社区寻宝

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

开始狩猎!