Home > freetb4matlab > image > imrotate.m

imrotate

PURPOSE ^

% Rotation of a 2D matrix about its center.

SYNOPSIS ^

function [imgPost, H, valid] = imrotate(imgPre, thetaDeg, interp='bilinear', bbox='loose', extrapval=NA)

DESCRIPTION ^

% -*- texinfo -*-
% @deftypefn {Function File} {} imrotate(@var{imgPre}, @var{theta}, @var{method}, @var{bbox}, @var{extrapval})
% Rotation of a 2D matrix about its center.
%
% Input parameters:
%
%   @var{imgPre}   a gray-level image matrix
%
%   @var{theta}    the rotation angle in degrees counterclockwise
%
%   @var{method}
%     @itemize @w
%       @item 'nearest' neighbor: fast, but produces aliasing effects.
%       @item 'bilinear' interpolation: does anti-aliasing, but is slightly slower (default).
%       @item 'bicubic' interpolation: does anti-aliasing, preserves edges better than bilinear interpolation, but gray levels may slightly overshoot at sharp edges. This is probably the best method for most purposes, but also the slowest.
%       @item 'Fourier' uses Fourier interpolation, decomposing the rotation matrix into 3 shears. This method often results in different artifacts than homography-based methods.  Instead of slightly blurry edges, this method can result in ringing artifacts (little waves near high-contrast edges).  However, Fourier interpolation is better at maintaining the image information, so that unrotating will result in an image closer to the original than the other methods.
%     @end itemize
%
%   @var{bbox}
%     @itemize @w
%       @item 'loose' grows the image to accommodate the rotated image (default).
%       @item 'crop' rotates the image about its center, clipping any part of the image that is moved outside its boundaries.
%     @end itemize
%
%   @var{extrapval} sets the value used for extrapolation. The default value
%      is @code{NA} for images represented using doubles, and 0 otherwise.
%      This argument is ignored of Fourier interpolation is used.
%
% Output parameters:
%
%   @var{imgPost}  the rotated image matrix
%
%   @var{H}        the homography mapping original to rotated pixel
%                   coordinates. To map a coordinate vector c = [x;y] to its
%           rotated location, compute round((@var{H} * [c; 1])(1:2)).
%
%   @var{valid}    a binary matrix describing which pixels are valid,
%                  and which pixels are extrapolated. This output is
%                  not available if Fourier interpolation is used.
% @end deftypefn

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:
Generated on Fri 22-May-2009 15:13:00 by m2html © 2003