freeimage.h

FreeImage_Rescale

1 4 8 16 24 32 16UINT16 48RGB16 64RGBA16 32FLOAT 96RGBF 128RGBAF

DLL_API FIBITMAP * DLL_CALLCONV FreeImage_Rescale(FIBITMAP *dib, int dst_width, int
dst_height, FREE_IMAGE_FILTER filter);

Esta función realiza un remuestreo (o escalado, zoom) de una imagen en escala de grises o una imagen RGB(A) al destino con la anchura y altura deseadas. Se retorna un valor NULL cuando la profundidad de bits no pueda ser manejada o cuando no haya suficiente memoria (esto puede siceder con imágenes muy grandes).

Tipos FIT_BITMAP

Las imágenes cuyo tipo es FIT_BITMAP se retornan como 8-bit o 24-bit, o como 32-bit si contienen transparencia. Por ejemplo, un mapa de bits RGB de 16-bit se retorna como 24-bit. Los mapas de bits sin transparencia, con paleta y de 4-bit se retornan como imágenes de 24-bit. El algoritmo intenta producir ina imagen de destino con la cantidad más pequeña posible de bits de profundidad.

Si hay transparencia, se obtendrá una imagen de 32-bit. Si hay colores reales, se obtendrá una imagen de 24-bit. Para el resto de los casos se obtiene una imagen de 8-bit con una paleta de colores lineal (cuyo valor predeterminado es MINISBLACK; sólo será MINISWHITE, si la imagen original es de tipo MINISWHITE).

Con remuestreo se refiere a modificar las dimensiones del pixel (y por lo tanto el tamaño de muestra) de la imagen.

Cuando se remuestrea hacia abajo (o se decrementa el número de pixels), se borra información de la imagen. Cuando se remuestrea hacia arriba (o se incrementa el número de pixels), se añaden nuevo pixels basándose en los valores de color de los pixels existentes. Se debe especificar un filtro de interpolación para determinar el modo en que se añaden o eliminan pixels.

Se pueden usar los siguientes filtros para remuestrear:

Flag de filtroDescripción
FILTER_BOXCaja, pulso, ventana Fourier, B-Spline de 1er orden (constante)
FILTER_BILINEARFiltro bilineal
FILTER_BSPLINEB-Spline de 4º orden (cúbico)
FILTER_BICUBICFiltro cúbico dos parámetros de Mitchell and Netravali.
FILTER_CATMULLROMCatmull-Rom spline, Overhauser spline.
FILTER_LANCZOS3Filtro sinc Lanczos-windowed.

Constantes IMAGE_FILTER.

Referencias

Catmull E., Rom R., A class of local interpolating splines. In Computer Aided Geometric Design, R. E. Barnhill and R. F. Reisenfeld, Eds. Academic Press, New York, 1974, pp. 317– 326.

Hou H.S., Andrews H.C., Cubic Splines for Image Interpolation and Digital Filtering. IEEE Trans. Acoustics, Speech, and Signal Proc., vol. ASSP-26, no. 6, pp. 508-517, Dec. 1978.

Keys R.G., Cubic Convolution Interpolation for Digital Image Processing. IEEE Trans. Acoustics, Speech, and Signal Processing, vol. 29, no. 6, pp. 1153-1160, Dec. 1981.

Mitchell Don P., Netravali Arun N., Reconstruction filters in computer graphics. In John Dill, editor, Computer Graphics (SIGGRAPH '88 Proceedings), Vol. 22, No. 4, pp. 221-228, August 1988.

Paul Heckbert, C code to zoom raster images up or down, with nice filtering. UC Berkeley, August 1989.

[Online] http://www-2.cs.cmu.edu/afs/cs.cmu.edu/Web/People/ph/heckbert.html

Glassner A.S., Principles of digital image synthesis. Morgan Kaufmann Publishers, Inc, San Francisco, Vol. 2, 1995.