Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2000年05月07日] [更新 2001年07月22日] PC-9801 目次
   
PC-9801
コルトマンの換算式による空間周波数伝達関数 Ver.2.1
動作確認等 掲載の図は,Windows 2000 + Anex86 での実行結果
COLTDEMO.zip [939 KB] (Ver. 2.1)







概要


X線撮影系の空間周波数伝達関数 (MTF,電子回路における周波数伝達関数に相当) を求めるのは簡単ではありません.インパルス入力に相当する鉛スリットを用いるのが精度のいい方法ですが,矩形波チャート (周波数が連続的に変化している) を用いる方法も利用されています.このチャートの出力から MTF を計算するわけです.この際に使用するのがコルトマンの換算式と呼ばれる級数展開式です.このプログラムは,このコルトマンの換算式の項数と伝達関数の計算結果の誤差の関係を調べるためのものです.

MTF は,(位相情報も含めた) 正弦波に対するコントラスト (振幅) 比のことです.したがって,矩形波 MTF という用語は存在しません.コントラストの意味で CTF と言う用語を使用している方もいるようですが,当然ながら,そのような用語も存在するわけがありません.

用語という意味の関連で,CAD (Computer- Aided Diagnosis コンピュータ支援診断) は.シーエーディと読み,CAD (Computer Aided Design コンピュータ支援設計) はキャドと読みます.こうすることによって,同じコンピュータ関連用語でも,会話の中で区別がつくわけです.


このプログラムでは,次の手順で曲線をプロットしていきます.

  1. 空間周波数伝達関数の理論値を設定.
    伝達関数を定義すると,この伝達関数を持つ撮影系に,任意の周波数特性を持つ波形を入力した場合のレスポンスが計算可能となります.この伝達関数として,著者が拡張した双曲線正割関数を用いています.この関数は V=(sech(A*W))^B の形をしていて,A, B は正の実数値です.この係数A, B によって,曲線がどのように変化するかを見るプログラム SOLITON.EXE も COLTDEMO.ZIP に含まれています.

  2. この伝達関数を持つ撮影系に,矩形波を入力した場合の出力を計算.
    この結果をプロットしたのが最初の図です.
    実際の測定では,検出器としてX線写真フィルムを利用しますので,写真フイルム特性曲線の数学モデルなどを使用して,写真濃度からフイルムへの露光量へ変換する必要があります.

  3. 項数を指定して,コルトマンの換算式を用いて伝達関数を計算.
    計算に誤差がなければ,元の伝達関数と一致するはずですが,ここでは,項数を変えた場合に結果がとうなるかを見ることができます.指定可能な項数は25項までとなっています.
コルトマンの換算式は,級数展開式です.この級数展開は非常に収束が遅く,必ずしも項数が多ければ精度が高くなるわけではありません.

このプログラムも,ホームページ開設に伴い,Windows で動作するプログラムに書換えたかったのですが,現在のところ時間的な余裕がありません.とりあえず,手元にある PC-9821 Np を使用して動作だけは確認しました.懐かしい Roland DG の DXY-880A ペンプロッタでプロッタ出力も確認しました.




仮定した伝達関数(実線)とその撮影系による矩形波のコントラスト (破線)


矩形波出力から伝達関数を計算
破線がコルトマンの換算式の第 3 項までの計算結果
実線は仮定した伝達関数
計算誤差がなければ両者は一致する




実行方法


ダウンロードしたファイルを解凍したら,解凍したファイルを全て適当なフォルダに移動します.次に PC-9801 を MS-DOS モードで起動します.もし Windows 95/98 が動作していたら,MS-DOS で再起動して下さい.
  • PC-9801 の MS-DOS プロンプトでは動作しません.
これは PC-9801 の仕様です.起動したら先程のフォルダに移動して,COLTDEMO.EXE を実行します.




関数・伝達関数


関数は,数学で言う関数です.引数の値に相当する値を取得します.
一方,伝達関数も関数ですが,制御系の応答,電子回路の応答等の場合,関数の引数に相当するのが入力です.伝達の性能を調べるので,「伝達関数」という用語が使われています.

ある系の伝達関数が分かると,入力に対する出力を調べることができます.
一般の制御系では,機械等の応答,または出力です.電子回路に与えた入力に対する出力,これは一般に波形等で表します.MTF も同じで,ある波形 (エックス線量の分布) に対しての出力ということになります.

伝達関数は,一般に正弦波に対する応答で表します.それは正弦波が基本的な波形だからです.どんな波形も,位相情報を含めた正弦波を合成して表せます.もちろん,矩形波もです.正弦波の応答として調べるわけですから,入力も当然,一般的には正弦波を使用します.
エックス線撮影系では,正弦波の値 (正弦関数の値) がエックス線の透過率ということになりますが,多くの周波数の正弦波チャートを用意しなければなりません.現実には無理があります.

正弦波を使用しない別の方法があります.それはインパルスという,数学的に幅がない波形を使用する方法です.インパルスは,0 から無限大までの周波数の,同じ振幅の正弦波で表せますから,一回で伝達関数が求まります.光学系では,スリット法と呼ばれていますが,幅がないものを実現するのは不可能なので,現実には,その系の伝達関数の取得に誤差がない程度のスリットを使用することになります.また,本ページのように,矩形波を用いる方法もあるわけです.
制御系では,ステップ関数というものが使われることがあります.

コンピュータで伝達関数を取得した場合,理論的な数学の式として表現できない場合,それらはコンピュータの内部で数値として記憶することになります.
矩形波チャートを使用して,そのコントラストを取得してグラフにした場合,それは単なる「測定の結果」であって「関数」ではありません.関数ではないのですから「伝達関数」でもありません.
MTF の TF は,伝達関数を意味する Transfer Function の略です.伝達関数は正弦波に対する応答 (位相情報を含めた振幅比 - 撮影系ではコントラスト比) ですから,そこに「矩形波伝達関数」のように「矩形波」等を追加すると,理解不可能な,意味不明な用語になってしまいます.



[備考]
どんな波形も,位相情報を含んだ正弦波を合成して表せるわけですが,波形を,この正弦波の関数としての表現にすることをフーリエ変換と言います.フーリエ変換によって,各周波数に分解して調べることを周波数解析と言うこともあります.