\newcommand{\scale}{.4} \begin{tikzpicture}[auto, on grid, scale=\scale] \def\BlockSize{8} \tikzstyle{TextStyle}=[text centered, font=\Huge] \tikzstyle{PU} =[draw, scale=\scale, minimum height=\BlockSize cm, minimum width=\BlockSize cm, font=\Huge] \tikzstyle{Neighbour} =[draw, scale=\scale, minimum height=1 cm, minimum width=\BlockSize cm, font=\Large, fill=gray!60] \tikzstyle{Arrow} =[-latex,thick, draw=black] \tikzstyle{Pixel} =[circle, rounded corners ,fill=lightgray, thick, scale=0.3] \tikzstyle{PixelNeighbour} =[Pixel, fill=gray] \node[PU, anchor=north west] at (0,0) { }; % PU % \node[Neighbour, anchor=south west] at (0,0) { top }; % Top % \node[Neighbour, anchor=south west] at (\BlockSize,0) { top-right }; % Top-right % \node[Neighbour, anchor=south east, rotate=90] at (0,0) { left }; % Left % \node[Neighbour, anchor=south east, rotate=90] at (0,-\BlockSize) { bottom-left }; % Bottom-left % \draw[Neighbour, scale=1/\scale] (0,0) rectangle ++(-1cm,1cm); % Pixels \foreach \x in {0,1,...,7} \foreach \y in {-1,...,-8} { \node at (\x+0.5,\y+0.5) [Pixel]() {}; } \foreach \x in {-1} \foreach \y in {0,...,-9} { \node at (\x+0.5,\y+0.5) [PixelNeighbour]() {}; } \foreach \x in {0,1,...,12} \foreach \y in {0} { \node at (\x+0.5,\y+0.5) [PixelNeighbour]() {}; } \path[Arrow, shorten >= 48 pt] (1+.5,.5) -- ++( -3 , -\BlockSize ); \path[Arrow, shorten >= 25 pt] (2+.5,.5) -- ++( -3 , -\BlockSize ); \foreach \x in {3,...,10} { \path[Arrow] (\x +.5,.5) -- ++(-3, -\BlockSize); } \node at (15,-6) [scale=.4] (PredLabel) {Predicted Pixels}; \node[below=.3cm of PredLabel, scale=.4] (RefLabel) {Reference Pixels}; \node[Pixel, left=.8 cm of PredLabel] (Pred) {}; \node[PixelNeighbour, left=.8 cm of RefLabel] (Ref) {}; \end{tikzpicture}