ラドン変換
メモ
ファンビーム投影と呼ばれる単一ソースから出る放射状のパスに沿った線積分からの投影データを作成する方法の詳細については、ファンビーム投影を参照してください。パラレル ビーム投影データをファンビーム投影データに変換するには、関数 para2fan
を使用します。
関数 radon
は特定の方向にイメージ行列の "投影" を計算します。
2 次元関数 "f(x,y)" の投影は、線積分の集合です。関数 radon
はある方向に平行なパスに沿って、すなわち "ビーム" に沿って、複数のソースから線積分を計算します。ビームは 1 ピクセルの間隔で分布しています。イメージを表すために、関数 radon
はイメージの中心の周りにソースを回転させることで、さまざまな角度からイメージの複数のパラレル ビーム投影を行います。次の図は、指定した回転角での単一投影を示しています。
回転角 Theta でのパラレル ビーム投影
たとえば、f(x,y) の垂直方向での線積分は f(x,y) の x 軸上への投影です。そして、水平方向での線積分は y 軸上への f(x,y) の投影です。次の図は、簡単な 2 次元関数に関する水平方向と垂直方向の投影です。
単純な関数の水平方向と垂直方向の投影
投影は、任意の角度 "theta" (θ) に沿っても計算できます。一般に、"f(x,y)" のラドン変換は "y" 軸に平行な "f" の線積分です。
ここで、
次の図は、ラドン変換を幾何学的に示しています。
ラドン変換の幾何形状
イメージのラドン変換のプロット
この例では、特定の回転角度のセットについて、イメージのラドン変換を関数 radon
を使用して計算する方法を説明します。
1 つの正方形オブジェクトから成る小さいサンプル イメージを作成し、そのイメージを表示します。
I = zeros(100,100); I(25:75,25:75) = 1; imshow(I)
角度 0° と 30° に対するイメージのラドン変換を計算します。この関数は R
を返します。その列には theta
内の各角度に対するラドン変換が含まれています。また、関数はベクトル xp
も返します。このベクトルには x 軸に沿って対応する座標が含まれています。I
の中央ピクセルは floor((size(I)+1)/2)
となるように定義されています。これは、x' = 0 に対応する x 軸上のピクセルです。
theta = [0 30]; [R,xp] = radon(I,theta);
変換を 0° でプロットします。
figure
plot(xp,R(:,1))
title("Radon Transform of Square Function at 0 Degrees")
変換を 30° でプロットします。
plot(xp,R(:,2));
title("Radon Transform of Square Function at 30 Degrees")
ラドン変換は、通常、多数の角度に対して計算され、1 つのイメージとして表示されます。正方形イメージに対するラドン変換を 0° から 180° まで 1 度刻みで計算します。
theta = 0:180; [R,xp] = radon(I,theta);
2 次元ラドン変換をシノグラムとして表示します。
figure imagesc(theta,xp,R) title("R_{\theta} (X\prime)") xlabel("\theta (degrees)") ylabel("X\prime") set(gca,"XTick",0:20:180) colormap(hot) colorbar