US20140177959A1 - Decompression of block compressed images - Google Patents

Decompression of block compressed images Download PDF

Info

Publication number
US20140177959A1
US20140177959A1 US14/193,520 US201414193520A US2014177959A1 US 20140177959 A1 US20140177959 A1 US 20140177959A1 US 201414193520 A US201414193520 A US 201414193520A US 2014177959 A1 US2014177959 A1 US 2014177959A1
Authority
US
United States
Prior art keywords
data
key
block
cache
decompression
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.)
Abandoned
Application number
US14/193,520
Inventor
Tomer Bar-On
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US14/193,520 priority Critical patent/US20140177959A1/en
Publication of US20140177959A1 publication Critical patent/US20140177959A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • G06T7/408
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/90Determination of colour characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/64Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Definitions

  • the digital representation of an image typically includes a significant amount of data, in order to capture colors, textures, opacity, etc.
  • the processing or transmission of an image may be time-consuming.
  • the speed at which an image is processed or communicated represents a system design issue that needs to be addressed.
  • compression of the data is often employed. This facilitates resolution of some of the computational speed issues, the conservation of bandwidth, and the conservation of memory capacity.
  • FIG. 1 illustrates an uncompressed block of an image.
  • FIG. 2 is a flow chart illustrating a block compression process.
  • FIG. 3 is a diagram illustrating a compressed block.
  • FIG. 4 is a flow chart illustrating a block decompression process.
  • FIG. 5 is a flow chart illustrating a block decompression process according to an embodiment.
  • FIG. 6 is a data flow diagram illustrating block decompression, according to an embodiment.
  • FIG. 7 is a block diagram illustrating a software or firmware implementation of certain features of an embodiment.
  • FIG. 8 illustrates a system which may incorporate an embodiment.
  • FIG. 9 illustrates a mobile device in which an embodiment may be implemented.
  • the system and method described herein may use a cache in the decompression of block compressed image data.
  • Each data entry in the cache may represent decompressed image data corresponding to a compressed block of an image.
  • the indices of the cache may be keys, where each key may be the output of a hash process that is performed on the corresponding compressed block.
  • Decompression of a compressed block may be performed by hashing the compressed block to generate the key. The key may be used to access the cache.
  • the decompressed data indexed by the key may be read and used as the decompressed version of the compressed block. If no data corresponds to the key, or if the cached data indexed by this key is otherwise invalid, then a conventional decompression process may be applied to the compressed block to yield the decompressed data. This decompressed data may then be written to the cache, at a location corresponding to the key.
  • a given block may be modeled as an array of colors occurring in the block. This is illustrated in FIG. 1 .
  • a block 100 may be modeled as having a discrete number of colors; block 100 is shown having four colors, shown here as a, b, c, and d. While four colors are shown in this illustration, it is to be understood that for other images or other compression/decompression processes, blocks of image data may be modeled with a different number of colors. Once the set of colors is defined for a block, the block may undergo a block compression process.
  • a block compression process is illustrated in FIG. 2 .
  • the illustrated process compresses a digital representation of a block's colors.
  • a block may be received.
  • two end point colors may be determined. These end point colors may represent the colors that are at the most extreme points (of the colors in the block) in the three-dimensional color space used to model the colors.
  • a determination may be made as to whether there are additional colors to be coded in a compressed form. If there are, for example, four colors in the block, then there would be two additional colors to be coded apart from the end point colors.
  • one of the remaining colors is assigned a code that may represent a location on a line segment between the end point colors in the three-dimensional color space.
  • the location on the line segment may represent the point on the segment that is closest to the actual location in space of the color to be coded.
  • the location on the line segment may be represented, or coded, as a distance from one of the end point colors. In this way, the color is not represented explicitly as three color coordinates, but rather as a distance from an end of a line segment. This distance may be viewed as the code for the color. As a result, the color is represented (i.e., coded) using fewer bits.
  • the process may then return to 230 , where another determination may be made as to whether there are additional colors to be coded in the block.
  • the coded colors may be concatenated with the representations of the end point colors to form the compressed block. This is illustrated in FIG. 3 .
  • the two end point colors may be defined explicitly in one or more fields. These fields are shown as 310 and 320 .
  • Field 330 may include the codes for the colors, presented in a predefined order.
  • the formatted data 300 may represent the compressed block of image data.
  • FIG. 4 A method for a decompression process is illustrated in FIG. 4 .
  • a compressed block of image data is received, where the block may have been compressed as described above.
  • a determination may be made as to whether there are color codes that have yet to be processed. If so, then at 430 , a code is converted into a color. Given the defined end point colors and the line segment between them in the three-dimensional color space, the code is used as a distance from one of the end points. The resulting color at that location is used as an approximation of the original color, and represents the decompressed color.
  • the process may then return to 420 , where another determination may be made as to whether there are additional codes remaining that need to be converted into decompressed colors. If there are no unprocessed codes remaining, then at 440 the decompression of the compressed block will have been completed.
  • a method for decompression is illustrated in FIG. 5 , according to an embodiment.
  • a compressed block of image data may be received.
  • the block may undergo a hash process. Any deterministic hash operation known to persons of ordinary skill in the art may be used.
  • the hash operation may comprise a modular reduction. For example, the binary value of the compressed block may be reduced by a modulus of 255 .
  • the resulting hash output may be used as a key to a particular cache location, where the cache may store decompressed blocks that correspond to compressed blocks.
  • a determination may be made as to whether the cached data at the location corresponding to the key is valid as decompressed data corresponding to the compressed block. In an embodiment, this check may be a determination of whether the endpoint colors as they are represented in the appropriate fields of the compressed block match the fields in the cached data that would normally hold endpoint colors, assuming that this cache location were holding a decompressed block. If not, then at 550 a conventional decompression may be performed on the compressed block. An example of such a decompression process is shown in FIG. 4 .
  • the decompressed block resulting from this conventional decompression may be loaded into the cache at the location designated by the key (i.e., the hash output). Note that this may be used as a mechanism for populating the cache. If the key leads to an empty location in the cache, the validation attempt at 540 will fail, and conventional decompression may be performed at 550 . The result of this decompression may then be loaded into the cache at 560 .
  • the key i.e., the hash output
  • this data may be read out as the block of decompressed image data corresponding to the initially received compressed block.
  • a compressed block 610 may be input to hashing logic 620 .
  • the hash operation may comprise a modular reduction.
  • the binary value of the compressed block may be reduced by a modulus of 255 .
  • a modular reduction employing a different modulus may be applied.
  • the resulting output of hashing logic 620 may be a key 630 .
  • the key 630 may be used to access a particular location in a cache 635 .
  • the cached data stored at this location may be decompressed data 640 i.
  • This cached data may be input to validation logic 650 .
  • the processing of this module may include a determination as to whether decompressed data 640 i includes endpoint colors that match those represented in the endpoint color fields of compressed block 610 . This check may be implemented as a bitwise comparison. If this validity check is passed, then cache read logic 660 may be enabled, and decompressed data 640 i may be read from the cache and treated as the block of decompressed image data 670 corresponding to compressed block 610 .
  • decompression logic 680 may be enabled. Compressed block 610 then may be decompressed by decompression logic 680 , yielding decompressed data 690 .
  • decompression logic 680 may include a process such as that shown in FIG. 4 . The resulting decompressed data 690 may then be written to the cache 635 at the location identified by key 630 .
  • Cache 635 may be implemented using any data structure and memory medium known to persons of ordinary skill in the art.
  • Cache 635 may be stored in random access memory, for example, or implemented in any known volatile or non-volatile memory technology, such as a hard disk, flash memory, etc.
  • compression would require coding that uses additional data to specify a particular line segment.
  • Decompression in this case, would also require accommodation of this additional data when generating decompressed data to populate the cache, according to an embodiment.
  • compression may not be limited to the use of line segments in a color space.
  • Alternative geometric constructs may be used for purposes of coding colors and achieving compression, as would be understood by persons or ordinary skill in the art.
  • Various embodiments may be implemented using hardware elements, software elements, or a combination of both.
  • hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth.
  • Examples of software may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof Determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints.
  • the term software may refer to a computer program product including a computer readable medium having computer program logic stored therein to cause a computer system to perform one or more features and/or combinations of features disclosed herein.
  • the computer readable medium may be transitory or non-transitory.
  • An example of a transitory computer readable medium may be a digital signal transmitted over a radio frequency or over an electrical conductor, through a local or wide area network, or through a network such as the Internet.
  • An example of a non-transitory computer readable medium may be a compact disk, a flash memory, random access memory, read-only memory, or other data storage device.
  • the illustrated system 700 may include one or more processor(s) 730 and may further include a body of memory 710 .
  • Processor(s) 730 may include one or more central processing unit cores and/or a graphics processing unit having one or more GPU cores.
  • Memory 710 may include one or more computer readable media that may store computer program logic 740 .
  • Memory 710 may be implemented as a hard disk and drive, a removable media such as a compact disk, a read-only memory (ROM) or random access memory (RAM) device, for example, or some combination thereof.
  • Processor(s) 730 and memory 710 may be in communication using any of several technologies known to one of ordinary skill in the art, such as a bus.
  • Computer program logic 740 contained in memory 710 may be read and executed by processor(s) 730 .
  • processor(s) 730 may be read and executed by processor(s) 730 .
  • I/O ports and/or I/O devices shown collectively as I/O 760 , may also be connected to processor(s) 730 and memory 710 .
  • Computer program logic 740 may include logic that embodies the processing described above.
  • computer program logic 740 may include a hashing module 720 , which may embody the hashing logic 620 of FIG. 6 .
  • the hashing process may be any deterministic hashing process known to persons of ordinary skill in the art, such as a modular reduction.
  • Computer logic 740 may also include a validation module 750 , which may embody validation logic 650 of FIG. 6 . As described above, the process embodied by this module may include a comparison of endpoint colors from the compressed block with those in the decompressed data that is accessed by the hash output.
  • decompression logic 680 and/or cache read logic 660 may also be embodied partially or completely as computer program logic in memory 710 .
  • memory 710 may also include a cache, such as cache 635 (not shown in FIG. 7 ).
  • system 800 may be a media system although system 800 is not limited to this context.
  • system 800 may be incorporated into a personal computer (PC), laptop computer, ultra-laptop computer, tablet, touch pad, portable computer, handheld computer, palmtop computer, personal digital assistant (PDA), cellular telephone, combination cellular telephone/PDA, television, smart device (e.g., smart phone, smart tablet or smart television), mobile internet device (MID), messaging device, data communication device, and so forth.
  • PC personal computer
  • PDA personal digital assistant
  • cellular telephone combination cellular telephone/PDA
  • television smart device (e.g., smart phone, smart tablet or smart television), mobile internet device (MID), messaging device, data communication device, and so forth.
  • smart device e.g., smart phone, smart tablet or smart television
  • MID mobile internet device
  • system 800 comprises a platform 802 coupled to a display 820 .
  • Platform 802 may receive content from a content device such as content services device(s) 830 or content delivery device(s) 840 or other similar content sources.
  • a navigation controller 850 comprising one or more navigation features may be used to interact with, for example, platform 802 and/or display 820 . Each of these components is described in more detail below.
  • platform 802 may comprise any combination of a chipset 805 , processor 810 , memory 812 , storage 814 , graphics subsystem 815 , applications 816 and/or radio 818 .
  • Chipset 805 may provide intercommunication among processor 810 , memory 812 , storage 814 , graphics subsystem 815 , applications 816 and/or radio 818 .
  • chipset 805 may include a storage adapter (not depicted) capable of providing intercommunication with storage 814 .
  • Processor 810 may be implemented as Complex Instruction Set Computer (CISC) or Reduced Instruction Set Computer (RISC) processors, x86 instruction set compatible processors, multi-core, or any other microprocessor or central processing unit (CPU).
  • processor 810 may comprise dual-core processor(s), dual-core mobile processor(s), and so forth.
  • processor 810 may correspond to processor 730 of FIG. 7 .
  • Memory 812 may be implemented as a volatile memory device such as, but not limited to, a Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), or Static RAM (SRAM).
  • RAM Random Access Memory
  • DRAM Dynamic Random Access Memory
  • SRAM Static RAM
  • Storage 814 may be implemented as a non-volatile storage device such as, but not limited to, a magnetic disk drive, optical disk drive, tape drive, an internal storage device, an attached storage device, flash memory, battery backed-up SDRAM (synchronous DRAM), and/or a network accessible storage device.
  • storage 814 may comprise technology to increase the storage performance enhanced protection for valuable digital media when multiple hard drives are included, for example.
  • Graphics subsystem 815 may perform processing of images such as still or video for display.
  • Graphics subsystem 815 may be a graphics processing unit (GPU) or a visual processing unit (VPU), for example.
  • An analog or digital interface may be used to communicatively couple graphics subsystem 815 and display 820 .
  • the interface may be any of a High-Definition Multimedia Interface, DisplayPort, wireless HDMI, and/or wireless HD compliant techniques.
  • Graphics subsystem 815 could be integrated into processor 810 or chipset 805 .
  • Graphics subsystem 815 could be a stand-alone card communicatively coupled to chipset 805 .
  • graphics and/or video processing techniques described herein may be implemented in various hardware architectures.
  • graphics and/or video functionality may be integrated within a chipset.
  • a discrete graphics and/or video processor may be used.
  • the graphics and/or video functions may be implemented by a general purpose processor, including a multi-core processor.
  • the functions may be implemented in a consumer electronics device.
  • Radio 818 may include one or more radios capable of transmitting and receiving signals using various suitable wireless communications techniques. Such techniques may involve communications across one or more wireless networks. Exemplary wireless networks include (but are not limited to) wireless local area networks (WLANs), wireless personal area networks (WPANs), wireless metropolitan area networks (WMANs), cellular networks, and satellite networks. In communicating across such networks, radio 818 may operate in accordance with one or more applicable standards in any version.
  • WLANs wireless local area networks
  • WPANs wireless personal area networks
  • WMANs wireless metropolitan area networks
  • cellular networks and satellite networks.
  • display 820 may comprise any monitor or display.
  • Display 820 may comprise, for example, a computer display screen, touch screen display, video monitor, television-like device, and/or a television.
  • Display 820 may be digital and/or analog.
  • display 820 may be a holographic display.
  • display 820 may be a transparent surface that may receive a visual projection.
  • projections may convey various forms of information, images, and/or objects.
  • MAR mobile augmented reality
  • platform 802 may display user interface 822 on display 820 .
  • content services device(s) 830 may be hosted by any national, international and/or independent service and thus accessible to platform 802 via the Internet, for example.
  • Content services device(s) 830 may be coupled to platform 802 and/or to display 820 .
  • Platform 802 and/or content services device(s) 830 may be coupled to a network 860 to communicate (e.g., send and/or receive) media information to and from network 860 .
  • Content delivery device(s) 840 also may be coupled to platform 802 and/or to display 820 .
  • content services device(s) 830 may comprise a cable television box, personal computer, network, telephone, Internet enabled devices or appliance capable of delivering digital information and/or content, and any other similar device capable of unidirectionally or bidirectionally communicating content between content providers and platform 802 and/display 820 , via network 860 or directly. It will be appreciated that the content may be communicated unidirectionally and/or bidirectionally to and from any one of the components in system 800 and a content provider via network 860 . Examples of content may include any media information including, for example, video, music, medical and gaming information, and so forth.
  • Content services device(s) 830 receives content such as cable television programming including media information, digital information, and/or other content.
  • content providers may include any cable or satellite television or radio or Internet content providers. The provided examples are not meant to limit embodiments of the invention.
  • platform 802 may receive control signals from navigation controller 850 having one or more navigation features.
  • the navigation features of controller 850 may be used to interact with user interface 822 , for example.
  • navigation controller 850 may be a pointing device that may be a computer hardware component (specifically human interface device) that allows a user to input spatial (e.g., continuous and multi-dimensional) data into a computer.
  • GUI graphical user interfaces
  • televisions and monitors allow the user to control and provide data to the computer or television using physical gestures.
  • Movements of the navigation features of controller 850 may be echoed on a display (e.g., display 820 ) by movements of a pointer, cursor, focus ring, or other visual indicators displayed on the display.
  • a display e.g., display 820
  • the navigation features located on navigation controller 850 may be mapped to virtual navigation features displayed on user interface 822 , for example.
  • controller 850 may not be a separate component but integrated into platform 802 and/or display 820 . Embodiments, however, are not limited to the elements or in the context shown or described herein.
  • drivers may comprise technology to enable users to instantly turn on and off platform 802 like a television with the touch of a button after initial boot-up, when enabled, for example.
  • Program logic may allow platform 802 to stream content to media adaptors or other content services device(s) 830 or content delivery device(s) 840 when the platform is turned “off.”
  • chip set 805 may comprise hardware and/or software support for 5.1 surround sound audio and/or high definition 7.1 surround sound audio, for example.
  • Drivers may include a graphics driver for integrated graphics platforms.
  • the graphics driver may comprise a peripheral component interconnect (PCI) Express graphics card.
  • PCI peripheral component interconnect
  • any one or more of the components shown in system 800 may be integrated.
  • platform 802 and content services device(s) 830 may be integrated, or platform 802 and content delivery device(s) 840 may be integrated, or platform 802 , content services device(s) 830 , and content delivery device(s) 840 may be integrated, for example.
  • platform 802 and display 820 may be an integrated unit. Display 820 and content service device(s) 830 may be integrated, or display 820 and content delivery device(s) 840 may be integrated, for example These examples are not meant to limit the invention.
  • system 800 may be implemented as a wireless system, a wired system, or a combination of both.
  • system 800 may include components and interfaces suitable for communicating over a wireless shared media, such as one or more antennas, transmitters, receivers, transceivers, amplifiers, filters, control logic, and so forth.
  • a wireless shared media may include portions of a wireless spectrum, such as the RF spectrum and so forth.
  • system 800 may include components and interfaces suitable for communicating over wired communications media, such as input/output (I/O) adapters, physical connectors to connect the I/O adapter with a corresponding wired communications medium, a network interface card (NIC), disc controller, video controller, audio controller, and so forth.
  • wired communications media may include a wire, cable, metal leads, printed circuit board (PCB), backplane, switch fabric, semiconductor material, twisted-pair wire, co-axial cable, fiber optics, and so forth.
  • Platform 802 may establish one or more logical or physical channels to communicate information.
  • the information may include media information and control information.
  • Media information may refer to any data representing content meant for a user. Examples of content may include, for example, data from a voice conversation, videoconference, streaming video, electronic mail (“email”) message, voice mail message, alphanumeric symbols, graphics, image, video, text and so forth. Data from a voice conversation may be, for example, speech information, silence periods, background noise, comfort noise, tones and so forth.
  • Control information may refer to any data representing commands, instructions or control words meant for an automated system. For example, control information may be used to route media information through a system, or instruct a node to process the media information in a predetermined manner. The embodiments, however, are not limited to the elements or in the context shown or described in FIG. 8 .
  • FIG. 9 illustrates embodiments of a small form factor device 900 in which system 800 may be embodied.
  • device 900 may be implemented as a mobile computing device having wireless capabilities.
  • a mobile computing device may refer to any device having a processing system and a mobile power source or supply, such as one or more batteries, for example.
  • examples of a mobile computing device may include a personal computer (PC), laptop computer, ultra-laptop computer, tablet, touch pad, portable computer, handheld computer, palmtop computer, personal digital assistant (PDA), cellular telephone, combination cellular telephone/PDA, television, smart device (e.g., smart phone, smart tablet or smart television), mobile internet device (MID), messaging device, data communication device, and so forth.
  • PC personal computer
  • laptop computer ultra-laptop computer
  • tablet touch pad
  • portable computer handheld computer
  • palmtop computer personal digital assistant
  • PDA personal digital assistant
  • cellular telephone e.g., cellular telephone/PDA
  • television smart device (e.g., smart phone, smart tablet or smart television), mobile internet device (MID), messaging device, data communication device, and so forth.
  • smart device e.g., smart phone, smart tablet or smart television
  • MID mobile internet device
  • Examples of a mobile computing device also may include computers that are arranged to be worn by a person.
  • a mobile computing device may be implemented as a smart phone capable of executing computer applications, as well as voice communications and/or data communications.
  • voice communications and/or data communications may be described with a mobile computing device implemented as a smart phone by way of example, it may be appreciated that other embodiments may be implemented using other wireless mobile computing devices as well. The embodiments are not limited in this context.
  • device 900 may comprise a housing 902 , a display 904 , an input/output ( 110 ) device 906 , and an antenna 908 .
  • Device 900 also may comprise navigation features 912 .
  • Display 904 may comprise any suitable display unit for displaying information appropriate for a mobile computing device.
  • I/O device 906 may comprise any suitable I/O device for entering information into a mobile computing device. Examples for I/O device 906 may include an alphanumeric keyboard, a numeric keypad, a touch pad, input keys, buttons, switches, rocker switches, microphones, speakers, voice recognition device and software, and so forth. Information also may be entered into device 900 by way of microphone. Such information may be digitized by a voice recognition device. The embodiments are not limited in this context.
  • IP cores may be stored on a tangible, machine readable medium and supplied to various customers or manufacturing facilities to load into the fabrication machines that actually make the logic or processor.

