iradon
逆ラドン変換
構文
説明
例
フィルター補正ありとフィルター補正なしの逆投影法の比較
ファントムのイメージを作成します。イメージを表示します。
P = phantom(128);
imshow(P)
title('Original image')
イメージのラドン変換を実行します。
R = radon(P,0:179);
フィルター補正ありの逆投影法を実行します。
I1 = iradon(R,0:179);
フィルター補正なしの逆投影法を実行します。
I2 = iradon(R,0:179,'linear','none');
再構成後のイメージを表示します。
figure subplot(1,2,1) imshow(I1,[]) title('Filtered Backprojection') subplot(1,2,2) imshow(I2,[]) title('Unfiltered Backprojection')
単一角度での逆投影法の検証
ファントムのイメージを作成します。
P = phantom(128);
イメージのラドン変換を実行し、45 度の投影に対応する投影ベクトルを求めます。
R = radon(P,0:179); r45 = R(:,46);
この単一の投影ベクトルに対する逆ラドン変換を実行します。iradon
の構文は、theta
がスカラーの場合、インクリメントとして扱われるため、これを直接計算することができません。投影ベクトルをコピーし、その結果を 2 で割ることで、タスクを実行できます。
I = iradon([r45 r45], [45 45])/2;
結果を表示します。
imshow(I, [])
title('Backprojection from 45 degrees')
入力引数
R
— パラレル ビーム投影データ
数値列ベクトル | 数値行列
パラレル ビーム投影データ。次のいずれかに指定します。
theta
がスカラーの場合、R
をtheta
度に対するラドン変換を含んでいる列ベクトルとして指定します。theta
がベクトルの場合、R
を各列がtheta
の 1 つの角度に対するラドン変換である 2 次元行列として指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
theta
— 投影角
数値ベクトル | 数値スカラー | []
投影角 (度単位)。以下のいずれかを指定します。
値 | 説明 |
---|---|
数値ベクトル | 投影角。角度の間隔が等しくなければなりません。 |
数値スカラー | 投影時の角度の増分。角度 m*theta (m = 0,1,2,...,size( ) により投影されます。 |
[] | 投影時の角度の増分を自動的に 180/size(R,2) に設定します。 |
データ型: single
| double
interp
— 内挿タイプ
"linear"
(既定値) | "nearest"
| "spline"
| "pchip"
| "v5cubic"
逆投影法で使用する内挿のタイプ。次のいずれかの値を指定します。この値は、精度と計算の複雑度が増える順でリストされています。
値 | 説明 |
---|---|
| 最近傍内挿 |
| 線形内挿 |
| スプライン内挿 |
"pchip" | 形状維持区分的 3 次内挿 |
"v5cubic" | MATLAB® 5 で使用される 3 次畳み込み |
データ型: char
| string
filter
— フィルター
"Ram-Lak"
(既定値) | "Shepp-Logan"
| "Cosine"
| "Hamming"
| "Hann"
| "None"
周波数領域でのフィルター処理で使用するフィルター。次のいずれかの値を指定します。
値 | 説明 |
---|---|
| Cropped Ram-Lak またはランプ フィルター。このフィルターの周波数応答は | |
| 関数 |
| 関数 |
| ハミング ウィンドウと Ram-Lak フィルターを乗算します。 |
| ハン ウィンドウと Ram-Lak フィルターを乗算します。 |
"None" | フィルター処理を行いません。iradon はフィルター補正なしの逆投影法データを返します。 |
データ型: char
| string
frequencyScaling
— スケール係数
1
(既定値) | 範囲 (0, 1] の正の数値
周波数軸を再スケーリングするスケール係数。(0, 1] の範囲の正の数値を指定します。frequencyScaling
が 1 未満である場合、フィルターは、正規化周波数の周波数範囲 [0,frequencyScaling]
に適合するように圧縮されます。frequencyScaling
を超える周波数については、すべて 0
に設定されます。
出力引数
アルゴリズム
iradon
は、回転の中心が投影の中心点 ceil(size(R,1)/2)
であると仮定しています。
iradon
は、フィルター補正逆投影法アルゴリズムを使って、逆ラドン変換を実行します。フィルターは周波数領域で直接設計され、投影の FFT が乗算されます。投影は、空間領域でのエイリアシングを避けて FFT の速度を上げるために、フィルター処理を行う前に 2 のべき乗になるようにゼロ パディングされます。
参照
[1] Kak, A. C., and M. Slaney, Principles of Computerized Tomographic Imaging, New York, NY, IEEE Press, 1988.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
iradon
では C コードの生成がサポートされています (MATLAB Coder™ が必要)。詳細については、イメージ処理のコード生成を参照してください。interp
引数およびfilter
引数はコンパイル時の定数でなければなりません。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数は、スレッドベースの環境を完全にサポートします。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
バージョン履歴
R2006a より前に導入R2023a: theta
をデータ型 single
として指定
theta
をデータ型 single
として指定できるようになりました。R
または theta
をデータ型 single
として指定した場合、関数 iradon
は H
をデータ型 single
として返します。
R2022b: MATLAB Coder を使用した C コードの生成
iradon
は、C コードの生成をサポートするようになりました (MATLAB Coder が必要)。
R2022b: スレッドベース環境のサポート
iradon
は、スレッドベースの環境をサポートするようになりました。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)