下面的代码使用隐写术在两个指定的 DWT 系数中隐藏了文本“helloworld”。我一直在尝试调整代码以隐藏 .txt 文件中包含的数据。我已经为此工作了一段时间,但似乎无法正常工作。有人可以帮忙吗?
clear all;
close all;
dataToHide = 'helloworld';
wavename = 'haar';
data = zeros(1,length (dataToHide));
for i =1 : length(dataToHide);
d = dataToHide (i)+0;
data (i) = d;
end
im=imread ('cameraman.tif');
%imshow(im);
[cA1, cH1,cV1, cD1]= dwt2(im,wavename);
A1 = upcoef2('a',cA1,wavename,1);
H1 = upcoef2('h',cH1,wavename,1);
V1 = upcoef2('v',cV1,wavename,1);
D1 = upcoef2('d',cD1,wavename,1);
subplot(2,2,1); image(wcodemat(A1,192));
title ('A1');
subplot(2,2,2); image(wcodemat(H1,192));
title ('H1');
M=max(data);
normilize = data/M;
n=length(data);
cH1 (1,1) = -1*(n/10);
cH1 (1,2) = -1*(M/10);
[~ , y] =size(cH1);
for i = 1 : ceil(n/2)
cV1 (i,y) = normilize(i);
end
for i= ceil(n/2)+1 :n;
cD1 (i,y) = normilize(i);
end
更新
我可以知道从文件中读取文本。但是,我遇到了另一个问题。当我从文件中读取时,我想将文本转换为二进制(name=dec2bin(dataToHide)。上面的代码不想为我隐藏二进制数据??我对 matlab 和隐写术/水印非常陌生。我一直对离散小波变换中的 LSB 嵌入进行了大量研究。但是,我从网上获取的上面的代码正在处理子带系数,但从我可以从代码中读取的内容来看,它并不是通过 LSB 替换来实现的。(即用秘密数据文件的 MSB 替换封面图像的 LSB)。任何人都可以推荐一些代码让我看看通过 LSb 小波嵌入工作的代码吗?