\begin{figure}[H]
\centering
\begin{tikzpicture} 

\foreach \x in {0,...,2}{
\begin{scope}[shift={(\x*1.75,\x)}]
\draw[thick, ->] (0, 0) -- ( 0.5, 0 );
\draw[thick](0.5,-0.25) rectangle +(0.5, 0.5);
\draw node[align=center] at (0.75,0){$H_1$};
\draw[thick, ->] (1, 0) -- ( 1.25, 0 );
\draw node[align=center] at (1.5,0){$\downarrow^2$};
\draw[thick](1.25,-0.25) rectangle +(0.5, 0.5);

\draw[thick, -] (0.25, 0) -- ( 0.25, 1 );
\draw[thick, ->] (0.25, 1) -- ( 0.5, 1 );
\draw[thick](0.5, 0.75) rectangle +(0.5, 0.5);
\draw node[align=center] at (0.75,1){$H_0$};
\draw[thick, ->] (1, 1) -- ( 1.25, 1 );
\draw node[align=center] at (1.5,1){$\downarrow^2$};
\draw[thick](1.25, 0.75) rectangle +(0.5, 0.5);
\end{scope}
}


\draw node[align=center] at (3.15 ,4){Forward Transform};

\draw node[align=center] at (10.75 ,4){Inverse Transform};

\foreach \x in {0,...,2}{
\begin{scope}[shift={(12-\x*2.25,\x)}]

\draw node[align=center] at (0.25,1){$\uparrow_2$};
\draw[thick](0, 0.75) rectangle +(0.5, 0.5);
\draw[thick, ->] (0.5, 1) -- +( 0.25, 0 );
\draw node[align=center] at (1,1){$G_0$};
\draw[thick](0.75, 0.75) rectangle +(0.5, 0.5);
\draw[thick, -] (1.25, 1) -- +( 0.5, 0 );
\draw[thick, ->] (1.75, 1) -- +( 0, -0.75 );

\draw node[align=center] at (0.25,0){$\uparrow_2$};
\draw[thick](0, -0.25) rectangle +(0.5, 0.5);
\draw[thick, ->] (0.5, 0) -- +( 0.25, 0 );
\draw node[align=center] at (1,0){$G_1$};
\draw[thick](0.75, -0.25) rectangle +(0.5, 0.5);
\draw[thick, ->] (1.25, 0) -- +( 0.25, 0 );
\draw[thick]( 1.75, 0 ) circle ( 0.25);
\draw node[align=center] at( 1.75, 0 ) {$+$};
\draw[thick, ->] (2, 0) -- +( 0.25, 0 );

\end{scope}
}


\draw[dashed]( 6.375 ,-0.5 ) -- +( 0, 0.5 );

\draw[thick, ->](  1.75,0 ) -- +( 10.25, 0 );
\draw node[align=center] at( 6.375 , 0.20 ) {\footnotesize\textit{Level 1 Coefficients}};

\draw[dashed]( 6.375 , 0.5 ) -- +( 0, 0.5 );

\draw[thick, ->](  3.5,1 ) -- +( 6.25, 0 );
\draw node[align=center] at( 6.375 , 1.20 ) {\footnotesize\textit{Level 2 Coefficients}};
\draw[dashed]( 6.375 , 1.5 ) -- +( 0, 0.5 );

\draw[thick, ->](  5.25,2 ) -- +( 2.25, 0 );
\draw[thick, ->](  5.25,3 ) -- +( 2.25, 0 );

\draw[dashed]( 6.375 , 3 ) -- +( 0, 1.5 );

\draw node[text width=2cm, align=center] at( 6.375 , 2.5 ) {\footnotesize\textit{Level 3\\Coefficients}};

\end{tikzpicture}
\caption{A three level binary discrete wavelet transform and its inverse}
\label{fig:threelevelbdwt}
\end{figure}
