文档

findbounds

找到空间变换的输出边界

语法

Outbounds = findbounds(tform,inbounds)

描述

例子

禁止击球区= findbounds (tform发边线球的估计对应于给定空间变换的输出边界和一组输入边界。tform是一种空间转换结构。发边线球的是2 × -吗num_dims矩阵,它指定输出图像的下界和上界。禁止击球区最小矩形区域的估计是否完全包含由输入边界表示的转换矩形,并且具有与发边线球的.自禁止击球区只是一个估计值,它可能不完全包含转换后的输入矩形。

例子

全部折叠

将图像读入工作区,并显示图像。

I = imread(“cameraman.tif”);图imshow(我)

创建一个扩展图像的空间转换结构。

maketform(仿射的,(。5 0 0;.5 2 0;0 0 1]);

计算输出图像的边界,给定输入图像的大小和空间变换。输入图像的尺寸为256 * 256。输出图像的边界反映了转换:256 × 512。

outb = findbindings (T,[0 0;256 256])
outb =2×20 0 256 512

应用转换,并显示图像。

transformmedi = imtransform(I,T);图imshow (transformedI)

输入参数

全部折叠

空间转换,指定为结构(tform).

数据类型:结构体

输入图像的每个维度的边界,指定为2 × -num_dims矩阵。的第一行发边线球的指定每个维度的下界,第二行指定上界。num_dims必须与ndims_in领域的tform

例子:outb = findbindings (T,[0 0;256 256])其中输入图像为256 * 256。

数据类型:

输出参数

全部折叠

输出图像的每个维度的边界(输出空间包围框),作为2 * -返回num_dims类矩阵

算法

  1. findbounds首先创建一个输入空间点的网格。这些点位于图像中每条边的中心、角和中间。

    I = imread('rice.png');h = imshow(I);集(h, AlphaData, 0.3);轴打开,网格打开in_points =[…]0.5000 0.5000 0.5000 256.5000 256.5000 256.5000 256.5000 0.5000 128.5000 128.5000 128.5000 128.5000 128.5000 256.5000 256.5000 128.5000;hold on plot(in_points(:,1),in_points(:,2),'.','MarkerSize',18

    输入空间点网格

  2. 接下来,findbounds将输入空间点的网格转换为输出空间。如果tform包含正向转换(非空forward_fcn字段),然后findbounds使用转换输入空间点tformfwd.例如:

    Tform =仿射的...[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使用Nelder-Mead优化函数估计输出边界fminsearch

  3. 最后,findbounds计算转换后的点网格的边界框。

R2006a之前介绍

这个话题有用吗?