Victor%27s Video Scaler Cook Book
Short Description
Download Victor%27s Video Scaler Cook Book...
Description
Video Scaler CookBook
Victor Ramamoorthy Software Engineering Group Information Appliance National Semiconductor Corp Santa Clara, CA 30 October 2002
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 1 (30) 10/13/2004
Contents Video Scaler CookBook ..................................................................................................... 1 Video Scaler Cook Book .................................................................................................... 3 Introduction..................................................................................................................... 3 Performance of a Video Scaler ....................................................................................... 4 Scaling Fundamentals ..................................................................................................... 6 Example ...................................................................................................................... 7 Linear Interpolation .................................................................................................... 8 Choosing a better predictor............................................................................................. 9 Mirroring Pixels ............................................................................................................ 11 Implementing the Interpolating Filter........................................................................... 11 Putting It All Together .................................................................................................. 14 Finally ........................................................................................................................... 15 Tables............................................................................................................................ 17
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 2 (30) 10/13/2004
Video Scaler Cook Book
Introduction Video Scaler is a device that stretches or shrinks images or video frames. For the purposes of illustration, we have a source image as shown below:
Source Image When expand the size of the image, the total number of pixels contained in the destination image is more than what is available in the source image. Hence a whole lot of new pixels have to be created by the scaler. When we shrink the image, we may keep a part of the pixels and throw the rest. In addition, we may still have to generate new pixels even if we are shrinking the image. The scaler’s job is simple: (1) It decides what pixels to keep in the source image and (2) what pixels have to be recreated. In this cookbook we will explore the scaler’s anatomy.
Destination Image: Shrinking Note that a scaler can stretch an image only in X direction or only in Y direction or both. We want to design a scaler that can achieve arbitrary1 image sizes without noticeable quality loss. There is no restriction to keep the aspect ratio2 as constant while scaling.
1 2
Arbitrary sizes, memory size permitting, filter lengths conducive. The ratio of width and height of an image is called the aspect ratio.
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 3 (30) 10/13/2004
Destination Image: Expansion No distinction is made between shrinking and expansion of an image as far as the scaler algorithm is concerned. They are the opposite sides of the same problem. The scaler will operate exactly the same way if we are expanding or squeezing the source image. This cookbook describes the process with which smooth expansion/contraction scaling is obtained. It also details the construction of a hardware system, which can operate at video frame rates. In particular, the focus of the treatment is to spell out the different parameters that control the performance of the scaler. This cookbook is aimed at engineers who are not familiar with video scaling problem. Experts on the subject are warned that they may be wasting their time reading this cookbook. Many of the theoretical issues are merely glossed over and the attention is centered on the implementation. Useful tables at the end contain filter coefficients that can be used in a practical situation.
Performance of a Video Scaler As with any engineering design, we have to ask critical questions like “what are we designing and how do we know it is good”. When it comes to video scaler, that kind of questions are tough to answer because the quality of the end result simply cannot be measured. Video quality is a subjective thing. It varies with the content and viewing conditions. More importantly, when we scale video frames, there is no reference to compare. We are creating a new frame that was not there before, and we have to compare it with the original frame with a different size. It is like comparing apples and oranges. The best way to get around this problem is to ask if the scaled frame “looks” like the original and hunt for artifacts that might have crept in the scaling process. Still we are looking for something that has no reference and has some how appeared on the end result – which is not a good way to measure performance. So we come back and settle down to the measurement of “how it looks” after scaling.
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 4 (30) 10/13/2004
The primary performance measure is undoubtedly the visual quality of the scaler. In general, visual quality is not easily measured by metrics such as Picture Signal-to-Noise Ratio and Mean Square Error, though they are often quoted in the literature. The secondary performance measures are Computational Load or Complexity of Design. We will attempt to quantify these measures wherever meaningful. Another thing to remember is that performance is a function of color conversion stages employed. For instance, if the source image is RGB, see fig. 1 below, the scaling can be done in the RGB domain. Notice that scaling is done on the component images. If the image is only available as YUV domain then scaling can be done in YUV domain as in fig.2: R Source Image
Scaler
R
G
Scaler
G
B
Scaler
B
Y
Scaler
Y
Destination Image
Fig.1
Source Image
U
Scaler
U
V
Scaler
V
R
Scaler
Destination Image
Fig.2
Source Image (RGB)
R
G
Scaler
G
B
Scaler
B
Color Conversion
Destination Image (YUV)
Fig. 3 As suggested by fig.3 above, the color conversion can be included in the last stage before destination image is displayed. Or it also can be done before scaling as shown below:
Source Image (RGB)
Color Conversion
Y
Scaler
Y
U
Scaler
U
V
Scaler
V
Destination Image (YUV)
Fig.4
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 5 (30) 10/13/2004
The performance of the system in fig.3 and fig.4 will in general be different. Because of additional operations involved with color conversion, there is ample opportunity to inject additional noise in the system. However, by careful choice, we can make the visual qualities of these two systems to approach each other. Another important thing to note is that the scaler operates on Planar images. A planar image could be an image containing just red color, or Y values. It is a component image. Repeating the scaling on all other component images does complete scaling.
Scaling Fundamentals Let
x ,y s
s
be the size in the X direction and Y direction respectively of a planar source
image. Let the corresponding sizes of the destination image be the source image has
x
s
x ,y d
d
. This means that
pixels in a row, which must be converted to
x
d
pixels in the
destination image. The ratio of these two numbers is called scaling factor
S
x
=
x x
d
.
(1)
s
Similarly the scaling factor in the Y direction is
S
y
=
y y
d
. Note that the scaling factor
s
is the ratio of two integers and is hence a real (floating-point) number. We will just illustrate the method for scaling in the X direction in this cookbook as the same kind of operations can be duplicated for Y direction. The key idea here is to expand the source size range to include floating point numbers. S What is the size range? Well, it is the set of integers I x ={0, 1, 2, 3, … xs -1} which
denote the pixel positions3 in the X direction of the source image. The first pixel position starts at 0. The last one ends at xs -1. We can expand this range to contain all real numbers – not just integers. Note that this is our mental construct and not a real thing. When everything is finished we will map this back into integers, as a pixel position S cannot be a fractional number. Let us denote this new range as R x containing all numbers from 0 to
x
s
-1.
Now we are ready to map the destination pixel positions back onto the source pixel S positions, i.e., mapping onto the range R x . Why is this needed? We have the job of generating new pixels in the destination image and they must have the resemblance of the source image. We need to know where to place these new pixels. We also need to know 3
We are talking about pixel positions which are sequential numbers starting at 0 from left. Do not confuse this with the value of a pixel. We will use the notation V(.) to denote the value of a pixel.
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 6 (30) 10/13/2004
their values. Because we only know about the source image and know nothing about the destination image, we must make the connection between these two. We need to derive the destination pixel values from the source image. We can do that only if we know where these pixels are located. From (1), we see that become: {0,
1
S
, x
2
S
, x
x
s
=
3
S
x S
d
R
S x
x
,… x
. Then the mapping of destination range back to
x − 1 }. Out of this set, we will force that pixel position S d
x
at 0 will map onto pixel position 0. The other end condition is also forced: the pixel position at xd -1 will go to the pixel position at xs -1. This means that for i-th pixel,
x
− 1 > i > 0 , position of the destination image falls on the position
d
range
R
S
of the source image. The position
x
i
S
i
S
in the expanded x
is a real number and not an integer. x
That is why we expanded the range to include real numbers in the first place! The next i is located. thing to do is to find where exactly the position
S
To do this, we need to find the integer part of
F
c
(i ) = [[
i
S
x
i
S
. This is also known as the F-center4, x
]] . The fractional part is denoted by
f
c
(i ) = ((
x
i
S
)) . This means that the x
i-th pixel position of the destination image falls in between source pixels in positions F c (i ) and F c (i ) + 1 and is fractional value f (i ) off from the F-center c
F c (i) . Are you with me? Let us do an example and clarify the notation.
Example Let the source X size be 4 pixels and the destination X size is 7 pixels. That is and
x
d
x
s
=4
= 7. The source pixel positions are denoted by {0, 1, 2, 3} and the destination
pixel positions are denoted by {0, 1, 2, 3, 4, 5, 6}. 7 The scaling factor is S x = xd = = 1.75 . Let us now map onto the expanded range of xs 4 source image.
4
The F-center is actually the pixel on which the filter is centered. You will get it later. Keep cool.
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 7 (30) 10/13/2004
Destination Pixel Position
Map onto Source Range
F-Center F c (i)
0
0
0
1 2 3 4 5 6
0.5714 1.1426 1.7143 2.2857 2.8571 3
0 1 1 2 2 3
Fractional Part f (i)
Notes
c
By design this will map onto pixel at 0 0.5714 0.1426 0.7143 0.2857 0.8571
By design, this will map onto pixel at 6 Hence the simplest way to scale from 4 pixels to 7 pixels is to do the following: Value of pixel 0 at destination = Value of pixel 0 at the source (end condition) Value of pixel 1 at destination = Value of pixel 0 at the source Value of pixel 2 at destination = Value of pixel 1 at the source Value of pixel 3 at destination = Value of pixel 1 at the source Value of pixel 4 at destination = Value of pixel 2 at the source Value of pixel 5 at destination = Value of pixel 2 at the source Value of pixel 6 at destination = Value of pixel 3 at the source (end condition) We wanted 7 pixels and we got them all. Unfortunately such a simple minded scaling does not offer good visual quality!
Linear Interpolation What can we do better? Since we know the fractional values of the pixel positions, we can put them to work. This is called as Linear Interpolation. This can be illustrated as follows: Value of pixel 0 at destination = Value of pixel 0 at the source (end condition) Value of pixel 1 at destination = Value of pixel 0 at the source x (1.0 – 0.5714) + Value of pixel 1 at the source x 0.5714 Value of pixel 2 at destination = Value of pixel 1 at the source x (1.0 – 0.1426) + Value of pixel 2 at the source x 0.1426 Value of pixel 3 at destination = Value of pixel 1 at the source x (1.0 – 0.7143) + Value of pixel 2 at the source x 0.7143 Value of pixel 4 at destination = Value of pixel 2 at the source x (1.0 – 0.2857) + Value of pixel 3 at the source x 0.2857 ________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 8 (30) 10/13/2004
Value of pixel 5 at destination = Value of pixel 2 at the source x (1.0 – 0.8571) + Value of pixel 3 at the source x 0.8571 Value of pixel 6 at destination = Value of pixel 3 at the source (end condition) The above can be succinctly written for the middle pixels as: V ( xd (i )) = V ( xs ( F c (i )){1 −
f
c
(i )} + V ( xs ( F c (i ) + 1))
f
c
(i )
(3)
Where V(. ) denotes the value of a pixel. This may be considered as an improvement over the case where we just copied pixels. Using the fractional part indeed helps in improving the quality. However the quality improvement with adjacent pixel linear prediction is not very great. The next big improvement can occur if we can extend the linear prediction idea and concoct a workable system.
Choosing a better predictor The previous section explained the notion of using two adjacent pixels in defining the value of a new pixel that falls in between. This is equivalent to using just a 2-tap linear filter with varying filter coefficients. Getting to know additional pixels is only good5. But there is a big problem. Since the fractional part can assume any value between 0 and 1, extending to multi-tap filter has inherent computational problems: Depending on the value of the fractional part, we need to design a filter for every pixel! A better idea is to quantize the fractional part to M regions and choose an appropriate filter from the stored set of filter coefficients. It is a common practice to use M as a power of 2, but is not necessary. The quantized fractional part Q
f
c
(i ) =
fˆ
(i ) now takes values from 0 to M-1. For c
each value, a different set of filter coefficients will be used to predict the pixel value. What would be an ideal filter to use? That is a separate topic by itself. We would not go into details as ample texts cover the subject of digital signal processing. It is suffice to say that optimal interpolation filter has an impulse response described by the Sinc function:
5
Recall the statistical motto: The more you know, the better you compute the estimate.
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 9 (30) 10/13/2004
sin(
πk
) M for k = … -2, -1, 0, 1, 2, … and M is the number of πk ( ) M quantization levels used. Corresponding time response of the PolyPhase Interpolation Filters is given by:
ρ
sin[π (n + )] ~ M , h ( n) = h ( n ) = ρ ρ π (n + ) M
ρ = 0, 1, 2, 3,...M − 1, and all n
(4)
The direct way designing a scaler is to use the above equation and truncate the ideal prototype given in (4). Unfortunately this leads to ringing and Gibbs phenomenon, which can be visually disturbing in the end result. A better way is to taper the filter coefficient gradually to zero with a windowing function w(k ) as shown below: ~ N −1 N −1 h(k ) = h (k ) w(k ), ≤k≤ 2 2
(5)
There are a number of windows shown to have good properties in handling Gibbs phenomenon. Here we use a generalized Hamming window given by ⎧ ⎡ 2πk ⎤ ⎪ γ + (1 − γ ) cos ⎢ ⎥ k = ( ) ⎨ wH ⎣ N ⎦, ⎪⎩0 Otherwise
−
N −1 N −1 ≤k≤ 2 2
(6)
where γ is in the range 0 ≤ γ ≤ 1 . If γ =0.54, the window is called a Hamming Window, and if γ = 0.5, it is called a Hanning Window. The filter coefficients given by equations (4), (5), and (6) are still real numbers. They need to be quantized to digital numbers to operate in a digital filter. As far as you, the reader, is concerned you do not need to worry about the above equations and theoretical stuff. We give you all these in the form of tables which you can readily use without losing sleep. Though most scalers use odd-number of filter taps, here we use even number filter taps. The reason is that odd-numbered filter taps generate phase switching noise– unless they are big enough –and we suggest looking into a nicer solution of even-numbered filter tap designs.
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 10 (30) 10/13/2004
Mirroring Pixels
Mirrored border
Source Image
FEDCBAABCDEFGHIJKL
Fig. 5 Since images have finite support – that is, finite width and height – employing filtering is a little tricky. To alleviate the “border” problems, an artificial border is created around the source image by mirroring the pixels both column-wise and row-wise. With mirroring filtering can start right at the image edge and stop at the corresponding edge on the other side. Each row of pixels is extended as shown in fig.5 as if there is a mirror right on the border to reflect the pixels. The width of the border is related to the half-length of the filter used. Fig.5 illustrates the case when 6-pixel border is created with mirroring. What happens if you do not do mirroring? Nothing. Except that you end up with a black border on your destination image!
Implementing the Interpolating Filter First let us see how to design a Finite Impulse Response filter for scaling. The theory of the filtering was covered in a previous section. The section “Tables” give a set of filters that can be used in practice. Here let us construct a simple 6-tap filter system, see table 8. The next figure illustrates how a filter works on the source image to produce the content of the destination image.
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 11 (30) 10/13/2004
The table chosen has 6 filter coefficients depending on the quantized value of the fractional part Q
f
c
(i ) =
fˆ
(i ) . The integer part, c
F
c
(i ) selects the center pixel in the
source image, which will support the filtering in the immediate neighborhood. In the case of 6-tap filter, 2 pixels before and 3 pixels after the center pixel form the six pixels that will be used in the creation of the corresponding destination pixel as shown in the fig 6.
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 12 (30) 10/13/2004
Fig.6 Since the filter uses 12 bits of coefficient precision, dividing the sum (formed by the filter coefficients and the pixel values) by 4095 normalizes the product sum. This leads to the destination pixel value of 6. This type of Finite Impulse Response filtering is routinely done in DSP applications. Over the years, the hardware required for filtering has been almost standardized. A DSP engine is constructed by having a multiplier, adder, shifter and coefficient RAM. Coefficients are first loaded into the RAM before operations begin. The multiplier typically has two registers for loading the multiplicands. After values are multiplied, they are added with the previous sum. Appropriate shifting is needed for normalization to avoid overflow.
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 13 (30) 10/13/2004
Putting It All Together
DSP
8 16
Mirrored Source Image Frame Buffer
32
A Register
X B Register
16
Adder 3
Coef. RAM
Shifter 2
32 16
Address Log M
Shifter 1
8 16
16
Destination Image Frame Buffer
16 Overflow
Adder 1
Frac. Reg FR
16
Adder 2 Int. Reg
16
16
Load
Load
IR
Video Scaler Micro Architecture
Fig. 7 Now is the time to assemble all the previous knowledge and put them to work. Fig. 7 shows the micro architecture of the scaler. It uses all the familiar digital building blocks like multipliers, adders, and shifters. Details of clocking are not shown in fig.6 for the sake of clarity and brevity. First going back to our notation, we need to compute the scaling factor
S
x
=
x x
d
. It must
s
be computed by another entity controlling the scaler. In fact, what we need is just the reciprocal of the scaling factor: we separate the integer and fractional part of the i 1 1 1 . This can be by a = [[ ]] + (( )) . Why do we do this? Our goal is to compute
S
x
S
S
x
S
x
x
pair of adders if we separate fractional and integer parts and add them up as we increase i. i 1 1 Note that = i[[ ]] + i (( )) . The integer part is already a whole number. We can
S
x
S
x
S
x
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 14 (30) 10/13/2004
load this integer part into the 16-bit Integer Register IR. The fractional part is a real number is multiplied by 65536 to make that into a 16-bit number and then is loaded into the Fractional Register FR. These loadings are done as a part of initialization. The coefficient RAM also needs to be filled with correct numbers before the scaling operations begin. Note that the content of the Fractional Register is also loaded into 16-bit Adder 1. Similarly the content of the Integer register is loaded into 16-bit Adder 2. This behavior of loading Adder 1 and Adder 2 will be repeated for every pixel in the destination image. In addition, note that Adder 1 feeds back into itself while supplying its output as an address to the Coefficient RAM. To get the correct address, we need the Shifter 1 to drop all bits except what is needed to generate the right filter coefficients. Hence if we use a M level quantization of the fractional part, then we just need log M bits for the address in 2
selecting the correct filter coefficients in the coefficient RAM. Since Adder 1 feeds back its output into its input, it will generate overflow, which will be added as input to Adder 2. Adder 2 has its output pointing to an address of the source pixel being operated on. If the scaling is being performed for X direction, then the Adder 2 output will be a number representing the column of the pixel. If the scaling is done in Y direction, this will be the row number of the pixel. How does the interpolation work? First we need to load the pixel value from the mirrored source image buffer into A Register of the DSP engine shown in fig.6. The corresponding filter coefficient is taken from the coefficient RAM and loaded into B Register of the DSP. The DSP engine consists of 2 16-bit registers (called A Register and B Register), a 16 bit full multiplier with 32-bit output, and a 32-bit adder called Adder 3. The output of Adder 3 is fed back to its input. When computations are completed, the Shifter 2 scales the output to 8 bit and sends it to the destination location. The clocks governing the DSP engine run p times faster than the clock governing Adder 1, Adder 2, and Shifter 1, where p is the number of filter taps used. The rest is, as the saying goes, elementary.
Finally We have the theory. We have the architecture. We have the tables. Next thing is to put them to good use. To help in the design process, we have a Video Scaler Design Tool as shown in the fig.8. This tool allows one to change all the pertinent parameters and arrive at a useful design that satisfies the design goal.
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 15 (30) 10/13/2004
Fig.8 Figure 8 shows the GUI of the tool. It accepts BMP files and scales the input on the fly. The first combo box allows the selection of M (Inter Pixel Quantization) in bits. The second combo box offers selection of number of bits used in representing each filter coefficient. The third combo box selects the number of filter taps. The fourth one selects the window. When the “Input File” button is clicked, a pop up window helps in choosing an input BMP file. A thumbnail of the chosen file appears in the small picture box below. By operating the sliders around the picture box, one can scale the input both in X and Y direction.
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 16 (30) 10/13/2004
Tables Here we provide an illustrative set of filters useful in scaling:
Table 1: 4 tap Filter; M = 16; Coefficient length = 8 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15
0 -7 -12 -15 -17 -16 -15 -13 -11 -8 -6 -4 -4 -2 -1 0
255 252 246 235 221 202 181 160 138 115 94 72 55 37 22 10
0 10 22 37 55 73 95 116 139 161 182 203 221 235 246 252
0 0 -1 -2 -4 -4 -6 -8 -11 -13 -15 -16 -17 -15 -12 -7
Table 2: 4 tap Filter M = 16; Coefficient length = 9 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15
0 -15 -25 -31 -33 -33 -31 -27 -23 -18 -14 -10 -7 -5 -3 -1
511 507 494 472 442 405 366 322 278 233 189 148 108 75 46 21
0 20 45 75 109 149 190 234 279 323 367 406 443 472 493 506
0 -1 -3 -5 -7 -10 -14 -18 -23 -27 -31 -33 -33 -31 -25 -15
Table 3: 4 tap Filter M = 16; Coefficient length = 10 bits; Hamming Window Filter 0 Filter 1
0 -30
1023 1015
0 40
0 -2
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 17 (30) 10/13/2004
Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15
-51 -62 -68 -68 -64 -56 -48 -38 -30 -22 -15 -9 -6 -2
989 944 885 815 735 648 560 469 382 297 220 149 92 41
91 150 221 298 382 469 559 648 735 816 886 945 988 1014
-6 -9 -15 -22 -30 -38 -48 -56 -64 -68 -68 -62 -51 -30
Table 4: 4 tap Filter M = 16; Coefficient length = 11 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15
0 -60 -102 -126 -137 -137 -128 -113 -97 -79 -61 -45 -31 -20 -12 -5
2047 2032 1979 1891 1773 1632 1471 1299 1121 940 764 597 442 301 183 81
0 80 182 302 442 597 765 940 1120 1299 1472 1632 1773 1892 1978 2031
0 -5 -12 -20 -31 -45 -61 -79 -97 -113 -128 -137 -137 -126 -102 -60
Table 4: 4 tap Filter M = 16; Coefficient length = 12 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11
0 -121 -205 -254 -276 -275 -257 -228 -195 -158 -123 -91
4095 4066 3960 3784 3549 3266 2945 2599 2243 1882 1530 1196
0 161 364 606 885 1195 1530 1882 2242 2599 2945 3265
0 -11 -24 -41 -63 -91 -123 -158 -195 -228 -257 -275
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 18 (30) 10/13/2004
Filter 12 Filter 13 Filter 14 Filter 15
-63 -41 -24 -11
886 605 365 162
3548 3785 3959 4065
-276 -254 -205 -121
Table 5: 4 tap Filter; M = 32; Coefficient length = 8 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
0 -4 -7 -10 -12 -14 -15 -15 -16 -16 -15 -15 -14 -14 -13 -12 -10 -9 -8 -7 -6 -5 -4 -3 -2 -2 -2 -2 -1 -1 0 0
255 255 253 251 246 242 235 227 219 211 201 191 181 171 160 149 137 126 115 104 93 83 72 62 53 44 37 30 22 16 10 4
0 4 9 15 22 29 37 45 54 63 73 84 94 105 116 127 138 150 161 172 182 192 202 212 220 228 235 241 246 250 252 255
0 0 0 -1 -1 -2 -2 -2 -2 -3 -4 -5 -6 -7 -8 -9 -10 -12 -13 -14 -14 -15 -15 -16 -16 -15 -15 -14 -12 -10 -7 -4
Table 6: 4 tap Filter; M = 32; Coefficient length = 9 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6
0 -8 -14 -20 -25 -28 -31
511 510 507 502 494 484 472
0 9 19 31 45 59 75
0 0 -1 -2 -3 -4 -5
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 19 (30) 10/13/2004
Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
-32 -33 -33 -32 -32 -30 -29 -27 -25 -22 -20 -18 -16 -14 -12 -10 -8 -6 -5 -5 -4 -3 -2 -1 0
457 441 424 405 386 366 344 323 300 277 255 233 211 188 168 147 127 108 90 75 59 46 32 20 10
91 109 128 148 169 189 212 233 256 278 301 323 345 367 387 406 425 442 458 472 484 493 501 506 509
-5 -6 -8 -10 -12 -14 -16 -18 -20 -22 -25 -27 -29 -30 -32 -32 -33 -33 -32 -31 -28 -25 -20 -14 -8
Table 7: 4 tap Filter; M = 32; Coefficient length = 10 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19
0 -16 -29 -41 -50 -57 -61 -65 -67 -67 -67 -65 -62 -59 -55 -51 -46 -42 -37 -33
1023 1022 1014 1005 989 969 944 916 884 850 814 775 733 691 647 603 557 513 468 424
0 18 40 63 90 119 149 183 220 257 297 338 381 424 468 513 558 603 647 691
0 -1 -2 -4 -6 -8 -9 -11 -14 -17 -21 -25 -29 -33 -37 -42 -46 -51 -55 -59
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 20 (30) 10/13/2004
Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
-29 -25 -21 -17 -14 -11 -9 -8 -6 -4 -2 -1
380 338 296 256 219 182 148 119 91 64 40 19
734 775 815 851 885 917 945 969 988 1004 1014 1021
-62 -65 -67 -67 -67 -65 -61 -57 -50 -41 -29 -16
Table 7: 4 tap Filter; M = 32; Coefficient length = 11 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
0 -32 -59 -82 -101 -115 -124 -131 -135 -136 -135 -131 -125 -118 -111 -102 -93 -85 -76 -67 -59 -51 -43 -36 -30 -24 -19 -16 -12 -8 -5 -2
2047 2044 2031 2010 1980 1940 1889 1834 1772 1704 1630 1552 1469 1383 1297 1207 1116 1027 937 848 762 677 595 515 440 367 300 239 181 128 81 38
0 37 80 127 180 238 301 368 440 515 595 677 762 849 937 1027 1117 1207 1297 1384 1469 1552 1630 1704 1772 1835 1890 1939 1979 2009 2030 2043
0 -2 -5 -8 -12 -16 -19 -24 -30 -36 -43 -51 -59 -67 -76 -85 -93 -102 -111 -118 -125 -131 -135 -136 -135 -131 -124 -115 -101 -82 -59 -32
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 21 (30) 10/13/2004
Table 8: 4 tap Filter; M = 32; Coefficient length = 12 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
0 -64 -119 -165 -202 -230 -250 -264 -272 -273 -270 -263 -251 -238 -223 -206 -189 -171 -153 -135 -118 -103 -88 -74 -61 -50 -40 -32 -24 -17 -10 -5
4095 4090 4064 4022 3960 3880 3782 3672 3547 3410 3262 3106 2940 2769 2594 2416 2237 2056 1876 1698 1524 1355 1191 1031 881 737 602 478 362 256 161 75
0 74 160 255 361 477 603 737 881 1032 1191 1355 1524 1699 1877 2056 2236 2416 2595 2770 2940 3106 3262 3411 3547 3672 3783 3879 3959 4021 4063 4089
0 -5 -10 -17 -24 -32 -40 -50 -61 -74 -88 -103 -118 -135 -153 -171 -189 -206 -223 -238 -251 -263 -270 -273 -272 -264 -250 -230 -202 -165 -119 -64
Table 9: 6 tap Filter; M = 32; Coefficient length = 8 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10
0 1 2 3 3 4 4 5 4 5 5
0 -5 -11 -15 -19 -23 -26 -28 -29 -31 -32
255 254 253 250 248 243 239 232 226 219 211
0 6 13 21 29 37 46 56 65 76 87
0 -1 -2 -4 -6 -7 -9 -11 -12 -16 -18
0 0 0 0 0 1 1 1 1 2 2
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 22 (30) 10/13/2004
Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
5 5 5 5 4 4 4 4 3 3 3 2 2 1 1 1 1 0 0 0 0
-32 -32 -32 -31 -30 -29 -27 -26 -24 -22 -20 -18 -16 -12 -11 -9 -7 -6 -4 -2 -1
202 193 184 173 163 153 141 130 120 108 97 88 77 66 56 47 37 30 21 13 6
97 108 119 130 141 152 163 173 183 193 202 210 218 225 232 238 243 247 250 253 254
-20 -22 -24 -26 -27 -29 -30 -31 -32 -32 -32 -32 -31 -29 -28 -26 -23 -19 -15 -11 -5
3 3 3 4 4 4 4 5 5 5 5 5 5 4 5 4 4 3 3 2 1
Table 10: 6 tap Filter; M = 32; Coefficient length = 9 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23
0 2 4 5 7 8 9 9 10 11 11 10 11 10 10 10 8 8 8 7 6 5 5 4
0 -11 -22 -30 -39 -46 -52 -56 -59 -63 -65 -64 -65 -65 -63 -61 -57 -55 -52 -48 -44 -39 -36 -32
511 510 508 502 496 487 478 466 452 438 422 405 386 368 347 326 305 283 261 240 217 195 174 153
0 12 26 41 58 75 93 112 131 153 174 194 217 239 261 283 304 326 347 367 386 404 422 438
0 -2 -5 -7 -12 -15 -19 -22 -26 -32 -36 -39 -44 -48 -52 -55 -57 -61 -63 -65 -65 -64 -65 -63
0 0 0 0 1 2 2 2 3 4 5 5 6 7 8 8 8 10 10 10 11 10 11 11
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 23 (30) 10/13/2004
Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
3 2 2 2 1 0 0 0
-26 -22 -19 -15 -12 -7 -5 -2
132 113 94 75 58 42 27 12
451 465 477 487 496 501 507 510
-59 -56 -52 -46 -39 -30 -22 -11
10 9 9 8 7 5 4 2
Table 11: 6 tap Filter; M = 32; Coefficient length = 10 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
0 4 8 11 14 16 18 20 21 21 22 22 21 21 20 19 18 16 15 14 12 11 9 8 7 5 4 3 2 1 1 0
0 -23 -44 -62 -78 -92 -104 -113 -120 -126 -129 -131 -131 -130 -126 -122 -118 -110 -104 -97 -88 -80 -71 -63 -54 -46 -38 -30 -23 -16 -11 -5
1023 1022 1015 1006 992 976 956 932 904 877 844 810 774 735 695 652 612 566 524 480 436 392 349 307 266 226 188 151 117 84 54 26
0 25 54 83 116 150 187 225 265 306 348 391 435 480 523 566 611 652 694 735 773 809 843 876 903 931 955 975 991 1005 1015 1021
0 -5 -11 -16 -23 -30 -38 -46 -54 -63 -71 -80 -88 -97 -104 -110 -118 -122 -126 -130 -131 -131 -129 -126 -120 -113 -104 -92 -78 -62 -44 -23
0 0 1 1 2 3 4 5 7 8 9 11 12 14 15 16 18 19 20 21 21 22 22 21 21 20 18 16 14 11 8 4
Table 12: 6 tap Filter; M = 32; Coefficient length = 11 bits; Hamming Window Filter 0 Filter 1 Filter 2
0 9 16
0 -47 -88
2047 2043 2031
0 51 107
0 -10 -21
0 1 2
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 24 (30) 10/13/2004
Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
23 30 34 38 41 43 44 45 45 44 42 41 39 36 34 31 28 25 23 20 17 15 12 10 8 6 4 2 1
-125 -158 -186 -209 -228 -243 -253 -260 -263 -263 -259 -254 -245 -235 -222 -209 -194 -178 -161 -144 -127 -110 -94 -78 -62 -47 -34 -21 -10
2011 1983 1951 1911 1865 1810 1753 1688 1618 1548 1471 1390 1307 1223 1135 1046 960 872 783 696 614 530 452 376 303 234 169 108 51
168 233 302 375 451 530 613 696 783 871 959 1046 1134 1222 1306 1390 1470 1547 1618 1688 1752 1810 1864 1910 1950 1982 2010 2030 2043
-34 -47 -62 -78 -94 -110 -127 -144 -161 -178 -194 -209 -222 -235 -245 -254 -259 -263 -263 -260 -253 -243 -228 -209 -186 -158 -125 -88 -47
4 6 8 10 12 15 17 20 23 25 28 31 34 36 39 41 42 44 45 45 44 43 41 38 34 30 23 16 9
Table 13: 6 tap Filter; M = 32; Coefficient length = 12 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15
0 17 34 48 61 70 78 84 88 90 91 91 89 86 83 79
0 -93 -177 -252 -317 -373 -420 -456 -487 -508 -520 -526 -527 -521 -509 -492
4095 4087 4060 4022 3966 3901 3820 3727 3621 3505 3378 3239 3094 2941 2779 2613
0 102 215 337 466 604 750 903 1061 1226 1395 1566 1742 1918 2094 2270
0 -20 -43 -69 -96 -126 -157 -189 -222 -256 -290 -324 -357 -389 -419 -446
0 2 6 9 13 17 22 26 31 36 41 47 52 58 64 69
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 25 (30) 10/13/2004
Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
74 69 64 58 52 47 41 36 31 26 22 17 13 9 6 2
-471 -446 -419 -389 -357 -324 -290 -256 -222 -189 -157 -126 -96 -69 -43 -20
2445 2270 2094 1918 1742 1566 1396 1226 1061 904 750 604 466 338 216 103
2444 2613 2779 2941 3094 3239 3377 3505 3621 3726 3820 3901 3966 4021 4059 4086
-471 -492 -509 -521 -527 -526 -520 -508 -487 -456 -420 -373 -317 -252 -177 -93
74 79 83 86 89 91 91 90 88 84 78 70 61 48 34 17
Table 14: 8 tap Filter; M = 32; Coefficient length = 8 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28
0 0 -1 -1 -1 -2 -2 -2 -2 -2 -3 -3 -3 -2 -2 -2 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 0 0
0 2 3 5 7 8 9 10 11 12 12 12 12 12 12 12 11 11 10 10 9 8 7 6 6 5 4 3 2
0 -6 -12 -18 -23 -27 -30 -34 -36 -38 -40 -40 -41 -41 -40 -40 -38 -37 -35 -33 -31 -28 -26 -23 -20 -17 -15 -12 -9
255 254 254 252 248 245 240 234 227 220 215 205 198 187 177 167 157 146 135 125 114 103 92 81 70 61 51 41 32
0 7 14 23 31 40 50 60 70 81 91 102 113 124 135 146 156 167 177 186 197 204 214 220 227 233 239 244 247
0 -2 -4 -7 -9 -12 -15 -17 -20 -23 -26 -28 -31 -33 -35 -37 -38 -40 -40 -41 -41 -40 -40 -38 -36 -34 -30 -27 -23
0 0 1 1 2 3 4 5 6 6 7 8 9 10 10 11 11 12 12 12 12 12 12 12 11 10 9 8 7
0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -2 -2 -2 -2 -2 -2 -2 -2 -3 -3 -3 -2 -2 -2 -2 -2 -1
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 26 (30) 10/13/2004
Filter 29 Filter 30 Filter 31
0 0 0
1 1 0
-7 -4 -2
24 15 7
251 253 254
-18 -12 -6
5 3 2
-1 -1 0
0 1 2 3 5 6 8 10 12 13 15 17 18 20 21 22 23 24 25 25 25 25 25 24 23 21 19 16 14 11 8 4
0 0 0 0 -1 0 -2 -2 -2 -3 -3 -3 -4 -4 -4 -5 -5 -5 -5 -5 -6 -6 -6 -5 -5 -5 -4 -3 -3 -2 -2 -1
Table 15: 8 tap Filter; M = 32; Coefficient length = 9 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
0 -1 -2 -2 -3 -3 -4 -5 -5 -5 -6 -6 -6 -5 -5 -5 -5 -5 -4 -4 -4 -3 -3 -3 -2 -2 -2 0 -1 0 0 0
0 4 8 11 14 16 19 21 23 24 25 25 25 25 25 24 23 22 21 20 18 17 15 13 12 10 8 6 5 3 2 1
0 -13 -25 -36 -46 -53 -62 -68 -73 -77 -80 -82 -82 -82 -81 -80 -77 -74 -71 -67 -62 -57 -52 -47 -41 -35 -30 -23 -19 -14 -9 -4
511 510 508 503 498 487 481 469 456 444 428 412 394 375 355 336 315 294 272 250 228 206 184 163 141 122 102 80 64 46 30 14
0 14 29 46 63 81 101 121 141 162 184 205 228 249 271 293 314 335 354 374 394 411 428 443 456 468 480 488 497 503 507 510
0 -4 -9 -14 -19 -23 -30 -35 -41 -47 -52 -57 -62 -67 -71 -74 -77 -80 -81 -82 -82 -82 -80 -77 -73 -68 -62 -53 -46 -36 -25 -13
Table 16: 8 tap Filter; M = 32; Coefficient length = 10 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7
0 -2 -4 -5 -7 -8 -9 -10
0 8 16 22 29 34 39 43
0 -26 -50 -72 -92 -109 -124 -136
1023 1021 1016 1008 997 980 962 940
0 28 59 92 127 164 202 242
0 -8 -18 -28 -39 -49 -60 -72
0 2 5 7 10 14 17 20
0 0 -1 -1 -2 -3 -4 -4
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 27 (30) 10/13/2004
Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
-11 -11 -12 -12 -12 -12 -11 -11 -10 -10 -9 -9 -8 -7 -6 -6 -5 -4 -4 -3 -2 -1 -1 0
46 48 50 51 51 51 50 49 47 45 43 40 37 34 30 27 24 20 17 14 10 7 5 2
-146 -154 -160 -164 -165 -165 -164 -160 -155 -149 -142 -134 -125 -115 -104 -94 -83 -72 -60 -49 -39 -28 -18 -8
915 888 856 824 789 752 712 672 630 588 544 501 456 412 369 326 284 243 203 165 128 93 60 28
283 325 369 412 456 500 544 587 629 671 712 751 789 824 856 887 914 939 961 979 996 1007 1015 1021
-83 -94 -104 -115 -125 -134 -142 -149 -155 -160 -164 -165 -165 -164 -160 -154 -146 -136 -124 -109 -92 -72 -50 -26
24 27 30 34 37 40 43 45 47 49 50 51 51 51 50 48 46 43 39 34 29 22 16 8
-5 -6 -6 -7 -8 -9 -9 -10 -10 -11 -11 -12 -12 -12 -12 -11 -11 -10 -9 -8 -7 -5 -4 -2
Table 17: 8 tap Filter; M = 32; Coefficient length = 11 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19
0 -4 -8 -11 -14 -17 -19 -21 -22 -23 -24 -24 -24 -24 -23 -22 -21 -20 -19 -18
0 16 32 45 58 69 78 86 92 97 101 103 103 103 101 99 95 91 86 80
0 -53 -101 -145 -184 -218 -248 -273 -293 -309 -322 -328 -333 -332 -329 -321 -312 -299 -286 -269
2047 2045 2034 2018 1994 1962 1926 1881 1831 1775 1715 1648 1579 1504 1427 1344 1262 1175 1091 1001
0 57 119 185 255 328 405 486 568 652 738 825 914 1001 1090 1175 1261 1344 1426 1504
0 -17 -37 -57 -78 -99 -121 -144 -166 -188 -209 -230 -250 -269 -286 -299 -312 -321 -329 -332
0 4 10 15 21 28 34 41 48 55 61 68 74 80 86 91 95 99 101 103
0 -1 -2 -3 -5 -6 -8 -9 -11 -12 -13 -15 -16 -18 -19 -20 -21 -22 -23 -24
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 28 (30) 10/13/2004
Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
-16 -15 -13 -12 -11 -9 -8 -6 -5 -3 -2 -1
74 68 61 55 48 41 34 28 21 15 10 4
-250 -230 -209 -188 -166 -144 -121 -99 -78 -57 -37 -17
914 825 739 652 568 486 406 329 256 186 120 58
1579 1648 1714 1775 1831 1881 1925 1961 1993 2017 2033 2044
-333 -328 -322 -309 -293 -273 -248 -218 -184 -145 -101 -53
103 103 101 97 92 86 78 69 58 45 32 16
-24 -24 -24 -23 -22 -21 -19 -17 -14 -11 -8 -4
Table 18: 8 tap Filter; M = 32; Coefficient length = 12 bits; Hamming Window Filter 0 Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Filter 6 Filter 7 Filter 8 Filter 9 Filter 10 Filter 11 Filter 12 Filter 13 Filter 14 Filter 15 Filter 16 Filter 17 Filter 18 Filter 19 Filter 20 Filter 21 Filter 22 Filter 23 Filter 24 Filter 25 Filter 26 Filter 27 Filter 28 Filter 29 Filter 30 Filter 31
0 -8 -16 -23 -29 -35 -39 -42 -45 -47 -48 -48 -48 -48 -46 -45 -43 -41 -38 -36 -33 -30 -27 -25 -22 -19 -16 -13 -10 -7 -5 -2
0 33 64 92 116 138 157 173 185 195 202 206 207 206 203 198 191 182 172 161 149 136 123 110 96 82 69 56 43 31 20 9
0 -106 -203 -291 -369 -439 -498 -548 -588 -621 -644 -659 -666 -665 -658 -645 -624 -601 -571 -538 -501 -462 -421 -378 -332 -288 -243 -199 -156 -114 -74 -35
4095 4089 4070 4036 3989 3929 3853 3765 3664 3555 3430 3300 3159 3010 2854 2691 2523 2354 2180 2005 1829 1653 1478 1307 1137 972 813 659 511 372 240 116
0 115 239 371 511 658 812 972 1137 1306 1478 1652 1828 2005 2179 2354 2524 2691 2853 3010 3158 3299 3430 3554 3664 3765 3852 3928 3989 4035 4069 4088
0 -35 -74 -114 -156 -199 -243 -288 -332 -378 -421 -462 -501 -538 -571 -601 -624 -645 -658 -665 -666 -659 -644 -621 -588 -548 -498 -439 -369 -291 -203 -106
0 9 20 31 43 56 69 82 96 110 123 136 149 161 172 182 191 198 203 206 207 206 202 195 185 173 157 138 116 92 64 33
0 -2 -5 -7 -10 -13 -16 -19 -22 -25 -27 -30 -33 -36 -38 -41 -43 -45 -46 -48 -48 -48 -48 -47 -45 -42 -39 -35 -29 -23 -16 -8
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 29 (30) 10/13/2004
________________________________________________________________________ Video Scaler CookBook Victor Ramamoorthy Page: 30 (30) 10/13/2004
View more...
Comments