生成图像保持高对比度

3视图(30天)
艾哈迈德Al-Qarqaz
艾哈迈德Al-Qarqaz 2020年5月12日
你好,我写了一个简单的代码使用一个简单的算法更好地理解隐写术,使用LSB隐藏一个图像的像素值到另一个,在这种情况下代表数量的关键步骤(像素)的连续循环将隐藏像素秘密猫形象到树形象。
我知道这不是很安全,但那不是重点。
我的代码隐藏图片:
%的函数接受dir秘密图像和dir图像隐藏它
%这写一个图像包含秘密图像。
%它返回一个数组包含秘密图像的尺寸
%,因为我们需要他们在揭示函数
函数[的]= hideMyimg(秘密,形象,键)
img = imread(图片);
蛋= imread(秘密);
%设置最低有效位为零
img = img - mod (img, 4);
%检查如果秘密适合藏身之处
img =检查(img、蛋);
昏暗的=[(鸡蛋,1),大小(鸡蛋,2)];
%使用模量降低的步骤,简化代码
关键= mod(钥匙,1000);
%分离颜色通道
r1 = img (:,: 1);
g1 = img (:,:, 2);
b1 = img (:,:, 3);
r2 =蛋(:,:1);
g2 =蛋(:,:,2);
b2 =蛋(:,:,3);
%驱动代码
r =隐藏(r1、r2、关键);
g =隐藏(g1、g2、关键);
b =隐藏(b1, b2,键);
%结合颜色通道
输出(::1)= r;
输出(::2)= g;
输出(::3)= b;
imwrite(输出,“output.png”)
结束
%函数矩阵藏在另一个
函数[隐藏]=隐藏(图像、鸡蛋、键)
(行,坳)=大小(蛋);
%将矩阵向量方便循环
imgvec =图像(:);
%移动最重要的秘密图像的最低有效位
拍子= egg. / 64;
eggvec =拍子(:);
%最大像素隐藏的价值
max = *坳行;
%计数器,确保循环停止一旦所有的像素是隐藏的
i = 1;
%临时值我们需要re-loop矩阵从一个新的起点
temp = 2;
%计数器
n = 1;
(我<马克斯)
imgvec (n) = imgvec (n) + eggvec(我);
n = n +键;
如果n >马克斯
n = temp;
temp = temp + 1;
结束
我=我+ 1;
结束
隐藏=重塑(imgvec,大小(图片1),大小(图片2)));
结束
%函数来检查是否比图1图2
%,如果调整图片1是比图片2
函数[图片]=检查(img1 img2)
第一行=大小(img1, 1);
col1 =大小(img1, 2);
row2 =大小(img2, 1);
col2 =大小(img2 2);
如果row2 * col2 >第一行* col1
val1 =装天花板(row2 /第一行);
val2 =装天花板(col2 / col1);
如果val1 > val2
形象= imresize (img1 val1);
其他的
形象= imresize (img1 val2);
结束
其他的
形象= img1;
disp (“是的”)
结束
结束
代码来揭示隐藏的图片:
函数[]= getMyimg(键,昏暗的)
形象= imread (“output.png”);
%分离颜色通道
r =图像(::1);
g =图像(:,:,2);
b =图像(:,:,3);
行=暗(1);
坳=暗(2);
鸡蛋(::1)= getimg (r、关键、行坳);
鸡蛋(::2)= getimg (g,关键,行,坳);
鸡蛋(::3)= getimg (b、关键、行坳);
%最低有效位移动到最重要的
蛋=蛋* 64;
imwrite(鸡蛋,“secret.png”);
结束
函数(鸡蛋)= getimg(形象,关键,行,坳)
imgvec =图像(:);
%初始化向量和合适的尺寸的秘密图像
eggvec = 0(行*坳,1);
max = *坳行;
i = 1;
n = 1;
temp = 2;
我<马克斯
%的最低有效位
eggvec (i) =国防部(imgvec (n), 4);
n = n +键;
如果n >马克斯
n = temp;
temp = temp + 1;
结束
我=我+ 1;
结束
蛋=重塑(eggvec[行,坳]);
结束
生成的图片:
为什么这样出来吗?

答案(0)

社区寻宝

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

开始狩猎!