Abstract

A system, method, and computer program product that may use a cache in the decompression of block compressed image data. Each data entry in the cache may represent decompressed image data corresponding to a compressed block of an image. The indices of the cache are keys, where each key is the output of a hash process that is performed on the corresponding compressed block. Decompression of a compressed block may be performed by hashing the compressed block to generate the key. The key may be used to access the cache. The decompressed data indexed by the key may be read and used as the decompressed version of the compressed block. If no data corresponds to the key, or if the cached data indexed by this key is otherwise invalid, then a conventional decompression process may be applied to the compressed block to yield the decompressed data. This decompressed data may then be written to the cache, at a location corresponding to the key.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application is a continuation of U.S. patent application Ser. No. 13/434,030, filed Mar. 29, 2012, entitled “System, Method, and Computer Program Product for Decompression of Block Compressed Images,” which is incorporated herein by reference in its entirety.
  • BACKGROUND
  • The digital representation of an image typically includes a significant amount of data, in order to capture colors, textures, opacity, etc. As a result, the processing or transmission of an image may be time-consuming. As a result, the speed at which an image is processed or communicated represents a system design issue that needs to be addressed. Because there is a need for fast computing and transmission of the data representing an image, compression of the data is often employed. This facilitates resolution of some of the computational speed issues, the conservation of bandwidth, and the conservation of memory capacity.
  • The processes of compression and decompression, however, may create issues of their own. Such processes are not trivial, but may need to take place quickly in order to allow timely image processing or output. In particular, traditional decompression processes may be slow and computationally expensive, whether performed in hardware or software. Sometimes, for example, decompression may be performed using dedicated hardware in a graphics processing unit (GPU). Nonetheless, speed remains at issue, especially when real time processing is desired.
  • BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES
  • FIG. 1 illustrates an uncompressed block of an image.
  • FIG. 2 is a flow chart illustrating a block compression process.
  • FIG. 3 is a diagram illustrating a compressed block.
  • FIG. 4 is a flow chart illustrating a block decompression process.
  • FIG. 5 is a flow chart illustrating a block decompression process according to an embodiment.
  • FIG. 6 is a data flow diagram illustrating block decompression, according to an embodiment.
  • FIG. 7 is a block diagram illustrating a software or firmware implementation of certain features of an embodiment.
  • FIG. 8 illustrates a system which may incorporate an embodiment.
  • FIG. 9 illustrates a mobile device in which an embodiment may be implemented.
  • In the drawings, the leftmost digit(s) of a reference number identifies the drawing in which the reference number first appears.
  • DETAILED DESCRIPTION
  • An embodiment is now described with reference to the figures, where like reference numbers indicate identical or functionally similar elements. While specific configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only. A person skilled in the relevant art will recognize that other configurations and arrangements can be used without departing from the spirit and scope of the description. It will be apparent to a person skilled in the relevant art that this can also be employed in a variety of other systems and applications other than what is described herein.
  • The system and method described herein may use a cache in the decompression of block compressed image data. Each data entry in the cache may represent decompressed image data corresponding to a compressed block of an image. The indices of the cache may be keys, where each key may be the output of a hash process that is performed on the corresponding compressed block. Decompression of a compressed block may be performed by hashing the compressed block to generate the key. The key may be used to access the cache. The decompressed data indexed by the key may be read and used as the decompressed version of the compressed block. If no data corresponds to the key, or if the cached data indexed by this key is otherwise invalid, then a conventional decompression process may be applied to the compressed block to yield the decompressed data. This decompressed data may then be written to the cache, at a location corresponding to the key.
  • The compression and decompression of an image may be preceded by decomposition of an image into blocks of image data, each of which may be represented digitally. A given block may be modeled as an array of colors occurring in the block. This is illustrated in FIG. 1. A block 100 may be modeled as having a discrete number of colors; block 100 is shown having four colors, shown here as a, b, c, and d. While four colors are shown in this illustration, it is to be understood that for other images or other compression/decompression processes, blocks of image data may be modeled with a different number of colors. Once the set of colors is defined for a block, the block may undergo a block compression process.
  • A block compression process is illustrated in FIG. 2. The illustrated process compresses a digital representation of a block's colors. At 210, a block may be received. At 220, two end point colors may be determined. These end point colors may represent the colors that are at the most extreme points (of the colors in the block) in the three-dimensional color space used to model the colors. At 230, a determination may be made as to whether there are additional colors to be coded in a compressed form. If there are, for example, four colors in the block, then there would be two additional colors to be coded apart from the end point colors. At 240, one of the remaining colors is assigned a code that may represent a location on a line segment between the end point colors in the three-dimensional color space. The location on the line segment may represent the point on the segment that is closest to the actual location in space of the color to be coded. The location on the line segment may be represented, or coded, as a distance from one of the end point colors. In this way, the color is not represented explicitly as three color coordinates, but rather as a distance from an end of a line segment. This distance may be viewed as the code for the color. As a result, the color is represented (i.e., coded) using fewer bits. The process may then return to 230, where another determination may be made as to whether there are additional colors to be coded in the block.
  • If there are no more colors to be coded, then at 250, the coded colors may be concatenated with the representations of the end point colors to form the compressed block. This is illustrated in FIG. 3. The two end point colors may be defined explicitly in one or more fields. These fields are shown as 310 and 320. Field 330 may include the codes for the colors, presented in a predefined order. The formatted data 300 may represent the compressed block of image data.
  • A method for a decompression process is illustrated in FIG. 4. At 410, a compressed block of image data is received, where the block may have been compressed as described above. At 420, a determination may be made as to whether there are color codes that have yet to be processed. If so, then at 430, a code is converted into a color. Given the defined end point colors and the line segment between them in the three-dimensional color space, the code is used as a distance from one of the end points. The resulting color at that location is used as an approximation of the original color, and represents the decompressed color. The process may then return to 420, where another determination may be made as to whether there are additional codes remaining that need to be converted into decompressed colors. If there are no unprocessed codes remaining, then at 440 the decompression of the compressed block will have been completed.
  • A method for decompression is illustrated in FIG. 5, according to an embodiment. At 510, a compressed block of image data may be received. At 520, the block may undergo a hash process. Any deterministic hash operation known to persons of ordinary skill in the art may be used. In an embodiment, the hash operation may comprise a modular reduction. For example, the binary value of the compressed block may be reduced by a modulus of 255.
  • At 530, the resulting hash output may be used as a key to a particular cache location, where the cache may store decompressed blocks that correspond to compressed blocks. At 540, a determination may be made as to whether the cached data at the location corresponding to the key is valid as decompressed data corresponding to the compressed block. In an embodiment, this check may be a determination of whether the endpoint colors as they are represented in the appropriate fields of the compressed block match the fields in the cached data that would normally hold endpoint colors, assuming that this cache location were holding a decompressed block. If not, then at 550 a conventional decompression may be performed on the compressed block. An example of such a decompression process is shown in FIG. 4. At 560, the decompressed block resulting from this conventional decompression may be loaded into the cache at the location designated by the key (i.e., the hash output). Note that this may be used as a mechanism for populating the cache. If the key leads to an empty location in the cache, the validation attempt at 540 will fail, and conventional decompression may be performed at 550. The result of this decompression may then be loaded into the cache at 560.
  • If the data at the location designated by the key proves to be valid, as determined at 540, then at 570 this data may be read out as the block of decompressed image data corresponding to the initially received compressed block.
  • The decompression process is illustrated as a data flow diagram in FIG. 6. A compressed block 610 may be input to hashing logic 620. As noted above, any deterministic hash operation known to persons of ordinary skill in the art may be used. In an embodiment, the hash operation may comprise a modular reduction. For example, the binary value of the compressed block may be reduced by a modulus of 255. In alternative embodiments, a modular reduction employing a different modulus may be applied. The resulting output of hashing logic 620 may be a key 630.
  • The key 630 may be used to access a particular location in a cache 635. The cached data stored at this location may be decompressed data 640 i. This cached data may be input to validation logic 650. As described above, the processing of this module may include a determination as to whether decompressed data 640 i includes endpoint colors that match those represented in the endpoint color fields of compressed block 610. This check may be implemented as a bitwise comparison. If this validity check is passed, then cache read logic 660 may be enabled, and decompressed data 640 i may be read from the cache and treated as the block of decompressed image data 670 corresponding to compressed block 610.
  • If the validity check of logic 650 fails, then decompression logic 680 may be enabled. Compressed block 610 then may be decompressed by decompression logic 680, yielding decompressed data 690. In an embodiment, decompression logic 680 may include a process such as that shown in FIG. 4. The resulting decompressed data 690 may then be written to the cache 635 at the location identified by key 630.
  • Any of hashing logic 620, validation logic 650, cache read logic 660, and decompression logic 680 may be implemented in software, firmware, hardware, or any combination thereof Cache 635 may be implemented using any data structure and memory medium known to persons of ordinary skill in the art. Cache 635 may be stored in random access memory, for example, or implemented in any known volatile or non-volatile memory technology, such as a hard disk, flash memory, etc.
  • Note that the discussion above assumes that the original compression process uses a single line segment in the color space for a given block, with two end point colors. In alternative systems, there may be more than one line segment used, so that there may be additional end point colors. In such a case, compression would require coding that uses additional data to specify a particular line segment. Decompression, in this case, would also require accommodation of this additional data when generating decompressed data to populate the cache, according to an embodiment. Moreover, compression may not be limited to the use of line segments in a color space. Alternative geometric constructs may be used for purposes of coding colors and achieving compression, as would be understood by persons or ordinary skill in the art.
  • Various embodiments may be implemented using hardware elements, software elements, or a combination of both. Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. Examples of software may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof Determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints.
  • The term software, as used herein, may refer to a computer program product including a computer readable medium having computer program logic stored therein to cause a computer system to perform one or more features and/or combinations of features disclosed herein. The computer readable medium may be transitory or non-transitory. An example of a transitory computer readable medium may be a digital signal transmitted over a radio frequency or over an electrical conductor, through a local or wide area network, or through a network such as the Internet. An example of a non-transitory computer readable medium may be a compact disk, a flash memory, random access memory, read-only memory, or other data storage device.
  • A computing system that executes such software/firmware is shown in FIG. 7, according to an embodiment. The illustrated system 700 may include one or more processor(s) 730 and may further include a body of memory 710. Processor(s) 730 may include one or more central processing unit cores and/or a graphics processing unit having one or more GPU cores. Memory 710 may include one or more computer readable media that may store computer program logic 740. Memory 710 may be implemented as a hard disk and drive, a removable media such as a compact disk, a read-only memory (ROM) or random access memory (RAM) device, for example, or some combination thereof. Processor(s) 730 and memory 710 may be in communication using any of several technologies known to one of ordinary skill in the art, such as a bus. Computer program logic 740 contained in memory 710 may be read and executed by processor(s) 730. One or more I/O ports and/or I/O devices, shown collectively as I/O 760, may also be connected to processor(s) 730 and memory 710.
  • Computer program logic 740 may include logic that embodies the processing described above. In the illustrated embodiment, computer program logic 740 may include a hashing module 720, which may embody the hashing logic 620 of FIG. 6. As described above, the hashing process may be any deterministic hashing process known to persons of ordinary skill in the art, such as a modular reduction. Computer logic 740 may also include a validation module 750, which may embody validation logic 650 of FIG. 6. As described above, the process embodied by this module may include a comparison of endpoint colors from the compressed block with those in the decompressed data that is accessed by the hash output. In alternative embodiments, decompression logic 680 and/or cache read logic 660 may also be embodied partially or completely as computer program logic in memory 710. In addition, memory 710 may also include a cache, such as cache 635 (not shown in FIG. 7).
  • The system described herein may be a part of a larger information system. FIG. 8 illustrates an embodiment of the latter. In embodiments, system 800 may be a media system although system 800 is not limited to this context. For example, system 800 may be incorporated into a personal computer (PC), laptop computer, ultra-laptop computer, tablet, touch pad, portable computer, handheld computer, palmtop computer, personal digital assistant (PDA), cellular telephone, combination cellular telephone/PDA, television, smart device (e.g., smart phone, smart tablet or smart television), mobile internet device (MID), messaging device, data communication device, and so forth.
  • In embodiments, system 800 comprises a platform 802 coupled to a display 820. Platform 802 may receive content from a content device such as content services device(s) 830 or content delivery device(s) 840 or other similar content sources. A navigation controller 850 comprising one or more navigation features may be used to interact with, for example, platform 802 and/or display 820. Each of these components is described in more detail below.
  • In embodiments, platform 802 may comprise any combination of a chipset 805, processor 810, memory 812, storage 814, graphics subsystem 815, applications 816 and/or radio 818. Chipset 805 may provide intercommunication among processor 810, memory 812, storage 814, graphics subsystem 815, applications 816 and/or radio 818. For example, chipset 805 may include a storage adapter (not depicted) capable of providing intercommunication with storage 814.
  • Processor 810 may be implemented as Complex Instruction Set Computer (CISC) or Reduced Instruction Set Computer (RISC) processors, x86 instruction set compatible processors, multi-core, or any other microprocessor or central processing unit (CPU). In embodiments, processor 810 may comprise dual-core processor(s), dual-core mobile processor(s), and so forth. In an embodiment, processor 810 may correspond to processor 730 of FIG. 7.
  • Memory 812 may be implemented as a volatile memory device such as, but not limited to, a Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), or Static RAM (SRAM).
  • Storage 814 may be implemented as a non-volatile storage device such as, but not limited to, a magnetic disk drive, optical disk drive, tape drive, an internal storage device, an attached storage device, flash memory, battery backed-up SDRAM (synchronous DRAM), and/or a network accessible storage device. In embodiments, storage 814 may comprise technology to increase the storage performance enhanced protection for valuable digital media when multiple hard drives are included, for example.
  • Graphics subsystem 815 may perform processing of images such as still or video for display. Graphics subsystem 815 may be a graphics processing unit (GPU) or a visual processing unit (VPU), for example. An analog or digital interface may be used to communicatively couple graphics subsystem 815 and display 820. For example, the interface may be any of a High-Definition Multimedia Interface, DisplayPort, wireless HDMI, and/or wireless HD compliant techniques. Graphics subsystem 815 could be integrated into processor 810 or chipset 805. Graphics subsystem 815 could be a stand-alone card communicatively coupled to chipset 805.
  • The graphics and/or video processing techniques described herein may be implemented in various hardware architectures. For example, graphics and/or video functionality may be integrated within a chipset. Alternatively, a discrete graphics and/or video processor may be used. As still another embodiment, the graphics and/or video functions may be implemented by a general purpose processor, including a multi-core processor. In a further embodiment, the functions may be implemented in a consumer electronics device.
  • Radio 818 may include one or more radios capable of transmitting and receiving signals using various suitable wireless communications techniques. Such techniques may involve communications across one or more wireless networks. Exemplary wireless networks include (but are not limited to) wireless local area networks (WLANs), wireless personal area networks (WPANs), wireless metropolitan area networks (WMANs), cellular networks, and satellite networks. In communicating across such networks, radio 818 may operate in accordance with one or more applicable standards in any version.
  • In embodiments, display 820 may comprise any monitor or display. Display 820 may comprise, for example, a computer display screen, touch screen display, video monitor, television-like device, and/or a television. Display 820 may be digital and/or analog. In embodiments, display 820 may be a holographic display. Also, display 820 may be a transparent surface that may receive a visual projection. Such projections may convey various forms of information, images, and/or objects. For example, such projections may be a visual overlay for a mobile augmented reality (MAR) application. Under the control of one or more software applications 816, platform 802 may display user interface 822 on display 820.
  • In embodiments, content services device(s) 830 may be hosted by any national, international and/or independent service and thus accessible to platform 802 via the Internet, for example. Content services device(s) 830 may be coupled to platform 802 and/or to display 820. Platform 802 and/or content services device(s) 830 may be coupled to a network 860 to communicate (e.g., send and/or receive) media information to and from network 860. Content delivery device(s) 840 also may be coupled to platform 802 and/or to display 820.
  • In embodiments, content services device(s) 830 may comprise a cable television box, personal computer, network, telephone, Internet enabled devices or appliance capable of delivering digital information and/or content, and any other similar device capable of unidirectionally or bidirectionally communicating content between content providers and platform 802 and/display 820, via network 860 or directly. It will be appreciated that the content may be communicated unidirectionally and/or bidirectionally to and from any one of the components in system 800 and a content provider via network 860. Examples of content may include any media information including, for example, video, music, medical and gaming information, and so forth.
  • Content services device(s) 830 receives content such as cable television programming including media information, digital information, and/or other content. Examples of content providers may include any cable or satellite television or radio or Internet content providers. The provided examples are not meant to limit embodiments of the invention.
  • In embodiments, platform 802 may receive control signals from navigation controller 850 having one or more navigation features. The navigation features of controller 850 may be used to interact with user interface 822, for example. In embodiments, navigation controller 850 may be a pointing device that may be a computer hardware component (specifically human interface device) that allows a user to input spatial (e.g., continuous and multi-dimensional) data into a computer. Many systems such as graphical user interfaces (GUI), and televisions and monitors allow the user to control and provide data to the computer or television using physical gestures.
  • Movements of the navigation features of controller 850 may be echoed on a display (e.g., display 820) by movements of a pointer, cursor, focus ring, or other visual indicators displayed on the display. For example, under the control of software applications 816, the navigation features located on navigation controller 850 may be mapped to virtual navigation features displayed on user interface 822, for example. In embodiments, controller 850 may not be a separate component but integrated into platform 802 and/or display 820. Embodiments, however, are not limited to the elements or in the context shown or described herein.
  • In embodiments, drivers (not shown) may comprise technology to enable users to instantly turn on and off platform 802 like a television with the touch of a button after initial boot-up, when enabled, for example. Program logic may allow platform 802 to stream content to media adaptors or other content services device(s) 830 or content delivery device(s) 840 when the platform is turned “off.” In addition, chip set 805 may comprise hardware and/or software support for 5.1 surround sound audio and/or high definition 7.1 surround sound audio, for example. Drivers may include a graphics driver for integrated graphics platforms. In embodiments, the graphics driver may comprise a peripheral component interconnect (PCI) Express graphics card.
  • In various embodiments, any one or more of the components shown in system 800 may be integrated. For example, platform 802 and content services device(s) 830 may be integrated, or platform 802 and content delivery device(s) 840 may be integrated, or platform 802, content services device(s) 830, and content delivery device(s) 840 may be integrated, for example. In various embodiments, platform 802 and display 820 may be an integrated unit. Display 820 and content service device(s) 830 may be integrated, or display 820 and content delivery device(s) 840 may be integrated, for example These examples are not meant to limit the invention.
  • In various embodiments, system 800 may be implemented as a wireless system, a wired system, or a combination of both. When implemented as a wireless system, system 800 may include components and interfaces suitable for communicating over a wireless shared media, such as one or more antennas, transmitters, receivers, transceivers, amplifiers, filters, control logic, and so forth. An example of wireless shared media may include portions of a wireless spectrum, such as the RF spectrum and so forth. When implemented as a wired system, system 800 may include components and interfaces suitable for communicating over wired communications media, such as input/output (I/O) adapters, physical connectors to connect the I/O adapter with a corresponding wired communications medium, a network interface card (NIC), disc controller, video controller, audio controller, and so forth. Examples of wired communications media may include a wire, cable, metal leads, printed circuit board (PCB), backplane, switch fabric, semiconductor material, twisted-pair wire, co-axial cable, fiber optics, and so forth.
  • Platform 802 may establish one or more logical or physical channels to communicate information. The information may include media information and control information. Media information may refer to any data representing content meant for a user. Examples of content may include, for example, data from a voice conversation, videoconference, streaming video, electronic mail (“email”) message, voice mail message, alphanumeric symbols, graphics, image, video, text and so forth. Data from a voice conversation may be, for example, speech information, silence periods, background noise, comfort noise, tones and so forth. Control information may refer to any data representing commands, instructions or control words meant for an automated system. For example, control information may be used to route media information through a system, or instruct a node to process the media information in a predetermined manner. The embodiments, however, are not limited to the elements or in the context shown or described in FIG. 8.
  • As described above, system 800 may be embodied in varying physical styles or form factors. FIG. 9 illustrates embodiments of a small form factor device 900 in which system 800 may be embodied. In embodiments, for example, device 900 may be implemented as a mobile computing device having wireless capabilities. A mobile computing device may refer to any device having a processing system and a mobile power source or supply, such as one or more batteries, for example.
  • As described above, examples of a mobile computing device may include a personal computer (PC), laptop computer, ultra-laptop computer, tablet, touch pad, portable computer, handheld computer, palmtop computer, personal digital assistant (PDA), cellular telephone, combination cellular telephone/PDA, television, smart device (e.g., smart phone, smart tablet or smart television), mobile internet device (MID), messaging device, data communication device, and so forth.
  • Examples of a mobile computing device also may include computers that are arranged to be worn by a person. In embodiments, for example, a mobile computing device may be implemented as a smart phone capable of executing computer applications, as well as voice communications and/or data communications. Although some embodiments may be described with a mobile computing device implemented as a smart phone by way of example, it may be appreciated that other embodiments may be implemented using other wireless mobile computing devices as well. The embodiments are not limited in this context.
  • As shown in FIG. 9, device 900 may comprise a housing 902, a display 904, an input/output (110) device 906, and an antenna 908. Device 900 also may comprise navigation features 912. Display 904 may comprise any suitable display unit for displaying information appropriate for a mobile computing device. I/O device 906 may comprise any suitable I/O device for entering information into a mobile computing device. Examples for I/O device 906 may include an alphanumeric keyboard, a numeric keypad, a touch pad, input keys, buttons, switches, rocker switches, microphones, speakers, voice recognition device and software, and so forth. Information also may be entered into device 900 by way of microphone. Such information may be digitized by a voice recognition device. The embodiments are not limited in this context.
  • One or more aspects of at least one embodiment may be implemented by representative instructions stored on a machine-readable medium which represents various logic within the processor, which when read by a machine causes the machine to fabricate logic to perform the techniques described herein. Such representations, known as “IP cores” may be stored on a tangible, machine readable medium and supplied to various customers or manufacturing facilities to load into the fabrication machines that actually make the logic or processor.
  • Methods and systems are disclosed herein with the aid of functional building blocks illustrating the functions, features, and relationships thereof At least some of the boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries may be defined so long as the specified functions and relationships thereof are appropriately performed.
  • While various embodiments are disclosed herein, it should be understood that they have been presented by way of example only, and not limitation. It will be apparent to persons skilled in the relevant art that various changes in form and detail may be made therein without departing from the spirit and scope of the methods and systems disclosed herein. Thus, the breadth and scope of the claims should not be limited by any of the exemplary embodiments disclosed herein.

