IP Library Granted Patent US 7,876,977
Granted Patent B2
US 7,876,977 · App. 11/703,068 · Granted Jan 25, 2011

Image processor and method of image rotation

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,876,977
App. No.
11/703,068
Granted
Jan 25, 2011
Kind
B2
Abstract

A method of rotating a digital image includes performing a first pass to process a selected image tile of a source image. The first pass includes copying a set of pixels of the selected image tile from a first memory to a processor memory, where the set of pixels comprises a portion of the selected image tile. The first pass further includes grouping the set of pixels into blocks of pixels and writing each of the blocks of pixels to a memory location. The method further includes repeating the first pass until each of the pixels of the selected image tile is processed, performing a second pass to process the blocks of pixels, and repeating the second pass until each of the blocks of pixels is processed. The second pass includes copying blocks of pixels, regrouping the blocks of pixels, and writing the regrouped pixels to a destination image location.

Claims (57)

1. A method of rotating a digital image, the method comprising:

performing a first pass to process a selected image tile of a source image, the first pass comprising:

copying a set of pixels of the selected image tile from a first memory to a processor memory, wherein the set of pixels comprises a portion of the selected image tile;

grouping the set of pixels into blocks of pixels; and

writing each of the blocks of pixels to a memory location;

repeating the first pass until each of the pixels of the selected image tile is processed; and

performing a second pass to process the blocks of pixels, the second pass comprising:

copying selected blocks of pixels from the memory location;

regrouping the selected blocks of pixels to form regrouped blocks of pixels;

writing the regrouped blocks of pixels to a destination image tile at a destination image location; and

repeating the second pass until each pixel of the blocks of pixels at the memory location is processed.

2. The method of claim 1 , wherein the source image comprises a plurality of image tiles including the selected image tile.

3. The method of claim 2 , further comprising, repeatedly;

selecting a next image tile of the plurality of image tiles; and

performing the first pass and the second pass until each of the plurality of image tiles of the source image is processed.

4. The method of claim 1 , further comprising:

performing at least one intermediate pass between the first pass and the second pass, the at least one intermediate pass comprising:

copying selected blocks of pixels from the memory location;

regrouping the selected blocks of pixels to form regrouped blocks of pixels;

writing the regrouped blocks of pixels to a different memory location; and

repeating the at least one intermediate pass until each pixel of the blocks of pixels at the memory location is processed.

5. The method of claim 4 , wherein a memory size of the processor memory is a power of two fraction of a size of the source image tile.

6. The method of claim 1 , further comprising logically fragmenting the source image into a plurality of image tiles based on a pixel size of the processor memory.

7. The method of claim 1 , wherein each image tile of the plurality of image tiles includes a square block of pixels having a number of pixels that is a power of two fraction of a pixel size of the processor memory.

8. The method of claim 1 , wherein the memory location comprises an off-chip memory location.

9. The method of claim 1 , wherein the memory location comprises a random access memory (RAM).

10. An image processor comprising:

a processor memory to store pixels of a selected image tile of a source image comprising a plurality of image tiles; and

a processing unit having access to the processor memory, the processing unit to perform at least two passes to rotate the source image tile, the at least two passes comprising:

a first pass to copy a set of pixels of the source image tile from a memory to the processor memory, to group the set of pixels into blocks of pixels, to write each block of pixels to a memory location, and to repeat the first pass until each pixel of the selected image tile is written to the memory location; and

a second pass to copy selected blocks of pixels from the memory location to the processor memory, to regroup the selected blocks of pixels to form new blocks of pixels, to write the new blocks of pixels to a destination image location, and to repeat the second pass until each pixel of the blocks of pixels is written to the destination image location.

11. The image processor of claim 10 , wherein the processor memory has a memory size that is less than a size of the source image tile.

12. The image processor of claim 10 , wherein the memory location comprises an off-chip memory.

13. The image processor of claim 10 , wherein the at least two passes further comprises an intermediate pass between the first pass and the second pass, the intermediate pass to copy the selected blocks of pixels from the memory location to the processor memory, to regroup the selected blocks of pixels to form new blocks of pixels, to write the new blocks of pixels to a different memory location, and to repeat the intermediate pass until each pixel of the blocks of pixels is written.

14. The image processor of claim 10 , wherein a memory size of the processor memory is a power of two fraction of a size of the source image tile.

15. A method of rotating an image comprising:

defining, using an image processor, an array of tiles from a source image in a memory, each tile in the array of tiles comprising a plurality of pixels associated with the source image;

