Programmable architecture and methods for motion estimation
First Claim
1. An apparatus for performing an arithmetic operation on groups of pixels under program control, comprising:
- a first memory having a first read port and a plurality of addressable locations N pixels in width and M rows in height, wherein X pixels from any one of said addressable locations are accessible in parallel on said first read port during an address cycle, X being at least N;
a second memory having a second read port and a plurality of addressable locations greater than N pixels in width and at least M rows in height, wherein any X contiguous pixels, arranged N pixels in width and M rows in height, 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 Assignments
0 Petitions
Accused Products
Abstract
A programmable motion estimator includes one dual ported memory for storing an image block, the prediction error, and a temporary block used in interpolation, and a pixel-group random access dual ported memory for storing a search window. The two ports of the two memories are selectively applied to an arithmetic logic unit, or ALU, through a multiplexer. One output of the ALU provides an absolute difference, which is furnished to a tree adder. Another output of the ALU provides an average value or a difference value, as selected, which is routed to the inputs of the image memory and the search memory. In motion vector searching, the ALU performs pixel absolute difference arithmetic using the pixel groups from the image memory and from the search memory, and determines a sum of absolute differences in the tree adder. In half pixel interpolation, the ALU performs pixel averaging arithmetic using pixel groups from the search memory, and writes back to the search memory. In quarter pixel interpolation, the ACU performs pixel averaging arithmetic using pixel groups from the image and search memories, and writes back to the search memory. In some quarter pixel interpolations, temporary interpolated blocks from the image memory are used to interpolated quarter pixel blocks. These temporary blocks are obtained by pixel averaging in the ALU using pixel groups from the search memory. In error prediction determination, the ALU performs pixel subtraction using the pixel groups from the image memory and from the search memory, and writes back to the image memory.
17 Citations
29 Claims
-
1. An apparatus for performing an arithmetic operation on groups of pixels under program control, comprising:
-
a first memory having a first read port and a plurality of addressable locations N pixels in width and M rows in height, wherein X pixels from any one of said addressable locations are accessible in parallel on said first read port during an address cycle, X being at least N;
a second memory having a second read port and a plurality of addressable locations greater than N pixels in width and at least M rows in height, wherein any X contiguous pixels, arranged N pixels in width and M rows in height, 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. 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 two 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. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. 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 wherein a first operand is from said first group of pixels and a second operand is from said second group of pixels.
-
-
24. An apparatus for performing an arithmetic operation including two blocks of pixels, comprising:
-
a first memory having a first read port and a plurality of addressable locations for storing a plurality of pixels arranged in a first pixel block, wherein the first pixel block has a width of N pixels, and the plurality of pixels are accessible in parallel on the first read port during an address cycle;
a second memory having a second read port and a plurality of addressable locations for storing a plurality of pixels arranged in a second pixel block, wherein the second pixel block has a width of greater than N pixels, and any block of contiguous pixels having a width of N pixels from the second pixel block are accessible in parallel on the second read port during an address cycle; and
an arithmetic unit having a first operand input port coupled to the first read port, a second operand input port coupled to the second read port, and an output. - View Dependent Claims (25, 26, 27, 28, 29)
-
Specification