imwarp

Примените геометрическое преобразование, чтобы отобразить

Синтаксис

B = imwarp(A,tform)
B = imwarp(A,D)
[B,RB] = imwarp(A,RA,tform)
B = imwarp(___,interp)
[B,RB] = imwarp(___,Name,Value)

Описание

пример

B = imwarp(A,tform) преобразовывает изображение A согласно геометрическому преобразованию, заданному tform, который является объектом геометрического преобразования. B является преобразованным изображением.

B = imwarp(A,D) преобразовывает входное изображение A согласно полю смещения, заданному D.

[B,RB] = imwarp(A,RA,tform) преобразовывает изображение, на которое пространственно ссылаются, заданное данными изображения A и связанный пространственный ссылочный объект RA. Вывод является изображением, на которое пространственно ссылаются, заданным данными изображения B и связанный пространственный ссылочный объект RB.

B = imwarp(___,interp) задает форму интерполяции, чтобы использовать.

[B,RB] = imwarp(___,Name,Value) задает параметры, которые управляют различными аспектами геометрического преобразования. Названия параметра могут быть сокращены, и случай не имеет значения.

Примеры

свернуть все

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

I = imread('cameraman.tif');
imshow(I)

Создайте 2D объект геометрического преобразования.

tform = affine2d([1 0 0; .5 1 0; 0 0 1])
tform = 
  affine2d with properties:

    Dimensionality: 2
                 T: [3x3 double]

Примените преобразование к изображению.

J = imwarp(I,tform);
figure
imshow(J)

Считайте 3-D данные MRI в рабочую область и визуализируйте его.

s = load('mri');
mriVolume = squeeze(s.D);
sizeIn = size(mriVolume);
hFigOriginal = figure;
hAxOriginal  = axes;
slice(double(mriVolume),sizeIn(2)/2,sizeIn(1)/2,sizeIn(3)/2);
grid on, shading interp, colormap gray

Создайте 3-D объект геометрического преобразования. Сначала создайте матрицу преобразования, которая вращает изображение вокруг оси Y. Затем передайте матрицу конструктору Object affine3d.

 theta = pi/8;
 t = [cos(theta)  0      -sin(theta)   0
     0             1              0     0
     sin(theta)    0       cos(theta)   0
     0             0              0     1]
t = 4×4

    0.9239         0   -0.3827         0
         0    1.0000         0         0
    0.3827         0    0.9239         0
         0         0         0    1.0000

tform = affine3d(t)
tform = 
  affine3d with properties:

    Dimensionality: 3
                 T: [4x4 double]

Примените преобразование к изображению.

mriVolumeRotated = imwarp(mriVolume,tform);

Визуализируйте три плоскости разбиения через центр преобразованных объемов.

sizeOut = size(mriVolumeRotated);
hFigRotated = figure;
hAxRotated  = axes;
slice(double(mriVolumeRotated),sizeOut(2)/2,sizeOut(1)/2,sizeOut(3)/2);
grid on, shading interp, colormap gray

Соедините представления обеих осей.

linkprop([hAxOriginal,hAxRotated],'View');

Установите представление видеть эффект вращения.

set(hAxRotated,'View',[-3.5 20.0])

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

свернуть все

Отобразите, чтобы быть преобразованными, заданными как неразреженный, массив с действительным знаком.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

2D или 3-D геометрическое преобразование, чтобы выполнить, заданный как объект геометрического преобразования. Существует три типа объектов геометрического преобразования: affine2d, projective2d или affine3d.

  • Если tform 2D и ndims(A) > 2, такой что касается изображения истинного цвета, imwarp применяет то же 2D преобразование ко всем 2D плоскостям по более высоким измерениям.

  • Если tform 3-D, A должен быть 3-D объемом изображений.

Поле Displacement, заданное как неразреженный числовой массив. Поле смещения задает размер сетки и местоположение выходного изображения. Значения смещения находятся в модулях пикселей. imwarp принимает, что на D ссылаются к внутренней системе координат по умолчанию. Чтобы оценить поле смещения, используйте imregdemons.

  • Если A является 2D полутоновым изображением размера m-by-n, то D является m-by-n-by-2. Первая плоскость поля смещения, D(:,:,1), описывает x - компонент аддитивного смещения. imwarp добавляет эти значения в столбец и местоположения строки в D, чтобы произвести повторно сопоставленные местоположения в A. Точно так же вторая плоскость поля смещения, D(:,:,2), описывает y - компонент аддитивных значений смещения.

  • Если A является 2D истинным цветом или 3-D полутоновым изображением размера m-by-n-by-p, то D:

    • m-by-n-by-p-by-3. D(:,:,:,1) содержит смещения вдоль x - ось, D(:,:,:,2) содержит смещения вдоль y - ось, и D(:,:,:,3) содержит смещения вдоль z - ось

    • m-by-n-by-2, затем imwarp применяет поле смещения к одной плоскости за один раз.

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

