Abstract:
The methods and apparatuses detect a color of each of a plurality of pixels within a frame; group a portion of the plurality of pixels having a common color into a block; and generate a color list including the common color based on a threshold value corresponding to the block.

Description:
RELATED APPLICATION 
       [0001]    The present invention is related to, and claims the benefit of U.S. Provisional Application No. 60/747,256, filed on May 15, 2006 entitled “Methods and Apparatuses For Generating Compressed Data Representing a Visual Frame,” by Xiang Li, Juannong Gu, and He Huang. 
     
     FIELD OF INVENTION 
       [0002]    The present invention relates generally to transmitting information and, more particularly, to transmitting compressed data representing a visual frame. 
       BACKGROUND 
       [0003]    There are many systems directed to compressing data that represents a visual frame. For example, compression schemes such as JPEG, RLE, and the like are known in the art for compressing data that represents a visual frame. 
       SUMMARY 
       [0004]    The methods and apparatuses detect a color of each of a plurality of pixels within a frame; group a portion of the plurality of pixels having a common color into a block; and generate a color list including the common color based on a threshold value corresponding to the block. 
     
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0005]    The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate and explain one embodiment of the methods and apparatuses for generating compressed data representing a visual frame. 
           [0006]    In the drawings, 
           [0007]      FIG. 1  is a diagram illustrating an environment within which the methods and apparatuses for generating compressed data representing a visual frame are implemented; 
           [0008]      FIG. 2  is a simplified block diagram illustrating one embodiment in which the methods and apparatuses for generating compressed data representing a visual frame are implemented; 
           [0009]      FIG. 3A  is a simplified block diagram illustrating a system, consistent with one embodiment of the methods and apparatuses for generating compressed data representing a visual frame; 
           [0010]      FIG. 3B  is a table illustrating a system, consistent with one embodiment of the methods and apparatuses for generating compressed data representing a visual frame; 
           [0011]      FIG. 4  is a flow diagram consistent with one embodiment of the methods and apparatuses for generating compressed data representing a visual frame; and 
           [0012]      FIG. 5  is a flow diagram consistent with one embodiment of the methods and apparatuses for generating compressed data representing a visual frame. 
       
    
    
     DETAILED DESCRIPTION 
       [0013]    The following detailed description of the methods and apparatuses for generating compressed data representing a visual frame refers to the accompanying drawings. The detailed description is not intended to limit the methods and apparatuses for generating compressed data representing a visual frame. Instead, the scope of the methods and apparatuses for generating compressed data representing a visual frame is defined by the appended claims and equivalents. Those skilled in the art will recognize that many other implementations are possible, consistent with the present invention. 
         [0014]    References to a device include a desktop computer, a portable computer, a personal digital assistant, a video phone, a landline telephone, a cellular telephone, and a device capable of receiving/transmitting an electronic signal. 
         [0015]      FIG. 1  is a diagram illustrating an environment within which the methods and apparatuses for generating compressed data representing a visual frame are implemented. The environment includes an electronic device  110  (e.g., a computing platform configured to act as a client device, such as a computer, a personal digital assistant, and the like), a user interface  115 , a network  120  (e.g., a local area network, a home network, the Internet), and a server  130  (e.g., a computing platform configured to act as a server). 
         [0016]    In one embodiment, one or more user interface  115  components are made integral with the electronic device  110  (e.g., keypad and video display screen input and output interfaces in the same housing such as a personal digital assistant. In other embodiments, one or more user interface  115  components (e.g., a keyboard, a pointing device such as a mouse, a trackball, etc.), a microphone, a speaker, a display, a camera are physically separate from, and are conventionally coupled to, electronic device  110 . In one embodiment, the user utilizes interface  115  to access and control content and applications stored in electronic device  110 , server  130 , or a remote storage device (not shown) coupled via network  120 . 
         [0017]    In accordance with the invention, embodiments of selectively controlling a remote device below are executed by an electronic processor in electronic device  110 , in server  130 , or by processors in electronic device  110  and in server  130  acting together. Server  130  is illustrated in  FIG. 1  as being a single computing platform, but in other instances are two or more interconnected computing platforms that act as a server. 
         [0018]      FIG. 2  is a simplified diagram illustrating an exemplary architecture in which the methods and apparatuses for generating compressed data representing a visual frame are implemented. The exemplary architecture includes a plurality of electronic devices  202 , a server device  210 , and a network  201  connecting electronic devices  202  to server  210  and each electronic device  202  to each other. The plurality of electronic devices  202  are each configured to include a computer-readable medium  209 , such as random access memory, coupled to an electronic processor  208 . Processor  208  executes program instructions stored in the computer-readable medium  209 . In one embodiment, a unique user operates each electronic device  202  via an interface  115  as described with reference to  FIG. 1 . 
         [0019]    The server device  130  includes a processor  211  coupled to a computer-readable medium  212 . In one embodiment, the server device  130  is coupled to one or more additional external or internal devices, such as, without limitation, a secondary data storage element, such as database  240 . 
         [0020]    In one instance, processors  208  and  211  are manufactured by Intel Corporation, of Santa Clara, Calif. In other instances, other microprocessors are used. 
         [0021]    In one embodiment, the plurality of client devices  202  and the server  210  include instructions for a customized application for generating compressed data representing a visual frame. In one embodiment, the plurality of computer-readable media  209  and  212  contain, in part, the customized application. Additionally, the plurality of client devices  202  and the server  210  are configured to receive and transmit electronic messages for use with the customized application. Similarly, the network  210  is configured to transmit electronic messages for use with the customized application. 
         [0022]    One or more user applications are stored in media  209 , in media  212 , or a single user application is stored in part in one media  209  and in part in media  212 . In one instance, a stored user application, regardless of storage location, is made customizable based on transmitting compressed data representing a visual frame as determined using embodiments described below. 
         [0023]      FIG. 3A  illustrates one embodiment of a system  300 . In one embodiment, the system  300  is embodied within the server  130 . In another embodiment, the system  300  is embodied within the electronic device  110 . In yet another embodiment, the system  300  is embodied within both the electronic device  110  and the server  130 . 
         [0024]    In one embodiment, the system  300  includes a pixel color module  310 , a color manager module  320 , a storage module  330 , an interface module  340 , a control module  350 , a single point identification module  360 , a pixel separation module  370 , and a compression module  380 . 
         [0025]    In one embodiment, the control module  350  communicates with the pixel color module  310 , the color manager module  320 , the storage module  330 , the interface module  340 , the single point identification module  360 , the pixel separation module  370 , and the compression module  380 . In one embodiment, the control module  350  coordinates tasks, requests, and communications between the pixel color module  310 , the color manager module  320 , the storage module  330 , the interface module  340 , the single point identification module  360 , the pixel separation module  370 , and the compression module  380 . 
         [0026]    In one embodiment, the pixel color module  310  detects a color of each pixel within a frame. 
         [0027]    In one embodiment, the color manager module  320  process the color information of each pixel within the frame. In one embodiment, the color manager module  320  tracks and associates the color of each pixel within the frame. For example, if the first pixel within the frame is determined to be the color blue, then the color manager module associates the color blue with the first pixel. 
         [0028]    In one embodiment, the color manager module  320  evaluates the overall color variation within the frame. For example, if the frame is filled with a representation of a cloudless sky and each pixel shows different shades of the color blue, then the color variation within this frame would be relatively narrow and uniform. In another example, if the frame is filled with a representation of multi-colored hot air balloons, then the color variation within this frame would be relative wide and non-uniform. 
         [0029]    In one embodiment, the color manager module  320  also identifies the number of adjacent pixels having the same color. For example, if there are 4 pixels that are adjacent to each other having the same color, then those 4 pixels may comprise a block of pixels having the same color. 
         [0030]    In another embodiment, the color manager module  320  also identifies the number of pixels have a similar color within a predetermined color variation. In one instance, the predetermined color variation is determined based on the overall color variation within the frame. Similar to the above example, the pixels that are adjacent to each other form a block of pixels. 
         [0031]    In another embodiment, the color manager module  320  identifies a number of pixels that have the same color within a general area. For example, pixels within the frame that are located within a predetermined number of pixels that have the same color may comprise a block of pixels having the same color. 
         [0032]    In one embodiment, the color manager module  320  generates a color table that includes statistics of the number of blocks of pixels have the same color. Further, in one embodiment, the color table also includes the size of the blocks in terms of the number of pixels within each block where the pixels within the block have the same color. 
         [0033]    In one embodiment, the color manager module  320  also generates a same color list. In this embodiment, the same color list identifies colors that have sufficient blocks of pixels. In one embodiment, a color identified on the same color list represent a color associated with pixels that should be categorized as lossless data. For example, the pixels having a color that is identified on the same color list are identified as being lossless data. 
         [0034]    In one embodiment, a block of 16 pixels of the same color is the threshold for this color to be identified on the same color list. In one embodiment, in addition to a block of 16 pixels of the same color needed to be identified on the same color list, a weighted table can be utilized to collectively sum up the blocks with less than 16 pixels of the same color. For example, according to one weighted table, 3 blocks having 10 pixels of the same color are needed within a frame for this color to be identified on the same color list. Further, blocks having less than 4 pixels of the same color may be disregarded and given no weight towards having the color identified on the same color list. The exact number of pixels are utilized for exemplary purposes; any number of pixels may be utilized. 
         [0035]    In another embodiment, any combination of blocks of the same color that collectively comprise 16 pixels of this same color is the threshold for the color to be identified on the same color list. In another embodiment, any number of pixels with a block may be utilized as the threshold to determine inclusion on the same color list and that 16 pixels is utilized as an exemplary number. 
         [0036]    In one embodiment, the storage module  330  stores information relating to the color manager module  320  as well as pixel information relating to the pixel color module  310 , single point pixel identification module  360 , and pixel separation module  370 . 
         [0037]    In one embodiment, the interface module  340  detects frames from other sources and provides pixel information to other modules or devices. 
         [0038]    In one embodiment, the single point identification module  360  identifies pixels that are associated with an isolated color. For example, if there is a pixel with a particular color such as blue that is surrounded by other pixels with a different color such as red, then the blue pixel would be identified by the single point identification module. 
         [0039]    In another embodiment, the variation of color that is allowed prior to the identification of a single pixel by the single point identification module  360  may be varied depending on the overall color variation within the frame as determined by the color manager module  320 . 
         [0040]    In an exemplary embodiment,  FIG. 3B  illustrates an exemplary table  390  that includes a red column  392 , a green column  394 , and a blue column  396 . Each of the columns  392 ,  394 , and  396  represents a red, green, and blue color value component of a particular pixel, respectively. In this example, a particular pixel within a frame is represented by a “single color” label and has a red color value of 100, a green color value of 125, and a blue color value of 130. Further, the average color values of the eight surrounding pixels that are adjacent to this particular pixel is represented by a “Average Color” label and has a red color value of 101, a green color value of 150, and a blue color value of 124. The difference in values from the particular pixel and the average color value is represented by a “Sum of Difference” label and has the overall value difference for the red, green, and blue color components at  32 . In this example, the “Threshold Value” label has the threshold value set at  150 . 
         [0041]    In this example, the particular pixel as identified within the “Single Color” label would not be identified by the single point identification module  360  as an isolated color. This particular pixel would not be identified as an isolated color because the sum of the difference of the color between the particular pixel and the surrounding pixels is below the threshold value. 
         [0042]    In another example, if the threshold value is lowered to a value of 30, then this particular pixel would be identified by the single point identification module  360  as an isolated color. In one embodiment, the threshold value is raised which makes it harder to include a pixel as an isolated color if the color variation within the frame is less uniform. Similarly, the threshold value is lowered which makes it easier to include a pixel as an isolated color if the color variation within the frame is more uniform. 
         [0043]    In one embodiment, the pixel separation module  370  determines whether the pixel within the frame should be classified as either lossy data or lossless data. In one embodiment, the pixel separation module  370  places pixels that have a color that matches the color list (as identified by the color manager module  320 ) into a lossless data category. 
         [0044]    Further, the pixel separation module  370  also moves a pixel that is identified by the single point identification module  360  from the lossless category into the lossy category in one embodiment. 
         [0045]    In one embodiment, the compression module  380  is configured to compress data corresponding to pixels within the frame. In one embodiment, compression algorithms such as JPEG and JPEG2000 are utilized to compress pixels categorized as lossy data. Typically, lossy data includes rich continuous tone graphics, laden with significant RGB color pixels. In one embodiment, compression algorithms such as RLE, LZW or Arithmetic Coding are utilized to compress pixels categorized as lossless data. Typically, lossless data is mainly composed of text and substantial same color blocks. 
         [0046]    The system  300  in  FIG. 3A  is shown for exemplary purposes and is merely one embodiment of the methods and apparatuses for generating compressed data representing a visual frame. Additional modules may be added to the system  300  without departing from the scope of the methods and apparatuses for generating compressed data representing a visual frame. Similarly, modules may be combined or deleted without departing from the scope of the methods and apparatuses for generating compressed data representing a visual frame. 
         [0047]    The flow diagrams as depicted in  FIGS. 4 and 5  are one embodiment of the methods and apparatuses for generating compressed data representing a visual frame. The blocks within the flow diagrams can be performed in a different sequence without departing from the spirit of the methods and apparatuses for generating compressed data representing a visual frame. Further, blocks can be deleted, added, or combined without departing from the spirit of the methods and apparatuses for generating compressed data representing a visual frame. 
         [0048]    The flow diagram in  FIG. 4  illustrates analyzing and tracking the color of each pixel within a frame according to one embodiment of the invention. 
         [0049]    In Block  410 , the pixels within a frame are detected. In one embodiment, the color of each pixel is detected. In one embodiment, the color of each pixel is comprised of three components such as a red component, a blue component, and a green component. 
         [0050]    In Block  420 , the location of each pixel with the associated color is tracked. In one embodiment, the location of each pixel with the associated color is tracked through the color manger module  320 . Further, pixels having the same or similar color adjacent to each other are detected as a block of pixels in one embodiment. In another embodiment, pixels having the same or similar color that are within a general area of each other are detected as a block of pixels. In one embodiment, blocks of pixels are detected through the color manager module  320 . 
         [0051]    In Block  430 , a color table is generated. In one embodiment the color table is generated through the color manager module  320 . 
         [0052]    In Block  440 , a color list is identified. In one embodiment, the color list identifies at least one color that meets the criteria of having sufficient number of pixels and/or blocks of pixels having the same color. In one embodiment the color list is generated through the color manager module  320 . 
         [0053]    The flow diagram in  FIG. 5  illustrates separating and compressing data according to one embodiment of the invention. 
         [0054]    In Block  505 , the pixels within a frame are detected. In one embodiment, the color of each pixel is detected. In one embodiment, the color of each pixel is comprised of three components such as a red component, a blue component, and a green component. 
         [0055]    In Block  510 , a color list is identified. In one embodiment, the color list identifies at least one color that meets the criteria of having sufficient number of pixels and/or blocks of pixels having the same color. In one embodiment the color list is generated through the color manager module  320 . 
         [0056]    In Block  515 , the pixels within the frame are separated into different categories. In one embodiment, the pixels are separated into a lossy category and a lossless category. If a particular pixel has a color matching a color on the color list, then the particular pixel is separated into the lossless category. If the particular pixel has a color that does not match a color on the color list, then the particular pixel is separated into the lossy category. In one embodiment, the pixel separate module  370  identifies the place of pixels into the different categories. 
         [0057]    In Block  520 , the pixels within the lossless category are checked for single point identification. In one embodiment, the single point identification module  360  identifies particular pixels that qualify as a single point pixel. 
         [0058]    In Block  525 , if there is a single point pixel identified, then this particular pixel is moved from the lossless category and placed into the lossy category in Block  530 . 
         [0059]    If there are additional pixels to check within the lossy category to check for single point identification, then additional pixels are analyzed within the Block  520 . 
         [0060]    If there are no additional pixels to check within the loss category in Block  535 , then the lossy data is compressed within the Block  540 . 
         [0061]    In Block  545 , the lossless data is compressed. 
         [0062]    The foregoing descriptions of specific embodiments of the invention have been presented for purposes of illustration and description. The invention may be applied to a variety of other applications. For example, the pixels within a frame are described throughout the invention for exemplary purposes. The pixels within multiple frames may be utilized such that each frame comprises one frame within a video stream. 
         [0063]    They are not intended to be exhaustive or to limit the invention to the precise embodiments disclosed, and naturally many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the Claims appended hereto and their equivalents.