Main Content

worldToIntrinsic

ワールド座標から固有座標への変換

説明

[xIntrinsic, yIntrinsic] = worldToIntrinsic(R,xWorld,yWorld) は、2 次元空間参照オブジェクト R で定義された関係に基づいて、点の位置を 2 次元固有座標系 (xWorld,yWorld) から 2 次元ワールド座標系 (xIntrinsic,yIntrinsic) にマッピングします。

k 番目の入力座標系 (xWorld(k),yWorld(k)) がワールド座標系のイメージの境界の外側にある場合、worldToIntrinsic は固有座標系でのイメージの境界の外側に xIntrinsic(k) および yIntrinsic(k) を外挿します。

[xIntrinsic,yIntrinsic,zIntrinsic] = worldToIntrinsic(R,xWorld,yWorld,zWorld) は、3 次元空間参照オブジェクト R を使用して、ワールド座標系から固有座標系に点をマッピングします。

すべて折りたたむ

膝の 2 次元グレースケール イメージをワークスペースに読み取ります。

m = dicominfo('knee1.dcm');
A = dicomread(m);

ピクセルのサイズと解像度を指定して、imref2d オブジェクトを作成します。DICOM ファイルには、各次元のイメージ解像度を 1 ピクセルあたりのミリメートル単位で指定するメタデータ フィールド PixelSpacing が含まれます。

RA = imref2d(size(A),m.PixelSpacing(2),m.PixelSpacing(1))
RA = 
  imref2d with properties:

           XWorldLimits: [0.1562 160.1562]
           YWorldLimits: [0.1562 160.1562]
              ImageSize: [512 512]
    PixelExtentInWorldX: 0.3125
    PixelExtentInWorldY: 0.3125
    ImageExtentInWorldX: 160
    ImageExtentInWorldY: 160
       XIntrinsicLimits: [0.5000 512.5000]
       YIntrinsicLimits: [0.5000 512.5000]

空間参照オブジェクトを含むイメージを表示します。座標軸座標は、ワールド座標を反映します。座標 (0,0) が左上隅にあることに注目してください。

figure
imshow(A,RA,'DisplayRange',[0 512])

Figure contains an axes object. The axes object contains an object of type image.

サンプル点を選択し、そのワールド座標 x および y をベクトルに格納します。たとえば、最初の点はワールド座標 (38.44,68.75) で、2 番目の点はそれよりも 1 mm 右にあり、3 番目の点は 7 mm 下にあります。最後の点はイメージ境界外にあります。

xW = [38.44 39.44 38.44 -0.2];
yW = [68.75 68.75 75.75 -1];

worldToIntrinsic を使用して、ワールド座標を固有座標に変換します。

[xI, yI] = worldToIntrinsic(RA,xW,yW)
xI = 1×4

  123.0080  126.2080  123.0080   -0.6400

yI = 1×4

  220.0000  220.0000  242.4000   -3.2000

結果として得られるベクトルは、固有座標 x および y (ピクセル単位) です。固有座標系は連続的であり、返される固有座標の一部は非整数値であることに注意してください。また、worldToIntrinsic はイメージ境界外にある点の固有座標を外挿します。

3 次元ボリュームをワークスペースに読み取ります。このイメージは、27 フレームの 128 × 128 ピクセル イメージから構成されます。

load mri;
D = squeeze(D);
D = ind2gray(D,map);

ボリュームに関連付けられた imref3d 空間参照オブジェクトを作成します。説明をわかりやすくするために、各次元でピクセル解像度を指定します。解像度は 1 ピクセルあたりのミリメートル単位で指定します。

R = imref3d(size(D),2,2,4)
R = 
  imref3d with properties:

           XWorldLimits: [1 257]
           YWorldLimits: [1 257]
           ZWorldLimits: [2 110]
              ImageSize: [128 128 27]
    PixelExtentInWorldX: 2
    PixelExtentInWorldY: 2
    PixelExtentInWorldZ: 4
    ImageExtentInWorldX: 256
    ImageExtentInWorldY: 256
    ImageExtentInWorldZ: 108
       XIntrinsicLimits: [0.5000 128.5000]
       YIntrinsicLimits: [0.5000 128.5000]
       ZIntrinsicLimits: [0.5000 27.5000]

サンプル点を選択し、そのワールド座標 xy、および z をベクトルに格納します。たとえば、最初の点はワールド座標 (108,92,52) で、2 番目の点はそれよりも 3 mm 上 (+z 方向) にあり、3 番目の点は 0.2 mm 右 (+x 方向) にあります。最後の点はイメージ境界外にあります。

xW = [108 108 108.2 2];
yW = [92 92 92 -1];
zW = [52 55 52 0.33];

worldToIntrinsic を使用して、ワールド座標を固有座標に変換します。

[xI, yI, zI] = worldToIntrinsic(R,xW,yW,zW)
xI = 1×4

   54.0000   54.0000   54.1000    1.0000

yI = 1×4

   46.0000   46.0000   46.0000   -0.5000

zI = 1×4

   13.0000   13.7500   13.0000    0.0825

結果として得られるベクトルは、固有座標 xy、および z (ピクセル単位) です。固有座標系は連続的であり、返される固有座標の一部は非整数値であることに注意してください。また、worldToIntrinsic はイメージ境界外にある点の固有座標を外挿します。

入力引数

すべて折りたたむ

空間参照オブジェクト。imref2d または imref3d オブジェクトとして指定します。

ワールド座標系の x 次元に沿った座標であり、数値スカラーまたは数値ベクトルとして返されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

ワールド座標系の y 次元に沿った座標であり、数値スカラーまたは数値ベクトルとして返されます。yWorld は、xWorld と同じ長さです。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

ワールド座標系の z 次元に沿った座標であり、数値スカラーまたは数値ベクトルとして返されます。zWorld は、xWorld と同じ長さです。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

出力引数

すべて折りたたむ

固有座標系の x 次元に沿った座標であり、数値スカラーまたは数値ベクトルとして指定します。xIntrinsic は、xWorld と同じ長さです。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

固有座標系の y 次元に沿った座標であり、数値スカラーまたは数値ベクトルとして指定します。yIntrinsic は、xWorld と同じ長さです。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

固有座標系の z 次元に沿った座標。数値スカラーまたは数値ベクトルとして指定します。zIntrinsic は、xWorld および yWorld と同じ長さです。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

バージョン履歴

R2013a で導入