6 Iterators ぱらぱらめくる『The ITK Software Guide Book 1: Introduction and Development Guidelines』

  • Iteratorsは多種ある。それは領域指定の仕方、そこの探索の仕方でわかれる
  • そのほかの分け方は「読み専用」と「読み書き用」の2種類。後者は変更しないのでConstなIteratorと呼ぶ
  • 任意次元の多次元直方体を画像データ全体としたときに、その一部を多次元直方体として、領域指定し、そこを世界全体としてiterate探索するようなIteratorsを基本とする
  • ある意味、slicingするようなもの
  • ImageRegionIteratorは基本的なImage Iterator
    • 部分取り出し、部分コピーはこれ
    • 画像はピクセル(ボクセル)に入る値がどういう型か、と、次元がいくつかで指定する。これでImageオブジェクトができる
    • Iteratorの指定は、このImageオブジェクトを指定して作り
    • それに引き続いて、「始点ピクセル番地(次元の長さの整数ベクトル)」と、「多次元直方体の各軸の長さ(次元の長さの整数ベクトル)」を与えることで出来上がる
    • Iteration作業は次元非依存なので、2次元データも3次元データも同じコードでOK
    • ImageRegionIteratorWithIndexは座標ごとに操作できる
  • ImageLinearIteratorWithIndex で軸単位処理
    • Rで言えばapply(image, 1, sum)みたいに、軸ごとに何かしたいときに使えるようだ
  • ImageSliceIteratorWithIndexは、2つの軸が作る面ごとに操作できる
  • ImageRandomConstIteratorWithIndexはピクセルのランダムサンプリング
  • Neighborhood Iteratorsは平滑化やセグメンテーションをするにあたって、特定ピクセルの周囲を走査・操作するのに有用なイテレータ(複数ある)
    • 軸方向ごとに何セル分をNeighborsとするかで指定したり、
    • 対象ピクセルを中心に、多次元直方体のサイズ指定をしたりする
    • Convolution filterとかGaussian filterとかのためのもある
    • Slicingして差分をとったりすれば、エッジとかも出る