Claims (1)

What is claimed is:
1. A method, comprising:
receiving a compressed block of image data, wherein the block represents at least a portion of an image;
hashing the compressed block thereby deriving a key;
using the key as an index to access cached data in a cache; and
performing a validity check of the cached data that determines if endpoint colors in the compressed block match corresponding fields in the cached data that is indexed by the key.
US14/193,520 2012-03-29 2014-02-28 Decompression of block compressed images Abandoned US20140177959A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/193,520 US20140177959A1 (en) 2012-03-29 2014-02-28 Decompression of block compressed images

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/434,030 US8687902B2 (en) 2012-03-29 2012-03-29 System, method, and computer program product for decompression of block compressed images
US14/193,520 US20140177959A1 (en) 2012-03-29 2014-02-28 Decompression of block compressed images

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US13/434,030 Continuation US8687902B2 (en) 2012-03-29 2012-03-29 System, method, and computer program product for decompression of block compressed images

Publications (1)

Publication Number Publication Date
US20140177959A1 true US20140177959A1 (en) 2014-06-26

Family

ID=49235128

Family Applications (2)

Application Number Title Priority Date Filing Date
US13/434,030 Expired - Fee Related US8687902B2 (en) 2012-03-29 2012-03-29 System, method, and computer program product for decompression of block compressed images
US14/193,520 Abandoned US20140177959A1 (en) 2012-03-29 2014-02-28 Decompression of block compressed images

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US13/434,030 Expired - Fee Related US8687902B2 (en) 2012-03-29 2012-03-29 System, method, and computer program product for decompression of block compressed images

