Main Content

Especificar valores de relleno en la salida de transformación geométrica

En este ejemplo se muestra cómo especificar los valores de relleno utilizados cuando realiza una transformación geométrica.imwarp Al realizar una transformación, a menudo hay píxeles en la imagen de salida que no forman parte de la imagen de entrada original. A estos píxeles se les debe asignar algún valor, denominado archivo .valor de relleno De forma predeterminada, establece estos píxeles en cero y se muestran como negros.imwarp Con el parámetro, puede especificar un color diferente.FillValues Si la imagen que se está transformando es una imagen en escala de grises, especifique un valor escalar que especifique un tono de gris. Si la imagen que se está transformando es una imagen RGB, puede utilizar un valor escalar o un vector 1 por 3. Si especifica un escalar, utilice ese tono de gris para cada plano de la imagen RGB.imwarp Si especifica un vector 1 por 3, interpreta los valores como un valor de color RGB.imwarp

Lea la imagen en el espacio de trabajo. En este ejemplo se utiliza una imagen en color.

rgb = imread('onion.png');

Cree la matriz de transformación. Esta matriz define una transformación de traducción.

xform = [ 1 0 0            0 1 0            40 40 1 ];

Cree el objeto de transformación geométrica. En este ejemplo se crea un objeto affine2d.

tform_translate = affine2d(xform)
tform_translate =    affine2d with properties:      Dimensionality: 2                  T: [3x3 double]  

Cree un objeto de referencia 2D. Este objeto especifica aspectos del sistema de coordenadas del espacio de salida para que el área que necesita valores de relleno sea visible. De forma predeterminada, el tamaño de la imagen de salida es lo suficientemente grande como para contener toda la imagen transformada, pero no todo el espacio de coordenadas de salida.imwarp

Rout = imref2d(size(rgb));  Rout.XWorldLimits(2) = Rout.XWorldLimits(2)+40;  Rout.YWorldLimits(2) = Rout.YWorldLimits(2)+40;  Rout.ImageSize = Rout.ImageSize+[40 40];

Realice la transformación con la función.imwarp

cb_rgb = imwarp(rgb,tform_translate,'OutputView',Rout); figure, imshow(cb_rgb)

Ahora realice la transformación, esta vez especificando un valor de relleno.

cb_fill = imwarp(rgb,tform_translate,'FillValues',[187;192;57],...     'OutputView',Rout);  figure, imshow(cb_fill)

Consulte también

| |

Temas relacionados