processing, using the image processor, a selected tile of the array of tiles via a first pass and a second pass to produce a rotated tile, each pass including multiple copy operations, multiple regroup operations, and multiple write operations related to the plurality of pixels.

16. The method of claim 15 , further comprising processing, using the image processor, the selected tile of the array of tiles via an intermediate pass between the first pass and the second pass.

17. The method of claim 15 , wherein the first pass comprises:

copying pixels from a selected tile of the array of tiles from the memory to a processor memory;

grouping the pixels into blocks of pixels;

writing each block of pixels to a memory location; and

repeating the first pass until each pixel of the selected tile is written to the memory location.

18. The method of claim 16 , wherein the second pass comprises:

copying selected blocks of pixels from the memory location to the processor memory;

regrouping the selected blocks of pixels to form new blocks of pixels; writing the new blocks of pixels to a destination image location; and repeating the second pass until each pixel is written to the destination image location.

19. The method of claim 18 , wherein the memory location comprises an off-chip memory.

20. A processor readable medium embodying processor readable instructions to rotate a source image relative to an original orientation, the processor readable instructions comprising an instruction set embodied in the processor readable medium that:

performs a first pass operation including copying cache lines of a source image tile of a source image from a memory to a processor memory, grouping pixels of the cache lines into blocks of pixels, and writing each of the blocks of pixels to a memory location;

repeats the first pass operation until each pixel of the source image is written;

performs a second pass operation including copying selected blocks of pixels from the memory location, regrouping the selected blocks of pixels to form new blocks of pixels, and writing the new blocks of pixels to a destination image location; and

repeats the second pass operation until each pixel of the blocks of pixels of the memory location is written.

21. The processor readable medium of claim 20 , wherein the source image comprises a plurality of source image tiles, and wherein the processor readable instructions further comprise an instruction set embodied in the processor readable medium that repeats the first pass operation and the second pass operation until each source image tile of the plurality of source image tiles is processed.

22. The processor readable medium of claim 20 , wherein the memory comprises an off-chip memory.

23. The processor readable medium of claim 22 , wherein the memory location comprises the off-chip memory.

24. The processor readable medium of claim 20 , wherein the destination image location comprises an off-chip memory.

Assignments (22)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
SECURITY INTEREST Recorded Sep 27, 2017
From: SYNAPTICS INCORPORATED
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 044037/0896 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 7, 2017
From: CONEXANT SYSTEMS, LLC
To: SYNAPTICS INCORPORATED
Reel/Frame 043786/0267 →
CHANGE OF NAME Recorded Jun 26, 2017
From: CONEXANT SYSTEMS, INC.
To: CONEXANT SYSTEMS, LLC
Reel/Frame 042986/0613 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
PATENT RELEASE Recorded Aug 17, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 039707/0471 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2016
From: LAKESTAR SEMI INC.
To: CONEXANT SYSTEMS, INC.
Reel/Frame 038803/0693 →
CHANGE OF NAME Recorded May 20, 2016
From: CONEXANT SYSTEMS, INC.
To: LAKESTAR SEMI INC.
Reel/Frame 038777/0885 →
RELEASE OF SECURITY INTEREST Recorded May 6, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: CONEXANT SYSTEMS, INC.; CONEXANT, INC.; CONEXANT SYSTEMS WORLDWIDE, INC.; BROOKTREE BROADBAND HOLDING, INC.
Reel/Frame 038631/0452 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: SIGMATEL, INC.
Reel/Frame 037354/0734 →
SECURITY AGREEMENT Recorded Mar 11, 2010
From: CONEXANT SYSTEMS, INC.; CONEXANT SYSTEMS WORLDWIDE, INC.; CONEXANT, INC.; BROOKTREE BROADBAND HOLDING, INC.
To: THE BANK OF NEW YORK, MELLON TRUST COMPANY, N.A.
Reel/Frame 024066/0075 →
RELEASE OF SECURITY INTEREST Recorded Mar 8, 2010
From: CITIBANK, N.A.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 024046/0609 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 10, 2009
From: SIGMATEL, INC.
To: CONEXANT SYSTEMS, INC.
Reel/Frame 023637/0023 →
SECURITY AGREEMENT Recorded Jul 9, 2008
From: SIGMATEL, INC.
To: CITIBANK, N.A.
Reel/Frame 021212/0372 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2007
From: WALTON, DEREK T.; DUDA, JIM
To: SIGMATEL, INC.
Reel/Frame 019253/0261 →