exponenta event banner

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.

Прочитайте 3D данные о МРТ в рабочее пространство и визуализируйте его.

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 для цветных изображений.

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

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

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

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

  • Числовой массив, размер которого соответствует размерам 3-to-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