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)
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")
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")
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 le ha cambiado el tamaño utilizando la interpolación bicúbica, J
y la imagen a la que le ha cambiado el tamaño utilizando la interpolación del vecino más cercano, L
, en un montaje.
imshowpair(J,L,method="montage")
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")