フレームバッファ vsラインバッファ
画像x[V][H]に2Dフィルタw[W][W]をかけるとき、S/Wでは1フレーム分をバッファメモリにためておいて、次のコードのとおりメモリから読みだして処理する。
for v=0 to V-1 for h=0 to H-1 for i=0 to W-1 for j=0 to W-1 y(v,h) = w(i,j) * x(v+i,h+j) |
一方、H/Wで処理するときは、フレームを水平方向に1ラインずつスキャンしたものをシリアル入力して、数ライン分だけラインバッファにためて、その出力を「窓」にシフトする回路にするのが常套手段である。(本稿では2Dフィルタの範囲を「窓」と呼び、この回路を「窓切り出し回路」と呼ぶことにする。画像を小さい窓からのぞいているイメージなので)
詳しくは次項で説明するが、「窓」には画像フレーム上を移動させていったときの値が入る。ただし、画像や窓の左上を原点(0,0)にとると、回路の窓は右下が(0,0)になることに注意。
◇
ちなみに、上記のスキャン順はたぶん歴史的にテレビのブラウン管に由来している。デジタル処理なら中心から縁へスキャンするとか、アプリケーションに合わせて工夫してよいのかもしれない。