imwarp

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

Описание

пример

B = imwarp(A,tform) преобразует числовое, логическое или категориальное изображение A согласно геометрическому преобразованию tform. Функция возвращает преобразованное изображение в B.

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

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

[___] = imwarp(___,interp) задает тип используемой интерполяции.

пример

[___] = imwarp(___,Name,Value) задает аргументы пары "имя-значение" для управления различными аспектами геометрического преобразования.

Совет

Если преобразование входа tform не задает прямое преобразование, затем используйте OutputView аргумент пары "имя-значение" для ускорения преобразования.

Примеры

свернуть все

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

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

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

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

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

                 T: [3x3 double]
    Dimensionality: 2

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

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

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

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

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

Figure contains an axes. The axes contains 3 objects of type surface.

Создайте 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:

                 T: [4x4 double]
    Dimensionality: 3

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

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

Figure contains an axes. The axes contains 3 objects of type surface.

Связать виды обеих осей вместе.

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

Установите представление, чтобы увидеть эффект поворота.

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

Figure contains an axes. The axes contains 3 objects of type surface.

Figure contains an axes. The axes contains 3 objects of type surface.

Чтение и отображение изображения. Чтобы увидеть пространственные границы изображения, сделайте оси видимыми.

A = imread('kobi.png');
iptsetpref('ImshowAxesVisible','on')
imshow(A)

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

Создайте 2-D аффинное преобразование. Этот пример создает рандомизированное преобразование, которое состоит из шкалы в множитель в области значений [1.2, 2.4], поворота на угол в области значений [ -45 , 45 ] степеней и горизонтального перемещения на расстояние в области значений [100, 200] пикселей.

tform = randomAffine2d('Scale',[1.2,2.4],'XTranslation',[100 200],'Rotation',[-45,45]);

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

centerOutput = affineOutputView(size(A),tform,'BoundsStyle','CenterOutput');
followOutput = affineOutputView(size(A),tform,'BoundsStyle','FollowOutput');
sameAsInput = affineOutputView(size(A),tform,'BoundsStyle','SameAsInput');

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

BCenterOutput = imwarp(A,tform,'OutputView',centerOutput);
BFollowOutput = imwarp(A,tform,'OutputView',followOutput);
BSameAsInput = imwarp(A,tform,'OutputView',sameAsInput);

Отобразите получившиеся изображения.

imshow(BCenterOutput)
title('CenterOutput Bounds Style');

Figure contains an axes. The axes with title CenterOutput Bounds Style contains an object of type image.

imshow(BFollowOutput)
title('FollowOutput Bounds Style');

Figure contains an axes. The axes with title FollowOutput Bounds Style contains an object of type image.

imshow(BSameAsInput)
title('SameAsInput Bounds Style');

Figure contains an axes. The axes with title SameAsInput Bounds Style contains an object of type image.

iptsetpref('ImshowAxesVisible','off')

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

свернуть все

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

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

Применяемое геометрическое преобразование, заданное как rigid2d, affine2d, projective2d, rigid3d, или affine3d объект.

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

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

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

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

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

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

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

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

Метод интерполяцииОписание
'nearest'

Интерполяция по ближайшему соседу. Пикселю выхода присваивается значение пикселя, в который попадает точка. Другие пиксели не рассматриваются.

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

'linear'Линейная интерполяция. Это метод интерполяции по умолчанию для числовых и логических изображений.
'cubic'Кубическая интерполяция

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

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

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

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

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

Вы можете создать выход представление при помощи affineOutputView функция. Чтобы реплицировать выходное представление по умолчанию, рассчитанное как imwarp, используйте стиль границ по умолчанию ('CenterOutput'из affineOutputView.

Вы не можете задать OutputView при задании входного поля смещения D.

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

Значение заливки по умолчанию для числовых и логических изображений 0. Значение заливки по умолчанию для категориальных изображений missing, что соответствует <undefined> категория.

Тип изображения

Размерность Преобразования

Формат значений заливки

2-D полутоновое или логическое изображение2-D
  • Числовой скаляр

2-D цветное изображение или 2-D мультиспектральное изображение2-D
  • Числовой скаляр

  • c числовой вектор -элемент, задающий значение заливки для каждого из c каналов. Количество каналов, c, составляет 3 для цветных изображений.

Серия p 2-D изображений2-D

  • Числовой скаляр

  • c -by p числовую матрицу. Количество каналов, c, составляет 1 для полутоновых изображений и 3 для цветных изображений.

N -D-изображение2-D
  • Числовой скаляр

  • Числовой массив, размер которого соответствует размерностям 3-к- N входного изображения A. Для примера, если A 200 на 200 на 10 на 3, тогда FillValues может быть массивом 10 на 3.

3-D полутоновое или логическое изображение3-D
  • Числовой скаляр

Категориальное изображение2-D или 3-D
  • Допустимая категория в изображении, заданная как строковый скаляр или вектор символов.

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

Пример: 255 заполняет uint8 изображение с белыми пикселями

Пример: 1 заполняет double изображение с белыми пикселями

Пример: [0 1 0] заполняет double цветное изображение с зелеными пикселями

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

Пример: "vehicle" заполняет категориальное изображение категорией « транспортным средством»

Дополните изображение, чтобы создать гладкие ребра, заданные как 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