290 likes | 500 Views
Reversible Data Embedding Using Difference Expansion IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 8, Aug. 2003, page(s): 890 -- 896. Authors: Jun Tian Speaker: J.H. Liu. Outline. Data Embedding Reversible Data Hiding Difference Expansion Expandable
E N D
Reversible Data Embedding Using Difference Expansion IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 8, Aug. 2003, page(s): 890 -- 896 Authors: Jun Tian Speaker: J.H. Liu
Outline • Data Embedding • Reversible Data Hiding • Difference Expansion • Expandable • Changeable • Difference Expansion Decoding • Expandable decoding • Changeable decoding • Conclusions
Data Embedding • Reversible data hiding 1
Difference Expansion • One of data embedding methods • Basic case: • h = x – y l = (x + y)/2 x=l + h /2 + LSB(h) y=l - h /2 • Hint : There divide(/) is integer divide. • For example, x/y meaning floor(x/y). +3 -2 x=206 y=201 average l=203 2
Difference Expansion • One of data embedding methods • Basic case: • h = x – y l = (x + y)/2 x=l + h /2 + LSB(h) y=l - h /2 • Hint : There divide(/) is integer divide. • For example, x/y meaning floor(x/y). +3 -2 x=206 y=201 average l=203 If h is odd, bit will lost with h /2. We must return it into x . 2
Difference Expansion - method location map L Case1. expandable : h’ = 2×h + b 1 • h = x - yCase2. changeable : bitstreamC 0 Case3. non-changeable 0 • bitstreamC = collection of LSBs(h) • Expandable : |h’| = |2xh+b| ≦ min(2(255-l),2xl-1) Changeable : |h’| = |2x(h/2)+b| ≦ min(2(255-l),2xl-1) 3
Expandable • 1st step: h’ = hx2 + secret bit (b) • 2nd step: x’ = l+ h’/2 + LSB(h’) y’ = l- h’/2 • location map L = 1 l=203 +6 -5 y’=198 x’=209 206 201 +3 -2 4
Expandable • 1st step: h’ = hx2 + secret bit (b) • 2nd step: x’ = l+ h’/2 + LSB(h’) y’ = l- h’/2 • location map L = 1 l=203 b = 1 l=203 +6 -5 y’=198 x’=209 206 201 +3 -2 4
Expandable • 1st step: h’ = hx2 + secret bit (b) • 2nd step: x’ = l+ h’/2 + LSB(h’) y’ = l- h’/2 • location map L = 1 l=203 b = 1 l=203 h’=5*2+1=11 +6 -5 y’=198 x’=209 206 201 +3 -2 4
Expandable • 1st step: h’ = hx2 + secret bit (b) • 2nd step: x’ = l+ h’/2 + LSB(h’) y’ = l- h’/2 • location map L = 1 l=203 b = 1 l=203 h’=5*2+1=11 x’=203+11/2+11%2=209 y’=203-11/2=198 +6 -5 y’=198 x’=209 206 201 +3 -2 4
Changeable • It is non-expandable • x’, y’ will overflow or underflow with expandable method l=223 +46 -46 y’=177 x’=292 246 200 +23 -23 5
Changeable • It is non-expandable • 1st step: h’ = (h/2)x2 + b • 2nd step: lost bit(c) = LSB(h) • 3rd step: x’ = l+ h’/2 + LSB(h’) y’ = l- h’/2 • location map L = 0 +23 -23 x=246 y=200 l=223 5
Changeable • It is non-expandable • 1st step: h’ = (h/2)x2 + b • 2nd step: lost bit(c) = LSB(h) • 3rd step: x’ = l+ h’/2 + LSB(h’) y’ = l- h’/2 • location map L = 0 +23 -23 x=246 y=200 l=223 There we will lost the LSB of h. 5
Changeable • It is non-expandable • 1st step: h’ = (h/2)x2 + b • 2nd step: lost bit(c) = LSB(h) • 3rd step: x’ = l+ h’/2 + LSB(h’) y’ = l- h’/2 • location map L = 0 +23 -23 x=246 y=200 l=223 There we will lost the LSB of h. We record the LSBs of h at bitstreamC. 5
Changeable • It is non-expandable • 1st step: h’ = (h/2)x2 + b • 2nd step: lost bit(c) = LSB(h) • 3rd step: x’ = l+ h’/2 + LSB(h’) y’ = l- h’/2 • location map L = 0 +23 -23 x=246 y=200 l=223 There we will lost the LSB of h. We record the LSBs of h at bitstreamC. +24 -23 x’=247 y’=200 5
Expandable decoding • 1st step: get h’ = x’-y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’/2 • 4th step: get x = l + h/2 + LSB(h) y= l - h/2 +6 -5 x‘= 209 y‘= 198 l=203 6
Expandable decoding • 1st step: get h’ = x’-y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’/2 • 4th step: get x = l + h/2 + LSB(h) y= l - h/2 +6 -5 x’= 209 y‘= 198 l=(209+198)/2=203 h’=209-198=11 l=203 6
Expandable decoding • 1st step: get h’ = x’-y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’/2 • 4th step: get x = l + h/2 + LSB(h) y= l - h/2 +6 -5 x‘= 209 y‘= 198 l=(209+198)/2=203 h’=209-198=11 b=11%2=1 l=203 6
Expandable decoding • 1st step: get h’ = x’-y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’/2 • 4th step: get x = l + h/2 + LSB(h) y= l - h/2 +6 -5 x‘= 209 y‘= 198 l=(209+198)/2=203 h’=209-198=11 b=11%2=1 h=11/2=5 l=203 6
Expandable decoding • 1st step: get h’ = x’-y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’/2 • 4th step: get x = l + h/2 + LSB(h) y= l - h/2 +6 -5 x’= 209 y‘= 198 l=(209+198)/2=203 h’=209-198=11 b=11%2=1 h=11/2=5 x=203+5/2+5%2 =203+2+1=206 y=203-5/2=201 l=203 6
Expandable decoding • 1st step: get h’ = x’-y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’/2 • 4th step: get x = l + h/2 + LSB(h) y= l - h/2 +6 -5 x‘= 209 y‘= 198 l=(209+198)/2=203 h’=209-198=11 b=11%2=1 h=11/2=5 x=203+5/2+5%2 =203+2+1=206 y=203-5/2=201 l=203 +3 -2 x = 206 y = 201 l=203 6
Expandable decoding • 1st step: get h’ = x’-y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’/2 • 4th step: get x = l + h/2 + LSB(h) y= l - h/2 +6 -5 x‘= 209 y‘= 198 l=(209+198)/2=203 h’=209-198=11 b=11%2=1 h=11/2=5 x=203+5/2+5%2 =203+2+1=206 y=203-5/2=201 l=203 Note: average l is never changed. +3 -2 x = 206 y = 201 l=203 6
Changeable decoding • 1st step: get h’ = x’ - y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’- b + bitstream(c) • 4th step: get x = l + h/2 + LSB(h) y = l - h/2 +24 -23 x’ = 247 y’ = 200 l=223 7
Changeable decoding • 1st step: get h’ = x’ - y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’- b + bitstream(c) • 4th step: get x = l + h/2 + LSB(h) y = l - h/2 +24 -23 x’ = 247 y’ = 200 l=223 l=(247+200)/2=223 h’=247-200=47 7
Changeable decoding • 1st step: get h’ = x’ - y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’- b + bitstream(c) • 4th step: get x = l + h/2 + LSB(h) y = l - h/2 +24 -23 x’ = 247 y’ = 200 l=223 l=(247+200)/2=223 h’=247-200=47 b=47%2=1 7
Changeable decoding • 1st step: get h’ = x’ - y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’- b + bitstream(c) • 4th step: get x = l + h/2 + LSB(h) y = l - h/2 +24 -23 x’ = 247 y’ = 200 l=223 l=(247+200)/2=223 h’=247-200=47 b=47%2=1 h=47-1+0=46 7
Changeable decoding • 1st step: get h’ = x’ - y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’- b + bitstream(c) • 4th step: get x = l + h/2 + LSB(h) y = l - h/2 +24 -23 x’ = 247 y’ = 200 l=223 l=(247+200)/2=223 h’=247-200=47 b=47%2=1 h=47-1+0=46 x=223+(46/2)+46%2 =223+23+0=246 y=223-46/2=200 7
Changeable decoding • 1st step: get h’ = x’ - y’ • 2nd step: get b = LSB(h’) • 3rd step: get h = h’- b + bitstream(c) • 4th step: get x = l + h/2 + LSB(h) y = l - h/2 +24 -23 x’ = 247 y’ = 200 l=223 l=(247+200)/2=223 h’=247-200=47 b=47%2=1 h=47-1+0=46 x=223+(46/2)+46%2 =223+23+0=246 y=223-46/2=200 +23 -23 x=246 y=200 l=223 7
Conclusions • Simple and efficient reversible embedding method. • The method of location map L is not good enough. We may improve the method of location map anywise. • The case of changeable is a kind of useless. 8