PlastimatchのFDKコマンドで再構成フィルタとしてrampフィルターが指定できる. ただし, rampフィルターのみ. そのため, どこでフィルタされているか,また別なフィルタを使いたい場合にどこを修正すればいいかコードを確認した.
まず, plastimatchはCUDAが使えるので, CUDA用コードとCUDAなし用コードがある. CUDA用コードは関数名の頭にCUDA_ が付くいて後は同じ名前になっている.
Githubなどからソースは取得済みである前提で.
FDKのソース: plastimatch/reconstruct/fdk.cxx
この中の reconstruct_conebeam(…) でFDK再構成をしている. また更にこの中で,
proj_image_filter(…) を呼びここで投影像にフィルターを掛けている.
proj_image_filter()は proj_image_filter.cxxで記述されている.
Proj_imaeg_filterのソース: plastimatch/util/proj_image_filter.cxx
proj_image_filter()は単にramp_filter()へデータを渡すだけのラッパー.
将来的にここでフィルターの切り替えを考えているのかも.
ramp_filterのソース: plastimatch/util/ramp_filter.cxx
ここでramp_filterを実装している. とりあえず, このコードをいじってComplieすれば /ramp指定で書いたフィルタになる.