Redimensionar una imagen y conservar la relación de aspecto
En este ejemplo se muestra cómo redimensionar una imagen manteniendo la relación entre anchura y altura. En este ejemplo se describen dos situaciones habituales:
Desea redimensionar la imagen y especificar la altura o anchura exactas.
Desea redimensionar una imagen para que sea lo más grande posible sin que la anchura y la altura superen un valor máximo.
Empiece leyendo y mostrando una imagen.
I = imread("lighthouse.png");
imshow(I)
Obtenga el tamaño de la imagen. La relación de aspecto de esta imagen es 3:4, lo que significa que la anchura es 3/4 de la altura.
[heightI,widthI,~] = size(I)
heightI = 640
widthI = 480
Redimensionar una imagen a una altura especificada
Especifique la altura deseada de la imagen.
targetHeight = 300;
Redimensione la imagen especificando el tamaño de salida de la imagen. Dado que el segundo elemento de targetSize es NaN, imresize calcula automáticamente el número de filas necesarias para mantener la relación de aspecto.
targetSize = [targetHeight NaN]; J = imresize(I,targetSize); [h,w,~] = size(J)
h = 300
w = 225
imshow(J)

Redimensionar una imagen a una anchura especificada
Especifique la anchura deseada de la imagen.
targetWidth = 300;
Redimensione la imagen especificando el tamaño de salida de la imagen. Dado que el primer elemento de targetSize es NaN, imresize calcula automáticamente el número de columnas necesarias para mantener la relación de aspecto.
targetSize = [NaN targetWidth]; K = imresize(I,targetSize); [h,w,~] = size(K)
h = 400
w = 300
imshow(K)

Redimensionar una imagen dentro del tamaño máximo
Puede redimensionar una imagen para que sea lo más grande posible sin que la anchura y la altura superen un valor máximo.
Especifique las dimensiones máximas de la imagen.
maxHeight = 256; maxWidth = 256;
Determine qué dimensión requiere un factor de escala mayor.
scaleWidth = widthI/maxWidth
scaleWidth = 1.8750
scaleHeight = heightI/maxHeight
scaleHeight = 2.5000
Seleccione el tamaño de salida en función de si la altura o la anchura requieren un factor escalar mayor para que se ajusten a las dimensiones máximas de la imagen. Si la altura requiere un factor escalar mayor, especifique la altura objetivo como maxHeight. Por el contrario, si la anchura requiere un factor escalar mayor, especifique la anchura objetivo como maxWidth. Permita que imresize calcule automáticamente el tamaño de la otra dimensión para mantener la relación de aspecto.
if scaleHeight>scaleWidth targetSize = [maxHeight NaN]; else targetSize = [NaN maxWidth]; end
Redimensione la imagen especificando el tamaño de salida de la imagen.
L = imresize(I,targetSize); [h,w,~] = size(L)
h = 256
w = 192
imshow(L)
