Claims
- 1. An apparatus for performing an arithmetic operation on groups of pixels under program control, comprising:
a first memory having a plurality of addressable locations N pixels in width and a first read port, wherein N pixels from any one of said addressable locations are accessible in parallel on said first read port during an address cycle; a second memory having a plurality of addressable locations greater than N pixels in width and a second read port, wherein any N contiguous pixels from any one of said addressable locations are accessible in parallel on said second read port during an address cycle; and an arithmetic unit having a first operand input port coupled to said first read port, a second operand input port coupled to said second read port, and an output.
- 2. An apparatus as in claim 1, wherein said second memory comprises:
a memory array having a plurality of addressable locations N pixels in width and a third read port, wherein N pixels from any one of said addressable locations and N pixels from an adjacent addressable location are accessible in parallel on said third read port during an address cycle; and a shifter having an input port coupled to said third read port and an output port N pixels in width, said shifter output port being said second read port.
- 3. An apparatus as in claim 2, wherein said shifter is adapted to perform from zero to N−1 shifts on a pixel boundary.
- 4. An apparatus as in claim 1, further comprising a controller coupled to said first memory by a first address bus, and coupled to said second memory by a second address bus, said controller being under microcode control.
- 5. An apparatus as in claim 1, further comprising a controller coupled to said first memory by a first address bus, and coupled to said second memory by a second address bus, said controller being under software control.
- 6. An apparatus as in claim 1, further comprising a state machine coupled to said first memory by a first address bus, and coupled to said second memory by a second address bus.
- 7. An apparatus as in claim 1, wherein said arithmetic unit comprises a subtractor circuit receiving said first and second operandi so that pixel differences are determinable in parallel.
- 8. An apparatus as in claim 1, wherein said arithmetic unit comprises an absolute difference circuit receiving said first and second operandi, further comprising an adder coupled to the output port of said arithmetic unit so that a sum of absolute pixel differences is determinable in parallel.
- 9. An apparatus as in claim 8, wherein said adder is a tree adder.
- 10. An apparatus as in claim 1, wherein said arithmetic unit comprises an averager circuit receiving said first and second operandi so that pixel averages are determinable in parallel.
- 11. An apparatus for performing an arithmetic operation on groups of pixels under program control, comprising:
a memory having a plurality of addressable locations greater than N pixels in width and first and second read ports, wherein any N contiguous pixels from any one of said addressable locations are accessible in parallel on each of said first and second read ports during an address cycle; and an arithmetic unit having a first operand input port coupled to said first read port, a second operand input port coupled to said second read port, and an output.
- 12. An apparatus as in claim 11, wherein said memory comprises:
a memory array having a plurality of addressable locations N pixels in width, a third read port, and a fourth read port, wherein N pixels from any one of said addressable locations and N pixels from an adjacent addressable location are accessible in parallel on each of said third and fourth read ports during an address cycle; and a first shifter having an input port coupled to said third read port and an output port N pixels in width, the output port of said first shifter being said first read port; a second shifter having an input port coupled to said fourth read port and an output port N pixels in width, the output port of said second shifter being said second read port.
- 13. An apparatus as in claim 12, wherein said first and second shifters are adapted to perform from zero to N−1 shifts on a pixel boundary.
- 14. An apparatus as in claim 11, further comprising a controller coupled to said memory by an address bus, said controller being under microcode control.
- 15. An apparatus as in claim 11, further comprising a controller coupled to said memory by an address bus, said controller being under software control.
- 16. An apparatus as in claim 11, further comprising a state machine coupled to said memory by an address bus.
- 17. An apparatus as in claim 11, wherein said arithmetic unit comprises a subtractor circuit receiving said first and second operandi so that pixel absolute differences are determinable in parallel.
- 18. An apparatus as in claim 11, wherein said arithmetic unit comprises an absolute difference circuit receiving said first and second operandi, further comprising an adder coupled to the output port of said arithmetic unit so that a sum of pixel differences is determinable in parallel.
- 19. An apparatus as in claim 18, wherein said adder is a tree adder.
- 20. An apparatus as in claim 11, wherein said arithmetic unit comprises an averager circuit receiving said first and second operandi so that pixel averages are determinable in parallel.
- 21. An apparatus for performing a variety of operations relating to motion estimation, including pixel differences, sum of absolute pixel differences, and pixel averaging, comprising:
a first memory having a plurality of addressable locations N pixels in width, a first write port, and first and second read ports, wherein N pixels from any one of said addressable locations are accessible in parallel on each of said first and second read ports during an address cycle; a second memory having a plurality of addressable locations greater than N pixels in width, a second write port, and third and fourth read ports, wherein any N contiguous pixels from any one of said addressable locations are accessible in parallel on each of said third and fourth read ports during an address cycle; a first multiplexer having one input port coupled to said first and second read ports, another input port coupled to said third read port, and an output port; a second multiplexer having one input port coupled to said third and fourth read ports, another input port coupled to said fourth read port, and an output port; an arithmetic unit having a first operand input port coupled to the output port of said first multiplexer, a second operand input port coupled to the output port of said second multiplexer, a first output port for furnishing the absolute value of a difference between said first and second operandi, and a second output port for selectively furnishing one of a difference between said first and second operandi, and an average of said first and second operandi; and an adder coupled to the first output port of said arithmetic unit;
wherein the second output port of said arithmetic unit is routed to said first and second write ports.
- 22. An apparatus as in claim 21, wherein said adder is a tree adder.
- 23. A pixel-group random access memory (“PRAM”) having a plurality of addressable locations greater than N pixels in width and a read port, wherein any N contiguous pixels from any one of said addressable locations are accessible in parallel on said read port during an address cycle comprising:
a memory array having a plurality of addressable locations N pixels in width and a first memory read port, wherein N pixels from any one of said addressable locations and N pixels from an adjacent addressable location are accessible in parallel on a read port of said memory array during an address cycle, and a shifter having an input coupled to the read port of said memory array and an output N pixels in width, the output of said shifter being the read port of said PRAM memory.
- 24. A circuit as in claim 23, wherein said memory array is random access memory.
- 25. A circuit as in claim 23, wherein said shifter is adapted to perform from zero to N−1 shifts on a pixel boundary.
- 26. A method for motion estimation, comprising the steps of:
storing an image block in a first memory having a plurality of addressable locations N pixels in width; selecting N pixels in parallel during an address cycle from any one of said addressable locations of said first memory; storing a search window having a width of greater than N pixels in a second memory having a plurality of addressable locations M pixels in width, M being greater than N; selecting a search block within said search window; selecting a search block any N contiguous pixels in parallel during an address cycle from any one of said addressable locations of said second memory corresponding to the search block from said search block selecting step; determining a sum of absolute differences of the N pixels from said first memory selecting step and the N pixels from said second memory selecting step; accumulating the results of said sum of absolute differences determining step; repeating said first memory selecting step, said second memory selecting step, said sum of absolute differences determining step, and said accumulating step for all pixels in the search block from said search block selecting step to obtain a first sum of absolute differences; repeating said search block selecting step, said first memory selecting step, said second memory selecting step, said sum of absolute differences determining step, and said accumulating step for all pixels in the search block from said repeated search block selecting step to obtain a second sum of absolute differences; identifying the lesser of said first sum of absolute differences and said second sum of absolute differences; and selecting one of the search blocks from said search block selecting step and said repeated search block selecting step as a best match block based on said identifying step.
- 27. A method as in claim 26; wherein the step of selecting a search block within said search window comprises the step of skipping every I search blocks, wherein I is any positive integer.
- 28. A method for performing an arithmetic operation on pixel operandi of width N, comprising the steps of:
storing a block of pixels in a memory having a plurality of addressable locations M pixels in width, M being greater than N; selecting a first group of any N contiguous pixels in parallel from any one of said addressable locations of said memory during an address cycle; selecting a second group of any N contiguous pixels in parallel from any one of said addressable locations of said memory during said address cycle; performing an arithmetic operation on said first group of and said second group of pixels.
CROSS REFERENCES TO RELATED APPLICATIONS
[0001] This is a continuation of U.S. patent application Ser. No. 09/098,106, filed on Jun. 16, 1998, which is a continuation of U.S. patent application Ser. No 09/005,053, filed on Jan. 9, 1998 (now U.S. Pat. No. 6,124,882), which is a continuation-in-part of U.S. patent application Ser. No. 08/908,826, filed on Aug. 8, 1997, (now U.S. Pat. No. 5,790,712), which is a continuation of U.S. patent application Ser. No. 08/658,917, filed May 31, 1996 (now abandoned), which is a continuation of U.S. patent application Ser. No. 07/303,973, filed on Sep. 9, 1994 (now abandoned), which is a continuation of U.S. patent application Ser. No. 07/838,382, filed on Feb. 19, 1992, (now U.S. Pat. No. 5,379,351). U.S. patent application Ser. No. 07/838,382, filed on Feb. 19, 1992, (now U.S. Pat. No. 5,379,351) incorporates by reference in its entirety U.S. patent application Ser. No. 07/838,380, also filed on Feb. 19, 1992, (now U.S. Pat. No. 5,594,813), to which priority is claimed.
Continuations (5)
|
Number |
Date |
Country |
Parent |
09098106 |
Jun 1998 |
US |
Child |
09797035 |
Mar 2001 |
US |
Parent |
09005053 |
Jan 1998 |
US |
Child |
09098106 |
Jun 1998 |
US |
Parent |
08658917 |
May 1996 |
US |
Child |
08908826 |
Aug 1997 |
US |
Parent |
08303973 |
Sep 1994 |
US |
Child |
08658917 |
May 1996 |
US |
Parent |
07838382 |
Feb 1992 |
US |
Child |
08303973 |
Sep 1994 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
08908826 |
Aug 1997 |
US |
Child |
09005053 |
Jan 1998 |
US |