How to Specify two level row and column labels of a matrix by braces?

Here is my version. With some tweaking, it can be made efficient.

\begin{tikzpicture}
\matrix [matrix of math nodes,left delimiter=(,right delimiter=),row sep=0.5cm,column sep=0.5cm] (m) {
1&2&3&4 \\
1&2&3&4 \\
1&2&3&4 \\
1&2&3&4 \\};
\draw[dashed] ($0.5*(m-1-2.north east)+0.5*(m-1-3.north west)$) --
      ($0.5*(m-4-2.south east)+0.5*(m-4-3.south west)$);
\draw[dashed] ($0.5*(m-2-1.south west)+0.5*(m-3-1.north west)$) --
      ($0.5*(m-2-4.south east)+0.5*(m-3-4.north east)$);
\node[above=10pt of m-1-1] (top-1) {a};
\node[above=10pt of m-1-2] (top-2) {b};
\node[above=10pt of m-1-3] (top-3) {c};
\node[above=10pt of m-1-4] (top-4) {d};

\node[left=12pt of m-1-1] (left-1) {$\alpha$};
\node[left=12pt of m-2-1] (left-2) {$\beta$};
\node[left=12pt of m-3-1] (left-3) {$\gamma$};
\node[left=12pt of m-4-1] (left-4) {$\delta$};

