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

Далее, 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.
Наконец, findbounds вычисляет ограничивающий прямоугольник преобразованной сетки точек.