This application is related to and claims the priority benefit of co-pending and commonly-assigned U.S. patent application Ser. No. 11/177,787, filed on 8 Jul. 2005, entitled “LOW NOISE DITHERING AND COLOR PALETTE DESIGNS,” by Anoop K. Bhattacharjya, which is incorporated by reference herein in its entirety.
A. Technical Field
The present invention relates generally to the transmission of video images. More particularly, the present invention pertains to reducing the bandwidth required to transmit video images.
B. Background of the Invention
A streaming camera is typically used to share documents between users in, for example, the setting of a videoconference or to otherwise communicate information. However, the use of inexpensive cameras, such as webcams, in such situations may be beset by problems. These problems include low, and often barely adequate, sensor resolution, significant image blur, and high sensor noise. Inexpensive cameras typically are very sensitive to changes in illumination. This leads to undesirable, large-scale pixel changes between successive images in a video stream, even in the presence of only soft shadows, such as those caused by a user moving in the vicinity of the imaging apparatus.
Without further processing, streaming video data from cameras, particularly inexpensive cameras, requires high bandwidth transmissions, but results in the reception of images of only low quality.
Accordingly, what is needed are systems and methods for reducing the bandwidth requirements for a streaming camera.
Aspects of the present invention includes methods and systems for processing image frames received from a camera, such as a webcam, in order to implement a streaming camera having low bandwidth requirements.
In embodiments, methods and systems embodying teachings of the present invention system reduce pixel noise through temporal edge-preserving filtering, as well as through the use of non-photorealistic rendering modes for representing image frames. Additionally, or in the alternative, such methods and systems lower pixel position noise through the implementation of position masking procedures. In one aspect of the present invention, a low-noise palettizer may be used to encode pixel color. In an embodiment, one color of the palette may be reserved as a “transparent” color for transparency encoding. Embodiments of the methods and systems of the present invention pack changed image regions into rectangles and use transparency encoding to enable the efficient compression of information to be transmitted.
Thus, in one aspect of the invention, a method is provided to obtain low bandwidth transmission of a video stream of plural image frames, each frame being made up of a set of ordered pixels. In the method, the set of pixels across at least some of the plurality of frames are filtered temporally, creating a temporally filtered image frame. Using a stored image frame that reflects the current state of the image frame viewed by a receiver of the video stream, update regions are found in the temporally filtered image frame relative to the stored image frame. In embodiments, rectangle packing may be applied to the update regions before transmission.
In yet another aspect of the present invention a method for the low bandwidth transmission of a video stream involves temporally filtering the set of pixels across at least some of the plurality of image frames to create a temporally filtered image frame, applying mode-specific processing to the temporally filtered image frame, and applying a palettizer to the temporally filtered image frame. The mode-specific processing utilized variously in different embodiments of the inventive technology may include non-realistic processing modes, such as edge outline mode processing and cartoon mode processing, as well as photorealistic mode processing.
The present invention correspondingly includes systems for low-bandwidth transmission of a video stream comprising a plurality of frames. One such system includes a temporal filter capable of converting a frame in the video stream into a temporally filtered image frame, a palettizer that receives a rendered image frame and maps the color values of pixels in the temporally filtered image frame into a palettized image frame using a discrete number of colors, and a palettized image frame buffer in which the palettized image frame is maintained to support further signal processing by the system. Also included in embodiments of the inventive system is a received image frame buffer that maintains a stored image frame that is reflective of the current state of the image frame viewed by a receiver of the video stream. A position mask computer communicating with the frame buffer identifies a set of edge pixels for images in the stored image frame and operates on to the set of edge pixels to produce a position mask that obscures changes in edge pixel positions between the stored image frame and the palettized image frame. An update regions finder communicates with the palettized image frame buffer, the received image frame buffer, and the position mask computer. The update region finder identifies a set of sufficiently-changed pixels in the palettized image frame relative to the stored image frame, and deletes from the set of sufficiently-changed pixels any pixels in the position mask. This produces a reduced set of sufficiently-changed pixels to be updated. In embodiments, the reduced set of sufficiently-changed pixels may be bounded by one or more tightest bounding regions. In an embodiment, the regions may be tightest bounding rectangles that are axis-aligned to a grid that divides the image frame into a set of tiles.
Pursuant to another aspect of a system according to the present invention, a rectangle packer may be coupled to receive from the update regions finder the bounded reduced set of sufficiently-changed pixels. A rectangle packer reduces the number of rectangular update regions by merging pairs of rectangular regions. In an embodiment, the rectangle packer may reduce the number of rectangular regions using a no-cost or a cost-based algorithm. In embodiments, a transparency encoder receives the packed rectangular output and encodes, for better compressibility, the color data for pixels in the packed rectangular output that do not need to be updated as being “transparent.” Finally, a compressor may be used to compress the packed rectangular output to be relayed for transmission to a receiver.
Certain features and advantages of the invention have been generally described in this summary section; however, additional features, advantages, and embodiments are presented herein or will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims hereof. Accordingly, it should be understood that the scope of the invention shall not be limited by the particular embodiments disclosed in this summary section.
Reference will be made to embodiments of the invention, examples of which may be illustrated in the accompanying figures. These figures are intended to be illustrative, not limiting. Although the invention is generally described in the context of these embodiments, it should be understood that it is not intended to limit the scope of the invention to these particular embodiments.
The present invention includes methods and systems useful in the processing of image frames received from a camera, such as a webcam, in order to implement a streaming camera having low bandwidth requirements.
In the following description, for purpose of explanation, specific details are set forth in order to provide an understanding of the invention. It will be apparent, however, to one skilled in the art that the invention may be practiced without these details. One skilled in the art will recognize that embodiments of the present invention, some of which are described below, may be incorporated into a number of different electrical components, circuits, devices, and systems. Components, or modules, shown in block diagrams are illustrative of exemplary embodiments of the invention and are meant to avoid obscuring the invention. Furthermore, connections between components within the figures are not intended to be limited to direct connections. Rather, connections between these components may be modified, reformatted, or otherwise changed by intermediary components.
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, characteristic, or function described in connection with the embodiment is included in at least one embodiment of the invention but may be in more than one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification is not necessarily a reference to the same embodiment.
The present invention contemplates systems for preparing video image frames for transmission. By way of example and not limitation,
System 100 receives a video stream of image frames from an input camera 105, which may be external to system 100. In system 100, the stream of image frames may be temporally filtered by a temporal filter 110 that is capable of converting an image frame in the video stream into a temporally filtered image frame having reduced pixel noise.
In an embodiment, the temporally filtered image frame may be communicated from temporal filter 110 to a mode-specific processing section of system 100. In the mode-specific processing section of system 100, the temporally filtered image frame may be accorded one of several modes of processing. The selection of a particular mode of processing may be selected at the option of an operator of system 100 or may be automatically selected based upon one or more criteria including, without limitation, intended use and bandwidth availability.
Temporally filtered image frames received in the mode-specific processing section of system 100 may be communicated to an edge position calculator or computer 115 that identifies a set of edge pixels in the temporally filtered image frame.
In an embodiment, mode selector 120 directs temporally filtered image frames to one of several mode-specific processors included in the mode-specific processing section of system 100. In the embodiment depicted in
The conditioning of a temporally filtered image frame in edge outline mode processor 125 is informed by the set of edge pixels produced in edge position computer 115. In general terms, according to an embodiment, a temporally filtered image frame conditioned in edge outline mode processor 125 will have the appearance of a line drawing rendering of the images contained in the temporally filtered image frame. The precise steps employed by edge outline mode processor 125 to achieve this end will be discussed in more detail below. It should be noted that, relative to the other mode-specific processors, temporally filtered image frames conditioned in edge outline mode processor 125 offer maximum potential benefit for reducing bandwidth requirements.
If cartoon mode has been selected, in an embodiment, image frames conditioned in edge outline mode processor 125 may be presented to cartoon mode processor 130. Alternatively, in an embodiment, cartoon mode processor 130 may communicate directly with mode selector 120 and may perform the same or similar functionality as edge outline mode processor 125. In general terms, according to an embodiment, a temporally filtered image frame conditioned by cartoon mode processor 130 will have the appearance of a line drawing rendering with solid color regions. The precise steps employed by cartoon mode processor 130 to achieve this end will be discussed in more detail below.
Alternatively, if photorealistic images are desired, mode selector 120 may direct temporally filtered image frames for processing by photorealistic mode processor 135. In general terms, according to an embodiment, a temporally filtered image frame conditioned in photorealistic mode processor 135 may be very similar to the corresponding predecessor temporally filtered image frame. In an embodiment, a temporally filtered image frame conditioned in photorealistic mode processor 135 may, according to the embodiment, be a full-information rendering.
In an embodiment, the output of the mode-specific processing section of system 100 may be communicated to a palettizer 140, which maps the color values (which shall be understood to include gray values) of pixels in the conditioned temporally filtered image frame into a palettized image frame using a discrete number of colors. The palettized image frame is then communicated to a palettized image frame buffer 145 to be used in support of further processing by system 100.
Also included in system 100 is a received image frame buffer 155 that maintains a stored image frame that reflects the current state of the image frame viewed by a receiver of the video stream. A position mask computer 160 communicates with received image frame buffer 155 and identifies a set of edge pixels in the stored image frame. A position mask computer 160 operates on the set of edge pixels to produce a position mask that may obscure some changes in edge pixel positions between the stored image frame in received image frame buffer 155 and the palettized image frame in palettized image frame buffer 145.
An update regions finder 150 communicates with palettized image frame buffer 145, received image frame buffer 155, and position mask computer 160. Update regions finder 150 identifies a set of sufficiently-changed pixels in the palettized image frame as compared with the stored image frame. In update regions finder 150, pixels in the position mask from position mask computer 160 may be deleted from the set of sufficiently-changed pixels. The result is an inventory of regions that are to be updated in the stored image frame using data from corresponding regions in the palettized image frame.
In another aspect of system 100, a rectangle packer 165 may be coupled to receive from update regions finder 150 the inventory of regions to be updated. Rectangle packer 165 may reduce the number of rectangular update regions by merging rectangular update regions. In embodiments, the action of rectangle packer 165 may be iterative, and rectangle packer 165 may continue by merging rectangular update regions until no further mergers are possible. Unmerged rectangular update regions, if any, and packed rectangular update regions, if any, are the output of rectangle packer 165.
In embodiments, a transparency encoder 170 may receive the output of, or may function in conjunction with, the rectangle packer 165 and marks as transparent the color data for pixels in the packed output that do not require updating but are a part of an update region. In an embodiment, the update regions may be supplied to a compressor 175 to compress the data immediately prior to transmission by a transmitter 180 to a receiver. In an embodiment, compressor 175 may be part of transmitter 180.
Depicted in
A palettizer may be applied (215) to the color of the pixels in the conditioned temporally filtered image frame produced by the mode-specific processing section of system 100. This step results in a palettized image frame and may be performed by palettizer 140 of system 100. The palettized image frame may be used to find (220) pixels in the palettized image frame that need to be updated relative to corresponding pixels in a stored image frame that reflects the state of the image frame viewed by a receiver of the video stream being transmitted by system 100.
In the depicted embodiment, rectangle packing procedures may be applied (225) to the update regions. This results in a packed output that may be transmitted (230) to a receiver of the video stream.
The operations of selected portions of system 100 will be explored in more detail below in order to more fully illuminate the steps undertaken in method 200.
1. Temporal Filtering
Image frames received from the camera may be temporally filtered to reduce pixel noise. In an embodiment, an edge-preserving temporal filter may be used. In an embodiment, spatial filtering for noise reduction may be optionally performed. Because inexpensive cameras do not generally have high spatial resolution, in a document streaming situation in particular, sacrificing spatial resolution through spatial filtering may severely affect the readability of small fonts. In embodiments where high-resolution cameras are used, edge-preserving spatial filters may be employed in conjunction with temporal filtering.
One embodiment of temporal filtering that may be performed by temporal filter 110 is set forth in
In an embodiment, the threshold value may be related to the noise of the camera sensors. The noise level of the camera sensors may be determined, in an embodiment, by having the camera view a solid color image and calculating the mean and variance of the pixel color values. In one embodiment, the threshold value may be related to the mean plus a factor multiplied by the variance. One skilled in the art will recognize other ways to estimate or calculate residual noise and for setting a threshold value; none of which are critical to the practice of the present invention.
An embodiment of temporal filtering is described in general mathematics below. Let cijt, denote the color of the pixel at location (i, j) in the image frame received at time t. Let the mean color at location (i, j) be denoted by the tuple (sijt, nijt), where nijt denotes the number of samples that were averaged temporally to obtain the sum sijt. Denoting the filtered mean color at location (i, j) at time t by μijt results in the following relationship:
Denoting the predetermined color-difference threshold by CT, the temporal filtering operation may be given by:
The temporally filtered image comprises μijt+1 for each pixel location (i, j).
2. Edge Position Computation
In an embodiment, edge positions in the temporally filtered image frame may be identified by examining the pixel color values within a causal neighborhood of each pixel location (i, j). In an embodiment, the causal neighborhood of pixel location (i, j) may be defined as the set of pixel locations given by:
CN(i, j)={(i, j+1), (i+1, j−1), (i+1, j), (i+1, j+1)} (3)
For all locations (i, j) and a predefined threshold, ET, if ∥μijt−μpgt∥>ET for some p, q) ∈ CN(i, j), then, the edge location may be given by:
One skilled in the art shall recognize other methods for determining edge pixels, which methods fall within the scope of the present invention.
3. Mode-Specific Processing
Embodiments of the present invention may allow for multiple rendering modes, which will be explained in more detail below. By way of overview, it should be noted that only one mode of processing involves a full-information rendering of the temporally filtered image frame. Full-information rendering occurs in the photorealistic mode of processing, which may be performed by photorealistic mode processor 135.
The other modes of processing may be non-photorealistic modes. In such modes, selected data is suppressed from the temporally filtered image frame being processed so that a reduced-information rendering results. The non-photorealistic modes of processing available in the mode-specific processing section of system 100 may include the edge outline mode, which may be performed by edge outline mode processor 125, and the cartoon mode, which may be performed by cartoon mode processor 130.
In an embodiment, the temporally filtered image buffer (μijt) is updated for all input image frames (cijt). When system 100 needs to transmit a frame to a receiver, system 100 or a user may specify a rendering mode in which to send the corresponding image data. It shall be noted that the rates of camera input and output to the receiver need not be same, and may even by asynchronous. When a frame request is received for an image frame to be transmitted to the receiver, the image data in μijt may be processed based on one of the modes of processing available in the mode-specific processing section of system 100. Each mode will be discussed in additional detail below.
a) Edge Outline Mode
Edge outline processing is a non-photorealistic mode.
Such a grayscale image is highly compressible and may be transmitted to a receiver using less bandwidth. The edge outline mode employs strong quantization while maintaining a smooth visual impression of the strength of an edge and thereby achieves improved compression.
b) Cartoon Mode
Cartoon mode processing is a non-photorealistic color or grayscale mode. In an embodiment, the output of edge outline mode may be the input of the cartoon mode. Thus, as indicated in
Cartoon processing method 500 yields an image with solid colors or grays for each of the connected regions that are separated from each other by black or gray boundaries. In an embodiment, to improve compression efficiency the mean color of each component region may be mapped to the closest color in a palette used by a palettizer, such as palettizer 140. The cartoon mode of processing employs strong quantization and thereby achieves improved compression.
c) Photorealistic Mode
Photorealistic processing produces a high-bandwidth, full-information color or grayscale rendering.
4. Palettizing
In an embodiment, a palettizer may be applied to the image outputted from the mode-specific processing section. In an embodiment, the palettizer may comprise a look-up table that converts an image color into a color or set of colors. In embodiments, a palettizer such as described in U.S. patent application Ser. No. 11/177,787, filed on 8 Jul. 2005 and entitled, “LOW NOISE DITHERING AND COLOR PALETTE DESIGNS” may be employed; the subject matter of which is incorporated by reference herein in its entirety.
5. Finding Update Regions
Before so doing, however, it should be noted that the images in the rendered image frame may be sensitive to pixel position noise, especially near image edges. This noise may be counteracted by using a position mask to obscure pixels that are proximate to the edges in the image. In this manner, pixels near image edges may be precluded from being transmitted to the receiver.
In an embodiment, a position mask may be developed by position mask computer 160, which determines a set, M, of pixels around the edges in the received image frame. A set of pixel locations may be derived (715) from the locations of edge pixels in the received image frame in received image frame buffer 155. A morphological operator may then be applied to that set of edge pixels to thicken (720), or dilate, the edge boundaries. Such a process results in a set, M, of pixels that may be used as an edge mask of the positions of the edges of images in the received image frame. Pixels that are located within the edge mask may be precluded from being transmitted to a receiver. Thus, the set, D, of pixels may be reduced (725) by the set, M, to identify (725) update regions that may be updated to the receiver.
Stated below in mathematical terms is an embodiment of a method for identifying update regions using an edge mask. Let the set, D, denote the set of pixel locations that are sufficiently different between the image stored in the palletized image frame buffer and the image frame that reflects the state of the receiver's image frame based on the data transmitted to the receiver. A set of masked locations, M, may be derived from the locations of the edges in the copy of the receiver's buffer. Specifically, let rijt denote the colors of the pixels in the copy of the receiver's buffer. For all locations, (i, j), and a predefined threshold, MT, if ∥rijt−rpqt∥>MT, for some (p, q) ∈CN(i, j) (as defined in Equation 3, above), then, (i, j) ∈M and (p, q) ∈M.
Thus, the set of sufficiently-different pixels, D, may be reduced to D−M using the set of masked pixel locations, M, to obtain reduced set of sufficiently-different pixels, R. This reduced set of sufficiently-different pixels, R, represents the pixel locations that should be updated on the receiver. It shall be noted that using masked positions reduces bandwidth and provides stable text/graphics/image boundaries in the presence of pixel-position noise and quantization noise.
6. Region Bounding
In embodiments, the reduced set of sufficiently-different pixels, R, may be partitioned for further processing to achieve additional bandwidth efficiencies.
For each tile 900(r,c) that possesses any pixels from the reduced set of sufficiently-different pixels, R, a tightest axis-aligned bounding rectangle is found (810). A tightest axis-aligned bounding rectangle will be the smallest rectangle that has sides parallel to the respective axes of the matrix by which palettized image frame 900 was partitioned, and that bounds all of the pixel positions in that tile that are part of the update region, R. In an embodiment, a tile may contain more than one tightest axis-aligned bounding rectangle. It shall be noted that by using axis-aligned bounding rectangles rather than searching over all possible orientations provides for rapid processing, which can be beneficial when having to process video data. One skilled in the art shall recognize that other implementations, such as using non-axis-aligned bounding regions, may be employed.
It shall be noted that the tightest axis-aligned bounding rectangle may enclose pixel that are not part of the update region, R. Consider, by way of illustration,
In an embodiment, the bounding rectangles may be ordered in decreasing order of the number of pixel locations that they contain that also belong to the reduced set of sufficiently-different pixels, R. In an embodiment, based on bandwidth conditions, bounding rectangles that do not contain more than a defined percentage of altered pixels, may be transmitted to the receiver at a slower rate. In an embodiment, low-percentage bounding rectangles may be sent on a round-robin basis so that all regions that need to be updated are guaranteed to be updated at a preset rate.
In an embodiment, as will be explained in more detail below, portions of a bounding rectangle that do not belong to the reduced set of sufficiently-different pixels, R, may be encoded with a “transparent” color to improve compressibility of the transmitted bounding region.
7. Rectangle Packing
According to embodiments of the present invention, given a set of axis-aligned bounding rectangles as described in the previous section, it may be beneficial to reduce the number of rectangles that cover the reduced set of sufficiently-different pixels, R. By reducing the number of rectangles, the overall transmission cost of sending updated image regions to the receiver may be reduced. Many rectangle packing algorithms are known to those of skill in the art or may be obtained or adapted from other arts, such as, by way of non-limiting example, semiconductor manufacturing. Such methods shall be considered within the scope of the present invention.
In an embodiment, the expense in processing and transmitting a given set of rectangles, SR, may depend upon three factors: the total number of rectangles, NR; the total area with content (areas with update regions), AC, that is covered by the given set of rectangles, SR; and the total area with no content (areas without update regions), AN, but that may be inexpensive to transmit. A cost function of the above embodiment may be expressed as:
Cost=(A×NR)+(B×AC)+(C×AN), (5)
where, A, B, and C, represent the unit cost for each term. These unit costs may be affected by or related to such factors as the compression algorithm used by the system, packetizing scheme, and the like.
8. No-Cost Packing
In Equation 5, it should be noted that the area with content, AC, is constant since it is necessary to transmit all areas that have update regions. This means that the area with content, AC, never decreases and since there are no other update regions in the image frame, the area with content, AC, never increases. Because the area with content, AC, is a constant, in an embodiment, the term (B×AC) may be treated as a constant. Accordingly, the following cost function may be optimized:
Effective Cost=(A×NR)+(C×AN). (6)
Typically, some rectangles may be packed, or merged, together without introducing any area that does not have content. When rectangles merge without introducing new areas with no content, such mergers reduce the cost of transmission without occurring increased costs; such procedures may be referred to as “no-cost” rectangle packing.
In no-cost rectangle packing, each merged rectangles encloses no more area than the total of the areas enclosed individually by the original set of bounding rectangles. Rectangles that may be merged for no-cost rectangle packing are adjacent to each other, either horizontally or vertically. If adjacent horizontally, the rectangles must share the same top and bottom coordinates to become packed into a merged rectangle; if adjacent vertically, the rectangles must share the same left and right coordinates.
An embodiment of a method for no-cost rectangle packing is presented in
By way of illustration, consider the set of tightest axis-aligned bounding rectangles (a-p) in palettized image frame 900 as shown in
Ultimately, as set forth in
9. Cost-Based Packing
In embodiment, rectangular update areas may be merged with areas that do not require updating (“non-update” regions), if the benefit of including the area with no content offsets the cost of including them. A rectangle packer that includes areas with no content that needs to be updated will hereinafter be referred to as “cost-based” rectangle packer, and any rectangles that merge with an area that has no update content will be referred to a “cost-based” rectangle.
In an embodiment of cost-based rectangle packing, an algorithm may be used that evaluates or otherwise optimizes the costs of replacing an update region or regions with a cost-based rectangle that includes at least one non-update region. In one embodiment, the cost-based rectangle packer may evaluate the cost of a potential cost-based rectangle and may iterate until a cost-base rectangle is identified that has a benefit that exceeds its cost. Alternatively, the cost-based rectangle packer may iterate through all possible cost-based rectangles and select the cost-based rectangle with the best benefit in excess of its costs. As with the no-cost approach, in an embodiment, the cost-based rectangle packer may repeat until no more cost-based rectangle replacements are possible.
As depicted in
The two costs, CTand CS, may then be compared (1220) to ascertain whether using the cost-based rectangle is cost-effective. If it is more cost effective, the cost-based rectangle packing may be formed (1235) by merging the regions.
If the cost-based rectangle is not cost effective, a determination may be made (1225) to identify another candidate cost-based rectangle. If there is no attempt to identify a new candidate cost-based rectangle or if no new candidate cost-based rectangle can be identified, the resulting rectangles may be used to transmit (1230) to a receiver. The resulting rectangles may comprise cost-based rectangle(s), original axis-aligned bounding rectangle(s), merged rectangle(s), or a combination thereof.
By way of illustration, exemplary results of cost-based rectangle processing are shown in
By contrast, a second candidate cost-based rectangle is depicted in
10. Rectangle Transmission
In an embodiment, based on bandwidth conditions, rectangles that do not contain (1435) more than a defined number or percentage of update pixels, may be transmitted (1440) to the receiver at a slower rate. In an embodiment, low-percentage bounding rectangles may be sent on a round-robin basis so that all regions that need to be updated are guaranteed to be updated at a preset rate.
11. Transparency Encoding and Compression
In embodiments, palettizer 140 may reserve one color selection as a “transparent” color. Any pixel within a rectangle to be transmitted that is within a predetermined difference threshold of the corresponding pixel in the received image stored in received image buffer 155 may be encoded by transparency encoder 170 using the transparent color from the selection of colors in palettizer 140. That is, pixels in a rectangle that do not belong to the reduced set of sufficiently-changed pixels may be encoded as transparent. One skilled in the art shall recognize that the process of transparency encoding may produce increased compressibility because any region that is to be transmitted to a receiver but that does not require updating may be compressed using a single, transparent, color designation.
It shall be understood that transmission may include compression, which may be performed by compressor 175. In an embodiment, the compressing and transmitting may be performed by the same component, such as, for example, the transmitter 180.
Aspects of the present invention may be implemented in any device or system capable of processing the image data, including without limitation, a general-purpose computer and a specific computer intended for graphics processing. The present invention may also be implemented into other devices and systems, including without limitation, a digital camera, a multimedia device, and any other device that is capable of receiving an input image. Furthermore, within any of the devices, aspects of the present invention may be implemented in a wide variety of ways including software, hardware, firmware, or combinations thereof. For example, the functions to practice various aspects of the present invention may be performed by components that are implemented in a wide variety of ways including discrete logic components, one or more application specific integrated circuits (ASICs), and/or program-controlled processors. It shall be noted that the manner in which these items are implemented is not critical to the present invention.
It shall be noted that embodiments of the present invention may further relate to computer products with a computer-readable medium that have computer code thereon for performing various computer-implemented operations. The media and computer code may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind known or available to those having skill in the relevant arts. Examples of computer-readable media include, but are not limited to: magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store or to store and execute program code, such as application-specific integrated circuits (ASICs), programmable logic devices (PLDs), flash memory devices, and ROM and RAM devices. Examples of computer code include machine code, such as produced by a compiler, and files containing higher level code that are executed by a computer using an interpreter.
While the invention is susceptible to various modifications and alternative forms, specific examples thereof have been shown in the drawings and are herein described in detail. It should be understood, however, that the invention is not to be limited to the particular form disclosed, but to the contrary, the invention is to cover all modifications, equivalents, and alternatives falling within the scope of the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
5085506 | Kahn et al. | Feb 1992 | A |
5732205 | Astle | Mar 1998 | A |
6496186 | Deering | Dec 2002 | B1 |
6711299 | Chao et al. | Mar 2004 | B2 |
6791559 | Baldwin | Sep 2004 | B2 |
6819793 | Reshetov et al. | Nov 2004 | B1 |
20040071351 | Rade | Apr 2004 | A1 |
20040218827 | Cohen et al. | Nov 2004 | A1 |
Number | Date | Country | |
---|---|---|---|
20070110303 A1 | May 2007 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11177787 | Jul 2005 | US |
Child | 11622316 | US |