\node[rectangle,above delimiter=\{] (del-top-1) at ($0.5*(top-1.south) +0.5*(top-2.south)$) {\tikz{\path (top-1.south west) rectangle (top-2.north east);}};
\node[above=10pt] at (del-top-1.north) {$A$};
\node[rectangle,above delimiter=\{] (del-top-2) at ($0.5*(top-3.south) +0.5*(top-4.south)$) {\tikz{\path (top-3.south west) rectangle (top-4.north east);}};
\node[above=10pt] at (del-top-2.north) {$B$};

\node[rectangle,left delimiter=\{] (del-left-1) at ($0.5*(left-1.east) +0.5*(left-2.east)$) {\tikz{\path (left-1.north east) rectangle (left-2.south west);}};
\node[left=10pt] at (del-left-1.west) {$C$};
\node[rectangle,left delimiter=\{] (del-left-2) at ($0.5*(left-3.east) +0.5*(left-4.east)$) {\tikz{\path (left-3.north east) rectangle (left-4.south west);}};
\node[left=10pt] at (del-left-2.west) {$D$};

\end{tikzpicture}

The result is

matrix

Answer to comment : One way to incorporate the math signs is to place everything in nodes. You could also place the matrices within boxes and include them in an equation, but this approach is tricky and delicate. As an example, just insert the following code after my initial code, before the \end{tikzpicture} :

\node[right=of m] (op) {$\times$};

\matrix [right=of op,matrix of math nodes,left delimiter=(,right delimiter=),row sep=0.5cm,column sep=0.5cm] (n) {
1&2 \\
1&2 \\
};

\node[above=10pt of n-1-1]  {a};
\node[above=10pt of n-1-2]  {b};

\node[left=12pt of n-1-1]  {$\alpha$};
\node[left=12pt of n-2-1]  {$\beta$};

I have used the following code. It works well in the first Matrix, but it does not work for the second part of the Picture. I have a problem that matrices are overlapped and the equal sign and multiplication sign as well. Thanks in advance for any suggestions.

 \documentclass{article}
 \usepackage{tikz}
 \usetikzlibrary{matrix,decorations.pathreplacing, calc, positioning}
 \begin{document}

\begin{tikzpicture}
\matrix [matrix of math nodes,left delimiter=(,right delimiter=),row sep=0.5cm,column sep=0.5cm] (m) {
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\};

\draw[dashed] ($0.5*(m-1-3.north east)+0.5*(m-1-4.north west)$) --
     ($0.5*(m-6-4.south east)+0.5*(m-6-3.south west)$);

\draw[dashed] ($0.5*(m-3-1.south west)+0.5*(m-4-1.north west)$) --
 ($0.5*(m-3-6.south east)+0.5*(m-4-6.north east)$);

\node[above=10pt of m-1-1] (top-1) {$G_1$};
\node[above=10pt of m-1-2] (top-2) {$G_2$};
\node[above=10pt of m-1-3] (top-3) {$G_3$};
\node[above=10pt of m-1-4] (top-4) {$G_1$};
\node[above=10pt of m-1-5] (top-5) {$G_2$};
\node[above=10pt of m-1-6] (top-6) {$G_3$};

\node[left=12pt of m-1-1] (left-1) {$G_1$};
\node[left=12pt of m-2-1] (left-2) {$G_2$};
\node[left=12pt of m-3-1] (left-3) {$G_3$};
\node[left=12pt of m-4-1] (left-4) {$G_1$};
\node[left=12pt of m-5-1] (left-5) {$G_2$};
\node[left=12pt of m-6-1] (left-6) {$G_3$};

\node[rectangle,above delimiter=\{] (del-top-1) at ($0.5*(top-1.south) +0.5*(top-3.south)$) {\tikz{\path (top-1.south west) rectangle (top-3.north east);}};
\node[above=10pt] at (del-top-1.north) {$E_1$};
\node[rectangle,above delimiter=\{] (del-top-2) at ($0.5*(top-4.south) +0.5*(top-6.south)$) {\tikz{\path (top-4.south west) rectangle (top-6.north east);}};
\node[above=10pt] at (del-top-2.north) {$E_2$};

\node[rectangle,left delimiter=\{] (del-left-1) at ($0.5*(left-1.east) +0.5*(left-3.east)$) {\tikz{\path (left-1.north east) rectangle (left-3.south west);}};
\node[left=10pt] at (del-left-1.west) {$E_1$};
\node[rectangle,left delimiter=\{] (del-left-2) at ($0.5*(left-4.east) +0.5*(left-6.east)$) {\tikz{\path (left-4.north east) rectangle (left-6.south west);}};
\node[left=10pt] at (del-left-2.west) {$E_2$};

\end{tikzpicture}


\begin{tikzpicture}
\matrix [matrix of math nodes,left delimiter=(,right delimiter=),row sep=0.2cm,column sep=0.2cm] (g) {
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\};

\node[above=8pt of g-1-1] (top-1) {$G_1$};
\node[above=8pt of g-1-2] (top-2) {$G_2$};
\node[above=8pt of g-1-3] (top-3) {$G_3$};
\node[above=8pt of g-1-4] (top-4) {$G_1$};
\node[above=8pt of g-1-5] (top-5) {$G_2$};
\node[above=8pt of g-1-6] (top-6) {$G_3$};

\node[left=12pt of g-1-1] (left-1) {$G_1$};
\node[left=12pt of g-2-1] (left-2) {$G_2$};
\node[left=12pt of g-3-1] (left-3) {$G_3$};
\node[left=12pt of g-4-1] (left-4) {$G_1$};
\node[left=12pt of g-5-1] (left-5) {$G_2$};
\node[left=12pt of g-6-1] (left-6) {$G_3$};

\node[right=100pt of g-1-1] (right-1) {$G_1$};
\node[right=100pt of g-2-1] (right-2) {$G_2$};
\node[right=100pt of g-3-1] (right-3) {$G_3$};
\node[right=100pt of g-4-1] (right-4) {$G_1$};
\node[right=100pt of g-5-1] (right-5) {$G_2$};
\node[right=100pt of g-6-1] (right-6) {$G_3$};
\node[right=of g] (op) {$=$};


\matrix [matrix of math nodes,left delimiter=(,right delimiter=),row sep=0.2cm,column sep=0.2cm] (m) {
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\};

\node[above=8pt of m-1-1] (top-1) {$G_1$};
\node[above=8pt of m-1-2] (top-2) {$G_2$};
\node[above=8pt of m-1-3] (top-3) {$G_3$};
\node[above=8pt of m-1-4] (top-4) {$G_1$};
\node[above=8pt of m-1-5] (top-5) {$G_2$};
\node[above=8pt of m-1-6] (top-6) {$G_3$};

\node[left=12pt of m-1-1] (left-1) {$G_1$};
\node[left=12pt of m-2-1] (left-2) {$G_2$};
\node[left=12pt of m-3-1] (left-3) {$G_3$};
\node[left=12pt of m-4-1] (left-4) {$G_1$};
\node[left=12pt of m-5-1] (left-5) {$G_2$};
\node[left=12pt of m-6-1] (left-6) {$G_3$};

\node[right=100pt of m-1-1] (right-1) {$G_1$};
\node[right=100pt of m-2-1] (right-2) {$G_2$};
\node[right=100pt of m-3-1] (right-3) {$G_3$};
\node[right=100pt of m-4-1] (right-4) {$G_1$};
\node[right=100pt of m-5-1] (right-5) {$G_2$};
\node[right=100pt of m-6-1] (right-6) {$G_3$};
\node[right=of m] (op) {$\times$};

    \matrix [right=of op,matrix of math nodes,left delimiter=(,right delimiter=),row sep=0.2cm,column sep=0.2cm] (n) {
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\
1&2&3&4&3&4 \\};

\node[above=8pt of n-1-1]  {$G_1$};
\node[above=8pt of n-1-2]  {$G_2$};
\node[above=8pt of n-1-3]  {$G_3$};
\node[above=8pt of n-1-4]  {$G_1$};
\node[above=8pt of n-1-5]  {$G_2$};
\node[above=8pt of n-1-6]  {$G_3$};

\node[left=12pt of n-1-1]  {$G_1$};
\node[left=12pt of n-2-1]  {$G_2$};
\node[left=12pt of n-3-1]  {$G_3$};
\node[left=12pt of n-4-1]  {$G_1$};
\node[left=12pt of n-5-1]  {$G_2$};
\node[left=12pt of n-6-1]  {$G_3$};

\node[right=100pt of n-1-1]  {$G_1$};
\node[right=100pt of n-2-1]  {$G_2$};
\node[right=100pt of n-3-1]  {$G_3$};
\node[right=100pt of n-4-1]  {$G_1$};
\node[right=100pt of n-5-1]  {$G_2$};
\node[right=100pt of n-6-1]  {$G_3$};

\end{tikzpicture}

  \end{document}

enter image description here