DWT Стеганография
Я учусь в области стеганографии / водяных знаков. Я новичок в этом, поэтому, пожалуйста, потерпите меня! Я нашел отличный пост здесь Как мне инкапсулировать некоторую текстовую информацию в изображение и извлечь ее с помощью MATLAB? используя метод LSB, с которым я в порядке! Вопрос, который я хочу задать, можно ли изменить код, используемый в ссылке, чтобы скрыть данные в преобразовании DWT с использованием LSB. Если да, то как бы я это сделал, как я уже сказал, я довольно новичок в этом. Получу ли я четыре поддиапазона и какой из поддиапазонов, которые я хочу внедрить (например, LH_1), просто внесу изменения в код, например, где L указан как изображение обложки, я бы изменил L на LL_1??
Прошу прощения, если я кого-то путаю с этим вопросом. Но мне нужна помощь, чтобы знать! Спасибо большое
редактировать
%Cover Image
origIm = imread('lena.bmp');
% Discrete Wavelet Transform
[LL LH HL HH]=dwt2(origIm,'haar');
dec=[...
LL,LH
HL,HH
...
];
%figure;imshow(dec,[]);title ('DWT');
%[visibleRows visibleColumns] = size(origIm);
A = importdata('minutiaTest.txt');
binaryString = transpose(dec2bin(A,8));
binaryString = binaryString(:);
N = length(binaryString);
b = zeros(N,1); %b is a vector of bits
for k = 1:N
if(binaryString(k) == '1')
b(k) = 1;
else
b(k) = 0;
end
end
%c=HH;
s = HH;
%figure (1);imshow(s);
height = size(HH,1);
width = size(HH,2);
k = 1; Array=[];l=1;my=1;
for i = 1 : height
for j = 1 : width
LSB = mod(double(HH(i,j)), 2);
if (k>N || LSB == b(k))
s(i,j) = HH(i,j);
l=k+1;
else
if(LSB == 1)
s(i,j) = HH(i,j) - 1;
else
s(i,j) = HH(i,j) + 1;
Array(my)=l;
l=l+1;
my= my + 1;
end
k = k + 1;
end
end
end
%figure (2); imshow(s);
stego=idwt2(LL,LH,HL,HH,'haar');
imwrite(uint8(stego), 'hiddenmsgimage.bmp');
%imshow(stego);
Stego = imread('hiddenmsgimage.bmp');
%imshow(Stego);
[LL LH HL HH]=dwt2(Stego,'haar');
dec=[...
LL,LH
HL,HH
...
];
%imshow(HH);
%figure;imshow(dec,[]);title ('DWT');
k = 1;my=1;ur=1;
for i = 1 : height
for j = 1 : width
if( k<=N )
if (my<numel(Array) && Array(my)==ur)
b(k)=~(mod(double(s(i,j)),2));
else
b(k) = mod(double(s(i,j)),2);
end
k = k + 1;
my= my + 1;
end
ur=ur+1;
end
end
Итак, это то, что я сделал до сих пор. Я сейчас пытаюсь извлечь данные, которые я скрыл, кто-нибудь может помочь, пожалуйста?