3 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
7 This HTML is auto-generated from an M-file.
8 To make changes, update the M-file and republish this document.
9 --><title>EXAMPLE OF MULTI-LAYERED EMBEDDING - +-2 PAYLOAD LIMITED SENDER</title><meta name="generator" content="MATLAB 7.9"><meta name="date" content="2010-12-06"><meta name="m-file" content="ex_pm2_pls"><style type="text/css">
12 background-color: white;
26 /* Make the text shrink to fit narrow windows, but not stretch too far in
28 p,h1,h2,div.content div {
31 width: auto !important; width: 600px;
39 pre.codeinput {word-wrap:break-word; width:100%;}
42 span.keyword {color: #0000FF}
43 span.comment {color: #228B22}
44 span.string {color: #A020F0}
45 span.untermstring {color: #B20000}
46 span.syscmd {color: #B28C00}
65 </style></head><body><div class="content"><h1>EXAMPLE OF MULTI-LAYERED EMBEDDING - +-2 PAYLOAD LIMITED SENDER</h1><p>implemented using syndrome-trellis codes</p><pre class="codeinput">clc; clear;
67 n = 1e+5; <span class="comment">% use n pixels</span>
68 m = n/2; <span class="comment">% embed m bits</span>
69 h = 10; <span class="comment">% use STCs with constraint_height = 10. Try values between 7 and 12.</span>
71 cover = int32(256*rand(1,n)); <span class="comment">% generate random cover pixels</span>
72 msg = uint8(rand(1,m)); <span class="comment">% generate m random message bits</span>
74 <span class="comment">% cost can be defined arbitrarily, this is just a simple example</span>
75 costs = zeros(5, n, <span class="string">'single'</span>); <span class="comment">% for each pixel, assign cost of being changed</span>
76 costs(:,1) = [1e+5 100 0 1 5]; <span class="comment">% cost of changing the first cover pixel by -2, -1, 0, +1, +2</span>
77 costs([1 5],2:end) = 4; <span class="comment">% cost of changing pixels by -2 and +2</span>
78 costs([2 4],2:end) = 1; <span class="comment">% cost of changing pixels by -1 and +1</span>
80 [d stego n_msg_bits l] = stc_pm2_pls_embed(cover, costs, msg, h);
81 extr_msg = stc_ml_extract(stego, n_msg_bits, h);
83 <span class="keyword">if</span> all(extr_msg==msg)
84 fprintf(<span class="string">'Message was embedded and extracted correctly.\n'</span>);
85 fprintf(<span class="string">' %d bits embedded => %d bits in 3LSB, %d bits in 2LSB and %d bits in LSB.\n'</span>, <span class="keyword">...</span>
86 sum(n_msg_bits), n_msg_bits(1), n_msg_bits(2), n_msg_bits(3));
87 fprintf(<span class="string">' achieved coding_loss = %4.2f%%\n'</span>, l*100);
88 <span class="keyword">end</span>
89 </pre><pre class="codeoutput">Message was embedded and extracted correctly.
90 50000 bits embedded => 24856 bits in 3LSB, 12648 bits in 2LSB and 12496 bits in LSB.
91 achieved coding_loss = 8.26%
92 </pre><p class="footer"><br>
93 Published with MATLAB® 7.9<br></p></div><!--
94 ##### SOURCE BEGIN #####
95 %% EXAMPLE OF MULTI-LAYERED EMBEDDING - +-2 PAYLOAD LIMITED SENDER
96 % implemented using syndrome-trellis codes
99 n = 1e+5; % use n pixels
100 m = n/2; % embed m bits
101 h = 10; % use STCs with constraint_height = 10. Try values between 7 and 12.
103 cover = int32(256*rand(1,n)); % generate random cover pixels
104 msg = uint8(rand(1,m)); % generate m random message bits
106 % cost can be defined arbitrarily, this is just a simple example
107 costs = zeros(5, n, 'single'); % for each pixel, assign cost of being changed
108 costs(:,1) = [1e+5 100 0 1 5]; % cost of changing the first cover pixel by -2, -1, 0, +1, +2
109 costs([1 5],2:end) = 4; % cost of changing pixels by -2 and +2
110 costs([2 4],2:end) = 1; % cost of changing pixels by -1 and +1
112 [d stego n_msg_bits l] = stc_pm2_pls_embed(cover, costs, msg, h);
113 extr_msg = stc_ml_extract(stego, n_msg_bits, h);
115 if all(extr_msg==msg)
116 fprintf('Message was embedded and extracted correctly.\n');
117 fprintf(' %d bits embedded => %d bits in 3LSB, %d bits in 2LSB and %d bits in LSB.\n', ...
118 sum(n_msg_bits), n_msg_bits(1), n_msg_bits(2), n_msg_bits(3));
119 fprintf(' achieved coding_loss = %4.2f%%\n', l*100);
122 ##### SOURCE END #####