4. Matrix Encoding (F5)
Matrix encoding allows to hide n bits of data to stream of 2n-1 coefficients (S)
by modifying one coefficient.
ME schemes: (m, 2m-1), examples (2, 3) (3, 7) (4, 15)
1) Get stream of non-zero DCT coefficients:
1, -1, 2, 3, 1, -1, -3, 1, 8, 3, -1, -1, -1, 2, 1, 1, 1, 2, 3, 1, 12,…, N
2) Compute stream of corresponding informative bits b:
c( i , j ) mod 2
if c( i , j ) > 0
b( i , j ) =
( c( i , j ) − 1) mod 2 if c( i , j ) < 0
1, -1, 2, 3, 1, -1, -3, 1, 8, 3, -1, -1, -1, 2, 1, 1, 1, 2, 3, 1, 12, …
1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, …
3) Define the matrix encoding scheme (n, 2 n-1) such as,
N
⋅n ≥ C
2 −1
n
where C is the size of hidden message.
5. Matrix encoding(F5)
Assume that the ME scheme is(3,7). Hidden message (M) is (0 0 1).
Stream of DCT coefficients (D) and stream of informative bits (S) are
(3, -1, 2, 1, 1, -1, -3) and (1, 0, 0, 1, 1, 0, 0) respectively.
For embedding message M to S one coefficient from D has to be modified.
Compute necessary position (P={p1, p2, p3}) :
S = {a1, a2, a3, a4,a5,a6,a7} 0 0 0 1 1 1 1
1) Compute syndrome O = {o1, o2, o3} H = 0 1 1 0 0 1 1
1 0 1 0 1 0 1
o1 = xor(a4,a5,a6,a7)
o2 = xor(a2,a3,a6,a7)
o3 = xor(a1,a3,a5,a7)
2) Position (P) in binary representation is computed as:
P = xor(O,M)
6. Matrix Encoding (F5), example
Hiding message M (0 0 1) to (3, -1, 2, 1, 1, -1, -3) or (1, 0, 0, 1, 1, 0, 0)
1) Get syndrome :
o1 = xor(a4,a5,a6,a7)=xor(1,1,0,0) = 0
o2 = xor(a2,a3,a6,a7)=xor(0,0,0,0) = 0
o3 = xor(a1,a3,a5,a7)=xor(1,0,1,0) = 0
2) Get position:
P = xor(M,O) = {xor(0,0), xor(0,0), xor(1,0)} = {0, 0, 1}. P10 = 1
3) Get stream of modified coefficients and informative bits
(2(4), -1, 2, 1, 1, -1, -3) and (0, 0, 0, 1, 1, 0, 0)
4) Verification (get syndrome):
(0, 0, 0, 1, 1, 0, 0)
m1 = xor(a4,a5,a6,a7)=xor(1,1,0,0) = 0
m2 = xor(a2,a3,a6,a7)=xor(0,0,0,0) = 0
7. Modified matrix encoding
Each 1 flip solution P can be replaced to floor(n/2) 2 flips
solutions P1, P2, such that P = xor(P1, P2).
Example:
P = 510 = 01012
P1 P2
0100 0001
0110 0011
0111 0010
1000 1101
1100 1001
1111 1010
3 flips solution is also possible: P = xor(P1, P2, P3)
9. Overlapped matrix encoding
Assume that A and B are the positions to flip for block 1 and 2. (a1,
a2), (b1,b2), (a11,a12,a13) or (b11,b12,b13) are the numbers such that A =
xor(a1,a2) = xor (a11,a12,a13) , and
B = xor(b1,b2) = xor (b11,b12,b13)
B’ is a position for block 2, if A, (a1 or a2), or (a11 or a12 or a13)
belong to I . B’ = xor(b’1,b’2) = xor (b’11,b’12,b’13)
1 flip solution: A = B, (A,B) ϵ I
2 flips solution: (A,B), (a1,a2 = B) or (b’1 = A, b’2)
3 flips solution: (a1,a2,B) , (a1,a2 = b’1,b’2), (A, b1 , b2) or
(a11,a12 = b’1,a13 = b’2) , (a1 = b’11,a2 = b’12 ,b’13)
4 flips solution: (a1,a2,b1,b2), (a11,a12,a13 = b’1,b’2) ,
(a11,a12 = b’11,a13 = b’12, b’13) ,
10. Example:
1 2 3 4 5 6 7 8 9 10 11
Assume that A = 4 and B = 2:
Possible solutions:
(2, 6) 2 = 010, 6 = 110, xor(010,110) = 100 = 4.
Coefficient 6 has index 2 for block 2. (B = 2)
(4,9,11), A = 4, 9th and 11th coefficients have the indexes 5 and 7
correspondingly. Thus, 5 = 101, 7 = 111, xor(101,111) = 010 =2.
11. Insert - Remove (IR) approach
The stream of non-rounded AC coefficients:
1.45,0.21, 0.35 , 1.02, -0.01, -0.28, -5.12, 9.87, -0.45, 0.02, 1.89, -0.85, 4.01,
-8.74, -6.04, 1.55, 3.11, -10.34, 5.04
Hidden data: m1=101, m2=100
Assume that the candidates for inserting are the AC coefficients belonging to the
(0.25, 0.5) and (-0.5, -0.25).
0.35, -0.28, -0.45 are the candidates for inserting (cI).
1.45, 1.02, -0.85 are the candidates for removing (cR).
The stream of non-rounded AC coefficients for hiding data.
1.45, 1.02, -5.12, 9.87, 1.89, -0.85, 4.01, -6.04, 1.55, 3.11, -10.34
Rounded:
1, 1, -5, 10, 2, -1, 4, -6, 2, 3, -10
Block 1: 1, 1, -5, 10, 2, -1, 4 Block 2: 2, -1, 4, -6, 2, 3, -10
Intersected area I: 2, -1, 4
12. Distortion impact
Distortion impact due to modification:
D = E2∙Q2
0.5− | C − C |, if C ∈ ( − ∞ ;1.5) ∪ (1.5; ∞ )
E=
1.5− | C |, if C ∈ [−1.5;0.5) ∪ (0.5;1.5]
Distortion impact due to insertion or removing:
DIR = |0.5-|C||2 ∙ Q2
Total distortion impact:
Dtotal = ∑i =1 Di + DIR
l
14. IR approach (Insertion and removing)
1.45 0.21 0.35 1.02 -0.01 -0.28 -5.12 9.87 -0.45 0.02 1.89 -0.85 4.01 -8.74
-6.04 1.55 3.11 -10.34 5.04
Insert 0.35 (i.e 0.35 -> 1), then
Block 1: 1, 1,1, -5, 10, 2, -1 Block 2: 10, 2, -1, 4, -6, 2, 3
Among one, two, and three flips solutions define A = (1 7), B = (6)
Distortion after inserting is 21.6 + 1.1 = 22.7
Remove 1.45 (i.e. 1.45 -> 0), then
Block 1: 1, -5, 10, 2, -1, 4 , -6 Block 2: -1, 4, -6, 2, 3, -10, 5
Among one, two, and three flips solutions define A = (2 4 6), B = (7)
Distortion for original approach is 120.9 + 90 = 210.9
15. Experimental results
The stego images have been tested by using 274 – features
steganalysis method proposed by Pevny and Fridrich
16. Conclusion
The proposed oimproved matrix encoding:
- achieves higher capacity.
- can improve any block based steganographic
method
- decrease detectability of steganalysis
- can be improved further.