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 filtro | Descripción |
---|---|
FILTER_BOX | Caja, pulso, ventana Fourier, B-Spline de 1er orden (constante) |
FILTER_BILINEAR | Filtro bilineal |
FILTER_BSPLINE | B-Spline de 4º orden (cúbico) |
FILTER_BICUBIC | Filtro cúbico dos parámetros de Mitchell and Netravali. |
FILTER_CATMULLROM | Catmull-Rom spline, Overhauser spline. |
FILTER_LANCZOS3 | Filtro 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.