convolution
\documentclass[tikz,border=5mm]{standalone}
\colorlet{myorange}{orange!70!red!60!black}
\begin{document}
\begin{tikzpicture}[line join=round,transform shape]
\def\in{{{1,0,0,0,0,0,0},{1,1,0,0,0,0,1},{0,1,1,0,0,0,1,1},{0,0,1,1,1,1,1},{0,0,0,1,1,1,0},{0,0,0,0,1,0,0},{0,0,0,0,0,0,0}}}
\def\out{{{3,1,1,1,1},{3,3,2,2,4},{1,3,3,4,3},{1,1,4,3,4},{0,1,1,3,1}}}
\def\ker{{{1,0,1},{0,1,0},{1,0,1}}}
\pgfdeclarelayer{Original layer}
\pgfdeclarelayer{Result layer}
\pgfdeclarelayer{Kernel}
\pgfdeclarelayer{KernelOverlay}
\pgfdeclarelayer{Original2Kernel}
\pgfdeclarelayer{Kernel2Result}
\pgfsetlayers{Result layer, Kernel2Result, Kernel, Original layer, Original2Kernel, KernelOverlay}
%\pgfsetlayers{Result layer, Kernel2Result, Kernel, Original2Kernel, Original layer, KernelOverlay}
\begin{pgfonlayer}{Original layer}
\begin{scope}[yslant=-.25,local bounding box=Ori]
\fill[orange!20] (3,3) rectangle +(3,3);
\draw[black] (0,0) grid (7,7);
\draw[black,very thick] (0,0) rectangle (7,7);
\foreach \i in {0,...,6}
{
\foreach \j in {0,...,6}
{
\pgfmathsetmacro{\x}{int(\in[\i][\j])}
\path (\i+.5,\j+.5) node{\x};
}
}
\path
(3,3) coordinate (IN1)
(3,6) coordinate (IN2)
(6,6) coordinate (IN3)
(6,3) coordinate (IN4);
\path (Ori.north) node[above]{Imatge inicial};
\end{scope}
\end{pgfonlayer}
\begin{pgfonlayer}{KernelOverlay}
\begin{scope}[yslant=-.25,shift={(3,3)},
local bounding box=KerOv]
\fill[yellow, opacity=0] (0,0) rectangle +(3,3);
\foreach \i in {0,...,2}
{
\foreach \j in {0,...,2}
{
\node[font=\small, scale=0.7] at (\i+.75,\j+.1) {$\times \pgfmathparse{int(\ker[\i][\j]))}\pgfmathresult$};
}
}
\end{scope}
\end{pgfonlayer}
\begin{pgfonlayer}{Kernel}
\begin{scope}[yslant=-.25,shift={(8,5)},
local bounding box=Ker]
\fill[white] (0,0) rectangle +(3,3);
\draw[black] (0,0) grid (3,3);
\draw[black,very thick] (0,0) rectangle (3,3);
\foreach \i in {0,...,2}
{
\foreach \j in {0,...,2}
{
\pgfmathsetmacro{\x}{int(\ker[\i][\j])}
\path (\i+.5,\j+.5) node{\x};
}
}
\path
(0,0) coordinate (KER1)
(0,3) coordinate (KER2)
(3,3) coordinate (KER3)
(3,0) coordinate (KER4);
\path (Ker.north) node[above=2mm]{Filtre};
\end{scope}
\end{pgfonlayer}
\begin{pgfonlayer}{Result layer}
\begin{scope}[yslant=-.25,shift={(13,5)},
local bounding box=Res]
\fill[green!20, opacity=1] (3,3) rectangle +(1,1);
\draw[black] (0,0) grid (5,5);
\draw[black,very thick] (0,0) rectangle (5,5);
\foreach \i in {0,...,4}
{
\foreach \j in {0,...,4}
{
\pgfmathsetmacro{\x}{int(\out[\i][\j])}
\path (\i+.5,\j+.5) node{\x};
}
}
\path
(3,3) coordinate (OUT1)
(3,4) coordinate (OUT2)
(4,4) coordinate (OUT3)
(4,3) coordinate (OUT4);
\path (Res.north) node[above]{Resultat};
\end{scope}
\end{pgfonlayer}
\begin{pgfonlayer}{Original2Kernel}
\foreach \i in {1,2,3,4}
{
\draw[red, dashed] (IN\i)--(KER\i);
}
\end{pgfonlayer}
\begin{pgfonlayer}{Kernel2Result}
\foreach \i in {1,2,3,4}
{
\draw[red, dashed] (KER\i)--(OUT\i);
}
\end{pgfonlayer}
\end{tikzpicture}
\end{document}