findbounds

Найдите выходные границы для пространственного преобразования

Описание

пример

outbounds = findbounds(tform,inbounds) оценивает границы выхода, соответствующие заданному пространственному преобразованию и набору входа границ. tform является пространственной структурой преобразования. inbounds является 2-байт- num_dims матрица, которая задает нижнюю и верхнюю границы выходного изображения. outbounds является оценкой наименьшей прямоугольной области, полностью содержащей преобразованный прямоугольник, представленный входными границами, и имеет ту же форму, что и inbounds. Начиная с outbounds является только оценкой, она может не содержать полностью преобразованный входной прямоугольник.

Примеры

свернуть все

Чтение изображения в рабочую область и отображение изображения.

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

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

Создайте пространственную структуру преобразования, которая растягивает изображение.

T = maketform('affine',[.5 0 0; .5 2 0; 0 0 1]);

Вычислите контуры выходного изображения, учитывая размер входа изображения и пространственное преобразование. Размерности входа изображения 256 на 256. Контуры выходного изображения отражают преобразование: 256 на 512.

outb = findbounds(T,[0 0;256 256])
outb = 2×2

     0     0
   256   512

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

transformedI = imtransform(I,T);
figure
imshow(transformedI)

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

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

свернуть все

Пространственное преобразование, заданное как структура (tform).

Типы данных: struct

Ограничения для каждой размерности входа изображения, заданные как 2-by- num_dims матрица. Первая строка inbounds задает нижние границы для каждой размерности, а вторая строка задает верхние границы. num_dims должен соответствовать ndims_in область tform.

Пример: outb = findbounds(T,[0 0;256 256]) где входное изображение 256 на 256.

Типы данных: double

Выходные аргументы

свернуть все

Границы для каждой размерности выходного изображения (выход пробел, ограничивающий прямоугольник), возвращенные как 2-бай- num_dims матрица double классов.

Алгоритмы

  1. findbounds сначала создается сетка входного пространства точек. Эти точки расположены в центре, углах и середине каждого ребра на изображении.

    I = imread('rice.png');
    h = imshow(I);
    set(h,'AlphaData',0.3);
    axis on, grid on
    in_points = [ ...
        0.5000    0.5000
        0.5000  256.5000
      256.5000    0.5000
      256.5000  256.5000
        0.5000  128.5000
      128.5000    0.5000
      128.5000  128.5000
      128.5000  256.5000
      256.5000  128.5000];
    hold on
    plot(in_points(:,1),in_points(:,2),'.','MarkerSize',18)
    hold off

    Сетка точек входного пространства

  2. Далее, findbounds преобразует сетку точек входного пространства в выходное пространство. Если tform содержит прямое преобразование (непустое forward_fcn поле), затем findbounds преобразует точки входного пространства с помощью tformfwd. Для примера:

    tform = maketform('affine', ...
        [1.1067 -0.2341 0; 0.5872 1.1769 0; 1000 -300 1]);
    out_points = tformfwd(tform, in_points)
      out_points =
    
       1.0e+03 *
    
        1.0008   -0.2995
        1.1512    0.0018
        1.2842   -0.3595
        1.4345   -0.0582
        1.0760   -0.1489
        1.1425   -0.3295
        1.2177   -0.1789
        1.2928   -0.0282

    Если tform не содержит прямого преобразования, тогда findbounds оценивает выходные границы с помощью оптимизационной функции Нелдера-Мида fminsearch.

  3. Наконец, findbounds вычисляет ограничивающий прямоугольник преобразованной сетки точек.

См. также

| |

Представлено до R2006a