「ゼロから作るDeep Learning」にim2colという画像形式を行列形式に変換する関数があります。
4次元の画像形式imgを6次元の形式colに変換して後にcolをreshapeして行列形式にしています。
col[:, :, y, x, :, :] = img[:, :, y:y_max_S, x:x_max:S]を理解するために図を描きました。
なお、記号の意味と用いたソースコードを以下に示します。画像数はN=1、チャネル数はC=2、フィルタは3×3(FH=FW=3)、フィルタが重なるようにストライドは2(S=2)、画面は縦と横が異なるH=5、W=7、パディングはなし(P=0)としました。出力は2×3(OH=2、OW=3)となりました。
以下の図は、forループの最後であるx=2、y=2におけるimgからcolへの変換を示します。
x_max = x + SOW = 2 + 23 = 8
y_max = y + SOH = 2 + 22 = 6
x:x_maxとy:y_maxでimgを囲んだ範囲を黄色で示します。ストライドS=2のため、imgから取り出す要素は、赤字および緑字で示すx=2,4,6とy=2,4であり、colのy=2、x=2に対応した黄色で示す範囲にコピーします。
なお、x_max=8とy_max=6は、imgのx側の範囲[0:7]、y側の範囲[0:5]を超えていますが、colにコビーする対象として参照していないため、問題にはなりません。