convolution-linear.tex 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. \newcommand{\filtersize}{3}
  2. \newcommand{\filterx}{8}
  3. \newcommand{\filtery}{2.2}
  4. \newcommand{\filteroffset}{1}
  5. \newcommand{\filterxres}{12}
  6. \newcommand{\imagesize}{7}
  7. \newcommand{\imagex}{0}
  8. \newcommand{\imagey}{0}
  9. \newcommand{\imageoffset}{2}
  10. \newcommand{\outx}{16}
  11. \newcommand{\outy}{0}
  12. \newcommand{\outoffset}{2}
  13. \newcommand{\percx}{1}
  14. \newcommand{\percy}{2}
  15. \begin{tikzpicture}[scale=0.6]
  16. \tikzstyle{point}=[draw=none,inner sep=0pt]
  17. % draw perceptive field
  18. \node (p1)[point] at (\imagex+\percx,
  19. \imagey+\percy+\percx*\imageoffset/\imagesize) {};
  20. \node (p2)[point] at (\imagex+\percx+\filtersize,
  21. \imagey+\percy+\percx*\imageoffset/\imagesize+\filtersize*\imageoffset/\imagesize) {};
  22. \node (p3)[point,blue] at (\imagex+\percx+\filtersize,
  23. \imagey+\percy+\filtersize+\percx*\imageoffset/\imagesize+\filtersize*\imageoffset/\imagesize) {};
  24. \node (p4)[point] at (\imagex+\percx,
  25. \imagey+\percy+\filtersize+\percx*\imageoffset/\imagesize) {};
  26. \draw[fill=gray] (p1.center) -- (p2.center) -- (p3.center) -- (p4.center) -- (p1.center);
  27. % draw output point
  28. \node (o1)[point] at (\outx+\percx+1,
  29. \outy+\percy+\percx*\outoffset/\imagesize+1+1*\outoffset/\imagesize) {};
  30. \node (o2)[point] at (\outx+\percx+2,
  31. \outy+\percy+\percx*\outoffset/\imagesize+1*\outoffset/\imagesize+1+1*\outoffset/\imagesize) {};
  32. \node (o3)[point,blue] at (\outx+\percx+2,
  33. \outy+\percy+1+\percx*\outoffset/\imagesize+1*\outoffset/\imagesize+1+1*\outoffset/\imagesize) {};
  34. \node (o4)[point] at (\outx+\percx+1,
  35. \outy+\percy+2+\percx*\outoffset/\imagesize+1*\outoffset/\imagesize) {};
  36. \draw[fill=gray] (o1.center) -- (o2.center) -- (o3.center) -- (o4.center) -- (o1.center);
  37. % draw image
  38. \foreach \x in {0,...,\imagesize}
  39. {
  40. \draw (\imagex+\x, \imagey+\x*\imageoffset/\imagesize) -- (\imagex+\x, \imagey+\imagesize+\x*\imageoffset/\imagesize);
  41. \draw (\imagex, \imagey+\x) -- (\imagex+\imagesize, \imagey+\x+\imageoffset);
  42. }
  43. % draw filter
  44. \foreach \x in {0,...,\filtersize}
  45. {
  46. \draw (\filterx+\x, \filtery+\x*\filteroffset/\filtersize) -- (\filterx+\x, \filtery+\filtersize+\x*\filteroffset/\filtersize);
  47. \draw (\filterx, \filtery+\x) -- (\filterx+\filtersize, \filtery+\x+\filteroffset);
  48. }
  49. % draw filter result
  50. \foreach \x in {0,...,\filtersize}
  51. {
  52. \draw (\filterxres+\x, \filtery+\x*\filteroffset/\filtersize) -- (\filterxres+\x, \filtery+\filtersize+\x*\filteroffset/\filtersize);
  53. \draw (\filterxres, \filtery+\x) -- (\filterxres+\filtersize, \filtery+\x+\filteroffset);
  54. }
  55. % draw out
  56. \foreach \x in {0,...,\imagesize}
  57. {
  58. \draw (\outx+\x, \outy+\x*\outoffset/\imagesize) -- (\outx+\x, \outy+\imagesize+\x*\outoffset/\imagesize);
  59. \draw (\outx, \outy+\x) -- (\outx+\imagesize, \outy+\x+\outoffset);
  60. }
  61. \node at (\imagex + \imagesize/2,\imagey + \imagesize + 2) {\Huge $I \in \mathbb{R}^{\imagesize \times \imagesize}$};
  62. \node[text width=4cm, align=center] at (\filterx + \filtersize/2,\filtery + \filtersize - 4) {\large Filter kernel\\$F \in \mathbb{R}^{\filtersize \times \filtersize}$};
  63. \node[text width=4cm, align=center] at (\filterx + 4 + \filtersize/2,\filtery + \filtersize - 4) {\large Result of point-wise multiplication};
  64. \node at (\outx + \imagesize/2,\outy + \imagesize + 2) {\Huge $I' \in \mathbb{R}^{\imagesize \times \imagesize}$};
  65. % Start image (left to right, top to bottom)
  66. \node[draw=none] at (0.5, 6.6) {\large 104};
  67. \node[draw=none] at (1.5, 6.9) {\large 116};
  68. \node[draw=none] at (2.5, 7.2) {\large 116};
  69. \node[draw=none] at (3.5, 7.5) {\large 112};
  70. \node[draw=none] at (4.5, 7.8) {\large 58};
  71. \node[draw=none] at (5.5, 8.1) {\large 47};
  72. \node[draw=none] at (6.5, 8.4) {\large 47};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  73. \node[draw=none] at (0.5, 5.6) {\large 109};
  74. \node[draw=none] at (1.5, 5.9) {\large 97};
  75. \node[draw=none] at (2.5, 6.2) {\large 114};
  76. \node[draw=none] at (3.5, 6.5) {\large 116};
  77. \node[draw=none] at (4.5, 6.8) {\large 105};
  78. \node[draw=none] at (5.5, 7.1) {\large 110};
  79. \node[draw=none] at (6.5, 7.4) {\large 45};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  80. \node[draw=none] at (0.5, 4.6) {\large 116};
  81. \node[draw=none] at (1.5, 4.9) {\large 104};
  82. \node[draw=none] at (2.5, 5.2) {\large 111};
  83. \node[draw=none] at (3.5, 5.5) {\large 109};
  84. \node[draw=none] at (4.5, 5.8) {\large 97};
  85. \node[draw=none] at (5.5, 6.1) {\large 46};
  86. \node[draw=none] at (6.5, 6.4) {\large 100};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  87. \node[draw=none] at (0.5, 3.6) {\large 101};
  88. \node[draw=none] at (1.5, 3.9) {\large 47};
  89. \node[draw=none] at (2.5, 4.2) {\large 109};
  90. \node[draw=none] at (3.5, 4.5) {\large 97};
  91. \node[draw=none] at (4.5, 4.8) {\large 115};
  92. \node[draw=none] at (5.5, 5.1) {\large 116};
  93. \node[draw=none] at (6.5, 5.4) {\large 101};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  94. \node[draw=none] at (0.5, 2.6) {\large 114};
  95. \node[draw=none] at (1.5, 2.9) {\large 47};
  96. \node[draw=none] at (2.5, 3.2) {\large 99};
  97. \node[draw=none] at (3.5, 3.5) {\large 97};
  98. \node[draw=none] at (4.5, 3.8) {\large 116};
  99. \node[draw=none] at (5.5, 4.1) {\large 99};
  100. \node[draw=none] at (6.5, 4.4) {\large 97};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  101. \node[draw=none] at (0.5, 1.6) {\large 116};
  102. \node[draw=none] at (1.5, 1.9) {\large 99};
  103. \node[draw=none] at (2.5, 2.2) {\large 97};
  104. \node[draw=none] at (3.5, 2.5) {\large 116};
  105. \node[draw=none] at (4.5, 2.8) {\large 46};
  106. \node[draw=none] at (5.5, 3.1) {\large 112};
  107. \node[draw=none] at (6.5, 3.4) {\large 104};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  108. \node[draw=none] at (0.5, 0.6) {\large 112};
  109. \node[draw=none] at (1.5, 0.9) {\large 63};
  110. \node[draw=none] at (2.5, 1.2) {\large 118};
  111. \node[draw=none] at (3.5, 1.5) {\large 61};
  112. \node[draw=none] at (4.5, 1.8) {\large 49};
  113. \node[draw=none] at (5.5, 2.1) {\large 46};
  114. \node[draw=none] at (6.5, 2.4) {\large 48};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  115. % Filter
  116. \node[draw=none] at ( 8.5, 4.8) {\large 9};
  117. \node[draw=none] at ( 9.5, 5.1) {\large -3};
  118. \node[draw=none] at (10.5, 5.4) {\large -1};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  119. \node[draw=none] at ( 8.5, 3.8) {\large -6};
  120. \node[draw=none] at ( 9.5, 4.1) {\large 5};
  121. \node[draw=none] at (10.5, 4.4) {\large 3};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  122. \node[draw=none] at ( 8.5, 2.8) {\large 2};
  123. \node[draw=none] at ( 9.5, 3.1) {\large -8};
  124. \node[draw=none] at (10.5, 3.4) {\large 0};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  125. % Result
  126. \node[draw=none] at (12.5, 4.8) {\large 936};
  127. \node[draw=none] at (13.5, 5.1) {\large -333};
  128. \node[draw=none] at (14.5, 5.4) {\large -109};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  129. \node[draw=none] at (12.5, 3.8) {\large -282};
  130. \node[draw=none] at (13.5, 4.1) {\large 545};
  131. \node[draw=none] at (14.5, 4.4) {\large 291};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  132. \node[draw=none] at (12.5, 2.8) {\large 94};
  133. \node[draw=none] at (13.5, 3.1) {\large -792};
  134. \node[draw=none] at (14.5, 3.4) {\large 0};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  135. % Result image (left to right, top to bottom)
  136. % [[ -4 -254 -498 -662 -849 -642 -187]
  137. \node[draw=none] at (16.5, 6.6) {\large -4};
  138. \node[draw=none] at (17.5, 6.9) {\large -254};
  139. \node[draw=none] at (18.5, 7.2) {\large -498};
  140. \node[draw=none] at (19.5, 7.5) {\large -662};
  141. \node[draw=none] at (20.5, 7.8) {\large -849};
  142. \node[draw=none] at (21.5, 8.1) {\large -642};
  143. \node[draw=none] at (22.5, 8.4) {\large 187};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  144. % [-520 45 240 211 388 215 -861]
  145. \node[draw=none] at (16.5, 5.6) {\large-520};
  146. \node[draw=none] at (17.5, 5.9) {\large 45};
  147. \node[draw=none] at (18.5, 6.2) {\large 240};
  148. \node[draw=none] at (19.5, 6.5) {\large 211};
  149. \node[draw=none] at (20.5, 6.8) {\large 388};
  150. \node[draw=none] at (21.5, 7.1) {\large 215};
  151. \node[draw=none] at (22.5, 7.4) {\large-861};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  152. % [-340 559 -105 185 -138 -180 503]
  153. \node[draw=none] at (16.5, 4.6) {\large -340};
  154. \node[draw=none] at (17.5, 4.9) {\large 559};
  155. \node[draw=none] at (18.5, 5.2) {\large -105};
  156. \node[draw=none] at (19.5, 5.5) {\large 185};
  157. \node[draw=none] at (20.5, 5.8) {\large -138};
  158. \node[draw=none] at (21.5, 6.1) {\large -180};
  159. \node[draw=none] at (22.5, 6.4) {\large 503};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  160. % [-718 429 350 173 251 268 -655]
  161. \node[draw=none] at (16.5, 3.6) {\large -718};
  162. \node[draw=none] at (17.5, 3.9) {\large 429};
  163. \node[draw=none] at (18.5, 4.2) {\large 350};
  164. \node[draw=none] at (19.5, 4.5) {\large 173};
  165. \node[draw=none] at (20.5, 4.8) {\large 251};
  166. \node[draw=none] at (21.5, 5.1) {\large 268};
  167. \node[draw=none] at (22.5, 5.4) {\large -655};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  168. % [-567 -53 -75 80 571 -128 24]
  169. \node[draw=none] at (16.5, 2.6) {\large -567};
  170. \node[draw=none] at (17.5, 2.9) {\large -53};
  171. \node[draw=none] at (18.5, 3.2) {\large -75};
  172. \node[draw=none] at (19.5, 3.5) {\large 80};
  173. \node[draw=none] at (20.5, 3.8) {\large 571};
  174. \node[draw=none] at (21.5, 4.1) {\large -128};
  175. \node[draw=none] at (22.5, 4.4) {\large 24};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  176. % [-408 596 -550 368 26 976 156]
  177. \node[draw=none] at (16.5, 1.6) {\large -408};
  178. \node[draw=none] at (17.5, 1.9) {\large 596};
  179. \node[draw=none] at (18.5, 2.2) {\large -550};
  180. \node[draw=none] at (19.5, 2.5) {\large 368};
  181. \node[draw=none] at (20.5, 2.8) {\large 26};
  182. \node[draw=none] at (21.5, 3.1) {\large 976};
  183. \node[draw=none] at (22.5, 3.4) {\large 156};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  184. % [ 302 647 879 223 811 54 660]]
  185. \node[draw=none] at (16.5, 0.6) {\large 302};
  186. \node[draw=none] at (17.5, 0.9) {\large 647};
  187. \node[draw=none] at (18.5, 1.2) {\large 879};
  188. \node[draw=none] at (19.5, 1.5) {\large 223};
  189. \node[draw=none] at (20.5, 1.8) {\large 811};
  190. \node[draw=none] at (21.5, 2.1) {\large 54};
  191. \node[draw=none] at (22.5, 2.4) {\large 660};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  192. \end{tikzpicture}