]> AND Private Git Repository - canny.git/commitdiff
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
ajout de fichiers
authorcouchot <couchot@couchot-laptop.(none)>
Fri, 8 Jun 2012 09:29:54 +0000 (11:29 +0200)
committercouchot <couchot@couchot-laptop.(none)>
Fri, 8 Jun 2012 09:29:54 +0000 (11:29 +0200)
emb.pdf [new file with mode: 0644]
emb.ps [new file with mode: 0644]
ourapproach.tex [new file with mode: 0644]
rec.pdf [new file with mode: 0644]
rec.ps [new file with mode: 0644]
schema.dot [new file with mode: 0644]
schema2.dot [new file with mode: 0644]
stc.tex [new file with mode: 0644]
stc/exp/python/stc_r.py [new file with mode: 0644]
test.ps [new file with mode: 0644]

diff --git a/emb.pdf b/emb.pdf
new file mode 100644 (file)
index 0000000..749bd81
Binary files /dev/null and b/emb.pdf differ
diff --git a/emb.ps b/emb.ps
new file mode 100644 (file)
index 0000000..bc1e4ce
--- /dev/null
+++ b/emb.ps
@@ -0,0 +1,993 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: start_up
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+       dup 1 exch div /InvScaleFactor exch def
+       scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {   % i j npages
+       /npages exch def
+       /j exch def
+       /i exch def
+       /str 10 string def
+       npages 1 gt {
+               gsave
+                       coordfont setfont
+                       0 0 moveto
+                       (\() show i str cvs show (,) show j str cvs show (\)) show
+               grestore
+       } if
+} bind def
+
+/set_font {
+       findfont exch
+       scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext {                 % width text
+       /text exch def
+       /width exch def
+       gsave
+               width 0 gt {
+                       [] 0 setdash
+                       text stringwidth pop width exch sub text length div 0 text ashow
+               } if
+       grestore
+} def
+
+/boxprim {                             % xcorner ycorner xsize ysize
+               4 2 roll
+               moveto
+               2 copy
+               exch 0 rlineto
+               0 exch rlineto
+               pop neg 0 rlineto
+               closepath
+} bind def
+
+/ellipse_path {
+       /ry exch def
+       /rx exch def
+       /y exch def
+       /x exch def
+       matrix currentmatrix
+       newpath
+       x y translate
+       rx ry scale
+       0 0 1 0 360 arc
+       setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+       [       % layer color sequence - darkest to lightest
+               [0 0 0]
+               [.2 .8 .8]
+               [.4 .8 .8]
+               [.6 .8 .8]
+               [.8 .8 .8]
+       ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+       layercolorseq curlayer 1 sub layerlen mod get
+       aload pop sethsbcolor
+       /nodecolor {nopcolor} def
+       /edgecolor {nopcolor} def
+       /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+       /myupper exch def
+       /mylower exch def
+       curlayer mylower lt
+       curlayer myupper gt
+       or
+       {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 429 616
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 393 580 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% IC
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 131 498 moveto
+79 498 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 79 498 moveto
+73 498 67 492 67 486 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 67 486 moveto
+67 466 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 67 466 moveto
+67 460 73 454 79 454 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 79 454 moveto
+131 454 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 131 454 moveto
+137 454 143 460 143 466 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 143 466 moveto
+143 486 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 143 486 moveto
+143 492 137 498 131 498 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+83.5 481.4 moveto 43 (Image) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+74.5 463.4 moveto 61 (Cover X ) alignedtext
+grestore
+% ED
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 416 moveto
+54 416 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 54 416 moveto
+48 416 42 410 42 404 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 42 404 moveto
+42 384 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 42 384 moveto
+42 378 48 372 54 372 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 54 372 moveto
+158 372 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 372 moveto
+164 372 170 378 170 384 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 170 384 moveto
+170 404 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 170 404 moveto
+170 410 164 416 158 416 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+58 399.4 moveto 96 (x= LSB\(7 bits) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+50 381.4 moveto 112 (Edge Detection\)) alignedtext
+grestore
+% IC->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 105.27 453.59 moveto
+105.38 445.12 105.5 435.3 105.61 426.1 curveto
+stroke
+0 0 0 edgecolor
+newpath 109.11 426.14 moveto
+105.73 416.1 lineto
+102.11 426.05 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 109.11 426.14 moveto
+105.73 416.1 lineto
+102.11 426.05 lineto
+closepath stroke
+grestore
+% message
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 225 494 moveto
+173 494 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 173 494 moveto
+167 494 161 488 161 482 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 161 482 moveto
+161 470 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 161 470 moveto
+161 464 167 458 173 458 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 173 458 moveto
+225 458 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 225 458 moveto
+231 458 237 464 237 470 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 237 470 moveto
+237 482 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 237 482 moveto
+237 488 231 494 225 494 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+169 472.4 moveto 60 (message) alignedtext
+grestore
+% encrypt
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 360 412 moveto
+200 412 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 200 412 moveto
+194 412 188 406 188 400 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 188 400 moveto
+188 388 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 188 388 moveto
+188 382 194 376 200 376 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 200 376 moveto
+360 376 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 360 376 moveto
+366 376 372 382 372 388 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 372 388 moveto
+372 400 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 372 400 moveto
+372 406 366 412 360 412 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+195.5 390.4 moveto 169 (m=encryption\(message\)) alignedtext
+grestore
+% message->encrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 216.98 457.8 moveto
+228.09 446.55 242.53 431.93 254.78 419.53 curveto
+stroke
+0 0 0 edgecolor
+newpath 257.54 421.72 moveto
+262.07 412.15 lineto
+252.56 416.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 257.54 421.72 moveto
+262.07 412.15 lineto
+252.56 416.8 lineto
+closepath stroke
+grestore
+% key
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 297 494 moveto
+267 494 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 267 494 moveto
+261 494 255 488 255 482 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 255 482 moveto
+255 470 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 255 470 moveto
+255 464 261 458 267 458 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 267 458 moveto
+297 458 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 297 458 moveto
+303 458 309 464 309 470 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 309 470 moveto
+309 482 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 309 482 moveto
+309 488 303 494 297 494 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+269.5 472.4 moveto 25 (key) alignedtext
+grestore
+% key->encrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 281.56 457.8 moveto
+281.3 447.4 280.98 434.12 280.69 422.38 curveto
+stroke
+0 0 0 edgecolor
+newpath 284.19 422.06 moveto
+280.44 412.15 lineto
+277.19 422.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 284.19 422.06 moveto
+280.44 412.15 lineto
+277.19 422.23 lineto
+closepath stroke
+grestore
+% PI
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 192 moveto
+12 192 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 192 moveto
+6 192 0 186 0 180 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 180 moveto
+0 160 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 160 moveto
+0 154 6 148 12 148 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 148 moveto
+92 148 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 148 moveto
+98 148 104 154 104 160 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 160 moveto
+104 180 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 180 moveto
+104 186 98 192 92 192 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+15.5 175.4 moveto 73 (Parameter) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+7.5 157.4 moveto 89 (Instantiation) alignedtext
+grestore
+% PI->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 51.72 192.11 moveto
+51.94 224.2 54.73 285.19 71 334 curveto
+74.35 344.04 79.51 354.25 84.85 363.33 curveto
+stroke
+0 0 0 edgecolor
+newpath 81.97 365.31 moveto
+90.2 371.98 lineto
+87.92 361.63 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 81.97 365.31 moveto
+90.2 371.98 lineto
+87.92 361.63 lineto
+closepath stroke
+grestore
+% STC
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 338 188 moveto
+258 188 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 258 188 moveto
+252 188 246 182 246 176 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 246 176 moveto
+246 164 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 246 164 moveto
+246 158 252 152 258 152 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 258 152 moveto
+338 152 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 338 152 moveto
+344 152 350 158 350 164 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 350 164 moveto
+350 176 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 350 176 moveto
+350 182 344 188 338 188 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+254 166.4 moveto 88 (y= STC\(x,m\)) alignedtext
+grestore
+% encrypt->STC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 293.94 375.96 moveto
+301.81 364.6 310.88 349.25 315 334 curveto
+327.61 287.37 316.21 230.96 306.97 197.92 curveto
+stroke
+0 0 0 edgecolor
+newpath 310.25 196.67 moveto
+304.08 188.06 lineto
+303.54 198.64 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 310.25 196.67 moveto
+304.08 188.06 lineto
+303.54 198.64 lineto
+closepath stroke
+grestore
+% cond
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 193 334 moveto
+80 290 lineto
+193 246 lineto
+306 290 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+163 295.4 moveto 60 (Size of x) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+144.5 277.4 moveto 97 ( enough for m) alignedtext
+grestore
+% encrypt->cond
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 264.85 375.88 moveto
+254.56 363.59 240.54 346.83 227.61 331.38 curveto
+stroke
+0 0 0 edgecolor
+newpath 230.08 328.87 moveto
+220.98 323.44 lineto
+224.71 333.36 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 230.08 328.87 moveto
+220.98 323.44 lineto
+224.71 333.36 lineto
+closepath stroke
+grestore
+% emb
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 373 110 moveto
+223 110 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 110 moveto
+217 110 211 104 211 98 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 98 moveto
+211 86 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 86 moveto
+211 80 217 74 223 74 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 74 moveto
+373 74 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 373 74 moveto
+379 74 385 80 385 86 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 385 86 moveto
+385 98 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 385 98 moveto
+385 104 379 110 373 110 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+218.5 88.4 moveto 159 (stego=embedding\(y,X\)) alignedtext
+grestore
+% STC->emb
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 298 151.91 moveto
+298 142.53 298 130.85 298 120.3 curveto
+stroke
+0 0 0 edgecolor
+newpath 301.5 120.26 moveto
+298 110.26 lineto
+294.5 120.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 301.5 120.26 moveto
+298 110.26 lineto
+294.5 120.26 lineto
+closepath stroke
+grestore
+% end
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 313 36 moveto
+283 36 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 283 36 moveto
+277 36 271 30 271 24 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 271 24 moveto
+271 12 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 271 12 moveto
+271 6 277 0 283 0 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 283 0 moveto
+313 0 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 313 0 moveto
+319 0 325 6 325 12 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 325 12 moveto
+325 24 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 325 24 moveto
+325 30 319 36 313 36 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+285 14.4 moveto 26 (end) alignedtext
+grestore
+% emb->end
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 298 73.71 moveto
+298 65.46 298 55.54 298 46.36 curveto
+stroke
+0 0 0 edgecolor
+newpath 301.5 46.08 moveto
+298 36.08 lineto
+294.5 46.08 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 301.5 46.08 moveto
+298 36.08 lineto
+294.5 46.08 lineto
+closepath stroke
+grestore
+% start
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 164 572 moveto
+134 572 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 572 moveto
+128 572 122 566 122 560 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 560 moveto
+122 548 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 548 moveto
+122 542 128 536 134 536 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 536 moveto
+164 536 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 164 536 moveto
+170 536 176 542 176 548 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 176 548 moveto
+176 560 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 176 560 moveto
+176 566 170 572 164 572 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+132 550.4 moveto 34 (start) alignedtext
+grestore
+% start->IC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 138.79 535.91 moveto
+133.94 527.3 127.99 516.75 122.44 506.92 curveto
+stroke
+0 0 0 edgecolor
+newpath 125.47 505.16 moveto
+117.51 498.17 lineto
+119.37 508.6 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 125.47 505.16 moveto
+117.51 498.17 lineto
+119.37 508.6 lineto
+closepath stroke
+grestore
+% start->message
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 160.6 535.91 moveto
+166.86 526.13 174.72 513.87 181.7 502.99 curveto
+stroke
+0 0 0 edgecolor
+newpath 184.84 504.57 moveto
+187.29 494.26 lineto
+178.95 500.79 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 184.84 504.57 moveto
+187.29 494.26 lineto
+178.95 500.79 lineto
+closepath stroke
+grestore
+% start->key
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 176.28 538.49 moveto
+195.78 527.35 222.6 511.9 246 498 curveto
+246.09 497.95 246.18 497.89 246.27 497.84 curveto
+stroke
+0 0 0 edgecolor
+newpath 248.14 500.8 moveto
+254.92 492.65 lineto
+244.54 494.79 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 248.14 500.8 moveto
+254.92 492.65 lineto
+244.54 494.79 lineto
+closepath stroke
+grestore
+% start->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 121.68 550.56 moveto
+82.23 543.9 14 525.26 14 476 curveto
+14 476 14 476 14 290 curveto
+14 258.89 25.75 225.26 36.19 201.54 curveto
+stroke
+0 0 0 edgecolor
+newpath 39.42 202.89 moveto
+40.39 192.34 lineto
+33.06 199.98 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 39.42 202.89 moveto
+40.39 192.34 lineto
+33.06 199.98 lineto
+closepath stroke
+grestore
+% ED->cond
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 124.45 371.94 moveto
+134.29 360.18 146.73 345.32 158.29 331.49 curveto
+stroke
+0 0 0 edgecolor
+newpath 161.25 333.41 moveto
+164.98 323.5 lineto
+155.88 328.92 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 161.25 333.41 moveto
+164.98 323.5 lineto
+155.88 328.92 lineto
+closepath stroke
+grestore
+% cond->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 157.42 259.72 moveto
+135.48 241.04 107.5 217.23 85.88 198.83 curveto
+stroke
+0 0 0 edgecolor
+newpath 88.11 196.13 moveto
+78.22 192.32 lineto
+83.57 201.46 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 88.11 196.13 moveto
+78.22 192.32 lineto
+83.57 201.46 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+119 215.4 moveto 19 (No) alignedtext
+grestore
+% cond->STC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 221.97 256.89 moveto
+238.81 237.64 259.73 213.73 275.36 195.87 curveto
+stroke
+0 0 0 edgecolor
+newpath 278.19 197.96 moveto
+282.14 188.13 lineto
+272.92 193.35 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 278.19 197.96 moveto
+282.14 188.13 lineto
+272.92 193.35 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+262 215.4 moveto 23 (Yes) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 429 616
+end
+restore
+%%EOF
diff --git a/ourapproach.tex b/ourapproach.tex
new file mode 100644 (file)
index 0000000..5fc4f7e
--- /dev/null
@@ -0,0 +1,87 @@
+The flowcharts given in Fig.~\ref{fig:sch} summarize our steganography scheme denoted as 
+STABYLO for STeganography with cAnny, Bbs, binarY embedding at LOw cost.
+What follows successively details all the inner steps and flow inside 
+the embedding stage (Fig.\ref{fig:sch:emb}) 
+and inside the extraction one(Fig.~\ref{fig:sch:ext}).
+
+
+\begin{figure*}[t]
+  \begin{center}
+    \subfloat[Data Embedding.]{
+      \begin{minipage}{0.49\textwidth}
+        \begin{center}
+          \includegraphics[width=5cm]{emb.pdf}
+        \end{center}
+      \end{minipage}
+      \label{fig:sch:emb}
+    }%\hfill
+    \subfloat[Data Extraction.]{
+      \begin{minipage}{0.49\textwidth}
+        \begin{center}
+          \includegraphics[width=5cm]{rec.pdf}
+        \end{center}
+      \end{minipage}
+      \label{fig:sch:ext}
+    }%\hfill
+  \end{center}
+  \caption{The STABYLO Scheme.}
+  \label{fig:sch}
+\end{figure*}
+
+
+\subsection{Steganalysis}
+
+LSB : 
+"Adaptive steganalysis of Least Significant Bit replacement in grayscale natural images"
+
+Structural LSB Detectors:
+\verb+http://dde.binghamton.edu/download/structural_lsb_detectors/+
+
+Vainqueur du BOSS challenge 
+
+
+ensemble:
+
+
+G. Gül and F. Kurugollu. A new methodology in steganalysis : Breaking highly
+undetactable steganograpy (HUGO). In Information Hiding, 13th International
+Workshop, volume 6958 of LNCS, pages 71–84, Prague, Czech Republic, May 18–
+20, 2011. 
+
+
+\subsection{Data Embedding} 
+
+
+
+
+\subsubsection{Edge Based Image Steganography}
+Image Quality: Edge Image Steganography
+\JFC{Raphael, les fuzzy edge detection sont souvent utilisés. 
+  il faudrait comparer les approches en terme de nombre de bits retournés,
+  en terme de complexité. }
+
+
+Presentation des algos de detection de contour
+Caractéristiques
+
+Comparaison théoriques, références
+
+Algo de stegano basé juste sur cela : (pas de bbs, pas de stc, même message).
+
+Quels paramètres sont optimaux ? Combinaison ? 
+
+
+
+
+
+\subsubsection{Security Considerations}
+
+Security aspect:
+BBS-based cryptographic version of the message 
+
+\subsubsection{Minimizing Distortion with Syndrome-Treillis Codes} 
+
+\input{stc}
+
+
+\subsection{Data Extraction}
\ No newline at end of file
diff --git a/rec.pdf b/rec.pdf
new file mode 100644 (file)
index 0000000..aa13df9
Binary files /dev/null and b/rec.pdf differ
diff --git a/rec.ps b/rec.ps
new file mode 100644 (file)
index 0000000..4906435
--- /dev/null
+++ b/rec.ps
@@ -0,0 +1,819 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: start_up
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+       dup 1 exch div /InvScaleFactor exch def
+       scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {   % i j npages
+       /npages exch def
+       /j exch def
+       /i exch def
+       /str 10 string def
+       npages 1 gt {
+               gsave
+                       coordfont setfont
+                       0 0 moveto
+                       (\() show i str cvs show (,) show j str cvs show (\)) show
+               grestore
+       } if
+} bind def
+
+/set_font {
+       findfont exch
+       scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext {                 % width text
+       /text exch def
+       /width exch def
+       gsave
+               width 0 gt {
+                       [] 0 setdash
+                       text stringwidth pop width exch sub text length div 0 text ashow
+               } if
+       grestore
+} def
+
+/boxprim {                             % xcorner ycorner xsize ysize
+               4 2 roll
+               moveto
+               2 copy
+               exch 0 rlineto
+               0 exch rlineto
+               pop neg 0 rlineto
+               closepath
+} bind def
+
+/ellipse_path {
+       /ry exch def
+       /rx exch def
+       /y exch def
+       /x exch def
+       matrix currentmatrix
+       newpath
+       x y translate
+       rx ry scale
+       0 0 1 0 360 arc
+       setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+       [       % layer color sequence - darkest to lightest
+               [0 0 0]
+               [.2 .8 .8]
+               [.4 .8 .8]
+               [.6 .8 .8]
+               [.8 .8 .8]
+       ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+       layercolorseq curlayer 1 sub layerlen mod get
+       aload pop sethsbcolor
+       /nodecolor {nopcolor} def
+       /edgecolor {nopcolor} def
+       /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+       /myupper exch def
+       /mylower exch def
+       curlayer mylower lt
+       curlayer myupper gt
+       or
+       {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 374 642
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 338 606 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% SI
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 178 524 moveto
+100 524 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 100 524 moveto
+94 524 88 518 88 512 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 88 512 moveto
+88 500 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 88 500 moveto
+88 494 94 488 100 488 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 100 488 moveto
+178 488 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 178 488 moveto
+184 488 190 494 190 500 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 190 500 moveto
+190 512 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 190 512 moveto
+190 518 184 524 178 524 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+95.5 502.4 moveto 87 (Stego Image) alignedtext
+grestore
+% ED
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 195 416 moveto
+83 416 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 83 416 moveto
+77 416 71 410 71 404 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 71 404 moveto
+71 384 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 71 384 moveto
+71 378 77 372 83 372 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 83 372 moveto
+195 372 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 195 372 moveto
+201 372 207 378 207 384 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 207 384 moveto
+207 404 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 207 404 moveto
+207 410 201 416 195 416 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+78.5 399.4 moveto 121 (\(y,H\)= LSB\(7 bits) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+83 381.4 moveto 112 (Edge Detection\)) alignedtext
+grestore
+% SI->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 139 487.51 moveto
+139 470.97 139 446.36 139 426.53 curveto
+stroke
+0 0 0 edgecolor
+newpath 142.5 426.38 moveto
+139 416.38 lineto
+135.5 426.38 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 142.5 426.38 moveto
+139 416.38 lineto
+135.5 426.38 lineto
+closepath stroke
+grestore
+% cond
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 162 334 moveto
+86 290 lineto
+162 246 lineto
+238 290 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+132 295.4 moveto 60 (Size of y) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+133.5 277.4 moveto 57 ( enough) alignedtext
+grestore
+% PI
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 192 moveto
+12 192 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 192 moveto
+6 192 0 186 0 180 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 180 moveto
+0 160 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 160 moveto
+0 154 6 148 12 148 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 148 moveto
+92 148 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 148 moveto
+98 148 104 154 104 160 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 160 moveto
+104 180 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 180 moveto
+104 186 98 192 92 192 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+15.5 175.4 moveto 73 (Parameter) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+7.5 157.4 moveto 89 (Instantiation) alignedtext
+grestore
+% cond->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 135.37 260.95 moveto
+118.35 242.38 96.33 218.36 79.19 199.67 curveto
+stroke
+0 0 0 edgecolor
+newpath 81.52 197.02 moveto
+72.18 192.01 lineto
+76.36 201.75 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 81.52 197.02 moveto
+72.18 192.01 lineto
+76.36 201.75 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+104 215.4 moveto 19 (No) alignedtext
+grestore
+% STC
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 226 188 moveto
+134 188 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 188 moveto
+128 188 122 182 122 176 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 176 moveto
+122 164 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 164 moveto
+122 158 128 152 134 152 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 152 moveto
+226 152 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 226 152 moveto
+232 152 238 158 238 164 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 238 164 moveto
+238 176 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 238 176 moveto
+238 182 232 188 226 188 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+129.5 166.4 moveto 101 (m = STCr\(y,H\)) alignedtext
+grestore
+% cond->STC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 168.09 249.37 moveto
+170.61 232.63 173.45 213.63 175.74 198.42 curveto
+stroke
+0 0 0 edgecolor
+newpath 179.26 198.51 moveto
+177.28 188.1 lineto
+172.34 197.47 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 179.26 198.51 moveto
+177.28 188.1 lineto
+172.34 197.47 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+174 215.4 moveto 23 (Yes) alignedtext
+grestore
+% key
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 269 470 moveto
+239 470 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 239 470 moveto
+233 470 227 464 227 458 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 227 458 moveto
+227 446 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 227 446 moveto
+227 440 233 434 239 434 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 239 434 moveto
+269 434 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 269 434 moveto
+275 434 281 440 281 446 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 281 446 moveto
+281 458 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 281 458 moveto
+281 464 275 470 269 470 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+241.5 448.4 moveto 25 (key) alignedtext
+grestore
+% decrypt
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 318 110 moveto
+158 110 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 110 moveto
+152 110 146 104 146 98 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 146 98 moveto
+146 86 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 146 86 moveto
+146 80 152 74 158 74 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 74 moveto
+318 74 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 318 74 moveto
+324 74 330 80 330 86 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 330 86 moveto
+330 98 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 330 98 moveto
+330 104 324 110 318 110 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+154 88.4 moveto 168 (message=decryption\(m\)) alignedtext
+grestore
+% key->decrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 257.54 433.83 moveto
+261.08 414.04 266 381.39 266 353 curveto
+266 353 266 353 266 170 curveto
+266 152.58 259.74 134.19 253.14 119.65 curveto
+stroke
+0 0 0 edgecolor
+newpath 256.09 117.73 moveto
+248.59 110.25 lineto
+249.8 120.78 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 256.09 117.73 moveto
+248.59 110.25 lineto
+249.8 120.78 lineto
+closepath stroke
+grestore
+% start
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 154 598 moveto
+124 598 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 124 598 moveto
+118 598 112 592 112 586 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 112 586 moveto
+112 574 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 112 574 moveto
+112 568 118 562 124 562 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 124 562 moveto
+154 562 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 154 562 moveto
+160 562 166 568 166 574 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 166 574 moveto
+166 586 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 166 586 moveto
+166 592 160 598 154 598 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+122 576.4 moveto 34 (start) alignedtext
+grestore
+% start->SI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 139 561.71 moveto
+139 553.46 139 543.54 139 534.36 curveto
+stroke
+0 0 0 edgecolor
+newpath 142.5 534.08 moveto
+139 524.08 lineto
+135.5 534.08 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 142.5 534.08 moveto
+139 524.08 lineto
+135.5 534.08 lineto
+closepath stroke
+grestore
+% start->key
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 160.1 561.89 moveto
+171.99 551.3 186.85 537.41 199 524 curveto
+212.03 509.62 225.28 492.37 235.51 478.36 curveto
+stroke
+0 0 0 edgecolor
+newpath 238.44 480.27 moveto
+241.45 470.12 lineto
+232.77 476.18 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 238.44 480.27 moveto
+241.45 470.12 lineto
+232.77 476.18 lineto
+closepath stroke
+grestore
+% start->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 112 575.51 moveto
+76.89 567.95 20 549.06 20 506 curveto
+20 506 20 506 20 290 curveto
+20 259.25 29.93 225.51 38.73 201.67 curveto
+stroke
+0 0 0 edgecolor
+newpath 42.09 202.68 moveto
+42.4 192.09 lineto
+35.55 200.18 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 42.09 202.68 moveto
+42.4 192.09 lineto
+35.55 200.18 lineto
+closepath stroke
+grestore
+% end
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 253 36 moveto
+223 36 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 36 moveto
+217 36 211 30 211 24 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 24 moveto
+211 12 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 12 moveto
+211 6 217 0 223 0 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 0 moveto
+253 0 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 253 0 moveto
+259 0 265 6 265 12 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 265 12 moveto
+265 24 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 265 24 moveto
+265 30 259 36 253 36 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+225 14.4 moveto 26 (end) alignedtext
+grestore
+% PI->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 51.02 192.05 moveto
+50.49 224.88 53.09 287.68 77 334 curveto
+82.96 345.55 92.01 356.17 101.36 365.16 curveto
+stroke
+0 0 0 edgecolor
+newpath 99.13 367.85 moveto
+108.88 372 lineto
+103.84 362.68 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 99.13 367.85 moveto
+108.88 372 lineto
+103.84 362.68 lineto
+closepath stroke
+grestore
+% STC->decrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 193.45 151.91 moveto
+200.87 141.94 210.2 129.38 218.41 118.34 curveto
+stroke
+0 0 0 edgecolor
+newpath 221.26 120.38 moveto
+224.42 110.26 lineto
+215.64 116.2 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 221.26 120.38 moveto
+224.42 110.26 lineto
+215.64 116.2 lineto
+closepath stroke
+grestore
+% ED->cond
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 143.88 371.94 moveto
+146 362.35 148.58 350.7 151.11 339.22 curveto
+stroke
+0 0 0 edgecolor
+newpath 154.58 339.76 moveto
+153.32 329.24 lineto
+147.74 338.25 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 154.58 339.76 moveto
+153.32 329.24 lineto
+147.74 338.25 lineto
+closepath stroke
+grestore
+% decrypt->end
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 238 73.71 moveto
+238 65.46 238 55.54 238 46.36 curveto
+stroke
+0 0 0 edgecolor
+newpath 241.5 46.08 moveto
+238 36.08 lineto
+234.5 46.08 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 241.5 46.08 moveto
+238 36.08 lineto
+234.5 46.08 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 374 642
+end
+restore
+%%EOF
diff --git a/schema.dot b/schema.dot
new file mode 100644 (file)
index 0000000..165432b
--- /dev/null
@@ -0,0 +1,36 @@
+digraph start_up { 
+       node [style = rounded, shape = rect] IC [label="Image\nCover X "]
+       node [style = rounded, shape = rect] message [label="message"]
+       node [style = rounded, shape = rect] key 
+
+       node [style = rounded, shape = rect] PI [label="Parameter\nInstantiation"]               
+       node [style = rounded, shape = rect] encrypt [label="m=encryption(message)"]             
+       node [style = rounded, shape = rect] STC [label="y= STC(x,m)"]           
+       node [style = rounded, shape = rect] emb [label="stego=embedding(y,X)"]                  
+
+       node [style = rounded, shape = rect] start end;
+       node [style = rounded, shape = rect] ED [label="x= LSB(7 bits\nEdge Detection)"]  
+       
+       node [style = "", shape = diamond] cond [label="Size of x\n enough for m"]; 
+       
+       start -> PI
+       start -> IC
+       start -> message
+       start -> key 
+
+       key ->  encrypt
+
+
+       message -> encrypt
+       IC -> ED
+       ED -> cond
+       encrypt -> cond
+       encrypt -> STC
+       cond -> STC [label="Yes"]
+       cond -> PI [label="No"]
+       
+       PI -> ED
+       STC -> emb
+       emb -> end
+       
+        }
\ No newline at end of file
diff --git a/schema2.dot b/schema2.dot
new file mode 100644 (file)
index 0000000..4f47d83
--- /dev/null
@@ -0,0 +1,29 @@
+digraph start_up { 
+       node [style = rounded, shape = rect] SI [label="Stego Image"]
+       node [style = "", shape = diamond] cond [label="Size of y\n enough"]; 
+       node [style = rounded, shape = rect] key 
+       node [style = rounded, shape = rect] start end;
+       node [style = rounded, shape = rect] PI [label="Parameter\nInstantiation"]               
+       node [style = rounded, shape = rect] STC [label="m = STCr(y,H)"]                 
+       node [style = rounded, shape = rect] ED [label="(y,H)= LSB(7 bits\nEdge Detection)"]  
+       node [style = rounded, shape = rect] decrypt [label="message=decryption(m)"]             
+
+
+
+       start -> SI
+       start -> PI
+       PI -> ED 
+       start -> key 
+
+       SI -> ED
+       ED -> cond 
+       cond -> STC [label="Yes"]
+       cond -> PI [label="No"]
+       
+       STC -> decrypt
+       key -> decrypt
+       decrypt -> end
+       
+               
+       
+        }
\ No newline at end of file
diff --git a/stc.tex b/stc.tex
new file mode 100644 (file)
index 0000000..6570c73
--- /dev/null
+++ b/stc.tex
@@ -0,0 +1,85 @@
+Let 
+$x=(x_1,\ldots,x_n)$ be the $n$-bits cover vector of the image $X$, 
+$m$ be the message to embed and 
+$y=(y_1,\ldots,y_n)$ be the $n$-bits stego vector.
+The usual additive embbeding impact of replacing $x$ by $y$ in $X$
+is given by a distortion function 
+$D_X(x,y)= \Sigma_{i=1}^n \rho_X(i,x,y)$ where the function $\rho_X$
+expressed the cost of replacing $x_i$ by $y_i$ in $X$.
+Let us consider that $x$ is fixed: 
+this is for instance the LSBs of the image edge bits. 
+The objective is thus to find $y$ that minimizes $D_X(x,y)$.
+
+Hamming embedding proposes a solution to this problem. 
+Some steganographic 
+schemes~\cite{DBLP:conf/ih/Westfeld01,DBLP:conf/ih/KimDR06,DBLP:conf/mmsec/FridrichPK07} are based on this binary embedding.
+Furthermore this code provides a vector $y$ s.t. $Hy$ is equal to 
+$m$ for a given binary matrix $H$. 
+
+Let us explain this embedding on a small illustrative example where
+$\rho_X(i,x,y)$ is identically equal to 1,
+$m$ and $x$ are respectively  a 3 bits column
+vector and a 7 bits column vector. 
+Let then $H$ be the binary Hamming matrix  
+$$
+H = \left(
+\begin{array}{lllllll}
+ 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
+ 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
+ 1 & 0 & 1 & 0 & 1 & 0 & 1 
+\end{array}
+\right).
+$$
+The objective is to modify $x$ to get $y$ s.t. $m = Hy$.
+In this algebra, the sum and the product respectively correspond to
+the exclusive \emph{or} and to the \emph{and} Boolean operators.
+If $Hx$ is already equal to $m$, nothing has to be changed and $x$ can be sent.
+Otherwise we consider the difference $\delta = d(m,Hx)$ which is expressed 
+as a vector : 
+$$
+\delta = \left( \begin{array}{l}
+\delta_1 \\
+\delta_2 \\
+\delta_3
+\end{array} 
+\right)  
+\textrm{ where $\delta_i$ is 0 if $m_i = Hx_i$ and 1 otherwise.} 
+$$
+Let us thus consider the $j$th column of $H$ which is equal to $\delta$.   
+We denote by $\overline{x}^j$ the vector  we obtain by
+switching the $j$th component of $x$, 
+that is, $\overline{x}^j = (x_1 , \ldots, \overline{x_j},\ldots, x_n )$.
+It is not hard to see that if $y$ is $\overline{x}^j$, then 
+$m = Hy$.
+It is then possible to embed 3 bits in only 7 LSB of pixels by modifying
+1 bit at most.
+In the general case, when comunicating $n$ message bits in 
+$2^n-1$ pixels needs $1-1/2^n$ average changes. 
+
+
+
+Unfortunately, 
+
+
+for any given $H$, finding $y$ that solves $Hy=m$ and that 
+that minimizes $D_X(x,y)$ has exponential complexity with respect to $n$. 
+The Syndrome-Trellis Codes  (STC) 
+presented by Filler et al. in~\cite{DBLP:conf/mediaforensics/FillerJF10} 
+is a practical solution to this complexity. Thanks to this contribution,
+the solving algorithm has a linear complexity with resspect to $n$.
+
+First of all, Filler et al. compute the matrix $H$
+by placing a small sub-matrix $\hat{H}$ of size $h × w$ next
+to each other and shifted down by one row. 
+Thanks to this special form of $H$, one can represent
+every solution of  $m=Hy$ as a path through a trellis.
+
+Next, the  process of finding $y$ consists of a forward and a backward part:
+\begin{enumerate}
+\item Forward construction of the trellis that depends on $\hat{H}$, on $x$, on $m$, and on $\rho$;
+\item Backward determinization of $y$ which minimizes $D$ starting with 
+the complete path with minimal weight
+\end{enumerate} 
+Let us now give some details about these two parts.
+
+
diff --git a/stc/exp/python/stc_r.py b/stc/exp/python/stc_r.py
new file mode 100644 (file)
index 0000000..854c780
--- /dev/null
@@ -0,0 +1,241 @@
+from random import *
+import numpy as np
+from math import *
+import gc
+
+infinity = 100000000000
+
+
+
+# forward part
+
+
+def dec(ch,n):    
+    l = len(ch)
+    acc = 0
+    for i in xrange(l):
+        if ch[i]==1:
+            acc = acc + 2**(n-i-1)        
+    return acc
+
+
+def bin(elem,n):
+    """Convertit un nombre en binaire"""
+    q = -1
+    res = [0 for i in xrange(n)]
+    i = 1
+    while q != 0:
+        q = elem // 2
+        r = elem % 2
+        res[n-i] =  r
+        elem = q
+        i+=1
+    return res
+
+
+
+def xorb(a,b):
+    return 1 if a != b else 0
+
+def xor(e1,e2,h):
+    e1b,e2b  = bin(e1,h),bin(e2,h)
+    d = dec([xorb(e1b[j],e2b[j]) for j in xrange(h)],h)
+    return d
+
+def lit(d,(indx,indy)):
+    if (indx,indy) in d :
+        return d[(indx,indy)]
+    else :
+        return 0
+
+
+
+
+def forward(H_hat,x,message,lnm,rho):
+    (h,w) = int(log(max(H_hat),2))+1, len(H_hat)
+    path = dict() 
+    nbblock = lnm
+    wght = [infinity for _ in xrange(int(2**h))] 
+    wght[0]=0    
+    newwght = [0 for _ in xrange(int(2**h))]
+#    rho = 1
+#    rho= [1 for _ in xrange(len(x))]
+    indx,indm = 0,0
+    i=0
+    while i < nbblock: # pour chaque bit du message
+        for j in xrange(w):   # pour chaque colonne de H_hat
+            #print indx, "en entrant",wght
+            k = 0
+            while k < int(2**h): # pour chaque ligne de H
+                w0 = wght[k] + x[indx]*rho[indx]
+                w1 = wght[xor(k,H_hat[j],h)] + (1-x[indx])*rho[indx]
+                if w1 < w0 :
+                    path[(indx,k)] = 1 
+                else : 
+                    if (indx,k) in path:
+                        del path[(indx,k)]
+                newwght[k] = min(w0,w1)
+                k +=1 
+            indx +=1
+            wght = [t for t in newwght]
+            #print " apres calcul",wght
+
+        for j in xrange(int(2**(h-1))):   # pour chaque colonne de H
+            wght[j] = wght[2*j + message[indm]]
+        wght = wght[:int(pow(2,h-1))] + [infinity for _ in xrange(int(pow(2,h)-pow(2,h-1)))]
+        indm +=1
+        i +=1
+    start = np.argmin(wght)
+    return (start,path)
+
+
+def backward(start,H_hat,x,message,lnm,path):
+    (h,w) = int(log(max(H_hat),2))+1, len(H_hat)
+    indx,indm = len(x)-1,lnm-1
+    state = 2*start + message[indm]
+    indm -=1
+    # l'initialisation de state n'est pas optimale...
+    nbblock = lnm
+    y=np.zeros(len(x))
+    i=0
+    while i < nbblock:
+        l = range(w)
+        l.reverse()
+        for j in l:   # pour chaque colonne de H_hat
+            y[indx] = lit(path,(indx,state))
+            state = xor(state,y[indx]*H_hat[j],h)
+            indx -=1
+        state = 2*state + message[indm]
+        indm -=1 
+        i +=1
+    return [int(t) for t in y]
+
+    
+
+
+
+def trouve_H_hat(n,m,h):
+    assert h ==7 
+    alpha = float(n)/m
+    assert alpha >= 2 
+    index = min(int(alpha),9)
+    mat = {
+        2 : [71,109],
+        3 : [95, 101, 121],
+        4 : [81, 95, 107, 121],
+        5 : [75, 95, 97, 105, 117],
+        6 : [73, 83, 95, 103, 109, 123],
+        7 : [69, 77, 93, 107, 111, 115, 121],
+        8 : [69, 79, 81, 89, 93, 99, 107, 119],
+        9 : [69, 79, 81, 89, 93, 99, 107, 119, 125]
+        }[index]
+    return(mat, index*m)
+
+
+def stc(x,rho,message):
+    lnm = len(message)
+    (mat,taille_suff) = trouve_H_hat(len(x),len(message),7)
+    x_b = x[:taille_suff]
+    (start,path) = forward(mat,x_b,message,lnm,rho)
+    return (x_b,backward(start,mat,x_b,message,lnm,path),mat)
+
+
+
+
+
+def nbdif(x,y):
+    r,it = 0,0
+    l = len(y)
+    while it < l :
+        if x[it] != y[it] :
+            r +=1
+        it += 1
+    return float(r)/l 
+        
+
+
+
+
+
+def prod(H_hat,lnm,y):
+    (h,w) = int(log(max(H_hat),2))+1, len(H_hat)
+    i=0
+    H =[]
+    V=[0 for _ in range(len(y))]
+    sol=[]
+    while i < lnm: # pour chaque ligne 
+        V=[0 for _ in range(len(y))]    
+        k = max([(i-h+1)*w,0])
+        dec = max([i-h+1,0])
+        for j in xrange(min([i+1,h])): #nbre de blocks presents sur la ligne i
+            for l in xrange(w): # pour chaque collone de H_hat
+                V[k] = bin(H_hat[l],h)[h-i-1+j+dec]
+                k+=1
+                
+        sol.append(np.dot(np.array(V),np.array(y)))
+        i+=1
+        #H += [V]
+    #H = np.array(H)    
+    #y = np.array(y)
+    #print "dot",np.dot(H,y),H.shape
+    #print "sol",sol
+    return sol#list(np.dot(H,y))
+    
+def equiv(x,y): 
+    lx = len(x)
+    assert lx == len(y)
+    i=0
+    while i < lx :
+        if x[i] % 2 != y[i]%2 : 
+            return False
+        i += 1
+    return True
+        
+"""
+################
+
+x = [randint(0,1) for _ in xrange(65000)]
+rho = [randint(1,9) for _ in xrange(65000)]
+message = [randint(0,1) for _ in xrange(26000)]
+
+
+
+#(x_b,y,H_hat) = stc(x,rho,message)
+# x_b est la sous partie de x qui va etre modifiee
+# y est le vecteur des bits modifies
+# H_hat est la sous-matrice retenue qui est embarquee dans H  
+
+#print nbdif(x_b,y)
+
+#print message
+#print x
+#print rho
+#print y
+#message2 = [x%2 for x in prod(H_hat,len(message),y)]
+#print message2 
+print max([message[l]-message2[l] for l in xrange(len(message))])
+print equiv(message,message2)
+
+"""
+count = 0
+
+while count < 100 and eval :
+    lx = randint(500,1000)
+    x = [randint(0,1) for _ in xrange(lx)]
+    rho = [randint(1,9) for _ in xrange(lx)]
+
+    lm = randint(lx/10,lx/2)
+    message = [randint(0,1) for _ in xrange(lm)]
+    (x_b,y,H_hat) = stc(x,rho,message)
+    eval = equiv(message, prod(H_hat,len(message),y))
+    if not (eval):
+        print x
+        print message
+
+    count +=1
+    if count % 10 == 0 :
+        print count
+                     
+print count
+
diff --git a/test.ps b/test.ps
new file mode 100644 (file)
index 0000000..bc1e4ce
--- /dev/null
+++ b/test.ps
@@ -0,0 +1,993 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: start_up
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+       dup 1 exch div /InvScaleFactor exch def
+       scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {   % i j npages
+       /npages exch def
+       /j exch def
+       /i exch def
+       /str 10 string def
+       npages 1 gt {
+               gsave
+                       coordfont setfont
+                       0 0 moveto
+                       (\() show i str cvs show (,) show j str cvs show (\)) show
+               grestore
+       } if
+} bind def
+
+/set_font {
+       findfont exch
+       scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext {                 % width text
+       /text exch def
+       /width exch def
+       gsave
+               width 0 gt {
+                       [] 0 setdash
+                       text stringwidth pop width exch sub text length div 0 text ashow
+               } if
+       grestore
+} def
+
+/boxprim {                             % xcorner ycorner xsize ysize
+               4 2 roll
+               moveto
+               2 copy
+               exch 0 rlineto
+               0 exch rlineto
+               pop neg 0 rlineto
+               closepath
+} bind def
+
+/ellipse_path {
+       /ry exch def
+       /rx exch def
+       /y exch def
+       /x exch def
+       matrix currentmatrix
+       newpath
+       x y translate
+       rx ry scale
+       0 0 1 0 360 arc
+       setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+       [       % layer color sequence - darkest to lightest
+               [0 0 0]
+               [.2 .8 .8]
+               [.4 .8 .8]
+               [.6 .8 .8]
+               [.8 .8 .8]
+       ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+       layercolorseq curlayer 1 sub layerlen mod get
+       aload pop sethsbcolor
+       /nodecolor {nopcolor} def
+       /edgecolor {nopcolor} def
+       /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+       /myupper exch def
+       /mylower exch def
+       curlayer mylower lt
+       curlayer myupper gt
+       or
+       {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 429 616
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 393 580 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% IC
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 131 498 moveto
+79 498 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 79 498 moveto
+73 498 67 492 67 486 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 67 486 moveto
+67 466 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 67 466 moveto
+67 460 73 454 79 454 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 79 454 moveto
+131 454 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 131 454 moveto
+137 454 143 460 143 466 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 143 466 moveto
+143 486 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 143 486 moveto
+143 492 137 498 131 498 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+83.5 481.4 moveto 43 (Image) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+74.5 463.4 moveto 61 (Cover X ) alignedtext
+grestore
+% ED
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 416 moveto
+54 416 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 54 416 moveto
+48 416 42 410 42 404 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 42 404 moveto
+42 384 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 42 384 moveto
+42 378 48 372 54 372 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 54 372 moveto
+158 372 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 158 372 moveto
+164 372 170 378 170 384 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 170 384 moveto
+170 404 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 170 404 moveto
+170 410 164 416 158 416 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+58 399.4 moveto 96 (x= LSB\(7 bits) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+50 381.4 moveto 112 (Edge Detection\)) alignedtext
+grestore
+% IC->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 105.27 453.59 moveto
+105.38 445.12 105.5 435.3 105.61 426.1 curveto
+stroke
+0 0 0 edgecolor
+newpath 109.11 426.14 moveto
+105.73 416.1 lineto
+102.11 426.05 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 109.11 426.14 moveto
+105.73 416.1 lineto
+102.11 426.05 lineto
+closepath stroke
+grestore
+% message
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 225 494 moveto
+173 494 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 173 494 moveto
+167 494 161 488 161 482 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 161 482 moveto
+161 470 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 161 470 moveto
+161 464 167 458 173 458 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 173 458 moveto
+225 458 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 225 458 moveto
+231 458 237 464 237 470 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 237 470 moveto
+237 482 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 237 482 moveto
+237 488 231 494 225 494 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+169 472.4 moveto 60 (message) alignedtext
+grestore
+% encrypt
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 360 412 moveto
+200 412 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 200 412 moveto
+194 412 188 406 188 400 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 188 400 moveto
+188 388 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 188 388 moveto
+188 382 194 376 200 376 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 200 376 moveto
+360 376 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 360 376 moveto
+366 376 372 382 372 388 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 372 388 moveto
+372 400 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 372 400 moveto
+372 406 366 412 360 412 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+195.5 390.4 moveto 169 (m=encryption\(message\)) alignedtext
+grestore
+% message->encrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 216.98 457.8 moveto
+228.09 446.55 242.53 431.93 254.78 419.53 curveto
+stroke
+0 0 0 edgecolor
+newpath 257.54 421.72 moveto
+262.07 412.15 lineto
+252.56 416.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 257.54 421.72 moveto
+262.07 412.15 lineto
+252.56 416.8 lineto
+closepath stroke
+grestore
+% key
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 297 494 moveto
+267 494 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 267 494 moveto
+261 494 255 488 255 482 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 255 482 moveto
+255 470 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 255 470 moveto
+255 464 261 458 267 458 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 267 458 moveto
+297 458 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 297 458 moveto
+303 458 309 464 309 470 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 309 470 moveto
+309 482 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 309 482 moveto
+309 488 303 494 297 494 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+269.5 472.4 moveto 25 (key) alignedtext
+grestore
+% key->encrypt
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 281.56 457.8 moveto
+281.3 447.4 280.98 434.12 280.69 422.38 curveto
+stroke
+0 0 0 edgecolor
+newpath 284.19 422.06 moveto
+280.44 412.15 lineto
+277.19 422.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 284.19 422.06 moveto
+280.44 412.15 lineto
+277.19 422.23 lineto
+closepath stroke
+grestore
+% PI
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 192 moveto
+12 192 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 192 moveto
+6 192 0 186 0 180 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 180 moveto
+0 160 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 0 160 moveto
+0 154 6 148 12 148 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 12 148 moveto
+92 148 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 92 148 moveto
+98 148 104 154 104 160 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 160 moveto
+104 180 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 104 180 moveto
+104 186 98 192 92 192 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+15.5 175.4 moveto 73 (Parameter) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+7.5 157.4 moveto 89 (Instantiation) alignedtext
+grestore
+% PI->ED
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 51.72 192.11 moveto
+51.94 224.2 54.73 285.19 71 334 curveto
+74.35 344.04 79.51 354.25 84.85 363.33 curveto
+stroke
+0 0 0 edgecolor
+newpath 81.97 365.31 moveto
+90.2 371.98 lineto
+87.92 361.63 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 81.97 365.31 moveto
+90.2 371.98 lineto
+87.92 361.63 lineto
+closepath stroke
+grestore
+% STC
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 338 188 moveto
+258 188 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 258 188 moveto
+252 188 246 182 246 176 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 246 176 moveto
+246 164 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 246 164 moveto
+246 158 252 152 258 152 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 258 152 moveto
+338 152 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 338 152 moveto
+344 152 350 158 350 164 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 350 164 moveto
+350 176 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 350 176 moveto
+350 182 344 188 338 188 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+254 166.4 moveto 88 (y= STC\(x,m\)) alignedtext
+grestore
+% encrypt->STC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 293.94 375.96 moveto
+301.81 364.6 310.88 349.25 315 334 curveto
+327.61 287.37 316.21 230.96 306.97 197.92 curveto
+stroke
+0 0 0 edgecolor
+newpath 310.25 196.67 moveto
+304.08 188.06 lineto
+303.54 198.64 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 310.25 196.67 moveto
+304.08 188.06 lineto
+303.54 198.64 lineto
+closepath stroke
+grestore
+% cond
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 193 334 moveto
+80 290 lineto
+193 246 lineto
+306 290 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+163 295.4 moveto 60 (Size of x) alignedtext
+0 0 0 nodecolor
+14 /Times-Roman set_font
+144.5 277.4 moveto 97 ( enough for m) alignedtext
+grestore
+% encrypt->cond
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 264.85 375.88 moveto
+254.56 363.59 240.54 346.83 227.61 331.38 curveto
+stroke
+0 0 0 edgecolor
+newpath 230.08 328.87 moveto
+220.98 323.44 lineto
+224.71 333.36 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 230.08 328.87 moveto
+220.98 323.44 lineto
+224.71 333.36 lineto
+closepath stroke
+grestore
+% emb
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 373 110 moveto
+223 110 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 110 moveto
+217 110 211 104 211 98 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 98 moveto
+211 86 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 211 86 moveto
+211 80 217 74 223 74 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 223 74 moveto
+373 74 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 373 74 moveto
+379 74 385 80 385 86 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 385 86 moveto
+385 98 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 385 98 moveto
+385 104 379 110 373 110 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+218.5 88.4 moveto 159 (stego=embedding\(y,X\)) alignedtext
+grestore
+% STC->emb
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 298 151.91 moveto
+298 142.53 298 130.85 298 120.3 curveto
+stroke
+0 0 0 edgecolor
+newpath 301.5 120.26 moveto
+298 110.26 lineto
+294.5 120.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 301.5 120.26 moveto
+298 110.26 lineto
+294.5 120.26 lineto
+closepath stroke
+grestore
+% end
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 313 36 moveto
+283 36 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 283 36 moveto
+277 36 271 30 271 24 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 271 24 moveto
+271 12 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 271 12 moveto
+271 6 277 0 283 0 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 283 0 moveto
+313 0 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 313 0 moveto
+319 0 325 6 325 12 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 325 12 moveto
+325 24 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 325 24 moveto
+325 30 319 36 313 36 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+285 14.4 moveto 26 (end) alignedtext
+grestore
+% emb->end
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 298 73.71 moveto
+298 65.46 298 55.54 298 46.36 curveto
+stroke
+0 0 0 edgecolor
+newpath 301.5 46.08 moveto
+298 36.08 lineto
+294.5 46.08 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 301.5 46.08 moveto
+298 36.08 lineto
+294.5 46.08 lineto
+closepath stroke
+grestore
+% start
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 164 572 moveto
+134 572 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 572 moveto
+128 572 122 566 122 560 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 560 moveto
+122 548 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 122 548 moveto
+122 542 128 536 134 536 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 134 536 moveto
+164 536 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 164 536 moveto
+170 536 176 542 176 548 curveto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 176 548 moveto
+176 560 lineto
+stroke
+1 setlinewidth
+0 0 0 nodecolor
+newpath 176 560 moveto
+176 566 170 572 164 572 curveto
+stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+132 550.4 moveto 34 (start) alignedtext
+grestore
+% start->IC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 138.79 535.91 moveto
+133.94 527.3 127.99 516.75 122.44 506.92 curveto
+stroke
+0 0 0 edgecolor
+newpath 125.47 505.16 moveto
+117.51 498.17 lineto
+119.37 508.6 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 125.47 505.16 moveto
+117.51 498.17 lineto
+119.37 508.6 lineto
+closepath stroke
+grestore
+% start->message
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 160.6 535.91 moveto
+166.86 526.13 174.72 513.87 181.7 502.99 curveto
+stroke
+0 0 0 edgecolor
+newpath 184.84 504.57 moveto
+187.29 494.26 lineto
+178.95 500.79 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 184.84 504.57 moveto
+187.29 494.26 lineto
+178.95 500.79 lineto
+closepath stroke
+grestore
+% start->key
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 176.28 538.49 moveto
+195.78 527.35 222.6 511.9 246 498 curveto
+246.09 497.95 246.18 497.89 246.27 497.84 curveto
+stroke
+0 0 0 edgecolor
+newpath 248.14 500.8 moveto
+254.92 492.65 lineto
+244.54 494.79 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 248.14 500.8 moveto
+254.92 492.65 lineto
+244.54 494.79 lineto
+closepath stroke
+grestore
+% start->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 121.68 550.56 moveto
+82.23 543.9 14 525.26 14 476 curveto
+14 476 14 476 14 290 curveto
+14 258.89 25.75 225.26 36.19 201.54 curveto
+stroke
+0 0 0 edgecolor
+newpath 39.42 202.89 moveto
+40.39 192.34 lineto
+33.06 199.98 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 39.42 202.89 moveto
+40.39 192.34 lineto
+33.06 199.98 lineto
+closepath stroke
+grestore
+% ED->cond
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 124.45 371.94 moveto
+134.29 360.18 146.73 345.32 158.29 331.49 curveto
+stroke
+0 0 0 edgecolor
+newpath 161.25 333.41 moveto
+164.98 323.5 lineto
+155.88 328.92 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 161.25 333.41 moveto
+164.98 323.5 lineto
+155.88 328.92 lineto
+closepath stroke
+grestore
+% cond->PI
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 157.42 259.72 moveto
+135.48 241.04 107.5 217.23 85.88 198.83 curveto
+stroke
+0 0 0 edgecolor
+newpath 88.11 196.13 moveto
+78.22 192.32 lineto
+83.57 201.46 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 88.11 196.13 moveto
+78.22 192.32 lineto
+83.57 201.46 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+119 215.4 moveto 19 (No) alignedtext
+grestore
+% cond->STC
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 221.97 256.89 moveto
+238.81 237.64 259.73 213.73 275.36 195.87 curveto
+stroke
+0 0 0 edgecolor
+newpath 278.19 197.96 moveto
+282.14 188.13 lineto
+272.92 193.35 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 278.19 197.96 moveto
+282.14 188.13 lineto
+272.92 193.35 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /Times-Roman set_font
+262 215.4 moveto 23 (Yes) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 429 616
+end
+restore
+%%EOF