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.