Преобразуйте от внутреннего параметра до мировых координат
[
карты указывают от 2D внутренней системы (xWorld
, yWorld
] = intrinsicToWorld(R
,xIntrinsic
,yIntrinsic
)xIntrinsic
, yIntrinsic
) к 2D мировой системе (xWorld
, yWorld
) на основе отношения, заданного 2D пространственным объектом привязки R
.
Если k th входные координаты (xIntrinsic
(k), yIntrinsic
(k)), выходят за пределы границ изображений во внутренней системе координат, intrinsicToWorld
экстраполирует xWorld
(k) и yWorld
(k) вне изображения ограничивает в системе мировой координаты.
[
карты указывают от внутренней системы координат до системы мировой координаты с помощью 3-D пространственного объекта привязки xWorld
, yWorld
, zWorld
] = intrinsicToWorld(R
,xIntrinsic
,yIntrinsic
,zIntrinsic
)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
Предположим, что вы хотите вычислить аппроксимированное положение и ширину колена в миллиметрах. Выберите конечные точки линейного сегмента, который запускается горизонтально через колено на уровне коленной чашечки. Например, используйте (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
Предположим, что вы хотите определить положение, в миллиметрах, функций в этом срезе. Выберите четыре точки выборки и сохраните их внутренние координаты в векторах. Например, первая точка имеет внутренние координаты (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-направлении.
xIntrinsic
— Координаты вдоль x - размерность во внутренней системе координатКоординаты вдоль x - размерность во внутренней системе координат, заданной в виде числа или вектора.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
yIntrinsic
— Координаты вдоль y - размерность во внутренней системе координатКоординаты вдоль y - размерность во внутренней системе координат, заданной в виде числа или вектора. yIntrinsic
та же длина как xIntrinsic
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
zIntrinsic
— Координаты вдоль z - размерность во внутренней системе координатКоординаты вдоль z - размерность во внутренней системе координат, заданной в виде числа или вектора. zIntrinsic
та же длина как xIntrinsic
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
xWorld
— Координаты вдоль x - размерность в системе мировой координатыКоординаты вдоль x - размерность в системе мировой координаты, возвращенной в виде числа или вектора. xWorld
та же длина как xIntrinsic
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
yWorld
— Координаты вдоль y - размерность в системе мировой координатыКоординаты вдоль y - размерность в системе мировой координаты, возвращенной в виде числа или вектора. yWorld
та же длина как xIntrinsic
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
zWorld
— Координаты вдоль z - размерность в системе мировой координатыКоординаты вдоль z - размерность в системе мировой координаты, возвращенной в виде числа или вектора. zWorld
та же длина как xIntrinsic
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.