仕組みと計算式
このページでは、K-Space Paint が画面の裏で行っている計算を、実際のプログラムと同じ定義で説明します。
K-Space Paint は、フーリエ変換と k空間の関係を学ぶための教材です。MRI 装置の信号収集や画像再構成を再現するものではなく、医療上の判断には使用できません(下の「実際の MRI との違い」を参照)。
1. 格子と座標
実空間(画像)と k空間は、どちらも の格子()です。
- 実空間の画素:。原点は画像の左上で、 は下向きが正です。
- k空間の周波数:。画面上の k空間は中心が (直流成分)で、外側ほど高い周波数です。右が の正、下が の正です。
2. フーリエ変換
実空間に描く(順変換)
描いた画像 (白 = 1、黒 = 0)の 2次元離散フーリエ変換を計算します。
k空間に描く(逆変換)
描いた k空間 (複素数)の 2次元逆離散フーリエ変換を計算します。
正規化係数 は省いています。表示のときに最大値で割るので、画面の見た目は係数があってもなくても同じです。計算には高速フーリエ変換(FFT、基数2)を使っていますが、結果は上の定義式と同じです(「6. 検証」を参照)。
どちらの変換も離散的なので、画像は周期的につながっています。画像の上端と下端、左端と右端は隣どうしとして扱われます。
3. 画面に表示するときの処理
計算結果をそのまま表示すると見づらいため、次の処理をしてから 0〜1 の明るさにしています。表示は計算結果を加工したものなので、明るさは値の大きさに比例しません。
| 表示するもの | 表示する値 |
|---|---|
| 再構成画像 |
絶対値(振幅)を最大値で割り、少し明るく持ち上げます(ガンマ 0.85)。 |
| k空間(フーリエ変換の結果、取り込んだ k空間) |
中心(直流成分)だけが突出して他が見えなくなるのを防ぐため、対数で圧縮します(「対数表示」と書いてある画面)。位相は表示していません。 |
| 自分で描いた k空間 | をそのまま表示します(0〜1)。 |
| k空間の、1〜4マスだけの小さな点 | 256×256 の1マスは画面上で数ピクセルにしかならず見落としやすいため、値のあるマスが上下左右・斜めにつながったかたまりのうち4マス以下で、まわり2マス以内にほかの点や線がないものは、表示のときだけ各マスを 5×5 マスの大きさで描きます(プリセットの「中心の1点」「対称な2点」「ランダム」など)。計算に使うデータはそのままで、再構成画像には影響しません。 |
例:「対称な2点」で縞が細かく見える理由
プリセット「対称な2点」は と に値 1 を置きます。このとき になります。画面に出しているのは絶対値 なので、負の部分も明るく表示され、明るい縞の数は余弦波の周期の2倍に見えます。
4. ブラシ
1回のブラシで、指(マウス)の位置を中心に、なめらかなガウス関数の形の値を足します。中心から 離れたマスに足す量は次のとおりです。
- :ブラシの半径。「太さ」スライダーの値 (0.6〜4)から、k空間では 、実空間では (単位はマス)
- :ペンは「強さ」スライダーの値(0.2〜1)、消しゴムは
| 描く場所とツール | 値の変え方 |
|---|---|
| 実空間・ペン / 消しゴム | |
| k空間・ペン | 実部に を足します。振幅が 1 を超えたら、位相を保ったまま振幅を 1 にします。 |
| k空間・消しゴム | 位相を保ったまま振幅だけを減らします。 |
対称モード(エルミート対称)
「対称」をオンにすると、 に描いたのと同じ量を、中心について点対称な にも描きます。対称モードのまま描いた k空間(と、画像から取り込んだ k空間)は
(複素共役)を満たすので、逆変換した は実数になります。実在する物体の画像に近い、自然な見た目になります。ただし、 の列と の行(画面の左端・上端)は、対になる相手が格子の外なので、自分自身と対になります。
5. 画像の取り込み
- 画像を挿入:短い辺に合わせて縮小し、中央を正方形に切り抜いて 256×256 にします。色は でグレースケールにします。
- k空間で編集(画像を挿入したときも同じ):実空間の画像を順変換し、最大の振幅が 1 になるように全体を割ってから、振幅と位相の両方を k空間に持ち込みます。何も編集しなければ、逆変換で元の画像に戻ります。
6. 検証
プログラムの FFT の結果を、上の定義式をそのまま足し算で計算した値と突き合わせて確認しています(2026年10月3日)。
- 順変換・逆変換とも、相対誤差は 1×10−7 程度でした。単精度の浮動小数点数で計算しているための丸め誤差の範囲です。
- 対称モードで描いた k空間を逆変換すると、虚部の大きさは実部の 1×10−7 倍以下でした(実数画像になっている)。
7. 実際の MRI との違い
K-Space Paint の「k空間」は、画像の 2次元離散フーリエ変換そのものです。実際の MRI では、次のような点が異なります。
- MRI の k空間は、傾斜磁場をかけながら受信コイルで収集した信号です。理想的な条件のもとで画像とフーリエ変換の関係にありますが、このアプリは信号の発生や収集(緩和、パルスシーケンス、傾斜磁場など)を一切シミュレーションしていません。
- 雑音、複数の受信コイル、コイル感度、磁場の不均一、体動などは含みません。
- k空間は 256×256 の格子を全部埋めた直交座標のデータとして扱います。非直交の収集(ラジアル、スパイラルなど)、間引き収集、パラレルイメージング、ハーフフーリエ、窓関数(フィルター)などの処理はありません。
- 再構成画像は振幅画像で、表示のために上の「3.」の加工をしています。