Discrete Wavelet Transform(DWT) と暗号化を使用した画像の透かしに関するプロジェクトを行っています。以下の手順で実施しました
1.) 選択されたホスト画像 (透かしが非表示になる画像)。
2.) 透かしを選択しました。
3.) 次のコード (Matlab コード) を使用して暗号化された透かし
b= strcat(b,a); %String Concatenation
c=imread(b); %Image is read and stored in the variable c
[p,q,r]=size(c); %displaying the dimensions of Image
% Cipher watermark %
% this is a randperm method which generated random values
scrambleOrder = randperm(p*q);
redChannel = c(:, :, 1); % Extraction of red channel
greenChannel = c(:, :, 2); % Extraction of green channel
blueChannel = c(:, :, 3); % Extraction of blue channel
redChannel = redChannel(scrambleOrder); % Red channel scrambling
greenChannel = greenChannel(scrambleOrder); % Green channel scrambling
blueChannel = blueChannel(scrambleOrder); % Blue channel scrambling
redChannel = reshape(redChannel, [p,q]); % reshaping red channel
greenChannel = reshape(greenChannel, [p,q]); % reshaping green channel
blueChannel = reshape(blueChannel, [p,q]); % reshaping blue channel
s = cat(3, redChannel, greenChannel, blueChannel); % cat command for concatenation
4.) DWT を使用して透かしを入れます。
5.) 回復式を使用して、暗号化された透かしを回復します。
6.) 以下のコードを使用した透かしの解読。
% it will generate the 2 columns having maximum value u*v and where u and v are dimensions(width and height) of recovered watermark from watermarked image.
recoverOrder = zeros([u*v], 2);
recoverOrder(:, 1) = 1 : (u*v); % make the first column value from 1: u*v
recoverOrder(:, 2) = scrambleOrder; % make second column value of randon permutation generated during encryption
newOrder1 = sortrows(recoverOrder, 2); % sort rows of column1 and column 2
newOrder = newOrder1(:,1); Eliminate column2
redChannel = redChannel(newOrder); % New order value into red channel
greenChannel = greenChannel(newOrder); % New order value into green channel
blueChannel = blueChannel(newOrder); % New order value into blue channel
redChannel = reshape(redChannel, [u, v]); % reshape red channel
greenChannel = reshape(greenChannel, [u, v]); % reshape green channel
blueChannel = reshape(blueChannel, [u, v]); % reshape blue channel
D = cat(3, redChannel, greenChannel, blueChannel); % cat RGB and store it in D
私の質問は、回転、スケーリング、クロッピングなどの透かし付きの画像に対して多くの攻撃を行ったが、PSNR と (透かしと復号化された透かし) の間の MSE は変化していないということです。復号化中に、画像の暗号化に使用されるのと同じランド順列を使用したと思います。
その背後にある理由を理解するための貴重な提案があれば、それを理解することができます。