1 %% EXAMPLE OF MULTI-LAYERED EMBEDDING - +-1 PAYLOAD LIMITED SENDER
2 % implemented using syndrome-trellis codes
5 n = 1e+5; % use n pixels
6 m = n/2; % embed m bits
7 h = 10; % use STCs with constraint_height = 10. Try values between 7 and 12.
9 cover = int32(256*rand(1,n)); % generate random cover pixels
10 msg = uint8(rand(1,m)); % generate m random message bits
12 costs = zeros(3, n, 'single'); % for each pixel, assign cost of being changed
13 costs(:,1) = [1e+5 0 1]; % cost of changing the first cover pixel by -1, 0, +1
14 costs([1 3],2:end) = 1; % cost can be defined arbitrarily
16 [d stego n_msg_bits l] = stc_pm1_pls_embed(cover, costs, msg, h);
17 extr_msg = stc_ml_extract(stego, n_msg_bits, h);
20 fprintf('Message was embedded and extracted correctly.\n');
21 fprintf(' %d bits embedded => %d bits in 2LSB and %d bits in LSB.\n', ...
22 sum(n_msg_bits), n_msg_bits(1), n_msg_bits(2));
23 fprintf(' achieved coding_loss = %4.2f%%\n', l*100);