intrinsicToWorld

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

Описание

пример

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

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

пример

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

Примеры

свернуть все

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

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. The axes 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. The axes 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