Browse Prior Art Database

# FAST SMALL-ANGLE BITMAP ROTATION

IP.com Disclosure Number: IPCOM000026586D
Original Publication Date: 1992-Oct-31
Included in the Prior Art Database: 2004-Apr-06
Document File: 2 page(s) / 114K

## Publishing Venue

Xerox Disclosure Journal

## Abstract

It is commonly known that a bitmap image may be rotated by an angle 0 according to the the following equations: newx = x* cos 0 - y*sin 0, and newy = x*sin 0 + y*cos 0. Unfortunately, rotation using these equations becomes extremely computationally intensive. Because bit-map image rotation is a desirable feature in image processing environments, it is advantageous to accomplish the rotation in a more efficient manner.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 54% of the total text.

Page 1 of 2

XEROX DISCLOSURE JOURNAL

FAST SMALL-ANGLE BITMAP Proposed Classification ROTATION US. C1.358/448 Michel J. Denber Int. C1. H04m 1/40

It is commonly known that a bitmap image may be rotated by an angle 0 according to the the following equations:

newx = x* cos 0 - y*sin 0, and newy = x*sin 0 + y*cos 0.

Unfortunately, rotation using these equations becomes extremely computationally intensive. Because bit-map image rotation is a desirable feature in image processing environments, it is advantageous to accomplish the rotation in a more efficient manner.

Accordingly, the present disclosure is directed to an improved algorithm for bit-map rotations through relatively small angles, generally less than fifteen degrees. The algorithm relies on the bitblt (block transfer) instruction available on many modern computers. The algorithm is based upon the recognition that when a bitmap is rotated through a small angle, many adjacent pixels move approximately the same distance. Thus the use of the bitblt instruction may accomplish the equivalent movement of the pixels in an efficient manner.

In general, the algorithm uses arithmetic operations only for control of the looping structure. Moreover, the algorithm disclosed always rotates the image around the lower-left corner of the image, by first dividing the bit-map image into vertical strips, where the width of the strips is inversely proportional to the tangent of the angle of rotation (0). As an example, a rotation angle of 3 degrees would yield a vertical strip width of 19 pixels. Once the strip width is determined, the image bitmap is traversed left-to-right and each successive strip is displaced upward by one more pixel than the previous strip. Subsequently, a similar process is repeated in t...