Пространственная информация о ссылке, сопоставленная с изображением, которое будет преобразовано, задала как пространственный ссылочный объект.

  • Если tform является 2D геометрическим преобразованием, RA должен быть 2D пространственным ссылочным объектом (imref2d).

  • Если tform является 3-D геометрическим преобразованием, RA должен быть 3-D пространственным ссылочным объектом (imref3d).

Форма интерполяции, используемой, заданной как одно из этих значений.

Метод интерполяцииОписание
'linear'Линейная интерполяция
'nearest'Интерполяция ближайшего соседа — выходной пиксель присвоен значение пикселя, которого находится в пределах точка. Никакие другие пиксели не рассматриваются.
'cubic'Кубичная интерполяция

Типы данных: char

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: J = imwarp(I,tform,'FillValues',255) использует белые пиксели в качестве значений заливки.

Размер и местоположение выходного изображения в системе мировой координаты, заданной как пара, разделенная запятой, состоящая из 'OutputView' и imref2d или imref3d пространственный ссылочный объект. ImageSize, XWorldLimits и свойства YWorldLimits пространственного ссылочного объекта задают размер выходного изображения и местоположение выходного изображения в системе мировой координаты. Использование 'OutputView' не доступно при применении полей смещения.

Значение, используемое для выходных пикселей вне входных границ изображения, заданных как пара, разделенная запятой, состоящая из 'FillValues' и числового массива. Заполните значения используются для выходных пикселей, когда преобразованное местоположение соответствующей инверсии во входном изображении полностью вне входных границ изображения.

  • Если входное изображение 2D, FillValues должен быть скаляром.

  • Если входное изображение 3-D, и геометрическое преобразование 3-D, FillValues должен быть скаляром.

  • Если входное изображение является N-D, и геометрическое преобразование 2D, FillValues может быть скаляром или массивом. Если вы задаете массив, размер массивов должен совпадать с более высокими размерностями входного изображения. Например, если входное изображение является изображением RGB uint8, которое является 200 200 3, FillValues может быть скаляром или массивом 3 на 1. В другом примере, если входное изображение является 4-D с размером 200 200 3 10, FillValues может быть скаляром или 3 10 массив.

    В этом примере RGB изображений возможности для FillValues включают:

    'FillValue' Эффект
    0Заполните с черным цветом
    [0;0;0]Заполните с черным цветом
    255Заполните с белым
    [255;255;255]Заполните с белым
    [0;0;255]Заполните с синим
    [255;255;0]Заполните с желтым

Заполните изображение, чтобы создать сглаженные ребра, заданные как логическое значение true или false. Когда установлено в true, imwarp заполняет входное изображение (значениями, заданными FillValues), чтобы создать более сглаженное ребро в выходном изображении. Когда установлено в false, imwarp не заполняет изображение. При выборе false (не дополняющий) входное изображение может привести к более резкому ребру в выходном изображении. Это более резкое ребро может быть полезным, чтобы минимизировать искажения шва при регистрации двух изображений рядом.

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

свернуть все

Преобразованное изображение, возвращенное как неразреженный массив с действительным знаком. B является тем же классом как A.

Пространственная информация о ссылке сопоставлена с преобразованным изображением, возвращенным как imref2d или imref3d пространственный ссылочный объект.

Алгоритмы

imwarp определяет значение пикселей в выходном изображении путем отображения местоположений в выходном изображении к соответствующим местоположениям во входном изображении (обратное отображение). imwarp интерполирует во входном изображении, чтобы вычислить значение выходного пикселя.

Следующая фигура иллюстрирует преобразование перевода. Условно, оси на входном пробеле подписаны u и v, и оси на выходном пробеле подписаны X и Y. В фигуре отметьте, как imwarp изменяет пространственные координаты, которые задают местоположения пикселей во входном изображении. Пиксель в (1,1) теперь расположен в (41,41). В изображении шахматной доски каждый черный, белый, и серый квадрат 10 пикселей высотой и 10 пикселей шириной. Для получения дополнительной информации о различии между пространственными координатами и пиксельными координатами, смотрите Системы координат Изображений.

Введите переведенное изображение

Расширенные возможности

Введенный в R2013a

Для просмотра документации необходимо авторизоваться на сайте