Country Status (6)

Country Link
US (2) US8687902B2 (en)
EP (1) EP2831838B1 (en)
JP (1) JP6005834B2 (en)
KR (1) KR101634134B1 (en)
CN (1) CN104205161B (en)
WO (1) WO2013148582A1 (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104778689A (en) * 2015-03-30 2015-07-15 广西师范大学 Image digest method based on mean secondary image and locality preserving projection
CN106056525A (en) * 2016-05-25 2016-10-26 金陵科技学院 Multispectral remote sensing image authentication method and multispectral remote sensing image authentication system based on band perceptual feature fusion
CN106952211A (en) * 2016-01-06 2017-07-14 河南理工大学 The compact image hash method of feature based spot projection
US9916251B2 (en) 2014-12-01 2018-03-13 Samsung Electronics Co., Ltd. Display driving apparatus and cache managing method thereof
US9978118B1 (en) 2017-01-25 2018-05-22 Microsoft Technology Licensing, Llc No miss cache structure for real-time image transformations with data compression
US10242654B2 (en) 2017-01-25 2019-03-26 Microsoft Technology Licensing, Llc No miss cache structure for real-time image transformations
US10255891B2 (en) 2017-04-12 2019-04-09 Microsoft Technology Licensing, Llc No miss cache structure for real-time image transformations with multiple LSR processing engines
US10410349B2 (en) 2017-03-27 2019-09-10 Microsoft Technology Licensing, Llc Selective application of reprojection processing on layer sub-regions for optimizing late stage reprojection power
US10514753B2 (en) 2017-03-27 2019-12-24 Microsoft Technology Licensing, Llc Selectively applying reprojection processing to multi-layer scenes for optimizing late stage reprojection power

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9990298B2 (en) * 2014-05-12 2018-06-05 Western Digital Technologies, Inc System and method for caching solid state device read request results
US20150379682A1 (en) * 2014-06-27 2015-12-31 Samsung Electronics Co., Ltd. Vertex attribute data compression with random access using hardware
US9434381B2 (en) * 2014-10-31 2016-09-06 Fca Us Llc Collision avoidance method including determining height of an object fixed to a vehicle
US9457632B1 (en) * 2015-06-11 2016-10-04 Fca Us Llc Collision avoidance method including determining height of an object fixed to a vehicle
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4652996A (en) * 1982-09-27 1987-03-24 Data General Corporation Encachment apparatus using multiple frames and responding to a key to obtain data therefrom
US5047853A (en) * 1990-03-16 1991-09-10 Apple Computer, Inc. Method for compresssing and decompressing color video data that uses luminance partitioning
US5450562A (en) * 1992-10-19 1995-09-12 Hewlett-Packard Company Cache-based data compression/decompression
US5414772A (en) * 1993-06-23 1995-05-09 Gemplus Development System for improving the digital signature algorithm
FR2733379B1 (en) * 1995-04-20 1997-06-20 Gemplus Card Int PROCESS FOR GENERATING ELECTRONIC SIGNATURES, ESPECIALLY FOR SMART CARDS
US5943421A (en) * 1995-09-11 1999-08-24 Norand Corporation Processor having compression and encryption circuitry
US5898779A (en) * 1997-04-14 1999-04-27 Eastman Kodak Company Photograhic system with selected area image authentication
US6151025A (en) 1997-05-07 2000-11-21 Hewlett-Packard Company Method and apparatus for complexity reduction on two-dimensional convolutions for image processing
JPH11196392A (en) * 1998-01-06 1999-07-21 Ntt Data Corp Method for detecting falsification of electronic image and falsification detection system
US7627761B2 (en) * 2002-07-22 2009-12-01 Xerox Corporation System for authentication of JPEG image data
US7360093B2 (en) * 2002-07-22 2008-04-15 Xerox Corporation System and method for authentication of JPEG image data
US20060047967A1 (en) 2004-08-31 2006-03-02 Akhan Mehmet B Method and system for data authentication for use with computer systems
US7577848B2 (en) * 2005-01-18 2009-08-18 Microsoft Corporation Systems and methods for validating executable file integrity using partial image hashes
JP4642697B2 (en) * 2006-05-24 2011-03-02 Necディスプレイソリューションズ株式会社 Image display device having image cache memory
KR20080026772A (en) 2006-09-21 2008-03-26 인하대학교 산학협력단 Method for a compression compensating restoration rate of a lempel-ziv compression method
US8316238B2 (en) * 2006-10-25 2012-11-20 Verizon Patent And Licensing Inc. Method and system for providing image processing to track digital information
EP1921858A1 (en) 2006-11-09 2008-05-14 Thomson Licensing Method and device for managing a transmission of keys
JP2009130726A (en) * 2007-11-26 2009-06-11 Kyocera Mita Corp Image reading apparatus, and image forming apparatus
US20090249222A1 (en) * 2008-03-25 2009-10-01 Square Products Corporation System and method for simultaneous media presentation
GB2459662B (en) * 2008-04-29 2012-05-23 Cryptomathic Ltd Secure data cache
US8261067B2 (en) 2008-08-07 2012-09-04 Asteris, Inc. Devices, methods, and systems for sending and receiving case study files
CN101499097B (en) * 2009-03-16 2011-03-23 浙江工商大学 Hash table based data stream frequent pattern internal memory compression and storage method

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9916251B2 (en) 2014-12-01 2018-03-13 Samsung Electronics Co., Ltd. Display driving apparatus and cache managing method thereof
CN104778689A (en) * 2015-03-30 2015-07-15 广西师范大学 Image digest method based on mean secondary image and locality preserving projection
CN106952211A (en) * 2016-01-06 2017-07-14 河南理工大学 The compact image hash method of feature based spot projection
CN106056525A (en) * 2016-05-25 2016-10-26 金陵科技学院 Multispectral remote sensing image authentication method and multispectral remote sensing image authentication system based on band perceptual feature fusion
US9978118B1 (en) 2017-01-25 2018-05-22 Microsoft Technology Licensing, Llc No miss cache structure for real-time image transformations with data compression
US10242654B2 (en) 2017-01-25 2019-03-26 Microsoft Technology Licensing, Llc No miss cache structure for real-time image transformations
US10410349B2 (en) 2017-03-27 2019-09-10 Microsoft Technology Licensing, Llc Selective application of reprojection processing on layer sub-regions for optimizing late stage reprojection power
US10514753B2 (en) 2017-03-27 2019-12-24 Microsoft Technology Licensing, Llc Selectively applying reprojection processing to multi-layer scenes for optimizing late stage reprojection power
US10255891B2 (en) 2017-04-12 2019-04-09 Microsoft Technology Licensing, Llc No miss cache structure for real-time image transformations with multiple LSR processing engines

Also Published As

Publication number Publication date
US8687902B2 (en) 2014-04-01
CN104205161A (en) 2014-12-10
CN104205161B (en) 2017-07-14
EP2831838B1 (en) 2018-04-25
KR101634134B1 (en) 2016-06-28
JP6005834B2 (en) 2016-10-12
WO2013148582A1 (en) 2013-10-03
KR20140130196A (en) 2014-11-07
US20130259394A1 (en) 2013-10-03
JP2015518301A (en) 2015-06-25
EP2831838A1 (en) 2015-02-04
EP2831838A4 (en) 2015-12-02

Similar Documents

Publication Publication Date Title
US8687902B2 (en) System, method, and computer program product for decompression of block compressed images
US10621691B2 (en) Subset based compression and decompression of graphics data
US9524536B2 (en) Compression techniques for dynamically-generated graphics resources
US20130268569A1 (en) Selecting a tile size for the compression of depth and/or color data
CN110072033B (en) Color compression using selective color transforms
US9754345B2 (en) Compression and decompression of graphics data using pixel region bit values
US9251731B2 (en) Multi-sampling anti-aliasing compression by use of unreachable bit combinations
JP6182225B2 (en) Color buffer compression
JP6745020B2 (en) Method, computer program, computer-readable recording medium and device
US20140086338A1 (en) Systems and methods for integrated metadata insertion in a video encoding system
US9245324B2 (en) Lossy color merge for multi-sampling anti-aliasing compression
EP2843954B1 (en) Lossy color compression using adaptive quantization
EP2889875B1 (en) Adaptive depth offset compression
US8903193B2 (en) Reducing memory bandwidth consumption when executing a program that uses integral images

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION