Patent US5670982A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5670982A Expired / Lapsed US ⏱️ 0.0 years remaining

System for fast 90-degree rotation of bi-level images

Assignee: International Business Machines Corp
•
Filing: 1995-02-08
•
Granted: 1997-09-23
•
Expires: 2015-02-08
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method for rotating bi-level image data plus or minus 90°. An 8×8 pixel block is selected for rotation from the image data and, using lookup tables, an intermediate matrix is generated dynamically and stored into two 32-bit registers in the processor. Generation of the intermediate matrix partially rotates and stores the odd-numbered rows from the block of data in the first 32-bit register and the even-numbered rows from the block in the second 32-bit register. The first and second registers are copied, respectively, into third and fourth 32-bit registers. The first and second registers are then shifted one bit in opposite directions. The first register is logical ORed with the fourth register, and the second register is logical ORed with the third register so that the even bits are replaced in one register and the odd bits in the other. These steps are repeated for all remaining blocks of image data.

Inventors

  • 👤 Albert Z. Zhao

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-09 16:23
CPC Classifications
G; G06; G06T; G06T3/00; G06T3/60; G06T3/602; G09; G09G; G09G5/00; G09G5/36; G09G5/39; G09G5/393

Claims Analysis

Total Claims: 16
Claim 1
Independent Claim 291 words
In a 32-bit operating system, a method of rotating by 90° a block of bi-level image data having 8 rows by 8 columns of pixel data bits, comprising the computer implemented steps of: generating an intermediate matrix having 8 rows by 8 columns of pixel data bits from the pixel data bits of the block, wherein the block is divided into four row pairs and the intermediate matrix is divided into four nibble column pairs, each said row pair corresponding to one of the nibble column pairs, each row of each row pair being divided into two halves, one of said halves of one row of each row pair being rotated 90° and translated to form a top half of one nibble column of the corresponding nibble column pair, the other one of said halves of said one row also being rotated 90° and translated to form a top half of the other nibble column of the corresponding nibble column pair, one of said halves of the other row of each row pair being rotated 90° and translated to form a bottom half of said one nibble column, the other one of said halves of said other row being rotated 90° and translated to form a bottom half of the other nibble column of the corresponding nibble column pair; saving the rows of the intermediate matrix sequentially into first and second 32-bit processor registers; copying the first 32-bit register into a third 32-bit processor register and the second 32-bit register into a fourth 32-bit processor register; shifting each of the first and second registers by one bit in opposite directions; and overlaying alternate bits from the fourth register onto the first register and from the third register onto the second register.
Claim 2
Dependent Claim 291 words
In a 32-bit operating system, a method of rotating by 90° a block of bi-level image data having 8 rows by 8 columns of pixel data bits, comprising the computer implemented steps of: generating an intermediate matrix having 8 rows by 8 columns of pixel data bits from the pixel data bits of the block, wherein the block is divided into four row pairs and the intermediate matrix is divided into four nibble column pairs, each said row pair corresponding to one of the nibble column pairs, each row of each row pair being divided into two halves, one of said halves of one row of each row pair being rotated 90° and translated to form a top half of one nibble column of the corresponding nibble column pair, the other one of said halves of said one row also being rotated 90° and translated to form a top half of the other nibble column of the corresponding nibble column pair, one of said halves of the other row of each row pair being rotated 90° and translated to form a bottom half of said one nibble column, the other one of said halves of said other row being rotated 90° and translated to form a bottom half of the other nibble column of the corresponding nibble column pair; saving the rows of the intermediate matrix sequentially into first and second 32-bit processor registers; copying the first 32-bit register into a third 32-bit processor register and the second 32-bit register into a fourth 32-bit processor register; shifting each of the first and second registers by one bit in opposite directions; and overlaying alternate bits from the fourth register onto the first register and from the third register onto the second register.
Claim 3
Dependent Claim 62 words
The method, according to claim 1, wherein the step of generating an intermediate matrix comprises generating an intermediate matrix wherein successive row pairs from top to bottom in the block correspond to successive nibble column pairs from right to left in the intermediate matrix, and wherein said one row of each row pair is the top row of each said row pair.
Claim 4
Dependent Claim 42 words
The method according to claim 2, wherein the step of shifting each of the first and second registers by one bit in opposite directions comprises shifting the first register by one bit left and shifting the second register by one bit right.
Claim 5
Dependent Claim 56 words
The method according to claim 3, wherein the step of overlaying alternate bits further comprises the steps of zeroing out all odd bits of the first and fourth registers and all even bits of the second and third register, and logical ORing the first register with the fourth register and the register with the third register.
Claim 6
Dependent Claim 62 words
The method according to claim 1, wherein the step of generating an intermediate matrix comprises generating an intermediate matrix wherein successive row pairs from top to bottom in the block correspond to successive nibble column pairs from left to right in the intermediate matrix, and wherein said one row of each row pair is the bottom row of each said row pair.
Claim 7
Dependent Claim 42 words
The method, according to claim 5, wherein the step of shifting each of the first and second register by one bit in opposite directions comprises shifting the first register by one bit right and shifting the second register by one bit left.
Claim 8
Dependent Claim 57 words
The method according to claim 6, wherein the step of overlaying alternate bits further comprises the steps of zeroing out all even bits of the first and fourth registers and all odd bits of the second and third registers, and logical ORing the first register with the fourth register and the second register with the third register.
Claim 9
Dependent Claim 85 words
The method, according to claim 1, wherein the step of generating an intermediate matrix comprises: obtaining a first set of 4-byte values from at least one lookup table for each odd-numbered row from the block and dynamically overlaying said first set of 4-byte values in the first 32-bit register; and obtaining a second set of 4-byte values from said at least one lookup table for each even-numbered row from the block and dynamically overlaying said second set of 4-byte values in the second 32-bit register.
Claim 10
Dependent Claim 309 words
In a 32-bit operating system, a method of rotating a bi-level image by 90°, comprising the computer implemented steps of: a) selecting an unrotated 8 by 8 pixel matrix from the image data; b) generating an intermediate matrix having 8 rows by 8 columns of pixel data bits from the pixel data bits of the block, wherein the block is divided into four row pairs and the intermediate matrix is divided into four nibble column pairs, each said row pair corresponding to one of the nibble column pairs, each row of each row pair being divided into two halves, one of said halves of one row of each row pair being rotated 90° and translated to form a top half of one nibble column of the corresponding nibble column pair, the other one of said halves of said one row also being rotated 90° and translated to form a top half of the other nibble column of the corresponding nibble column pair, one of said halves of the other row of each row pair being rotated 90° and translated to form a bottom half of said one nibble column, the other one of said halves of said other row being rotated 90° and translated to form a bottom half of the other nibble column of the corresponding nibble column pair; c) saving the rows of the intermediate matrix sequentially into first and second 32-bit processor registers; d) copying the first 32-bit register into a third 32-bit processor register and the second 32-bit register into a fourth 32-bit processor register; e) shifting each of the first and second registers by one bit in opposite directions; and f) overlaying alternate bits from the fourth register onto the first register and from the third register onto the second register; and g) repeating steps a) through f) until the image has been rotated.
Claim 11
Dependent Claim 309 words
In a 32-bit operating system, a method of rotating a bi-level image by 90°, comprising the computer implemented steps of: a) selecting an unrotated 8 by 8 pixel matrix from the image data; b) generating an intermediate matrix having 8 rows by 8 columns of pixel data bits from the pixel data bits of the block, wherein the block is divided into four row pairs and the intermediate matrix is divided into four nibble column pairs, each said row pair corresponding to one of the nibble column pairs, each row of each row pair being divided into two halves, one of said halves of one row of each row pair being rotated 90° and translated to form a top half of one nibble column of the corresponding nibble column pair, the other one of said halves of said one row also being rotated 90° and translated to form a top half of the other nibble column of the corresponding nibble column pair, one of said halves of the other row of each row pair being rotated 90° and translated to form a bottom half of said one nibble column, the other one of said halves of said other row being rotated 90° and translated to form a bottom half of the other nibble column of the corresponding nibble column pair; c) saving the rows of the intermediate matrix sequentially into first and second 32-bit processor registers; d) copying the first 32-bit register into a third 32-bit processor register and the second 32-bit register into a fourth 32-bit processor register; e) shifting each of the first and second registers by one bit in opposite directions; and f) overlaying alternate bits from the fourth register onto the first register and from the third register onto the second register; and g) repeating steps a) through f) until the image has been rotated.
Claim 12
Dependent Claim 294 words
A 32-bit system for operating a block of bi-level image data having 8 rows by 8 columns of pixel data bits, comprising: means for generating an intermediate matrix having 8 rows by 8 columns of pixel data bits from the pixel data bits of the block, wherein the block is divided into four row pairs and the intermediate matrix is divided into four nibble column pairs, each said row pair corresponding to one of the nibble column pairs, each row of each row pair being divided into two halves, one of said halves of one row of each row pair being rotated 90° and translated to form a top half of one nibble column of the corresponding nibble column pair, the other one of said halves of said one row also being rotated 90° and translated to form a top half of the other nibble column of the corresponding nibble column pair, one of said halves of the other row of each row pair being rotated 90° and translated to form a bottom half of said one nibble column, the other one of said halves of said other row being rotated 90° and translated to form a bottom half of the other nibble column of the corresponding nibble column pair; at least first, second, third, and fourth 32-bit processor registers, the first and third registers for saving, in duplicate, the first four rows of the intermediate matrix and the second and fourth registers for saving, in duplicate, the remaining four rows of the intermediate matrix; means for shifting each of the first and second registers by one bit in opposite directions; and means for overlaying alternate bits from the fourth register onto the first register and from the third register onto the second register.
Claim 13
Dependent Claim 294 words
A 32-bit system for operating a block of bi-level image data having 8 rows by 8 columns of pixel data bits, comprising: means for generating an intermediate matrix having 8 rows by 8 columns of pixel data bits from the pixel data bits of the block, wherein the block is divided into four row pairs and the intermediate matrix is divided into four nibble column pairs, each said row pair corresponding to one of the nibble column pairs, each row of each row pair being divided into two halves, one of said halves of one row of each row pair being rotated 90° and translated to form a top half of one nibble column of the corresponding nibble column pair, the other one of said halves of said one row also being rotated 90° and translated to form a top half of the other nibble column of the corresponding nibble column pair, one of said halves of the other row of each row pair being rotated 90° and translated to form a bottom half of said one nibble column, the other one of said halves of said other row being rotated 90° and translated to form a bottom half of the other nibble column of the corresponding nibble column pair; at least first, second, third, and fourth 32-bit processor registers, the first and third registers for saving, in duplicate, the first four rows of the intermediate matrix and the second and fourth registers for saving, in duplicate, the remaining four rows of the intermediate matrix; means for shifting each of the first and second registers by one bit in opposite directions; and means for overlaying alternate bits from the fourth register onto the first register and from the third register onto the second register.
Claim 14
Dependent Claim 20 words
A system, according to claim 10, wherein the means for generating an intermediate matrix comprises at least one lookup table.
Claim 15
Dependent Claim 35 words
A system, according to claim 11, wherein said at least one lookup table comprises multiple look tables, each lookup table being adapted for generating a 4-byte value for at least one row from the block.
Claim 16
Dependent Claim 53 words
A system, according to claim 10, wherein the means for generating an intermediate matrix comprises: four lookup tables, each lookup table being adapted for generating 4-byte values for at least two rows from the block; and means for dynamically overlaying 4-byte values from alternate rows from the block into one of said registers.

References Cited (Backward Citations)

US4593407A Cited
US4627020A Cited
US4703515A Cited
US4837845A Cited
US4947344A Cited
US4985849A Cited
US5365601A Cited
US5563625A Cited
US5598181A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-09-22 2001-03-24 2001-09-23 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-09-22 2005-03-24 2005-09-23 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-09-22 2009-03-24 2009-09-23 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag