]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/matlab/ex_stc_wet.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
ecc4eb2e5cce8bbe6f7a36cadc1ea4ce80d39638
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / matlab / ex_stc_wet.m
1 clc; clear;\r
2 \r
3 n = 10^6;    % size of the cover\r
4 h = 10;      % constraint height - default is 10 - drives the complexity/quality tradeof\r
5 wetness = 0.6;  % relative wetness of the channel\r
6 alpha = 0.5;    % relative payload on the dry pixels\r
7 \r
8 wet = rand(n, 1) < wetness;\r
9 dn = n - sum(wet);  % number of dry pixels\r
10 m = floor(dn * alpha);\r
11 \r
12 cover = uint8(rand(n, 1));\r
13 message = uint8(rand(m, 1));\r
14 profile = ones(n, 1);  % constant profile\r
15 profile(wet) = Inf; % Wet pixels are assigned a weight of infinity, so they are never flipped. \r
16 \r
17 tic;\r
18 [dist, stego] = stc_embed(cover, message, profile, h);\r
19 fprintf('distortion per dry cover element = %f\n', dist / dn);\r
20 fprintf('            embedding efficiency = %f\n', alpha / (dist / dn));\r
21 fprintf('                      throughput = %1.1f Kbits/sec\n', n / toc() / 1024);\r
22 \r
23 message2 = stc_extract(stego, m, h); % extract message\r
24 if all(message == message2)\r
25     disp('Message has been extracted correctly.');\r
26 else\r
27     error('Some error occured in the extraction process.');\r
28 end