DESCRIPT, N
DIGITAL IMAGE CODING
The present invention relates to the encoding of computer generated images and in particular, but not exclusively, for animated scenes presented on interactive systems.
Such systems need to operate in real-time whilst producing acceptable quality images. Within the constraints of consumer systems, where cost limits the available processor power, techniques for efficiently coding image planes are required to enable real time recreation of images from a limited data stream. In the case of compact disc based systems, the disc typically outputs a 150Kb per second data stream of which 20Kb is reserved for sound. At a visually acceptable screen refresh rate this allows around 8Kb per image frame for image coding.
Various techniques have been proposed for reducing the information needed to code an image frame including separating an image into areas of relatively high and relatively low spatial density with a more complex, information-intensive, coding applied to the detailed higher density areas of the image than the lower density areas. Such a technique is described in EP-A- 0358498 which also reduces data requirements by coding the lower resolution (video chrominance) components at half the rate of the higher resolution (luminance) components, that is to say for each display pixel, the chrominance information will be refreshed in every other image frame whereas the luminance information is refreshed every frame.
It is an object of the present invention to provide inter alia a method of encoding image data with reference to image information density which allows for relatively simple recombination of image features at decoding.
In accordance with the present invention, there is provided a method of
encoding a digitised image for subsequent display by a character-based display apparatus, the method comprising:
(a) dividing the image into an array of character blocks;
(b) for each unique character block in the image generating a character definition for supply to the display apparatus;
(c) generating for storage in a display memory of the display apparatus a character reference for each block of the image, each character reference defining the appearance of that block by reference to a character definition generated in step (b), characterised in that, for display by an apparatus having at least first and second character-based image planes, having a higher and lower information density respectively, the steps (b) and (c) include determining for each single character block whether the block can be represented at the lower information density and, if so, choosing to generate a character definition and character reference for the second image plane of the display apparatus.
The image to be encoded may be part of an image sequence such that in the step (b) a character block may be judged unique if an appropriate character definition is not already present in the display apparatus by virtue of an identical character block occurring elsewhere in the present image or in a previous image of the sequence. Where the image to be encoded is part of an image sequence, in the step (c) character references may be generated for updating the display memory as necessary to represent changes from a previous image in the sequence.
Each character definition may define colours for the individual pixels of a block by reference to entries in a colour look-up table (palette) stored within the display apparatus. In such a case, the palette for the first image plane would have more entries than the palette for the second image plane. Additionally, the step (b) may further include determining whether the colours of pixels in the unique character pattern will already be available in a palette stored in the display apparatus: if not, a palette definition may be generated for supply to the display apparatus. Where palettes are used, the display apparatus may
suitably be arranged to store multiple palettes for at least one of the first and second image planes such that, in step (c), the character reference generated for each block may be accompanied by a palette reference selecting an appropriate one from the multiple palettes available. Also in accordance with the present invention there is provided an encoder apparatus operable to receive and encode a digitised image, the apparatus comprising: an image divider arranged to divide the received image into an array of character blocks; first character definition means coupled to the image divider and operable to generate a character definition for each block of the array; and first character reference means coupled to the image divider and first character definition means and operable to generate, for each block of the array, a first encoded signal specifying the appearance of a block by reference to the respective character definition; characterised in that the apparatus further comprises second character definition means and second character reference means coupled together and to the image divider and operable to generate a second encoded signal specifying the appearance of a block at a lower resolution than the first character definition and reference means, and selection means coupled to the image divider and operable to determine, for each block of an image array, whether a first or second encoded signal is to be generated. Suitably the character definition means are each operable to generate one or more colour look-up tables (for supply with the encoded signal to the receiving apparatus) with the character reference means being arranged to specify block appearances as including at least an address for a respective look-up table. The character reference means (the respective information density encoding stages) may suitably respectively specify appearances as four bit or two bit codes, and these codes may specify addresses for 16 and 4 colour look-up tables respectively.
The present invention still further provides an encoded sequence of images, each of which has been encoded by the method described above. The image sequence may be suitably be recorded on a removable data carrier, such as an optical disc, or may be transmitted over a local area or broadcast
network to one or more remote receivers.
A preferred embodiment of the present invention will now be described by way of example only, and with reference to the accompanying drawings in which:
Figure 1 represents an overlaid pair of image planes; Figure 2 represents an interactive graphics decoder apparatus; Figure 3 is a block schematic diagram of an encoder apparatus embodying the invention; and Figure 4 is a block schematic diagram of the decoder stage of Figure 2.
A common technique for coding images is block coding, where the dots (pixels) in the image are split into rectangular blocks of pixels. Various compression techniques such as DCT (discrete cosine trans-formation) coding can then be used to perform data compression. This compression may be needed to permit transmission over a communications link of restricted bandwidth or to allow storage on a medium such as compact disc where there is a limit on the rate at which data from the disc can be accessed. There may also be a limit on storage space available for a sequence of images on storage media such as compact disc.
In the following example, the image is divided into blocks of 8x8 pixels. Another size could equally well be used and the shape could be rectangular instead of square. In this case, data compression is achieved by re-using blocks where the same pattern appears in two or more blocks in the image, and by re-using blocks where the same block is used in consecutive frames of a moving image sequence. Whilst each pixel within the block may be coded as a direct representation of the colour, such as RGB or YUV, it is preferred to use the colour look-up table (CLUT) technique where the block is coded as the address to the appropriate colour as stored in a separate table. This reduces the amount of information to be coded per block and gives further compression. In the present system, a limit is placed on the number of colours that may
be present within each coding block. If the block has 4 bits of storage available per pixel then there can be a maximum of 16 colours used within that block. A programmable hardware look-up table is used to translate these 16 codes to actual colour specifications. In the system, there are multiple display planes which are overlaid to produce the displayed image. Referring initially to Figure 1 , the following example describes the case of a 4 bit plane F in front of a 2 bit plane B with means for making the front plane transparent for some character blocks or parts of blocks. To further increase the flexibility of colour choice, a number of CLUTs are available to be specified by each block.
In order to reduce the amount of data to be coded, blocks (e.g block A) in the image which only need a small number of colours are coded in the 2 bit plane B (block A2). In these cases, the foreground 4 bit plane character (block A4) would be set to be transparent. When there is too much complexity in the block for the 2 bit plane to be acceptable or where the colours required are not available in the set of 2 bit plane CLUTs, then a 4 bit plane character (A4) is used. No data is then needed for the 2 bit plane since the 4 bit plane will not be transparent.
Figure 2 shows, in simple diagrammatic form, an interactive system having a disc reader 10 (or other stored data reader) which reads out to a decoder stage 12, the output of which is passed to display driver 14 under control of control unit 16; in a practical realisation, these units may be provided in a single unit with the decoder stage 12 configured to handle the encoding technique of the present invention, as will be described below. A user input/output device 18 such as a keyboard, mouse or joystick is also provided for the supply of user commands to control unit 16 together with a display 20 such as a television or monitor screen displaying the output of display driver 14.
A suitable hardware form of encoder apparatus is shown in Figure 3: in practice the encoding may be performed as an off-line process effected in software running on a suitably programmed computer in which case the block
schematic of the Figure should be considered as a flow chart running from left to right. A video signal to be encoded is read into a frame buffer 20 from which those pixels forming each block are read (block reader 22). The data for each block is passed to a selector 24 which performs a thresholding operation on that data to determine whether the block can be encoded in 2 bits or whether 4 bits will be required. Following this determination, the block data is passed to each of a 2 bit encoder stage 26 and a 4 bit encoder stage 28. With the 4 bit plane in front of the 2 bit plane, where the block is to be encoded in the 2 bit plane, a transparency signal Ty is sent from the selector 24 to the 4 bit encoder causing the block to be coded as transparent in the 4 bit plane. Where the block is to be encoded in the 4 bit plane, an inhibit signal INH is sent to the 2 bit encoder to prevent any encoding of the block (as unnecessary due to the opacity of the foreground 4 bit plane block).
Rather than encode the separate colour values for each block, a colour look-up table is used with the appropriate CLUT entry address being encoded. For each of the encoder stages 26,28 there is a corresponding CLUT reference store 30,32 through which the encoder determines the appropriate address value. Where more than one possible CLUT is supported per plane, the encoder and reference store determines whether there is an exact or usable match between a required CLUT and an existing one. A usable match occurs where an existing CLUT has one or more unused colour values which may be modified to meet the requirements of a new block. Where no suitable CLUT exists a table generator 34,36 provides further tables as required to a respective reference store. The generator 34,36 may simply comprise a library of possible CLUT arrangements with means to select one of them on the basis of the colour of the block to be encoded, or a library of possible colours to be entered in unused CLUT structures.
Following encoding, the block data is combined into a bit stream together with data specifying the CLUTs. Suitably the CLUT data is in the form of an update, that is to say CLUT data for only those tables not used by a preceding frame is sent.
A suitable architecture for a decoder is shown in Figure 4 to illustrate how the encoded data is converted to a display signal. Two similar sections, the components of which are suffixed A or B, handle decoding of the 4 bit and 2 bit planes respectively with the outputs of the A and B channels overlaid by mixer MIX, the output of which is converted to an analogue signal via digital to analogue converter DAC and then passed to a display (display driver 14 and screen 20, Figure 2).
For each channel a display memory DMEM stores the character code addresses and other information for each block of the image: for a 256 x 224 pixel display, divided into 8x8 blocks, a grid of 32 x 28 blocks is stored. As it is required, each block is read out of DMEM providing an address to a character memory (CHT). The character memory, like DMEM is updated in the blanking interval between frames with those values not contained in the previous frame of a moving image sequence over-writing those values not required in the present frame.
The output of the character memory is passed to a demultiplexer DMUX which is controlled by a switching signal also output from the display memory to select the appropriate one from a number of available look-up tables CLUT. The output of the demultiplexer is an address selecting the appropriate colour from the chosen CLUT, the output of which is passed to the mixer MIX as previously described.
A suitable technique for providing transparency is to specify "transparent" as one of the available colours stored in a CLUT. In such a case, it is preferable to have the 4 bit plane in front of the 2 bit plane with the CLUT for one or more of the 4 bit planes storing transparent together with 15 colour values, and with the 2 bit CLUT storing 4 colour values. If the transparency mechanism allows just part of a foreground block to be transparent, then it may be possible to make these choices on parts of a block, although this will require extra coding to divide each of the 8x8 blocks into, for example, four 4x4 bit blocks.
As will be appreciated, those image blocks which are coded as 2 bit
blocks will occupy only half the storage space and transmission time of those using 4 bit coding. At the same time, there is the flexibility to use the 4 bit coding to deal with more complex parts of the image. Clearly, the choice of 2 bits or 4 bits is only one of many possible configurations of planes and there 5 could also be more than two planes involved. The planes could have other combinations of numbers of bits and could be in a different display order (for example the 2 bit plane could be in front of the 4 bit plane).
From reading the present disclosure, other modifications will be apparent to ι o persons skilled in the art. Such modifications may involve other features which are already known in the design, manufacture and use of image transmission and storage systems, display apparatuses and component parts thereof and which may be used instead of or in addition to features already described herein. Although claims have been formulated in this application to particular i5 combinations of features, it should be understood that the scope of the disclosure of the present invention also includes any novel feature or any novel combination of features disclosed herein either explicitly or implicitly or any generalisation thereof, whether or not it relates to the same invention as presently claimed in any claim and whether or not it mitigates any or all of the 20 same the technical problems as does the present invention. The applicants hereby give notice that new claims may be formulated to such features and/or combinations of features during the prosecution of the present application or of any further application derived therefrom.