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 object. The axes object contains an object of type image.

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

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 object. The axes object contains an object of type image.

Считайте 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

Figure contains an axes object. The axes object 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 object. The axes object contains 3 objects of type surface.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Figure contains an axes object. The axes object 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 2D и A имеет больше чем две размерности, такой что касается изображения RGB, затем imwarp применяет то же 2D преобразование ко всем 2D плоскостям по более высоким измерениям.

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

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

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

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

  • Если A 3-D полутоновое изображение размера m-by-n-by-p, затем задайте полевой массив смещения как m-by-n-by-p-by-3 массив. D(:,:,:,1) содержит смещения вдоль x - ось. imwarp добавляют эти значения к столбцу, строке и местоположениям глубины в D произвести повторно сопоставленные местоположения в A. Точно так же D(:,:,:,2) и D(:,:,:,3) содержите смещения вдоль 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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'FillValues',255 использует значение заливки 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