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)

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

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

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

Создайте 2D аффинное преобразование. Этот пример создает рандомизированное преобразование, которое состоит из шкалы фактором в области значений [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');

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

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

iptsetpref('ImshowAxesVisible','off')

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

свернуть все

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

Типы данных: 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 изображение, затем D m-by-n-by-2 массив. Первая плоскость поля смещения, D(:,:,1), описывает x - компонент аддитивного смещения. imwarp добавляют эти значения к столбцу и местоположениям строки в D произвести повторно сопоставленные местоположения в A. Вторая плоскость поля смещения, D(:,:,2), описывает y - компонент аддитивных значений смещения. Для 2D цвета или многоспектральных изображений с несколькими цветовыми каналами, 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 объект для 2D преобразования или 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> категория.

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

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

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

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

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

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

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

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

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

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

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

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

Категориальное изображение2D или 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