imwarp

Примените геометрическое преобразование изображения

Описание

пример

B = imwarp(A,tform) преобразовывает отображают 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. Затем создайте 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];
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 | logical | categorical

Геометрическое преобразование, чтобы выполнить, заданный как affine2d, projective2d или affine3d объект.

  • Если tform 2D и A имеет больше чем две размерности, такой что касается изображения RGB, затем 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 RGB или 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

Пространственная информация о ссылке изображения, которое будет преобразовано, заданное как imref2d объект для 2D преобразования или imref3d объект для 3-D преобразования.

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

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

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

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

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

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

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

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

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

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

  • Если входное изображение является N-D, и преобразование 2D, значение заливки может быть скаляром или массивом, размер которого совпадает с верхними размерностями входного изображения (3-й к Энной размерности). Например, если A изображение RGB 200 200 3, значение заливки может быть скаляром или массивом 3 на 1. Чтобы задать черное значение заливки, можно задать 0 или [0;0;0]. Для другого примера, если A 4-D с размером 200 200 3 10, значение заливки может быть скаляром или 3 10 массив.

  • Если входное изображение является категориальным массивом, используйте missing MATLAB функция, чтобы задать значение заливки. Для категориальных данных, missing приравнивается к <undefined>.

Пример: 128 задает среднее серое значение заливки для любого изображения типа данных uint8

Пример: 0.5 задает среднее серое значение заливки для любого изображения типа данных double

Пример: [255 255 0] задает желтый цвет заливки для 2D изображения RGB типа данных uint8

Пример: [1 1 0] задает желтый цвет заливки для 2D изображения RGB типа данных double

Пример: [0 1 0;1 1 0]' задает зелено-желтый цвет заливки, соответственно, для серии двух изображений RGB типа данных double

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

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

свернуть все

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

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

Алгоритмы

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

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

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

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

Введенный в R2013a