freeimage.h

FreeImage_RotateEx

8 24 32

DLL_API FIBITMAP *DLL_CALLCONV FreeImage_RotateEx(FIBITMAP *dib, double angle, double
x_shift, double y_shift, double x_origin, double y_origin, BOOL use_mask);

Esta función realiza una rotación y/o una traslación en un mapa de bits en escala de grises de 8-bit, o en una imagen de 24- o 32-bit, usando un B-Spline de tercer orden (cubico). La imagen rotada endrá la misma anchura y altura que la imagen fuente, de modo que esta función es más adecuada para visión artificial y robótica.

El ángulo de rotación es especificado mediante el parámetro angle en grados. Las traslaciones de la imagen horizontal y vertical (en pixels) se especifican en los parámetros x_shift y y_shift.

La rotación se produce alrededor del centro espefificado por x_origin y y_origin, también dados en pixels.

Cuando use_mask es TRUE, la parte irrelevante de la imagen se establece en color negro, en caso contrario, se usa una técnica de espejo para rellenar los pixels irrelevantes.

// this code assumes there is a bitmap loaded and
// present in a variable called ‘dib’
// rotate the image about the center of the image area
double x_orig = FreeImage_GetWidth(dib) / (double)2;
double y_orig = FreeImage_GetHeight(dib) / (double)2;
// perform a 15° CCW rotation using a mask (no translation)
FIBITMAP *rotated = FreeImage_RotateEx(dib, 15, 0, 0, x_orig, y_orig, TRUE);

Referencias

Philippe Thévenaz, Spline interpolation, a C source code implementation. [Online] http://bigwww.epfl.ch/thevenaz/

Unser M., Splines: A Perfect Fit for Signal and Image Processing. IEEE Signal Processing Magazine, vol. 16, no. 6, pp. 22-38, November 1999.

Unser M., Aldroubi A., Eden M., B-Spline Signal Processing: Part I--Theory. IEEE Transactions on Signal Processing, vol. 41, no. 2, pp. 821-832, February 1993.

Unser M., Aldroubi A., Eden M., B-Spline Signal Processing: Part II--Efficient Design and Applications. IEEE Transactions on Signal Processing, vol. 41, no. 2, pp. 834-848, February 1993.