1. Technical Field
The embodiments herein generally relate to image processing, and, more particularly, to computer-graphic image compression techniques used for image processing.
2. Description of the Related Art
The conventional computer-graphic image compressing systems 100 are normally single frame buffer based systems, typically either Cathode Ray Tube Controller (CRTC) based or Liquid Crystal Display Controller (LCDC) based, as shown in
Typically, in nature-like system environments, the pixel distribution is uneven most of the time; e.g. the biggest portion of the background is unchanged from frame to frame, referred to herein as the background pixel block. Moreover, a small area of pixel blocks generally has constant changes and generally occurs in a patterned fashion, referred to herein as the foreground pixel block. Furthermore, the foreground pixel blocks typically can move inside the picture frame in a linear or non-linear fashion.
Additionally, the background and foreground pixels are all treated the same in the graphic subsystem 100 in the way of unified single frame buffer 101. Again, generally, the frame buffer 101 does not separate these two different groups of pixels subjectively. Thus, the CPU and associated graphic engine 102 as well as the bus input/output (I/O) system are busying processing those pixels evenly; thereby creating I/O and CPU jam. Accordingly, the above reasons represent limited processing efficiency for nature like computer graphic image display. Therefore, there remains a need for a computer-graphic image compression technique that is fast and flexible.
In view of the foregoing, the embodiments herein provide a method of updating computer-graphic digital images, and a program storage device readable by computer, tangibly embodying a program of instructions executable by the computer to perform the method, wherein the method comprises coding a position of pixels located in a foreground of a computer-graphic image frame; sending the coded positions of the pixels located in the foreground of the computer-graphic image frame to a frame buffer of a sprite controller; separating a background pixel group from a foreground pixel group in the computer-graphic image frame based on the coded positions; updating the pixels in the foreground pixel group only; and transmitting a frame number and a frame buffer parameter dimension corresponding to the updated pixels to a computer-graphic image display viewer.
The method may further comprise updating the pixels in the background pixel group only when an entire scene of the computer-graphic image changes from a previous scene of the computer-graphic image. Moreover, the method may further comprise updating the pixels in the foreground pixel group based only on the coded positions. Preferably, the transmission of the frame number and the frame buffer parameter dimension corresponding to the updated pixels to the computer-graphic image display viewer occurs periodically and depends on characteristics of the computer-graphic image frame. Additionally, the method may further comprise configuring the sprite controller as a mini CRTC. Preferably, the configuration of the sprite controller is variable. The method may further comprise using a comparator to separate the background pixel group from the foreground pixel group, wherein the comparator preferably comprises exclusive OR digital logic.
Another embodiment provides a sprite controller for updating computer-graphic digital images, wherein the sprite controller comprises a dimension register array adapted to code a position of pixels located in a foreground of a computer-graphic image frame; a frame buffer adapted to store the coded positions of the pixels located in a foreground of the computer-graphic image frame; a comparator adapted to separate a background pixel group from a foreground pixel group in the computer-graphic image frame based on the coded positions; a graphic subsystem adapted to update the pixels in the foreground pixel group; and a picture image frame counter adapted to process a frame number and a frame buffer parameter dimension corresponding to the updated pixels. Preferably, the graphic subsystem is adapted to update the pixels in the background pixel group only when an entire scene of the computer-graphic image changes from a previous scene of the computer-graphic image. Additionally, the graphic subsystem may be adapted to update the pixels in the foreground pixel group based only on the coded positions.
The sprite controller may further comprise a transmitter adapted to transmit the frame number and the frame buffer parameter dimension corresponding to the updated pixels; and a computer-graphic image display viewer adapted to receive the transmission from the transmitter, wherein the transmission of the frame number and the frame buffer parameter dimension corresponding to the updated pixels to the computer-graphic image display viewer occurs periodically and depends on characteristics of the computer-graphic image frame. The sprite controller may comprise a mini CRTC. Furthermore, the comparator may comprise exclusive OR digital logic, and a configuration of the sprite controller is preferably variable.
These and other aspects of the embodiments herein will be better appreciated and understood when considered in conjunction with the following description and the accompanying drawings. It should be understood, however, that the following descriptions, while indicating preferred embodiments and numerous specific details thereof, are given by way of illustration and not of limitation. Many changes and modifications may be made within the scope of the embodiments herein without departing from the spirit thereof, and the embodiments herein include all such modifications.
The embodiments herein will be better understood from the following detailed description with reference to the drawings, in which:
The embodiments herein and the various features and advantageous details thereof are explained more fully with reference to the non-limiting embodiments that are illustrated in the accompanying drawings and detailed in the following description. Descriptions of well-known components and processing techniques are omitted so as to not unnecessarily obscure the embodiments herein. The examples used herein are intended merely to facilitate an understanding of ways in which the embodiments herein may be practiced and to further enable those of skill in the art to practice the embodiments herein. Accordingly, the examples should not be construed as limiting the scope of the embodiments herein.
As mentioned, there remains a need for a computer-graphic image compression technique that is fast and flexible. The embodiments herein achieve this by providing a technique for fast graphic rendering realization using a programmable sprite control. Referring now to the drawings, and more particularly to
As illustrated in
Accordingly, the embodiments herein provide a technique of separating the “background” pixel group 210 and the “foreground” pixel group 220, outside of a unified pixel frame buffer 405 as shown in
Thus, the efficiency of the graphic subsystem 103 (of
Again, the image compression is accomplished from only the coded parameters 320 that are needed to be transmitted; the pixels in the foreground and background frame buffer 312, 310, respectively, only have to be transmitted periodically, depending on the nature of the pictures 200; i.e., the entropy of the pictures 200 such as the uniformity of the picture 200. In other words, only the coded information is transmitted, not the original picture frame 200. Preferably, buffers 310, 312 are configured as one piece of hardware. The pixel preprocessing engine 302 in
One aspect of the embodiments herein is the architecture of the sprite 300 that separates the foreground pixels 220 and the background pixels 210, thus drastically reducing the amount of information that has to be transmitted. According to the embodiments herein, a “sprite” is a combination of small buffers 310, 312 and a logic (sprite) controller 320 that controls these buffers 310, 312, to move and separate pixels.
The implementation of the sprite control 320 can be accomplished as illustrated in
In a preferred embodiment, the sprite control 320 is implemented as a mini CRTC, with a small frame buffer 403. The CRTC is adapted to control the scan of pixels across the display on the CRT, including horizontal and vertical positions of the pixels and the value of the pixels. The shape of the sprite control 320 can be of any shape, such as in the case of
Thus, the frame update occurs when the graphic subsystem 401 records significant background pixel block changes or the entire scene changes. Otherwise, only the sprite controller buffer 403 which can be designed as 1/100 of the size of frame buffer 101 is to be updated. The operation of the sprite control 320 as illustrated in
The techniques provided by the embodiments herein may be implemented on an integrated circuit chip (not shown). The chip design is created in a graphical computer programming language, and stored in a computer storage medium (such as a disk, tape, physical hard drive, or virtual hard drive such as in a storage access network). If the designer does not fabricate chips or the photolithographic masks used to fabricate chips, the designer transmits the resulting design by physical means (e.g., by providing a copy of the storage medium storing the design) or electronically (e.g., through the Internet) to such entities, directly or indirectly. The stored design is then converted into the appropriate format (e.g., GDSII) for the fabrication of photolithographic masks, which typically include multiple copies of the chip design in question that are to be formed on a wafer. The photolithographic masks are utilized to define areas of the wafer (and/or the layers thereon) to be etched or otherwise processed.
The resulting integrated circuit chips can be distributed by the fabricator in raw wafer form (that is, as a single wafer that has multiple unpackaged chips), as a bare die or in a packaged form. In the latter case the chip is mounted in a single chip package (such as a plastic carrier, with leads that are affixed to a motherboard or other higher level carrier) or in a multichip package (such as a ceramic carrier that has either or both surface interconnections or buried interconnections). In any case the chip is then integrated with other chips, discrete circuit elements, and/or other signal processing devices as part of either (a) an intermediate product, such as a motherboard, or (b) an end product. The end product can be any product that includes integrated circuit chips, ranging from toys and other low-end applications to advanced computer products having a display, a keyboard or other input device, and a central processor.
The embodiments herein can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment including both hardware and software elements. Preferably, the embodiments are implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, the embodiments herein can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable 20 medium can be any apparatus that can comprise, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
A representative hardware environment for practicing the embodiments herein is depicted in
The method may further comprise updating the pixels in the background pixel group 210 only when an entire scene of the computer-graphic image 200 changes from a previous scene of the computer-graphic image 200. Moreover, the method may further comprise updating the pixels in the foreground pixel group 220 based only on the coded positions. Preferably, the transmission of the frame number 315 and the frame buffer parameter dimension corresponding to the updated pixels to the computer-graphic image display viewer 322 occurs periodically and depends on characteristics of the computer-graphic image frame 200. Additionally, the method may further comprise configuring the sprite controller 320 as a mini CRTC. Preferably, the configuration of the sprite controller 320 is variable. The method may further comprise using a comparator 303 to separate the background pixel group 210 from the foreground pixel group 220, wherein the comparator preferably comprises exclusive OR digital logic.
The foregoing description of the specific embodiments will so fully reveal the general nature of the embodiments herein that others can, by applying current knowledge, readily modify and/or adapt for various applications such specific embodiments without departing from the generic concept, and, therefore, such adaptations and modifications should and are intended to be comprehended within the meaning and range of equivalents of the disclosed embodiments. It is to be understood that the phraseology or terminology employed herein is for the purpose of description and not of limitation. Therefore, while the embodiments herein have been described in terms of preferred embodiments, those skilled in the art will recognize that the embodiments herein can be practiced with modification within the spirit and scope of the appended claims.
This application generally relates to co-pending U.S. patent applications entitled (1) “Method and Apparatus for Fast and Flexible Digital Image Compression Using Programmable Sprite Buffer” (Docket No. YOR920050501US1) and (2) “Apparatus for Monitor, Storage and Back Editing, Retrieving of Digitally Stored Surveillance Images” (Docket No. YOR920050507US1) filed concurrently herewith, the contents of which in their entireties are herein incorporated by reference.