intrinsicToWorld

Преобразуйте от внутреннего параметра до мировых координат

Описание

пример

[xWorld, yWorld] = intrinsicToWorld(R,xIntrinsic,yIntrinsic) карты указывают от 2D внутренней системы (xIntrinsic, yIntrinsic) к 2D мировой системе (xWorld, yWorld) на основе отношения, заданного 2D пространственным объектом привязки R.

Если k th входные координаты (xIntrinsic(k), yIntrinsic(k)), выходят за пределы границ изображений во внутренней системе координат, intrinsicToWorld экстраполирует xWorld(k) и yWorld(k) вне изображения ограничивает в системе мировой координаты.

пример

[xWorld, yWorld, zWorld] = intrinsicToWorld(R,xIntrinsic,yIntrinsic,zIntrinsic) карты указывают от внутренней системы координат до системы мировой координаты с помощью 3-D пространственного объекта привязки R.

Примеры

свернуть все

Считайте 2D полутоновое изображение в рабочую область.

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

Создайте imref2d объект, задавая размер и разрешение пикселей. Файл DICOM содержит поле метаданных 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,'DisplayRange',[0 512])
axis on

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

Предположим, что вы хотите вычислить аппроксимированное положение и ширину колена в миллиметрах. Выберите конечные точки линейного сегмента, который запускается горизонтально через колено на уровне коленной чашечки. Например, используйте (x, y) точки (34,172) и (442,172).

xIntrinsic = [34 442];
yIntrinsic = [172 172];

Преобразуйте эти точки от внутренних координат до мировых координат.

[xWorld,yWorld] = intrinsicToWorld(RA,xIntrinsic,yIntrinsic)
xWorld = 1×2

   10.6250  138.1250

yWorld = 1×2

   53.7500   53.7500

Мировые координаты двух точек (10.625,53.75) и (138.125,53.75) в модулях миллиметров. Аппроксимированная ширина колена в миллиметрах:

width = xWorld(2) - xWorld(1)
width = 127.5000

Считайте 3-D объем в рабочую область. Это изображение состоит из 27 систем координат 128 128 пиксельных изображений.

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

Создайте imref3d пространственный объект привязки сопоставлен с объемом. В иллюстративных целях обеспечьте пиксельное разрешение в каждой размерности. Разрешение находится в миллиметрах на пиксель.

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]

Отобразите средний срез объема, не использовав пространственный объект привязки. Координаты осей отражают внутренние координаты. Заметьте, что координата (0,0) находится в левом верхнем углу этой плоскости. z=0 является правильным ниже первого среза, и ось z положительна в восходящем направлении к короне головы.

figure
imshow(D(:,:,13))
axis on

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

Предположим, что вы хотите определить положение, в миллиметрах, функций в этом срезе. Выберите четыре точки выборки и сохраните их внутренние координаты в векторах. Например, первая точка имеет внутренние координаты (54,46,13). Внутренняя z-координата является тем же самым для всех точек в этом срезе.

xI = [54 71 57 70];
yI = [46 48 79 80];
zI = [13 13 13 13];

Преобразуйте внутренние координаты в мировые координаты с помощью intrinsicToWorld.

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

   108   142   114   140

yW = 1×4

    92    96   158   160

zW = 1×4

    52    52    52    52

Итоговые векторы являются миром x-, y-, и z-координатами, в миллиметрах, выбранных точек. Первая точка, например, возмещена от источника на 108 мм в направлении X, 92 мм в направлении Y и 52 мм в z-направлении.

Входные параметры

свернуть все

Пространственный объект привязки в виде imref2d или imref3d объект.

Координаты вдоль x - размерность во внутренней системе координат в виде числового скаляра или вектора.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Координаты вдоль y - размерность во внутренней системе координат в виде числового скаляра или вектора. yIntrinsic та же длина как xIntrinsic.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Координаты вдоль z - размерность во внутренней системе координат в виде числового скаляра или вектора. zIntrinsic та же длина как xIntrinsic.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

свернуть все

Координаты вдоль x - размерность в системе мировой координаты, возвращенной в виде числа или вектора. xWorld та же длина как xIntrinsic.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Координаты вдоль y - размерность в системе мировой координаты, возвращенной в виде числа или вектора. yWorld та же длина как xIntrinsic.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Координаты вдоль z - размерность в системе мировой координаты, возвращенной в виде числа или вектора. zWorld та же длина как xIntrinsic.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Смотрите также

| |

Введенный в R2013a