ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ラドン変換

メモ:

ファンビーム投影と呼ばれる単一ソースから出る放射状のパスに沿った線積分からの投影データを作成する方法の詳細は、ファンビーム投影を参照してください。パラレル ビーム投影データをファンビーム投影データに変換するには、関数 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" の線積分です。

Rθ(x)=f(xcosθysinθ,xsinθ+ycosθ)dy

ここで、

[xy]=[ cosθsinθsinθcosθ][xy]

次の図は、ラドン変換を幾何学的に示しています。

ラドン変換の幾何形状

イメージのラドン変換のプロット

この例では、特定の角度のセット theta に対するイメージ I のラドン変換を関数 radon で計算する方法を説明します。この関数は R を返します。その列には theta 内の各角度に対するラドン変換が含まれています。また、関数はベクトル xp も返します。このベクトルには x 軸に沿って対応する座標が含まれています。I の中央ピクセルは floor((size(I)+1)/2) となるように定義されています。これは、x' = 0 に対応する x 軸上のピクセルです。

この例で使用する、1 つの正方形オブジェクトから成る小さいサンプル イメージを作成し、それを表示します。

I = zeros(100,100);
I(25:75,25:75) = 1;
imshow(I)

角度 0 度と 45 度に対するイメージのラドン変換を計算します。

[R,xp] = radon(I,[0 45]);

0 度の変換をプロットします。

figure
plot(xp,R(:,1));
title('Radon Transform of a Square Function at 0 degrees')

45 度の変換をプロットします。

figure
plot(xp,R(:,2)); 
title('Radon Transform of a Square Function at 45 degrees')

ラドン変換をイメージとして見る

多くの角度に対するラドン変換をイメージとして表示します。この例で、正方形イメージに対するラドン変換が、0 度から 180 度まで 1 度刻みで計算されます。

theta = 0:180;
[R,xp] = radon(I,theta);
imagesc(theta,xp,R);
title('R_{\theta} (X\prime)');
xlabel('\theta (degrees)');
ylabel('X\prime');
set(gca,'XTick',0:20:180);
colormap(hot);
colorbar

180 度の投影を使用するラドン変換