Main Content

findbounds

Buscar límites de salida para la transformación espacial

Descripción

ejemplo

outbounds = findbounds(tform,inbounds) estima los límites de salida correspondientes a una transformación espacial determinada y un conjunto de límites de entrada. es una estructura de transformación espacial. es una matriz de 2 por- que especifica los límites inferior y superior de la imagen de salida. es una estimación de la región rectangular más pequeña que contiene completamente el rectángulo transformado representado por los límites de entrada y tiene la misma forma que .tforminboundsnum_dimsoutboundsinbounds Dado que es solo una estimación, es posible que no contenga completamente el rectángulo de entrada transformado.outbounds

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo y muestre la imagen.

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

Cree una estructura de transformación espacial que estire una imagen.

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

Calcule los límites de la imagen de salida, dado el tamaño de la imagen de entrada y la transformación espacial. Las dimensiones de la imagen de entrada son 256 por 256. Los límites de la imagen de salida reflejan la transformación: 256 por 512.

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

     0     0
   256   512

Aplique la transformación y muestre la imagen.

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

Argumentos de entrada

contraer todo

Transformación espacial, especificada como estructura ( ).tform

Tipos de datos: struct

Límites para cada dimensión de la imagen de entrada, especificada como una matriz de 2 por.num_dims La primera fila de especifica los límites inferiores para cada dimensión y la segunda fila especifica los límites superiores. tiene que ser coherente con el campo de .inboundsnum_dimsndims_intform

Ejemplo: donde la imagen de entrada es 256 por 256.outb = findbounds(T,[0 0;256 256])

Tipos de datos: double

Argumentos de salida

contraer todo

Límites para cada dimensión de la imagen de salida (cuadro delimitador de espacio de salida), devuelto como una matriz de 2 por clase .num_dimsdouble

Algoritmos

  1. primero crea una cuadrícula de puntos de espacio de entrada.findbounds Estos puntos están en el centro, las esquinas y el centro de cada borde de la imagen.

    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

    Cuadrícula de puntos de espacio de entrada

  2. A continuación, transforma la cuadrícula de puntos de espacio de entrada en espacio de salida.findbounds Si contiene una transformación hacia delante (un campo no vacío), transforma los puntos de espacio de entrada utilizando .tformforward_fcnfindboundstformfwd Por ejemplo:

    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

    Si no contiene una transformación hacia delante, estima los límites de salida mediante la función de optimización Nelder-Mead .tformfindboundsfminsearch

  3. Por último, calcula el cuadro delimitador de la cuadrícula transformada de puntos.findbounds

Consulte también

| |

Introducido antes de R2006a