Main Content

Cambiar el tamaño de una imagen

Este ejemplo muestra cómo cambiar el tamaño de una imagen utilizando la función imresize.

Empiece leyendo y mostrando una imagen.

I = imread("circuit.tif");
imshow(I)

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

Especificar el valor de aumento

Cambie el tamaño de la imagen utilizando la función imresize. En este ejemplo, especifica un factor de aumento. Para ampliar una imagen, especifique un valor de aumento mayor que 1.

magnificationFactor = 1.25;
J = imresize(I,magnificationFactor);

Muestre la imagen original y la ampliada en un montaje.

imshowpair(I,J,method="montage")

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

Especificar el tamaño de la imagen de salida

Cambie de nuevo el tamaño de la imagen, especificando en esta ocasión el tamaño que desea para la imagen de salida en lugar de un valor de aumento. Pase un vector imresize que contenga el número de filas y columnas de la imagen de salida. Si el tamaño especificado no produce la misma relación de aspecto que la imagen de entrada, la imagen de salida se distorsionará. Si especifica uno de los elementos del vector como NaN, imresize calcula el valor de esa dimensión para conservar la relación de aspecto de la imagen. Para realizar el cambio de tamaño necesario para el procesamiento multirresolución, utilice impyramid.

K = imresize(I,[100 150]);
imshowpair(I,K,method="montage")

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

Especificar el método de interpolación

Cambie de nuevo el tamaño de la imagen, especificando en esta ocasión el método de interpolación. Cuando amplía una imagen, la imagen de salida contiene más píxeles que la imagen original. imresize utiliza la interpolación para determinar los valores de estos píxeles y calcula una media ponderada de algún conjunto de píxeles en las proximidades de la ubicación de los píxeles. imresize basa las ponderaciones en la distancia de cada píxel hasta el punto. De forma predeterminada, imresize utiliza la interpolación bicúbica, pero puede especificar otros métodos o núcleos de interpolación. También puede especificar un núcleo de interpolación personalizado propio. En este ejemplo se utiliza la interpolación del vecino más cercano.

L = imresize(I,magnificationFactor,"nearest");

Muestre la imagen a la que ha cambiado de tamaño utilizando la interpolación bicúbica, J, y la imagen a la que ha cambiado de tamaño utilizando la interpolación del vecino más cercano, L, en un montaje.

imshowpair(J,L,method="montage")

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

Evitar el solapamiento al reducir una imagen

Cambie de nuevo el tamaño de la imagen, en esta ocasión, reduciendo la imagen. Al reducir el tamaño de una imagen, pierde algunos de los píxeles originales porque hay menos píxeles en la imagen de salida. Esto puede introducir artefactos, como el solapamiento. El solapamiento que se produce como resultado de una reducción del tamaño suele aparecer como patrones escalonados (especialmente en imágenes de alto contraste) o como patrones de muaré (de efecto onda) en la imagen de salida. De forma predeterminada, imresize utiliza antialiasing para limitar el impacto del solapamiento en la imagen de salida para todos los tipos de interpolación, excepto el de vecino más cercano. Para desactivar antialiasing, especifique el argumento nombre-valor "Antialiasing" y establezca el valor en false. Incluso con antialiasing activado, el cambio de tamaño puede introducir artefactos, ya que siempre se pierde información al reducir el tamaño de una imagen.

magnificationFactor = 0.66;
M = imresize(I,magnificationFactor);
N = imresize(I,magnificationFactor,Antialiasing=false);

Muestre la imagen a la que ha cambiado de tamaño con y sin antialiasing en un montaje.

imshowpair(M,N,method="montage")

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

Consulte también

Temas relacionados