Функции Image Toolbox / maketform.php
.htmСписок функций Image Processing Toolbox. Описание функции MAKETFORM Семинары Обучение Лицензирование Разработка Подписка Форум Регистрация Matlab Toolboxes Simulink Blocksets Femlab Полезное Вход Обработка сигналов и изображений\Image Processing ToolboxСписок функций Image Processing Toolbox: Геометрические преобразования изображений
В оглавление \ К следующему разделу \ К предыдущему разделу
MAKETFORM Создание структур геометрических преобразований Синтаксис:
T = maketform(transformtype,...)
Описание:
Функция T = maketform(transformtype,...) создает структуру многомерных пространственных преобразований (так называемую TFORM-структуру), которая используется при реализации функций tformfwd, tforminv, fliptform, imtransform или tformarray.
Функция transformtype может работать с одним из следующих типов пространственных преобразований. Синтаксис этих типов описан в таблице.
Тип преобразований
Описание
'affine'
Аффинные преобразования (двумерные или N-мерные)
'projective'
Проекционные преобразования (двумерные или N-мерные)
'custom'
Преобразования, которые определяются пользователем (двумерные или N-мерные)
'box'
Независимые аффинные преобразования по каждой размерности (масштабирование и сдвиг)
'composite'
Построение нескольких произвольных преобразований
Типы преобразований
Аффинные преобразования
Функция T = maketform('affine',A) создает TFORM-структуру T, которая используется при N-мерных аффинных преобразованиях. A представляет собой невырожденную матрицу с размерностью (N+1)(N+1) или (N+1)N. Когда размерность матрицы A равна (N+1)(N+1), тогда последний столбец равен [zeros(N,1);1]. В другом случае, матрица A автоматически дополняется так, чтобы последний столбец был равен [zeros(N,1);1]. В матрице A определены прямые преобразования, например tformfwd(U,T), где U представлено вектором с размерностью 1N, а X возвращает вектор с размерностью 1N - X=U*A(1:N,1:N)+A(N+1,1:N). Параметр T представляет прямые и инверсные преобразования.
Функция T = maketform('affine',U,X) создает TFORM-структуру T для двумерных аффинных преобразований, которые трансформируют каждую строку U в соответствующую строку X. Каждый из аргументов U и X имеет размерность 32 и определяет углы исходных и результирующих треугольников. Углы не должны быть коллинеарными.
Проекционные преобразования
Функция T = maketform('projective',A) создает TFORM-структуру для N-мерных проекционных преобразований. A представляет собой невырожденную матрицу с размерностью (N+1)(N+1). Значения A(N+1,N+1) равны нулю. В матрице A определены прямые преобразования, например, tformfwd(U,T), где параметр U представлен в виде вектора с размерностью 1N. X определяется как X = W(1:N)/W(N+1), где W=[U 1]*A. Структура преобразований T используется как при прямых, так и при инверсных преобразованиях.
Функция T = maketform('projective',U,X) создает TFORM-структуру T для реализации двумерных проекционных преобразований, которые отображают каждую строку U соответствующей строкой X. Аргументы U и X имеют размерность 42 и определяют исходный и результирующий прямоугольник. Углы не должны быть коллинеарными.
Преобразования, которые определяются пользователем
Функция T = maketform('custom',NDIMS_IN,NDIMS_OUT,...FORWARD_FCN,INVERSE_FCN,TDATA) создает TFORM-структуру T на основе параметров, которые задаются пользователем. Параметры NDIMS_IN и NDIMS_OUT определяют число исходных и результирующих размерностей. С помощью FORWARD_FCN и INVERSE_FCN задается функция прямых и инверсных преобразований. Эти функции должны поддерживать следующий синтаксис:
Прямая функция:
X = FORWARD_FCN(U,T)
Инверсная функция:
U = INVERSE_FCN(X,T),
где параметр U представляет собой матрицу с размерностью PNDIMS_IN. Строки представляют точки в исходном пространстве преобразований и X представляет собой матрицу с размерностью PNDIMS_OUT, где строки представляют точки в результирующем пространстве преобразований. Аргумент TDATA представляет собой некоторый массив системы MATLAB и используется для хранения параметров преобразований. Для доступа к этому массиву используются функции FORWARD_FCN и INVERSE_FCN в поле "tdata" в T.
Независимые аффинные преобразования по каждой размерности
Функция T = maketform('box',tsize,LOW,HIGH) или T = maketform('box',INBOUNDS, OUTBOUNDS) создает TFORM-структуру T для N-мерных аффинных преобразований. Аргумент tsize представляет собой N-элементный вектор положительных целых чисел. Параметры LOW и HIGH представляют собой также N-элементные векторы. Отображение преобразований производится с использованием параметров INBOUNDS и INBOUND.
Построение нескольких произвольных преобразований
Функция T = maketform('composite',T1,T2,...,TL) или T = maketform('composite', [T1 T2 ... TL]) создает TFORM-структуру T, где прямые и инверсные функции состоят из нескольких функций прямых и инверсных преобразований T1, T2, ..., TL.
Например, когда L = 3, тогда выражение tformfwd(U,T) аналогично tformfwd(tformfwd(tformfwd(U,T3),T2),T1).
Пример 1.
Сконструируем и применим аффинные преобразования.
T = maketform('affine',[.5 0 0; .5 2 0; 0 0 1]); tformfwd([10 20],T) I = imread('cameraman.tif'); figure, imshow(I); I2 = imtransform(I,T); imshow(I2) T = maketform('projective',[.5 0 0; .5 1 0; 0 0 1]);
tformfwd([20 10],T)
I2 = imtransform(I,T);
imshow(I2)
Пример 2.
Приведем также другой пример использования функции maketform.
I = checkerboard(20,1,1);
imview(I)
T = maketform('projective',[1 1; 41 1; 41 41; 1 41],...
[5 5; 40 5; 35 30; -10 30]);
R = makeresampler('cubic','circular');
J = tformarray(I,T,R,[1 2],[2 1],[100 100],[],[]);
imview(J)
Сопутствующие функции: TFORMFWD, TFORMINV, FLIPTFORM, IMTRANSFORM, TFORMARRAY.
В оглавление \ К следующему разделу \ К предыдущему разделу
I Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
II Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2004 г.) На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro E-mail: matlab@exponenta.ru Информация на сайте была обновлена 14.05.05 Copyright 2001-2005 SoftLine Co
Наши баннеры hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=58396&im=33&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("") >