| 20070174619 | DIGITAL WATERMARKING SYSTEM ACCORDING TO PIXEL BRIGHTNESS VALUE AND DIGITAL WATERMARKING METHOD | July, 2007 | Hsieh et al. |
| 20100008589 | IMAGE DESCRIPTOR FOR IMAGE RECOGNITION | January, 2010 | Bober et al. |
| 20060140278 | Technique for adaptive de-blocking of block-based film grain patterns | June, 2006 | Gomila et al. |
| 20080144969 | Method for performing pattern decomposition based on feature pitch | June, 2008 | Park |
| 20020106125 | Halftone detection in the wavelet domain | August, 2002 | Queiroz |
| 20080025636 | IMAGE PROCESSING APPARATUS, CONTROL METHOD THEREFOR, IMAGE PROCESSING METHOD, AND PROGRAM | January, 2008 | Kotani |
[0001] 1. Field of the Invention
[0002] This invention relates to the field computer technology for mapping one data space to another data space.
[0003] 2 . Background
[0004] Computers are often used to map data that exists in a source data space to a destination data space. This type of mapping is often used in “virtual reality” and “telepresence” applications. The data in the source data space can represent a warped image that is obtained by a distorting lens such as a fisheye lens or a catadioptric lens. The data in the destination data space can be presented by a presentation device such as a video screen, computer monitor or printer. The problem is how to rapidly generate the data for the destination data space from the source data space.
[0005] One approach is to backward map the coordinates of a point in the destination data space to coordinates in the source data space and to obtain the value for the point in the destination data space from the mapped point in the source data space. Precisely mapping each point (for example, by using floating point calculations to perform the mapping) is expensive in either memory or computation, or both.
[0006] Another approach is to precisely map a grid of points from the destination data space to the source data space. These grid points bound regions (patches) that contain pixels that have similar mapping as the grid points that bound the region. Thus, the precisely mapped grid points are used to determine coefficients for a mapping that can be applied to each point in the region. Each of the grid points in the destination data space has a corresponding grid point in the source data space. Thus, the destination grid point and the corresponding source grid point are referred to as a “point pair.”
[0007] By using all four of the destination and source point pairs that bound a region, a perspective transformation can be computed and used to find the corresponding pixel in the source data space. Thus,
[0008] Can be used to perform the mapping where (x
[0009] Another approach is to generate a look-up table that provides the x
[0010] Another approach is to approximately map the region using a less computationally expensive formula. For example, an affine transformation can be used to perform this mapping. In this circumstance, three of the four sets of destination and source point pairs are used to compute the affine coefficients for the transformation. Then coordinates that specify a pixel that in the destination data space can be used to find the corresponding pixel in the source data space. Thus,
[0011] Where (x
[0012]
[0013]
[0014]
[0015] It would be advantageous to use a fast mapping algorithm that also provides a good approximation for a precise perspective-correct transformation that maintains continuity across patch boundaries without the computational or memory overheads associated with the prior art. Devices and computers that use these methods will operate more efficiently than those that use prior art methods will.
[0016] The invention provides a fast and accurate means of mapping one data space into another by precisely mapping grid points between the data spaces and then by performing a bilateral-bilinear interpolation to map the points bounded by the precisely mapped grid points.
[0017] One aspect of the invention is a computer-controlled method that includes the step of determining a region in a destination data space. The region is bounded by a plurality of grid points. It defines a first plurality of data points in the destination data space. The method precisely maps the plurality of grid points in the destination data space to a plurality of mapped grid points in a source data space. The source data space contains, or is associated with, a second plurality of data points. The plurality of mapped grid points define a plurality of boundary lines that represent the boundary of the region as mapped into the source data space. The method also applies a bilateral-bilinear interpolation algorithm to approximately map the first plurality of data points to the second plurality of data points.
[0018] Another aspect of the invention is an apparatus that includes a central processing unit (CPU) and a memory coupled to the CPU. The apparatus also includes a region determination mechanism that is configured to determine a region in a destination data space. The region is bounded by a plurality of grid points. The region defines a first plurality of data points within the destination data space. The apparatus also includes a precise mapping mechanism that is configured to precisely map the plurality of grid points determined by the region determination mechanism to a plurality of mapped grid points in a source data space. The source data space contains (or associates) a second plurality of data points. The plurality of mapped grid points define a plurality of boundary lines that represent the boundary of the region as mapped into the source data space. The apparatus also includes a bilateral-bilinear interpolation mechanism that is configured to approximately map the first plurality of data points in the region to the second plurality of data points using the plurality of mapped grid points.
[0019] Yet another aspect of the invention, is a computer program product that includes a computer usable storage medium having computer readable code embodied therein for causing a computer to map a destination data space to a source data space. When executed on a computer, the computer readable code causes the computer to effect a precise mapping mechanism, a region determination mechanism, and a bilateral-bilinear interpolation mechanism. Each of these mechanisms having the same functions as the corresponding mechanisms for the previously described apparatus.
[0020] Still another aspect of the invention is a computer program product embodied in a carrier wave transmitting computer readable code therein for causing a computer to map a destination data space to a source data space. When executed on a computer, the computer readable code causes the computer to effect a precise mapping mechanism, a region determination mechanism, and a bilateral-bilinear interpolation mechanism. Each of these mechanisms having the same functions as the corresponding mechanisms for the previously described apparatus.
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033] Notations and Nomenclature
[0034] The following ‘notations and nomenclature’ are provided to assist in the understanding of the present invention and the preferred embodiments thereof.
[0035] Procedure—A procedure is a self-consistent sequence of computerized steps that lead to a desired result. These steps are defined by one or more computer instructions. These steps are performed by a computer executing the instructions that define the steps. Thus, the term “procedure” can refer to a sequence of instructions, a sequence of instructions organized within a programmed-procedure or programmed-function, or a sequence of instructions organized within programmed-processes executing in one or more computers.
[0036] Operating Environment
[0037]
[0038] Data Space
[0039] One aspect of the invention maps points between two data spaces.
[0040]
[0041]
[0042] One aspect of the invention backward maps the destination data space to the source data space using a mapping that generates a perspective corrected image in the destination data space. One step in this mapping process precisely maps the first grid point
[0043] Notice that the gridded destination data space
[0044]
[0045]
[0046]
[0047] Although the bilateral-bilinear interpolation algorithm is applicable to n-dimensional spaces, subsequent discussion of the algorithm is directed to two-dimensional spaces containing image data. Each region is a two-dimensional patch containing points that represent pixels. One skilled in the art will understand how to modify the described algorithm to be applicable to higher dimensional spaces, for non-image data, and to a source data space that references the data. Such a one will also understand that the invention can be used (without limitation) to map a viewport onto spherical, cylindrical, and panoramic spaces.
[0048]
[0049]
[0050] The mapped grid points define lines that bound the mapped patch
[0051] A first slope
[0052] The bilateral-bilinear interpolation algorithm operates by determining the second slope
[0053] Each subsequent scan line in the destination patch
[0054] One skilled in the art will understand that the bilateral-bilinear interpolation algorithm, previously summarized and subsequently described in detail, assures that adjacent patches correctly align. Thus, the bilateral-bilinear interpolation algorithm does not generate mapping artifacts as shown in
[0055] Data Space Mapping
[0056]
[0057] A ‘precisely map grid points’ procedure
[0058] Once the grid points that bound the region have been precisely mapped, the mapping process
[0059] The mapping process
[0060] One skilled in the art will understand that the precisely mapped grid points define lines in the source data space that can serve as boundary lines for the mapped region in the source data space.
[0061]
[0062] The bilateral-bilinear interpolation algorithm process
[0063] dxl=(x2−x0)/nyd; // determine slope of left line
[0064] dyl=(y2−y0)/nyd;
[0065] dxr=(x3−x1)/nyd; // determine slope of right line
[0066] dyr=(y3−y1)/nyd;
[0067] startx=x0; // set starting coordinates
[0068] starty=y0;
[0069] endx=x1; // set ending coordinates
[0070] endy=y1;
[0071] Next, the bilateral-bilinear interpolation algorithm process
[0072] An ‘initialize working variables’ procedure
[0073] dx=(endx−startx)/nxd; // determine scan line slope
[0074] dy=(endy−starty)/nxd;
[0075] sx=startx;
[0076] sy=starty;
[0077] An ‘iterate each pixel in scan line’ procedure
[0078] startx+=dxl; // determine new scan line start
[0079] starty+=dyl; // coordinates
[0080] endx+=dxr; // determine new scan line end
[0081] endy+=dyr; // coordinates
[0082] One skilled in the art will understand that the interpolation of each scan line thus depends on the slope of the patch's bounding lines. Thus, the end position of each scan line in one region substantially matches the start position of each scan line for an adjacent patch. The result is that there are no interpolation artifacts between adjacent patches (or regions).
[0083] Once the ‘advance to next scan line in patch’ procedure
[0084] A ‘set pixel’ procedure
[0085] Once the ‘set pixel’ procedure
[0086] One skilled in the art will understand that the invention improves the mapping between two data spaces while still maintaining high performance.
[0087] From the foregoing, it will be appreciated that the invention has (without limitation) the following advantages:
[0088] 1) The invention dramatically reduces mapping artifacts when mapping from one data space to another.
[0089] 2) The invention provides a high performance mapping capability between data spaces.
[0090] 3) The invention provides a superior real-time presentation of a visual image when the source data space contains warped image data.
[0091] Although the present invention has been described in terms of the presently preferred embodiments, one skilled in the art will understand that various modifications and alterations may be made without departing from the scope of the invention. Accordingly, the scope of the invention is not to be limited to the particular invention embodiments discussed herein.