\newcommand{\DrawFrame} { \draw[fill=TikZColorFill,fill opacity=1, thick] (0,0) rectangle (10,8); % Opacity } \newcommand{\DrawFrameBorder} { \draw[thick] (0,0) rectangle ++(10,8); } \newcommand{\DrawRandomBlocks} { \foreach \x in {1,2,...,14} \pgfmathparse{round((rand+1)/2*9) } \let\roundX\pgfmathresult \pgfmathparse{round((rand+1)/2*7) } \let\roundY\pgfmathresult \draw[refreshBlock] (\roundX,\roundY) rectangle ++(1cm,1cm); } \begin{tikzpicture}[use Hobby shortcut,closed=true] \def\TikzFrameScale{.3} \tikzstyle{FrameLabels} =[text centered, anchor=center] \tikzstyle{labels} =[text centered, font=\footnotesize] \tikzstyle{arrow} =[draw,-latex, thick] \tikzstyle{refreshBlock} =[draw, fill=TikZColorBlock1] \tikzstyle{refreshBlock} =[fill=TikZColorFillDark,draw=TikZColorFillDark] \def\xfshift{8cm} \def\yfshift{.2cm} \def\errorPosX{3} \def\errorPosY{5} \begin{scope} \begin{scope} \begin{scope}[scale=\TikzFrameScale, yshift=3*\yfshift, xshift=3*\xfshift, yslant=\TikZyslant,xscale=\TikZxscale] \DrawFrame \coordinate (Center) at (5,3.5); \node[FrameLabels] (FrameLabel) at (12cm/2,-1.8cm) { $f_{t+3}$ }; \DrawRandomBlocks \coordinate (endPoint) at (9,0); \DrawFrameBorder \end{scope} \begin{scope}[scale=\TikzFrameScale, yshift=2*\yfshift, xshift=2*\xfshift, yslant=\TikZyslant,xscale=\TikZxscale] \DrawFrame \coordinate (Center) at (5,3.5); \DrawRandomBlocks \DrawFrameBorder \end{scope} \node[FrameLabels] at (Center |- FrameLabel) { $f_{t+2}$ }; \begin{scope}[scale=\TikzFrameScale, yshift=1*\yfshift, xshift=1*\xfshift, yslant=\TikZyslant,xscale=\TikZxscale] \DrawFrame \coordinate (Center) at (5,3.5); \DrawRandomBlocks \DrawFrameBorder \end{scope} \node[FrameLabels] at (Center |- FrameLabel) { $f_{t+1}$ }; \begin{scope}[scale=\TikzFrameScale, yshift=0*\yfshift, xshift=0*\xfshift, yslant=\TikZyslant,xscale=\TikZxscale] \DrawFrame \coordinate (Center) at (5,3.5); \DrawRandomBlocks \coordinate (startPoint) at (0,0); \DrawFrameBorder \end{scope} \node[FrameLabels] at (Center |- FrameLabel) { $f_{t}$ }; \path[draw, -latex] ($(FrameLabel)+(-8.8,-.4)$) -- ($(FrameLabel)+(1.2,-.4)$) node[below] {t} node[below, midway, yshift=-4] {(a) Random intra-refresh}; \end{scope} \begin{scope}[yshift=-5cm] \begin{scope}[scale=\TikzFrameScale, yshift=3*\yfshift, xshift=3*\xfshift, yslant=\TikZyslant,xscale=\TikZxscale] \DrawFrame \coordinate (Center) at (5,3.5); \node[FrameLabels] (FrameLabel) at (12cm/2,-1.8cm) { $f_{t+3}$ }; \foreach \x in {2,...,8} \foreach \y in {4,...,6} \draw[refreshBlock] (\x,\y) rectangle ++(1cm,1cm); \draw[refreshBlock] (2,3) rectangle ++(1cm,1cm); \draw[refreshBlock] (3,3) rectangle ++(1cm,1cm); \draw[refreshBlock] (6,3) rectangle ++(1cm,1cm); \draw[refreshBlock] (7,3) rectangle ++(1cm,1cm); \begin{scope}[scale=.8, yshift=5.3cm, xshift=5.8cm] \draw[thick] (-3.5,0.5) .. (-3,2.5) .. (-1,3.5).. (1.5,3).. (4,3.5).. (5,2.5).. (5,0.5) ..(2.5,-2).. (0,-0.5).. (-3,-2).. (-3.5,0.5); \end{scope} \coordinate (endPoint) at (9,0); \DrawFrameBorder \end{scope} \begin{scope}[scale=\TikzFrameScale, yshift=2*\yfshift, xshift=2*\xfshift, yslant=\TikZyslant,xscale=\TikZxscale] \DrawFrame \coordinate (Center) at (5,3.5); \foreach \x in {2,...,6} \foreach \y in {4,...,6} \draw[refreshBlock] (\x,\y) rectangle ++(1cm,1cm); \draw[refreshBlock] (5,3) rectangle ++(1cm,1cm); \draw[refreshBlock] (6,3) rectangle ++(1cm,1cm); \draw[refreshBlock] (7,4) rectangle ++(1cm,1cm); \draw[refreshBlock] (7,5) rectangle ++(1cm,1cm); \begin{scope}[scale=.8, yshift=5.3cm, xshift=4.8cm] \draw[thick] (-3,0.5) .. (-2.5,2.5) .. (-.8,3.5).. (1.5,3).. (4.2,2.8).. (5,2.5).. (5,0.5) ..(2.5,-2).. (0,-0.5).. (-1,-.5).. (-3,0.5); \end{scope} \DrawFrameBorder \end{scope} \node[FrameLabels] at (Center |- FrameLabel) { $f_{t+2}$ }; \begin{scope}[scale=\TikzFrameScale, yshift=1*\yfshift, xshift=1*\xfshift, yslant=\TikZyslant,xscale=\TikZxscale] \DrawFrame \coordinate (Center) at (5,3.5); \foreach \x in {2,...,6} \foreach \y in {3,...,5} \draw[refreshBlock] (\x,\y) rectangle ++(1cm,1cm); \draw[refreshBlock] (5,2) rectangle ++(1cm,1cm); \draw[refreshBlock] (6,2) rectangle ++(1cm,1cm); \draw[refreshBlock] (7,3) rectangle ++(1cm,1cm); \draw[refreshBlock] (7,4) rectangle ++(1cm,1cm); \begin{scope}[scale=.8, yshift=4.3cm, xshift=4.8cm] \draw[thick] (-3,0.5) .. (-2.5,2.5) .. (-.8,3.5).. (1.5,3).. (4.2,2.8).. (5,2.5).. (5,0.5) ..(2.5,-2).. (0,-0.5).. (-1,-.5).. (-3,0.5); \end{scope} \DrawFrameBorder \end{scope} \node[FrameLabels] at (Center |- FrameLabel) { $f_{t+1}$ }; \node[labels, anchor=center] at (-.8, 2.5) (RoiLabel) {\small ROI}; \begin{scope}[scale=\TikzFrameScale, yshift=0*\yfshift, xshift=0*\xfshift, yslant=\TikZyslant,xscale=\TikZxscale] \DrawFrame \coordinate (Center) at (5,3.5); \foreach \x in {1,...,7} \foreach \y in {2,...,4} \draw[refreshBlock] (\x,\y) rectangle ++(1cm,1cm); \draw[refreshBlock] (1,1) rectangle ++(1cm,1cm); \draw[refreshBlock] (2,1) rectangle ++(1cm,1cm); \draw[refreshBlock] (5,1) rectangle ++(1cm,1cm); \draw[refreshBlock] (6,1) rectangle ++(1cm,1cm); \begin{scope}[scale=.8, yshift=3.3cm, xshift=4.8cm] \draw[thick] (-3.5,0.5) .. (-3,2.5) .. (-1,3.5).. (1.5,3).. (4,3.5).. (5,2.5).. (5,0.5) ..(2.5,-2).. (0,-0.5).. (-3,-2).. (-3.5,0.5); \end{scope} \path[draw,-latex] (RoiLabel) -- (2.1,5.3); \coordinate (startPoint) at (0,0); \DrawFrameBorder \end{scope} \node[FrameLabels] at (Center |- FrameLabel) { $f_{t}$ }; \path[draw, -latex] ($(FrameLabel)+(-8.8,-.4)$) -- ($(FrameLabel)+(1.2,-.4)$) node[below] {t} node[below, midway, yshift=-4] {(b) ROI based intra-refresh}; \end{scope} \node[refreshBlock, anchor=center, minimum size=.5cm] (RefreshExample) at (0, -7.5) {}; \node[labels, anchor=center, right=.1 of RefreshExample] {\small Intra-coded blocks}; \path (-1.4,-3) rectangle ++(12.3,2); \end{scope} \end{tikzpicture}