我有一张图片我想在其中隐藏一些文字
我想我应该得到如下的位平面:
a=imread('insect.gif');
[m n]=size(a);
for i=1:m,
for j=1:n,
b8(i,j)=bitand(a(i,j),128);
b7(i,j)=bitand(a(i,j),64);
b6(i,j)=bitand(a(i,j),32);
b5(i,j)=bitand(a(i,j),16);
b4(i,j)=bitand(a(i,j),8);
b3(i,j)=bitand(a(i,j),4);
b2(i,j)=bitand(a(i,j),2);
b1(i,j)=bitand(a(i,j),1);
end
end
所以我的第一位是“b1”,第二位是“b2”,第三位是“b3”,....
s='class is good'
h=dec2bin(s,8)
它会给我我的文本每个字符8位我想我应该隐藏我的文本在图像矩阵的LSB但我不知道该怎么做。
答案 0 :(得分:0)
在文件交换中检查LSB STEGANOGRAPHY提交。
代码是开放的,这正是您所需要的。
答案 1 :(得分:0)
假设您有一个字节图像(8位),那么让我们看看前3个编码字节或24个像素。 让我们假设我们想要隐藏值255,1和12。
MSB----LSB
1: 00000000
2: 00000000
3: 00000000
4: 00000000
5: 00000000
6: 00000000
7: 00000000
8: 00000000
9: 00000000
10: 00000000
11: 00000000
12: 00000000
13: 00000000
14: 00000000
15: 00000000
16: 00000000
17: 00000000
18: 00000000
19: 00000000
20: 00000000
21: 00000000
22: 00000000
23: 00000000
24: 00000000
MSB----LSB
1: 00000001
2: 00000001
3: 00000001
4: 00000001
5: 00000001
6: 00000001
7: 00000001
8: 00000001
9: 00000000
10: 00000000
11: 00000000
12: 00000000
13: 00000000
14: 00000000
15: 00000000
16: 00000001
17: 00000000
18: 00000000
19: 00000000
20: 00000000
21: 00000001
22: 00000001
23: 00000000
24: 00000000
所以你应该看到你需要做的就是确保每个像素的LSB是0或1。
(即你只需要b1(i,j)=bitand(a(i,j),1);
,因为更改更重要的位可能会明显改变图像)
function pixVal = setPixel(pixVal, zeroOne)
isOdd = mod(pixVal,2);
if zeroOne == 1
if ~isOdd
pixVal = pixVal + 1;
end
else
if isOdd
pixVal = pixVal - 1;
end
end
end
function arr = setTextInArr( arr, text )
%convert text to binary
lsb = dec2bin(text,8)';
for i=1:numel(lsb)
val = arr(i);
val = setPixel(val, str2num(lsb(i)));
arr(i) = val;
end
end
>> img = zeros(8,16, 'uint8')
img =
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
>> s = 'hi'
s =
hi
>> encImg = setTextInArr(img,s)
encImg =
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
答案 2 :(得分:0)
实际上有两种方法:
第一个是将数据隐藏在图像中,当数据和图像没有任何共同点时,通常称为“隐写术”。
当数据描述图像时,第二个是嵌入注释数据。在这种情况下,数据和图像具有紧密的空间关系。
您所指的是“平面修改”#39;您可以在Web上查看质量要求,但在大多数情况下,每个字节最多可以保存4位(我们使用https://ece.uwaterloo.ca/~z70wang/research/iwssim/进行质量测量)。
请注意色彩空间转换,因为图像几乎从不存储在RGB色彩空间中。