US6801674B1 - Real-time image resizing and rotation with line buffers - Google Patents
Real-time image resizing and rotation with line buffers Download PDFInfo
- Publication number
- US6801674B1 US6801674B1 US09/943,547 US94354701A US6801674B1 US 6801674 B1 US6801674 B1 US 6801674B1 US 94354701 A US94354701 A US 94354701A US 6801674 B1 US6801674 B1 US 6801674B1
- Authority
- US
- United States
- Prior art keywords
- pixel values
- sample pixel
- line
- line buffers
- values
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime, expires
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 114
- 238000000034 method Methods 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 10
- 238000005070 sampling Methods 0.000 description 6
- 241001442055 Vipera berus Species 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001303 quality assessment method Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003704 image resize Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
- G06T3/602—Rotation of whole images or parts thereof by block rotation, e.g. by recursive reversal or rotation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/02—Affine transformations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Definitions
- the present invention generally relates to digital image processing, and more particularly to resizing and rotation of digital images.
- PLD programmable logic device
- FPGA field programmable gate array
- Image resizing typically involves fractional re-sampling, which can lead to prohibitively large implementations and result in compromises in range and resolution.
- Polyphase decimators and polyphase interpolators are generally employed for fractional re-sampling, depending on whether an image is being reduced (decimator) or enlarged (interpolator).
- an intermediate buffer is disposed between horizontal and vertical filter elements.
- the structure has considerable memory requirements because the size of the intermediate buffer is doubled relative to the image size to support continuous operation.
- Image rotation also involves re-sampling, but is performed on non-integer points. For example, with a center point of an image defined, a single parameter • specifies the transformation. The equations below provide the coordinate transformation in terms of rotation of the coordinate axis.
- S and D represent source and destination coordinates, respectively.
- the first step in the rotation algorithm is computation of the source values S x and S y . From these values, the neighborhood of pixels is known for the filter operation. The location of the destination pixels in the source pixel matrix also gives the weighting factors for bilinear or bicubic interpolation. The pixel value is then calculated with the weighting factors and pixel values in the neighborhood. The process repeats by incrementing the D x value and continuing in a raster out format.
- One drawback of this process is the non-uniform addressing of the source pixels. Essentially, the input memory design must have four times the bandwidth (or 16 for bicubic) because there is no sharing of source pixels between destination pixel operations.
- line buffers are used for storage of lines of pixel values for both resizing and rotation.
- a first one of the line buffers receives input pixel values, and the line buffers are coupled in a chain such that line buffer i receives pixel values from line buffer i ⁇ 1.
- the lines of pixel values are moved from line buffer i to line buffer i+1 as the pixel values are processed for resizing or rotation.
- the line buffers offer improved performance in real-time image resizing by eliminating the need to re-read sample values from a memory.
- the line buffers further eliminate the need for the added memory of a double buffering approach and introduce no frame latency.
- the line buffers allows the source pixels to be shared and linearly addressed in generating destination pixels. This greatly reduces the memory requirements for a given bandwidth requirement.
- FIG. 1 is a functional block diagram of a circuit arrangement for real-time resizing of a digital image in accordance with one embodiment of the invention
- FIG. 2 is a functional block diagram of an example line buffer
- FIG. 3 is a functional block diagram of an example vertical filter component
- FIG. 4 is a functional block diagram of an example horizontal filter component
- FIG. 5 is a functional block diagram of a circuit arrangement for real-time rotation of a digital image in accordance with one embodiment of the invention.
- FIG. 1 is a functional block diagram of a circuit arrangement for real-time resizing of a digital image in accordance with one embodiment of the invention.
- Circuit arrangement 100 inputs a single row and performs the vertical filtering with the “Q” sequencer changing on a row basis. Depending on the vertical down-sample rate, throw-away lines are possible. Similarly, repeated lines are needed when up-sampling.
- Resizing circuitry 100 includes multiple line buffers 102 - 1 - 102 -n for buffering lines of image data, with output values from each of the line buffers being input to vertical filter 104 .
- Each line buffer stores one row of sample (pixel) values for an image.
- the output value from the vertical filter is input to horizontal filter 106 .
- Resized image samples are output from the horizontal filter.
- Resize control logic 107 controls sequencing of input sample values to the line buffers, reading sample values from the line buffers, controlling operation of the vertical and horizontal filters, and indicating when resized image samples are valid.
- Corresponding sample values are read in parallel from the line buffers 102 - 1 - 102 -n and input to vertical filter 104 .
- a value from a line buffer is read and input to vertical filter 104 , the same value is input and written to the appropriate location in the next line buffer in the chain.
- the first value is read from line buffer 102 - 1 and input to the vertical filter on line 110 , the same first value is also written to the corresponding position in line buffer 102 - 2 , which at the same time is providing a first value on line 112 to the vertical filter and to line buffer 102 - 3 .
- the structure offers improved performance in real-time image resizing by eliminating the need to re-read sample values from memory.
- the line buffers eliminate the need for the added memory of the double buffering approach. Furthermore, there is no frame latency in the current arrangement.
- vertical filter 104 and horizontal filter 106 are implemented using conventional logic.
- the vertical filter includes an array of multipliers (not shown), with each multiplier receiving an input sample value input from one of the line buffers and a coefficient.
- the output values from the multipliers are input to an adder tree (not shown).
- the output data from the vertical filter are input to the horizontal filter, which includes a series of delay elements, an array of multipliers, and an adder tree.
- vertical and horizontal filters can be specially constructed to satisfy application requirements.
- FIG. 2 is a functional block diagram of an example line buffer 102 .
- the line buffer is implemented in an field programmable gate array (FPGA) configured with a block RAM.
- FPGA field programmable gate array
- PLDs programmable logic devices
- ASICs application specific integrated circuits
- Line buffer 102 includes block RAM 152 , which functions as a dual port RAM that is controlled by write counter 154 and read counter 156 .
- block RAM refers in one embodiment to RAM implemented on FPGA, for example, the block RAM supported in FPGAs from Xilinx.
- the write counter and read counter increment address values (WADD and RADD) that are provided to write address and read address ports of the block RAM.
- the write compare circuit 158 and read compare circuit 160 compare the WADD and RADD values from the counters with selected address thresholds. When the WADD value reaches the corresponding threshold, the write compare circuit 158 signals the write counter with the WEQ signal. Similarly, when the RADD value reaches the corresponding threshold, the read compare circuit 160 signals the read counter with the REQ signal. Active WEQ and write reset (WRST) signals to the write counter reset the write counter, and active REQ and read reset (RRST) signals reset the read counter.
- the write counter and writes to the block RAM are clocked by the write clock (WCLK), and the read counter and reads from the block RAM are clocked by the read clock (RCLK).
- the write counter is enabled with the WE signal, which in an example video application is the horizontal synchronization signal.
- the read counter is enabled by the RE signal and is one address ahead of the write counter.
- FIG. 3 is a functional block diagram of an example vertical filter 104 .
- Vertical filter 104 includes an array of multipliers 202 - 1 - 202 -m coupled to one or more coefficient block RAMs 204 .
- the number of multipliers is equal to the number of vertical taps in the filter and determined by resize factors and image quality assessment.
- Each multiplier inputs a sample value from a line buffer and a coefficient selected from the block RAM 204 .
- the output values from the multipliers are input to adder tree 206 , which provides an input value to the horizontal filter 106 .
- the coefficient block RAM(s) provide different sets of coefficients for different resizing requirements. For example, if the resizing involves down-sampling by an odd number, different sets of coefficients are used depending on which line is in process.
- Coefficient selection control 208 reads the appropriate coefficients from block RAM 204 for input to the multipliers 202 - 1 - 202 -m.
- FIG. 4 is a functional block diagram of an example horizontal filter component.
- horizontal filter 106 as a multi-rate one-dimensional FIR filter in which coefficients change on a pixel-by-pixel basis.
- Horizontal filter 106 includes an array of multipliers 222 - 1 - 222 -p that receive as input values, delayed values output from the vertical filter (delay elements 224 - 1 - 224 -p) and coefficient values selected from coefficient block RAM(s) 226 .
- the number of multipliers is equal to the number of horizontal taps in the filter and determined by resize factors and image quality assessment.
- Coefficient selection control 228 reads the appropriate coefficients from block RAM 226 for input to the multipliers 222 - 1 - 222 -p. The coefficients are selected pixel-by-pixel based on the resize factor and position in the image.
- the output values from multipliers 222 - 1 - 222 -p are input to adder tree 230 , and the output value from the adder tree is the resized output sample.
- FIG. 5 is a functional block diagram of a circuit arrangement for real-time rotation of a digital image in accordance with one embodiment of the invention.
- Circuit arrangement 400 linearly addresses pixels in the source image while generating the rotated image.
- the arrangement of line buffers 402 - 1 - 402 - 4 stores the image to be rotated and allows the source pixels to be shared in generating destination pixels. This greatly reduces the memory requirements for a given bandwidth requirement.
- Rotation control logic 403 controls sequencing of input sample values to the line buffers, reading sample values from the line buffers, controlling operation of the various elements of the circuit arrangement 400 , and indicating when rotated image samples are valid.
- S and D represent source and destination coordinates, respectively.
- the destination coordinates are obtained, which can be truncated to find D x and D y values.
- the values are reiterated into the equations and used to calculate weighting factors for bicubic interpolation in the neighborhood of the available source pixels.
- circuit arrangement 400 includes 4 line buffers 402 - 1 - 402 - 4 , each having sample values for 4 pixels.
- Each of line buffers 402 - 1 - 402 - 4 is implemented in one embodiment with the line buffer arrangement 102 of FIG. 2 .
- the line buffers are filled with sample values in the manner described above for image resizing.
- F(p, q) is the nearest neighbor to a pixel to be interpolated (p is the row, and q is the column)
- a general bicubic (4 ⁇ 4) interpolation neighborhood is used to populate line buffers 402 - 1 - 402 - 4 .
- Line buffer 402 - 1 stores row (p ⁇ 1)
- line buffer 402 - 2 stores row p
- line buffer 402 - 3 stores row (p+1)
- line buffer 402 - 4 stores row (p+2).
- the interpolated pixel can be expressed in the form:
- Bicubic processor 404 computes interpolated pixel values using selected input values from the line buffers and horizontal and vertical parameter values from parameter generator 406 .
- the horizontal parameter value corresponds to the R c [(m ⁇ a)] component
- the vertical parameter value corresponds to the R c [ ⁇ (n ⁇ b)] component of the function set forth above.
- the angle of rotation is input to index generator 408 .
- the index generator computes the present position in the raster scan and provides the position data to the destination address generator. By inverting the constitutive trigonometric equations the destination coordinates are obtained which can be truncated to find integer D x and D y values. These values are reiterated into the equation and used to calculate weighting factors for bilinear or bicubic interpolation in the neighborhood of source pixels available. Rastering through the input image with this procedure fills in the resultant rotated image.
- the destination address generator 410 receives an input value from the index generator and computes a destination address.
- the destination address indicates a pixel position in a raster image for the rotated image sample value from the bicubic processor.
- the destination address is input to the source address generator 412 in order to pass along the distances from destination to source points so that parameters can be calculated.
- the source address generator determines a location and distance off grid of the new output pixel in the source image. It will be appreciated that the new output value is in the destination image, and “location in the source image” refers to the overlay of the destination grid relative to the source grid during rotation. Values for the location and distance are provided to the parameter generator 406 .
- bicubic processor 404 parameter generator 406 , index generator 408 , destination address generator 410 , and source address generator 412 function in accordance with known techniques for rotating images.
- the components can be adapted for application-dependent image rotation requirements.
- FPGAs are suitable for implementing the image-rotation circuit arrangement 400 .
- the circuit can be implemented as an ASIC.
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
Circuit arrangements and methods for real-time image resizing and image rotation. Line buffers are used for storage of lines of pixel values for both resizing and rotation. A first one of the line buffers receives input pixel values, and the line buffers are coupled in a chain such that line buffer i receives pixel values from line buffer i−1. The lines of pixel values are moved from line buffer i to line buffer i+1 as the pixel values are processed for resizing or rotation.
Description
The present invention generally relates to digital image processing, and more particularly to resizing and rotation of digital images.
An example programmable logic device (PLD) is the field programmable gate array (FPGA), first introduced by Xilinx, Inc., in 1985. PLDs such as FPGAs are becoming increasingly popular for use in electronics systems. For example, multimedia communications systems employ FPGAs in large measure for their re-programmability. In general, the use of FPGAs continues to grow at a rapid rate because they permit relatively short design cycles, reduce costs through logic consolidation, and offer flexibility in their re-programmability.
Advances in semiconductor process technology are delivering FPGAs having logic densities in the range of a million system gates and having operating speeds in excess of 200 MHz. These powerful devices are capable of and have been used to implement digital signal processing (DSP) algorithms which are inherently parallel and normally require multiple DSP microprocessors in order to accommodate the high data rates. It is feasible to implement such algorithms on a single FPGA because such devices offer a programmable architecture.
Image resizing typically involves fractional re-sampling, which can lead to prohibitively large implementations and result in compromises in range and resolution. Polyphase decimators and polyphase interpolators are generally employed for fractional re-sampling, depending on whether an image is being reduced (decimator) or enlarged (interpolator).
In many two-dimensional resizing implementations, an intermediate buffer is disposed between horizontal and vertical filter elements. The structure has considerable memory requirements because the size of the intermediate buffer is doubled relative to the image size to support continuous operation.
Image rotation also involves re-sampling, but is performed on non-integer points. For example, with a center point of an image defined, a single parameter • specifies the transformation. The equations below provide the coordinate transformation in terms of rotation of the coordinate axis.
where S and D represent source and destination coordinates, respectively.
In an implementation having linear addressing through the destination image, the first step in the rotation algorithm is computation of the source values Sx and Sy. From these values, the neighborhood of pixels is known for the filter operation. The location of the destination pixels in the source pixel matrix also gives the weighting factors for bilinear or bicubic interpolation. The pixel value is then calculated with the weighting factors and pixel values in the neighborhood. The process repeats by incrementing the Dx value and continuing in a raster out format. One drawback of this process is the non-uniform addressing of the source pixels. Essentially, the input memory design must have four times the bandwidth (or 16 for bicubic) because there is no sharing of source pixels between destination pixel operations.
Given the speed and flexibility of FPGAs, it would be desirable to implement image resize and rotation circuitry on an FPGA. However, memory bandwidth and frame latency issues must be factored into any solution.
The invention provides circuit arrangements and methods for real-time image resizing and image rotation. In various embodiments, line buffers are used for storage of lines of pixel values for both resizing and rotation. A first one of the line buffers receives input pixel values, and the line buffers are coupled in a chain such that line buffer i receives pixel values from line buffer i−1. The lines of pixel values are moved from line buffer i to line buffer i+1 as the pixel values are processed for resizing or rotation.
The line buffers offer improved performance in real-time image resizing by eliminating the need to re-read sample values from a memory. The line buffers further eliminate the need for the added memory of a double buffering approach and introduce no frame latency. For image rotation, the line buffers allows the source pixels to be shared and linearly addressed in generating destination pixels. This greatly reduces the memory requirements for a given bandwidth requirement.
It will be appreciated that various other embodiments are set forth in the Detailed Description and Claims which follow.
Various aspects and advantages of the invention will become apparent upon review of the following detailed description and upon reference to the drawings in which:
FIG. 1 is a functional block diagram of a circuit arrangement for real-time resizing of a digital image in accordance with one embodiment of the invention;
FIG. 2 is a functional block diagram of an example line buffer;
FIG. 3 is a functional block diagram of an example vertical filter component;
FIG. 4 is a functional block diagram of an example horizontal filter component; and
FIG. 5 is a functional block diagram of a circuit arrangement for real-time rotation of a digital image in accordance with one embodiment of the invention.
FIG. 1 is a functional block diagram of a circuit arrangement for real-time resizing of a digital image in accordance with one embodiment of the invention. Circuit arrangement 100 inputs a single row and performs the vertical filtering with the “Q” sequencer changing on a row basis. Depending on the vertical down-sample rate, throw-away lines are possible. Similarly, repeated lines are needed when up-sampling.
Resizing circuitry 100 includes multiple line buffers 102-1-102-n for buffering lines of image data, with output values from each of the line buffers being input to vertical filter 104. Each line buffer stores one row of sample (pixel) values for an image. The output value from the vertical filter is input to horizontal filter 106. Resized image samples are output from the horizontal filter. Resize control logic 107 controls sequencing of input sample values to the line buffers, reading sample values from the line buffers, controlling operation of the vertical and horizontal filters, and indicating when resized image samples are valid.
Corresponding sample values are read in parallel from the line buffers 102-1-102-n and input to vertical filter 104. When a value from a line buffer is read and input to vertical filter 104, the same value is input and written to the appropriate location in the next line buffer in the chain. For example, when the first value is read from line buffer 102-1 and input to the vertical filter on line 110, the same first value is also written to the corresponding position in line buffer 102-2, which at the same time is providing a first value on line 112 to the vertical filter and to line buffer 102-3.
By shifting a row of image samples from one line buffer to the next, the structure offers improved performance in real-time image resizing by eliminating the need to re-read sample values from memory. In addition, the line buffers eliminate the need for the added memory of the double buffering approach. Furthermore, there is no frame latency in the current arrangement.
In one embodiment, vertical filter 104 and horizontal filter 106 are implemented using conventional logic. For example, the vertical filter includes an array of multipliers (not shown), with each multiplier receiving an input sample value input from one of the line buffers and a coefficient. The output values from the multipliers are input to an adder tree (not shown). The output data from the vertical filter are input to the horizontal filter, which includes a series of delay elements, an array of multipliers, and an adder tree. Those skilled in the art will appreciate that in other embodiments, vertical and horizontal filters can be specially constructed to satisfy application requirements.
FIG. 2 is a functional block diagram of an example line buffer 102. In one embodiment, the line buffer is implemented in an field programmable gate array (FPGA) configured with a block RAM. Those skilled in the art will appreciate that in other embodiments, other programmable logic devices (PLDs) or ASICs could be used to implement one or more line buffers.
The write counter and read counter increment address values (WADD and RADD) that are provided to write address and read address ports of the block RAM. The write compare circuit 158 and read compare circuit 160 compare the WADD and RADD values from the counters with selected address thresholds. When the WADD value reaches the corresponding threshold, the write compare circuit 158 signals the write counter with the WEQ signal. Similarly, when the RADD value reaches the corresponding threshold, the read compare circuit 160 signals the read counter with the REQ signal. Active WEQ and write reset (WRST) signals to the write counter reset the write counter, and active REQ and read reset (RRST) signals reset the read counter. The write counter and writes to the block RAM are clocked by the write clock (WCLK), and the read counter and reads from the block RAM are clocked by the read clock (RCLK).
The write counter is enabled with the WE signal, which in an example video application is the horizontal synchronization signal. The read counter is enabled by the RE signal and is one address ahead of the write counter.
FIG. 3 is a functional block diagram of an example vertical filter 104. Those skilled in the art will recognize vertical filter 104 as a FIR filter. Vertical filter 104 includes an array of multipliers 202-1-202-m coupled to one or more coefficient block RAMs 204. The number of multipliers is equal to the number of vertical taps in the filter and determined by resize factors and image quality assessment. Each multiplier inputs a sample value from a line buffer and a coefficient selected from the block RAM 204. The output values from the multipliers are input to adder tree 206, which provides an input value to the horizontal filter 106.
The coefficient block RAM(s) provide different sets of coefficients for different resizing requirements. For example, if the resizing involves down-sampling by an odd number, different sets of coefficients are used depending on which line is in process. Coefficient selection control 208 reads the appropriate coefficients from block RAM 204 for input to the multipliers 202-1-202-m.
FIG. 4 is a functional block diagram of an example horizontal filter component. Those skilled in the art will recognize horizontal filter 106 as a multi-rate one-dimensional FIR filter in which coefficients change on a pixel-by-pixel basis.
FIG. 5 is a functional block diagram of a circuit arrangement for real-time rotation of a digital image in accordance with one embodiment of the invention. Circuit arrangement 400 linearly addresses pixels in the source image while generating the rotated image. The arrangement of line buffers 402-1-402-4 stores the image to be rotated and allows the source pixels to be shared in generating destination pixels. This greatly reduces the memory requirements for a given bandwidth requirement. Rotation control logic 403 controls sequencing of input sample values to the line buffers, reading sample values from the line buffers, controlling operation of the various elements of the circuit arrangement 400, and indicating when rotated image samples are valid.
With a center point of an image defined, a single parameter • specifies the transformation. The equations below provide the coordinate transformation in terms of rotation of the coordinate axis.
where S and D represent source and destination coordinates, respectively. By inverting the equations, the destination coordinates are obtained, which can be truncated to find Dx and Dy values. The values are reiterated into the equations and used to calculate weighting factors for bicubic interpolation in the neighborhood of the available source pixels.
For image rotation, re-sampling interpolation is typically limited to 4×4 pixel neighborhoods for reasons of computational complexity. Thus, circuit arrangement 400 includes 4 line buffers 402-1-402-4, each having sample values for 4 pixels. Each of line buffers 402-1-402-4 is implemented in one embodiment with the line buffer arrangement 102 of FIG. 2. The line buffers are filled with sample values in the manner described above for image resizing.
Where F(p, q) is the nearest neighbor to a pixel to be interpolated (p is the row, and q is the column), a general bicubic (4×4) interpolation neighborhood is used to populate line buffers 402-1-402-4. Line buffer 402-1 stores row (p−1), line buffer 402-2 stores row p, line buffer 402-3 stores row (p+1), and line buffer 402-4 stores row (p+2).
As described in “Digital Image Processing”, 2nd edition, William Pratt (John Wiley and Sons), the interpolated pixel can be expressed in the form:
where a and b are the differences between the rows and columns of F(p,q) and F(p′,q′), respectively, and Rc denotes a bicubic interpolation function such as a cubic B-spline or cubic interpolation function. Bicubic processor 404 computes interpolated pixel values using selected input values from the line buffers and horizontal and vertical parameter values from parameter generator 406. The horizontal parameter value corresponds to the Rc[(m−a)] component, and the vertical parameter value corresponds to the Rc[−(n−b)] component of the function set forth above.
The angle of rotation is input to index generator 408. The index generator computes the present position in the raster scan and provides the position data to the destination address generator. By inverting the constitutive trigonometric equations the destination coordinates are obtained which can be truncated to find integer Dx and Dy values. These values are reiterated into the equation and used to calculate weighting factors for bilinear or bicubic interpolation in the neighborhood of source pixels available. Rastering through the input image with this procedure fills in the resultant rotated image.
The destination address generator 410 receives an input value from the index generator and computes a destination address. The destination address indicates a pixel position in a raster image for the rotated image sample value from the bicubic processor.
The destination address is input to the source address generator 412 in order to pass along the distances from destination to source points so that parameters can be calculated. The source address generator determines a location and distance off grid of the new output pixel in the source image. It will be appreciated that the new output value is in the destination image, and “location in the source image” refers to the overlay of the destination grid relative to the source grid during rotation. Values for the location and distance are provided to the parameter generator 406.
In one embodiment, bicubic processor 404, parameter generator 406, index generator 408, destination address generator 410, and source address generator 412 function in accordance with known techniques for rotating images. In other embodiments, the components can be adapted for application-dependent image rotation requirements. FPGAs are suitable for implementing the image-rotation circuit arrangement 400. Alternatively, the circuit can be implemented as an ASIC.
It is intended that the specification and illustrated embodiments be considered as examples only, with a true scope and spirit of the invention being indicated by the following claims.
Claims (24)
1. A circuit arrangement for real-time image resizing, comprising:
a plurality of line buffers, a first one of the line buffers having an input port arranged to receive input sample pixel values, and each of the other line buffers having an input port coupled to an output port of another one of the line buffers;
a vertical filter arrangement coupled to output ports of the line buffers;
a horizontal filter unit having an input port coupled to the vertical filter; and
a controller coupled to the line buffers, vertical filter, and horizontal filter, the controller configured and arranged to select sample pixel values from the line buffers for input in parallel to the vertical filter and move sample pixel values from one line buffer to another.
2. The circuit arrangement of claim 1 , wherein the controller is further configured and arranged to select a set of coefficient values from a first plurality of sets of coefficient values for application by the vertical filter for each line in the image.
3. The circuit arrangement of claim 2 , wherein the controller is further configured and arranged to select a set of coefficient values from a second plurality of sets of coefficient values for application by the horizontal filter for each sample pixel value in the image.
4. The circuit arrangement of claim 3 , wherein the first plurality and second plurality of sets of coefficient values are stored in a RAM implemented in a programmable logic device.
5. The circuit arrangement of claim 3 , wherein each of the line buffers comprises a RAM implemented in a programmable logic device.
6. The circuit arrangement of claim 1 , wherein each of the line buffers comprises a RAM implemented in a programmable logic device.
7. A method for real-time image resizing, comprising:
storing input sample pixel values in a first line buffer, wherein the first line buffer is one of n line buffers, n>1, arranged for storage of respective lines of sample pixel values, each line buffer i, 1<=i<n, having an output port coupled to an input port of line buffer i+1;
applying a vertical filter to selected sample pixel values from line buffers 1 through n;
moving lines of pixel data from line buffer i to line buffer i+1 as the sample pixel values are vertically filtered; and
applying a horizontal filter to output data from the vertical filter whereby pixel values for a resized image are output.
8. The method of claim 7 , further comprising selecting a set of coefficient values from a first plurality of sets of coefficient values for application by the vertical filter for each line in the image.
9. The method of claim 8 , further comprising selecting a set of coefficient values from a second plurality of sets of coefficient values for application by the horizontal filter for each pixel in the image.
10. The method of claim 9 , further comprising storing the first plurality and second plurality of sets of coefficient values in a RAM implemented in a programmable logic device.
11. The method of claim 8 , further comprising writing sample pixel values to and reading sample pixel values from the line buffers that are implemented in RAM on a programmable logic device.
12. An apparatus for real-time image resizing, comprising:
means for storing input sample pixel values in a first line buffer, wherein the first line buffer is one of n line buffers, n>1, arranged for storage of respective lines of sample pixel values, each line buffer i, 1<=i<n, having an output port coupled to an input port of line buffer i+1;
means for applying a vertical filter to selected sample pixel values from line buffers 1 through n;
means for moving lines of pixel data from line buffer i to line buffer i+1 as the sample pixel values are vertically filtered; and
means for applying a horizontal filter to output data from the vertical filter whereby pixel values for a resized image are output.
13. A circuit arrangement for real-time image rotation, comprising:
a plurality of line buffers arranged for storage of a source image, a first one of the line buffers having an input port arranged to receive input sample pixel values, and each of the other line buffers having an input port coupled to an output port of another one of the line buffers; and
a bicubic calculation circuit arrangement coupled to the output ports of the line buffers, the bicubic calculation circuit arrangement configured and arranged to linearly address sample pixel values in the source image and translate the sample pixel values from the source image to rotated image sample pixel values in a destination image.
14. The circuit arrangement of claim 13 , wherein the bicubic calculation circuit arrangement is configured to select bicubic weights with each sample pixel value in the source image for use in translating each sample pixel value.
15. The circuit arrangement of claim 13 , wherein each of the line buffers comprises a RAM implemented in a programmable logic device.
16. A circuit arrangement for real-time image rotation, comprising:
a plurality of line buffers, a first one of the line buffers having an input port arranged to receive input sample pixel values, and each of the other line buffers having an input port coupled to an output port of another one of the line buffers;
a bicubic processing unit having a plurality of input ports coupled to the output ports of the line buffers;
an index generator arranged to receive a value indicative of a rotation angle, the index generator configured to calculate a current location in a raster scan;
a destination address generator coupled to the index generator and configured to determine an address for an output pixel value in response to the current location in the raster scan;
a source address generator coupled to the destination address generator and configured to determine a location value and a distance value indicative of a location and distance off-grid of the output pixel value;
a parameter generator coupled to the source address generator and having an output port coupled to the bicubic processing unit, the parameter generator configured to determine bicubic weight values for input to the bicubic processing unit in response to the location and distance values; and
a controller coupled to the line buffers, bicubic processing unit, index generator, destination address generator, source address generator, and parameter generator, the controller configured and arranged to select sample pixel values from the line buffers for input in parallel to the vertical filter and move sample pixel values from one line buffer to another.
17. The circuit arrangement of claim 16 , wherein the controller is configured to linearly address sample pixel values in the line buffers.
18. The circuit arrangement of claim 16 , wherein the line buffers hold four lines of sample data.
19. The circuit arrangement of claim 16 , wherein the controller is configured to select bicubic weights with each sample pixel value.
20. The circuit arrangement of claim 16 , wherein each of the line buffers comprises a RAM implemented in a programmable logic device.
21. A method for real-time image rotation, comprising:
storing input sample pixel values in a first line buffer, wherein the first line buffer is one of n line buffers, n>1, arranged for storage of respective lines of sample pixel values, each line buffer i, 1<=i<n, having an output port coupled to an input port of line buffer i+1;
applying a bicubic interpolation function to selected sample pixel values from line buffers 1 through n, whereby sample pixel values for a rotated image are generated; and
moving lines of sample pixel values from line buffer i to line buffer i+1 as the sample pixel values are interpolated.
22. The method of claim 21 , further comprising:
generating a current location value indicating a current location in a raster scan in response to an input value indicative of a rotation angle;
determining an address for an output pixel value in response to the current location value;
determining a location value and a distance value indicative of a location and distance off-grid of the output pixel value in response to the current location value; and
determining bicubic weight values for use in bicubic interpolation in response to the location and distance values.
23. The method of claim 21 , further comprising writing sample pixel values to and reading sample pixel values from the line buffers that are implemented in RAM on a programmable logic device.
24. An apparatus for real-time image rotation, comprising:
means for storing input sample pixel values in a first line buffer, wherein the first line buffer is one of n line buffers, n>1, arranged for storage of respective lines of sample pixel values, each line buffer i, 1<=i<n, having an output port coupled to an input port of line buffer i+1;
means for bicubic interpolation of selected sample pixel values from line buffers 1 through n, whereby pixel values for a rotated image are generated; and
means for moving lines of sample pixel values from line buffer i to line buffer i+1 as the sample pixel values are interpolated.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/943,547 US6801674B1 (en) | 2001-08-30 | 2001-08-30 | Real-time image resizing and rotation with line buffers |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/943,547 US6801674B1 (en) | 2001-08-30 | 2001-08-30 | Real-time image resizing and rotation with line buffers |
Publications (1)
Publication Number | Publication Date |
---|---|
US6801674B1 true US6801674B1 (en) | 2004-10-05 |
Family
ID=33030339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/943,547 Expired - Lifetime US6801674B1 (en) | 2001-08-30 | 2001-08-30 | Real-time image resizing and rotation with line buffers |
Country Status (1)
Country | Link |
---|---|
US (1) | US6801674B1 (en) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6937291B1 (en) * | 2000-08-31 | 2005-08-30 | Intel Corporation | Adaptive video scaler |
US20060269163A1 (en) * | 2005-05-31 | 2006-11-30 | Lexmark International, Inc. | Methods and systems for scaling and rotating an image in a single operation |
US7307635B1 (en) * | 2005-02-02 | 2007-12-11 | Neomagic Corp. | Display rotation using a small line buffer and optimized memory access |
US20080043141A1 (en) * | 2006-06-30 | 2008-02-21 | Kabushiki Kaisha Toshiba | Video signal scaling apparatus |
WO2008157417A2 (en) * | 2007-06-13 | 2008-12-24 | Arbor Labs, Inc. | Method, system and apparatus for intelligent resizing of images |
US20090015717A1 (en) * | 2007-07-09 | 2009-01-15 | Arnao Michael A | Image resizer and resizing method |
US20090171766A1 (en) * | 2007-12-27 | 2009-07-02 | Jeremy Schiff | System and method for providing advertisement optimization services |
US20100097444A1 (en) * | 2008-10-16 | 2010-04-22 | Peter Lablans | Camera System for Creating an Image From a Plurality of Images |
US20100097443A1 (en) * | 2008-10-16 | 2010-04-22 | Peter Lablans | Controller in a Camera for Creating a Panoramic Image |
US20100322530A1 (en) * | 2009-06-19 | 2010-12-23 | Guotong Feng | Method and Apparatus for FIR Filtering Using Space-Varying Rotation |
US20110032262A1 (en) * | 2009-08-06 | 2011-02-10 | Kabushiki Kaisha Toshiba | Semiconductor integrated circuit for displaying image |
US20110102465A1 (en) * | 2009-11-03 | 2011-05-05 | Sung Jin Cho | Image processor, electronic device including the same, and image processing method |
US20110110606A1 (en) * | 2009-11-11 | 2011-05-12 | General Dynamics Advanced Information Systems | System and method for rotating images |
CN101727655B (en) * | 2008-10-16 | 2011-11-16 | 展讯通信(上海)有限公司 | Image zooming method and device thereof |
US20130097212A1 (en) * | 2011-10-14 | 2013-04-18 | Vivante Corporation | Low Power and Low Memory Single-Pass Multi-Dimensional Digital Filtering |
CN104050635A (en) * | 2014-05-30 | 2014-09-17 | 北京理工大学 | System and method for nonlinear filter real-time processing of image with adjustable template size |
US8890977B2 (en) | 2008-05-19 | 2014-11-18 | Spatial Cam Llc | Systems and methods for concurrently playing multiple images from a storage medium |
US20140347518A1 (en) * | 2013-05-27 | 2014-11-27 | Fujitsu Semiconductor Limited | Image data processing apparatus and method therefor |
US20150170330A1 (en) * | 2013-12-13 | 2015-06-18 | Samsung Electronics Co., Ltd. | Image processor, computing system comprising same, and related method of operation |
US20150262337A1 (en) * | 2014-03-11 | 2015-09-17 | Samsung Electronics Co., Ltd. | Reconfigurable image scaling circuit |
US20190295222A1 (en) * | 2018-03-22 | 2019-09-26 | Seiko Epson Corporation | Image processing device, image processing method, and display device |
CN111369446A (en) * | 2018-12-26 | 2020-07-03 | 杭州海康威视数字技术股份有限公司 | Image rotation method and device |
US11119396B1 (en) | 2008-05-19 | 2021-09-14 | Spatial Cam Llc | Camera system with a plurality of image sensors |
US11189001B2 (en) | 2018-09-21 | 2021-11-30 | Samsung Electronics Co., Ltd. | Image signal processor for generating a converted image, method of operating the image signal processor, and application processor including the image signal processor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4989091A (en) * | 1988-11-16 | 1991-01-29 | Scientific-Atlanta, Inc. | Scan converter for a high definition television system |
US5384600A (en) * | 1993-01-11 | 1995-01-24 | Hitachi, Ltd. | System and method for converting video signals for display on television receiver screens of differing aspect ratios |
US5671018A (en) * | 1995-02-07 | 1997-09-23 | Texas Instruments Incorporated | Motion adaptive vertical scaling for interlaced digital image data |
US5917554A (en) * | 1995-01-20 | 1999-06-29 | Sony Corporation | Picture signal processing apparatus |
-
2001
- 2001-08-30 US US09/943,547 patent/US6801674B1/en not_active Expired - Lifetime
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4989091A (en) * | 1988-11-16 | 1991-01-29 | Scientific-Atlanta, Inc. | Scan converter for a high definition television system |
US5384600A (en) * | 1993-01-11 | 1995-01-24 | Hitachi, Ltd. | System and method for converting video signals for display on television receiver screens of differing aspect ratios |
US5917554A (en) * | 1995-01-20 | 1999-06-29 | Sony Corporation | Picture signal processing apparatus |
US5671018A (en) * | 1995-02-07 | 1997-09-23 | Texas Instruments Incorporated | Motion adaptive vertical scaling for interlaced digital image data |
Cited By (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6937291B1 (en) * | 2000-08-31 | 2005-08-30 | Intel Corporation | Adaptive video scaler |
US7307635B1 (en) * | 2005-02-02 | 2007-12-11 | Neomagic Corp. | Display rotation using a small line buffer and optimized memory access |
US20060269163A1 (en) * | 2005-05-31 | 2006-11-30 | Lexmark International, Inc. | Methods and systems for scaling and rotating an image in a single operation |
US7692670B2 (en) | 2005-05-31 | 2010-04-06 | Lexmark International, Inc. | Methods and systems for scaling and rotating an image in a single operation |
US20080043141A1 (en) * | 2006-06-30 | 2008-02-21 | Kabushiki Kaisha Toshiba | Video signal scaling apparatus |
WO2008157417A2 (en) * | 2007-06-13 | 2008-12-24 | Arbor Labs, Inc. | Method, system and apparatus for intelligent resizing of images |
US20090033683A1 (en) * | 2007-06-13 | 2009-02-05 | Jeremy Schiff | Method, system and apparatus for intelligent resizing of images |
WO2008157417A3 (en) * | 2007-06-13 | 2009-02-19 | Arbor Labs Inc | Method, system and apparatus for intelligent resizing of images |
US20090015717A1 (en) * | 2007-07-09 | 2009-01-15 | Arnao Michael A | Image resizer and resizing method |
US8111331B2 (en) | 2007-07-09 | 2012-02-07 | Cisco Technology, Inc. | Image resizer and resizing method |
US20090172730A1 (en) * | 2007-12-27 | 2009-07-02 | Jeremy Schiff | System and method for advertisement delivery optimization |
US7991715B2 (en) | 2007-12-27 | 2011-08-02 | Arbor Labs, Inc. | System and method for image classification |
US20090171766A1 (en) * | 2007-12-27 | 2009-07-02 | Jeremy Schiff | System and method for providing advertisement optimization services |
US20090172030A1 (en) * | 2007-12-27 | 2009-07-02 | Jeremy Schiff | System and method for image classification |
US11119396B1 (en) | 2008-05-19 | 2021-09-14 | Spatial Cam Llc | Camera system with a plurality of image sensors |
US8890977B2 (en) | 2008-05-19 | 2014-11-18 | Spatial Cam Llc | Systems and methods for concurrently playing multiple images from a storage medium |
CN101727655B (en) * | 2008-10-16 | 2011-11-16 | 展讯通信(上海)有限公司 | Image zooming method and device thereof |
US8355042B2 (en) | 2008-10-16 | 2013-01-15 | Spatial Cam Llc | Controller in a camera for creating a panoramic image |
US20100097443A1 (en) * | 2008-10-16 | 2010-04-22 | Peter Lablans | Controller in a Camera for Creating a Panoramic Image |
US20100097444A1 (en) * | 2008-10-16 | 2010-04-22 | Peter Lablans | Camera System for Creating an Image From a Plurality of Images |
US9531965B2 (en) | 2008-10-16 | 2016-12-27 | Spatial Cam Llc | Controller in a camera for creating a registered video image |
US8803944B2 (en) | 2008-10-16 | 2014-08-12 | Spatial Cam Llc | Controller in a camera for creating a registered video image |
US20100322530A1 (en) * | 2009-06-19 | 2010-12-23 | Guotong Feng | Method and Apparatus for FIR Filtering Using Space-Varying Rotation |
US8326074B2 (en) * | 2009-06-19 | 2012-12-04 | Ricoh Co., Ltd. | Method and apparatus for FIR filtering using space-varying rotation |
US20110032262A1 (en) * | 2009-08-06 | 2011-02-10 | Kabushiki Kaisha Toshiba | Semiconductor integrated circuit for displaying image |
US20110102465A1 (en) * | 2009-11-03 | 2011-05-05 | Sung Jin Cho | Image processor, electronic device including the same, and image processing method |
US8463074B2 (en) | 2009-11-11 | 2013-06-11 | General Dynamics Advanced Information Systems | System and method for rotating images |
US20110110606A1 (en) * | 2009-11-11 | 2011-05-12 | General Dynamics Advanced Information Systems | System and method for rotating images |
US20130097212A1 (en) * | 2011-10-14 | 2013-04-18 | Vivante Corporation | Low Power and Low Memory Single-Pass Multi-Dimensional Digital Filtering |
US9077313B2 (en) * | 2011-10-14 | 2015-07-07 | Vivante Corporation | Low power and low memory single-pass multi-dimensional digital filtering |
US20140347518A1 (en) * | 2013-05-27 | 2014-11-27 | Fujitsu Semiconductor Limited | Image data processing apparatus and method therefor |
US9723231B2 (en) * | 2013-05-27 | 2017-08-01 | Socionext Inc. | Image data processing apparatus and method therefor for pixel data |
US20150170330A1 (en) * | 2013-12-13 | 2015-06-18 | Samsung Electronics Co., Ltd. | Image processor, computing system comprising same, and related method of operation |
US10600145B2 (en) * | 2013-12-13 | 2020-03-24 | Samsung Electronics Co., Ltd. | Image processor, for scaling image data in two directions. Computing system comprising same, and related method of operation |
US20150262337A1 (en) * | 2014-03-11 | 2015-09-17 | Samsung Electronics Co., Ltd. | Reconfigurable image scaling circuit |
US9754352B2 (en) * | 2014-03-11 | 2017-09-05 | Samsung Electronics Co., Ltd. | Reconfigurable image scaling circuit |
CN104050635B (en) * | 2014-05-30 | 2017-02-15 | 北京理工大学 | System and method for nonlinear filter real-time processing of image with adjustable template size |
CN104050635A (en) * | 2014-05-30 | 2014-09-17 | 北京理工大学 | System and method for nonlinear filter real-time processing of image with adjustable template size |
US20190295222A1 (en) * | 2018-03-22 | 2019-09-26 | Seiko Epson Corporation | Image processing device, image processing method, and display device |
US11189001B2 (en) | 2018-09-21 | 2021-11-30 | Samsung Electronics Co., Ltd. | Image signal processor for generating a converted image, method of operating the image signal processor, and application processor including the image signal processor |
US12020345B2 (en) | 2018-09-21 | 2024-06-25 | Samsung Electronics Co., Ltd. | Image signal processor, method of operating the image signal processor, and application processor including the image signal processor |
CN111369446A (en) * | 2018-12-26 | 2020-07-03 | 杭州海康威视数字技术股份有限公司 | Image rotation method and device |
CN111369446B (en) * | 2018-12-26 | 2023-06-02 | 杭州海康威视数字技术股份有限公司 | Image rotation method and device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6801674B1 (en) | Real-time image resizing and rotation with line buffers | |
KR101386767B1 (en) | Apparatus and method for displaying a warped version of a source image | |
US5008752A (en) | Digital image interpolator with multiple interpolation algorithms | |
EP1110182B1 (en) | Trilinear texture filtering with optimized memory access | |
US4460958A (en) | Window-scanned memory | |
EP0644684B1 (en) | Digital resampling integrated circuit for fast image resizing applications | |
US5977994A (en) | Data resampler for data processing system for logically adjacent data samples | |
US20020154123A1 (en) | Image scaling | |
JP2002537615A (en) | A graphics system having a supersampling sample buffer and generating output pixels using selective filtering adjustments to reduce artifacts. | |
JP2002537613A (en) | Graphics system having a supersampling sample buffer and generating output pixels using selective filter adjustments to achieve a display effect | |
EP3101622A2 (en) | An image acquisition system | |
KR100283413B1 (en) | Texture Mapping System | |
US6765578B2 (en) | Graphics resampling system and method for use thereof | |
EP0397807A1 (en) | Apparatus for simultaneously filtering and resampling digital data | |
JPH08251400A (en) | Digital image interpolation circuit provided with plurality of interpolation kernels | |
US20090091585A1 (en) | Screen enlargement/reduction device | |
US10332239B2 (en) | Apparatus and method for parallel polyphase image interpolation | |
Fahmy | Generalised parallel bilinear interpolation architecture for vision systems | |
EP0511606B1 (en) | Parallel interpolator for high speed digital image enlargement | |
EP1032883B1 (en) | Data resampler for data processing system | |
JP4465844B2 (en) | Image processing apparatus and method, and recording medium | |
US7697817B2 (en) | Image processing apparatus and method, and recorded medium | |
JPH10134176A (en) | Method and device for image signal processing | |
Ramachandran et al. | Design and FPGA implementation of a video scalar with on-chip reduced memory utilization | |
Mahale et al. | Hardware architecture of bi-cubic convolution interpolation for real-time image scaling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: XILINX, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:TURNEY, ROBERT D.;REEL/FRAME:012154/0320 Effective date: 20010827 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |