Ein `scope` kann man auf einem Bild ganz einfach mit `xshift` und `yshift` verschieben. Ebenso kann man mit Hilfe von `scale` die Maßbasis verändern, so dass `(1,1)` eine gewünschte Größe erreicht:
    \documentclass[preview,border=0pt]{standalone}
    \usepackage{tikz}
    
    \begin{document}
    \begin{tikzpicture} 
      \node[anchor=south west,inner sep=0,scale=1] (Bild) at (0,0) 
      {\includegraphics[width=23cm,height=16cm]{example-image-a}};
     \begin{scope}[
       xshift=2cm,
       yshift=3cm,
       scale=5,
       description/.style={
         fill=white, 
         fill opacity=0, 
         text opacity=1, 
       }
       ]
       \draw[step=0.1,black,thin] (0,0) grid (1,1);
     \end{scope}
    \end{tikzpicture}   
    \end{document}
Das geht auch für die x- und y-Ausdehnung getrennt, wenn man statt zwischen (0,0) und (1,1) ein Feld aufspannen will, das doppelt so breit wie hoch ist:
    \documentclass[preview,border=0pt]{standalone}
    \usepackage{tikz}
    
    \begin{document}
    \begin{tikzpicture} 
      \node[anchor=south west,inner sep=0,scale=1] (Bild) at (0,0) 
      {\includegraphics[width=23cm,height=16cm]{example-image-a}};
     \begin{scope}[
       xshift=2cm,
       yshift=3cm,
       xscale=10,
       yscale=5,
       description/.style={
         fill=white, 
         fill opacity=0, 
         text opacity=1, 
       }
       ]
       \draw[step=0.1,black,thin] (0,0) grid (1,1);
     \end{scope}
    \end{tikzpicture}   
    \end{document}
Ich habe hier als Zeichnung auf dem Bild einfach ein Grid *Grid* (Raster) verwendet. Man kann natürlich auch andere Dinge darauf zeichnen. Man kann sogar an der Stelle des `grid` ein `node` mit einer weiteren `tikzpicture` aufspannen, wenn man das möchte. Dabei erbt die innere `tikzpicture` automatisch die Eigenschaften des `node`.