Abstract:
A method for encoding a descriptor of multimedia content, in which the descriptor includes a plurality of components describing respective parts of the multimedia content comprises processing the descriptor to determine a priority of the plurality of components, and encoding the components of the descriptor based on the determined priority. A method of decoding the descriptor comprises decoding a predetermined number of the plurality of components, by decoding each of the components in the priority order. Advantageously, the encoding and decoding techniques enable fast, scalable searching.

Description:
BACKGROUND 
       [0001]    The present invention relates to the processing of signatures that represent multimedia content and, more particularly, to a method and apparatus for encoding and decoding such signatures. 
         [0002]    An item of multimedia content can be represented by a “signature” (also known as “robust hash” or “fingerprint”). A signature provides a compact, unique and robust description based on the content. For example, co-pending European patent application number EP 06255239.3, and UK patent application numbers GB 0700468.2, GB 0712388.8, GB 0719833.6 and GB 0800364.2, describe signatures for images, also known as “image descriptors” or “image identifiers”. European patent application EP-A-1 550 297 describes a signature for audio content and US patent application US-A-2007/0253594 describes a signature for video content. 
         [0003]    Multimedia signatures typically comprise a plurality of components comprising numbers, often these numbers are in binary space. The signatures can be used for identifying, searching and locating identical or near-duplicate content. 
         [0004]    With the vast amount of multimedia data being generated it is clearly a requirement that searches are performed very quickly with low complexity. 
       SUMMARY 
       [0005]    The present invention relates to methods for encoding and storing signatures, and to corresponding methods for decoding the encoded signatures, to support fast searching. 
         [0006]    In accordance with a first aspect, the present invention provides a method for encoding a descriptor of multimedia content, the method comprising: receiving a descriptor of multimedia content, the descriptor including a plurality of components describing respective parts of the multimedia content; processing the received descriptor to determine a priority of the plurality of components, and encoding the components of the descriptor based on the determined priority. 
         [0007]    In embodiments, the priority of the plurality of components may be determined using a priority ordering heuristic. For example, the priority of the plurality of components may be determined by considering the entropy of each of the plurality of components or a subset thereof. 
         [0008]    In one embodiment, an estimated entropy value is determined for each of the plurality of components in the descriptor, or a subset thereof, using at least one probability distribution of a dataset of corresponding descriptors. 
         [0009]    In one embodiment, a priority score for each of the plurality of components in the descriptor, or a subset thereof, is determined, and a priority order for the components is derived by arranging the priority scores and/or associated components in consecutive order. 
         [0010]    The method of encoding preferably further comprises encoding the components of the descriptor, or a subset thereof, in the determined priority order. 
         [0011]    In one embodiment, after determining a priority order for the components of the descriptor, the method further comprises determining an inter-dependence of each of the plurality of components of the descriptor, or a subset thereof, and updating the determined priority order based on the determined inter-dependence. The step of determining an inter-dependence of each of the plurality of components of the descriptor, or a subset thereof, may comprise considering the correlation of each component with every other component that has a higher priority in the determined priority order. 
         [0012]    The method of encoding, according to such an embodiment, preferably further comprises encoding the components of the descriptor, or a subset thereof, in the updated priority order. 
         [0013]    In accordance with a second aspect, the present invention provides a method for decoding a descriptor of multimedia content, the method comprising: receiving a plurality of components of an encoded descriptor of multimedia content, the components of the descriptor describing respective parts of the multimedia content, the components received in a priority order that is different from the order of the corresponding components in the unencoded descriptor; and decoding a predetermined number of the plurality of components, by decoding each of said predetermined number of components in the order in which they are received. 
         [0014]    Typically, the predetermined number of plurality of components of the descriptor is less than the total number of the plurality of components of the descriptor. 
         [0015]    In accordance with the third aspect, the present invention provides a method for image searching, comprising: receiving an encoded descriptor of a query image; decoding the descriptor of the query image using a method according to the second aspect of the present invention; determining a distance, preferably a Hamming distance, between the decoded predetermined number of the plurality of components of the descriptor of the query image and corresponding components of the descriptor of one or more reference images, and selecting reference images for which the determined distance is below a predetermined threshold. 
         [0016]    In the embodiments, the method preferably further comprises decoding the remaining components of the descriptor of the query image, and for each of the selected reference images, comparing all of the decoded components of the descriptor of the query image with all of the components of the descriptor of the selected reference image. 
         [0017]    In accordance with other aspects, the present invention provides: an encoder for encoding a descriptor of multimedia content, configured to execute a method according to the first aspect of the present invention; a computer readable medium comprising instructions which, when executed by a processor, perform an encoding method according to the first aspect of the present invention; a decoder for decoding a descriptor of multimedia content, configured to execute a method according to the second aspect of the present invention; a computer readable medium comprising instructions which, when executed by a processor, perform a decoding method according to the second aspect of the present invention; an apparatus for performing a method of image searching in accordance with the third aspect of the present invention, and a computer readable medium comprising instructions which, when executed by a processor, perform a method in accordance with the third aspect of the present invention. 
         [0018]    In one embodiment, a binary signature, such as the one described in EP 06255239.3, uniquely represents multimedia content. As described in EP 06255239.3 the signature may be represented as a binary string. The signatures may be encoded, stored and/or transmitted as a bitstream or in some other suitable format such as XML. The encoded bitstream (or other data structure) containing the signatures may be received and decoded for use in content searching and matching. 
         [0019]    Aspects of the present invention relate to methods for encoding and decoding a bitstream (or other data structure) containing one or more content-based signatures. 
         [0020]    A key aspect to the encoding of the signature is a priority ordering of the components of the signature. In one embodiment, a signature comprising a predetermined number of bits is encoded so that the signature bits with the highest priority are placed first in the encoded data structure, such as a bitstream. Preferably, the priority ordering of components, such as the bits, of the signature is based on their entropy. Suitable techniques for ordering the components of a signature in priority order, and the technical advantages arising therefrom, are described below. 
         [0021]    Advantageously, the encoding and decoding techniques of the present invention support fast, scalable searching and hashing. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0022]      FIG. 1  illustrates the probability that a component bit of an exemplary 512 bit image signature is equal to 1, determined using a technique that may be implemented in an embodiment of the present invention; 
           [0023]      FIG. 2  illustrates a correlation between bits of the 512 bit image signature of  FIG. 1 , determined using a technique that may be implemented in an embodiment of the present invention; 
           [0024]      FIG. 3  illustrates the entropy for an exemplary 512 bit signature; 
           [0025]      FIG. 4  is a flow diagram illustrating a method for encoding multimedia signatures, in accordance with an embodiment of the present invention, and 
           [0026]      FIG. 5  is a schematic diagram of a system for encoding and decoding multimedia signatures, in accordance with embodiments of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE EMBODIMENTS 
       [0027]    The following description is concerned with the encoding and decoding of signatures of images, derived using one or more of the methods mentioned above. It will be appreciated, however, that the encoding and decoding techniques can be used with signatures derived from other types of multimedia content, which may be derived using any suitable technique. 
         [0028]    Accordingly, the following description relates to the encoding and decoding of the signature of an image, composed of a binary string. 
         [0029]    In particular, a signature S of an image I(x,y) is composed of a set of n-bits with indexes from 0 to n−1: 
         [0000]        S ( I ( x,y ))={ s   0   ,s   1   , . . . s   n-1 }. 
         [0030]    In general, each bit (s 0  to s n-1 ) in the image signature S will have individual characteristics relating to the expected value, independence and robustness. The characteristics of each bit (s i ) can be determined experimentally by evaluating signatures extracted from a set of data (i.e. signatures of a plurality of images). Desirably this experimental data set will be large. 
         [0031]    Based on these characteristics the bits in the signature can be evaluated to obtain a priority score for each bit (s 0  to s n-1 ) with the highest score being given to the most informative bits. For this purpose, a heuristic can be used to determine the priority order of the bits based on experimental evaluation. 
         [0032]    In one preferred embodiment a function ƒ is used to determine the priority score based on the entropy value for each bit: 
         [0000]      ƒ( s   i )=− p   1 ( s   i )log 2    p   1 ( s   i )− p   0 ( s   i )log 2    p   0 ( s   i ),
 
         [0000]    where p 1 (s i ) is the probability that s i  is 1 p(s i =1) and p 0  (s i )=1−p 1 (s i ) is the probability that s i  is 0. The entropy is in the range 0 to 1, with a higher value means higher entropy, the value reaches a maximum when 
         [0000]        p ( s   i =1)= p ( s   i =0)=0.5. 
         [0033]    The probabilities for the bits of the signature p(s i =1) can be estimated by extracting and evaluating signatures from a large dataset of M images: 
         [0000]    
       
         
           
             
               
                 p 
                 ^ 
               
                
               
                 ( 
                 
                   
                     s 
                     i 
                   
                   = 
                   1 
                 
                 ) 
               
             
             ≈ 
             
               
                 1 
                 M 
               
                
               
                 
                   ∑ 
                   m 
                 
                  
                 
                   s 
                   i 
                 
               
             
           
         
       
     
         [0034]      FIG. 1  shows, by way of example, an estimate of the probability p(s i =1) of each bit in a 512 bit image signature, determined experimentally. It will be appreciated that other functions may be used to evaluate the components of a signature to determine their entropy.  FIG. 3  shows the corresponding priority scores ƒ(s i ) for the same exemplary 512 bit image signature. 
         [0035]    The priority scores ƒ(s i ) for the signature bits (s 0  to s n-1 ) are arranged into descending order, that is the bit with the highest score first, maintaining the indexes of the bits in S: 
         [0000]      ƒ( s   i )≧ƒ( s   j )≧ . . . ≧ƒ( s   k ).
 
         [0036]    This priority ordering can then be used for the encoding of the bits (s 0  to s n-1 ) of image signatures S as described below. 
         [0037]    In an alternative embodiment, the inter-bit dependence (e.g. expressed by correlation) can also be considered as part of the priority ordering heuristic. Once an initial ordering has been obtained θ(s i )≧θ(s j )≧ . . . ≧θ(s k ), for instance in accordance with the embodiment described above, the correlation of every bit with every higher priority bit is considered. 
         [0038]    The correlation cε(0,1] can be found experimentally on a set of data, where 0 represents uncorrelated bits and 1 represents correlated bits. The maximum of the correlation with all higher priority bits is then found: 
         [0000]        c   max ( s   j ), 
         [0000]    and a new priority score can be obtained 
         [0000]        g ( s   j )=ƒ( s   j )+α c   max ( s   j ),
 
         [0000]    where α is a design parameter to determine the influence of the correlation of the ordering. An updated priority ordering is then obtained 
         [0000]        g ( s   i )≧ g ( s   j )≧ . . . ≧ g ( s   k ).
 
         [0039]    Note that the first bit is always the same after this second priority ordering. 
         [0040]    Thus, in this alternative embodiment, the updated priority ordering can then be used for the encoding of the bits (s 0  to s n-1 ) of image signatures S as described below. 
         [0041]    In particular, the indexes of the bits (s 0  to s n-1 ) in S are now obtained from the relevant priority ordering: 
         [0000]    
       
      
       i,j, . . . , k.  
      
     
         [0042]    Using these indexes the bits of the signature are encoded into a bitstream (or other structure) in the determined priority ordering: 
         [0000]          S ={s   i   ,s   j   , . . . , s   k }. 
         [0043]    By way of example, the bitstream syntax that contains three image priority ordered image signatures, derived using the method of GB 0807411.4 is given below. 
         [0000]    
       
         
               
               
               
             
               
               
               
             
           
               
                   
               
               
                 ImageSignature { 
                 Number of bits 
                 Mnemonics 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                  GlobalSignatureA 
                 512 
                 bslbf 
               
               
                  GlobalSignatureB 
                 512 
                 bslbf 
               
               
                  FeaturePointCount 
                 8 
                 uimsbf 
               
               
                  for( k=0; k&lt;NumberOfPoints; k++ ) { 
               
               
                   Xcoord 
                 8 
                 uimsbf 
               
               
                   Ycoord 
                 8 
                 uimsbf 
               
               
                   Direction 
                 4 
                 uimsbf 
               
               
                   LocalSignature 
                 60 
                 bslbf 
               
               
                  } 
               
               
                 } 
               
               
                   
               
             
          
         
       
     
         [0044]    The XML schema corresponding to the bitstream is given below. 
         [0000]    
       
         
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
             
               
               
             
               
               
             
               
               
             
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
             
           
               
                   
               
             
             
               
                 &lt;complexType name=”ImageSignatureType” final=”#all”&gt; 
               
             
          
           
               
                   
                 &lt;complexContent&gt; 
               
             
          
           
               
                   
                 &lt;extension base=”mpeg7:VisualDType”&gt; 
               
             
          
           
               
                   
                 &lt;sequence&gt; 
               
             
          
           
               
                   
                 &lt;element name=″GlobalSignatureA″&gt; 
               
             
          
           
               
                   
                 &lt;simpleType&gt; 
               
             
          
           
               
                   
                 &lt;restriction&gt; 
               
             
          
           
               
                   
                 &lt;simpleType&gt; 
               
             
          
           
               
                   
                 &lt;list itemType=″mpeg7:unsigned1″ /&gt; 
               
             
          
           
               
                   
                 &lt;/simpleType&gt; 
               
               
                   
                 &lt;length value=″512″ /&gt; 
               
             
          
           
               
                   
                 &lt;/restriction&gt; 
               
             
          
           
               
                   
                 &lt;/simpleType&gt; 
               
             
          
           
               
                   
                  &lt;/element&gt; 
               
             
          
           
               
                   
                 &lt;/sequence&gt; 
               
             
          
           
               
                   
                  &lt;sequence&gt; 
               
               
                   
                  &lt;element name=″GlobalSignatureB″&gt; 
               
             
          
           
               
                   
                 &lt;simpleType&gt; 
               
             
          
           
               
                   
                 &lt;restriction&gt; 
               
             
          
           
               
                   
                 &lt;simpleType&gt; 
               
             
          
           
               
                   
                 &lt;list itemType=″mpeg7:unsigned1″ /&gt; 
               
             
          
           
               
                   
                 &lt;/simpleType&gt; 
               
               
                   
                 &lt;length value=″512″ /&gt; 
               
             
          
           
               
                   
                 &lt;/restriction&gt; 
               
             
          
           
               
                   
                 &lt;/simpleType&gt; 
               
             
          
           
               
                   
                  &lt;/element&gt; 
               
               
                   
                 &lt;element name=″LocalSignature″&gt; 
               
             
          
           
               
                   
                 &lt;complexType&gt; 
               
             
          
           
               
                   
                 &lt;sequence&gt; 
               
             
          
           
               
                   
                 &lt;element name=″FeaturePointCount″&gt; 
               
             
          
           
               
                   
                 &lt;simpleType&gt; 
               
             
          
           
               
                   
                 &lt;restriction base=″nonNegativeInteger″&gt; 
               
             
          
           
               
                   
                 &lt;minInclusive value=″32″ /&gt; 
               
               
                   
                 &lt;maxInclusive value=″80″ /&gt; 
               
             
          
           
               
                   
                 &lt;/restriction&gt; 
               
             
          
           
               
                   
                 &lt;/simpleType&gt; 
               
             
          
           
               
                   
                 &lt;/element&gt; 
               
               
                   
                 &lt;element name=″FeaturePoint″ minOccurs=″32″ 
               
             
          
           
               
                 maxOccurs=″80″&gt; 
               
             
          
           
               
                   
                 &lt;complexType&gt; 
               
             
          
           
               
                   
                 &lt;sequence&gt; 
               
             
          
           
               
                   
                 &lt;element name=″XCoord″ type=″mpeg7:unsigned8″/&gt; 
               
               
                   
                 &lt;element name=″YCoord″ type=″mpeg7:unsigned8″/&gt; 
               
               
                   
                 &lt;element name=″Direction″ 
               
             
          
           
               
                 type=″mpeg7:unsigned4″/&gt; 
               
             
          
           
               
                   
                 &lt;element name=″LocalSignature″&gt; 
               
             
          
           
               
                   
                 &lt;simpleType&gt; 
               
             
          
           
               
                   
                 &lt;restriction&gt; 
               
             
          
           
               
                   
                 &lt;simpleType&gt; 
               
             
          
           
               
                   
                 &lt;list itemType=″mpeg7:unsigned1″/&gt; 
               
             
          
           
               
                   
                 &lt;/simpleType&gt; 
               
               
                   
                 &lt;length value=″60″ /&gt; 
               
             
          
           
               
                   
                 &lt;/restriction&gt; 
               
             
          
           
               
                   
                 &lt;/simpleType&gt; 
               
             
          
           
               
                   
                 &lt;/element&gt; 
               
             
          
           
               
                   
                 &lt;/sequence&gt; 
               
             
          
           
               
                   
                 &lt;/complexType&gt; 
               
             
          
           
               
                   
                 &lt;/element&gt; 
               
             
          
           
               
                   
                 &lt;/sequence&gt; 
               
             
          
           
               
                   
                 &lt;/complexType&gt; 
               
             
          
           
               
                   
                 &lt;/element&gt; 
               
             
          
           
               
                   
                 &lt;/seguence&gt; 
               
             
          
           
               
                   
                 &lt;/extension&gt; 
               
             
          
           
               
                   
                 &lt;/complexContent&gt; 
               
             
          
           
               
                 &lt;/complexType&gt; 
               
               
                   
               
             
          
         
       
     
         [0045]    The bitstream (or other structure) is decoded by reading in the priority ordered signature up to the required number of bits. In particular, a decoding method receives the encoded bitstream (or other data structure) and decodes only the first m bits from the n bit signature in the bitstream, for use in image searching and matching. Since the priority ordered signatures in the encoded bitstream store the most informative bits first, the decoding technique decodes the most relevant bits first, thereby enabling fast searching and matching because only the m most relevant bits are used when comparing two signatures. In addition, the decoding technique provides a scalable signature. The following advantages arise from such a system. 
         [0046]    First, it is possible to find the distance (e.g. Hamming distance) between two signatures, this is a coarse level distance that would be less robust and/or independent than the distance calculated on the full n-bits. The complexity of the distance calculation is linearly related to the number of bits so using fewer bits m provides lower computational requirements. 
         [0047]    Secondly, it is possible to create a hash table, based on the m-bits, of the signature&#39;s structure for rapidly reducing the search space to k-nearest neighbours. In a preferred embodiment m is 8, giving a 256 element hash table and k is 1 therefore the search space is reduced to approximately 8/256 of the original size. 
         [0048]    Finally, it is possible to reduce search times by eliminating low probability matches. If a search is to be carried out to find all signatures with a normalised distance below a threshold T 1  from a query signature then in a preferred embodiment the first m bits are compared and only if the normalised distance is below T 2  are all n bits extracted and compared. If the normalised distance is above T 2  then the two signatures are declared different. In the preferred embodiment T 2 =T 1 +ε, where ε≧0. In such a searching method, images that are declared to be similar, based upon the comparison of the first m-bits and/or all n bits, may be provided as search results (for example by displaying the corresponding images on a display screen) 
         [0049]      FIG. 4  is a flow diagram showing a method for encoding multimedia signatures according to an embodiment of the present invention. 
         [0050]    The method starts at step  100 , which receives the multimedia content to be encoded. 
         [0051]    At step  200 , for each part of the multi-media content that is to be encoded separately (e.g. each image), a predefined content-based signature is extracted. As described above, the signature comprises a predetermined number of signature components such as a number of binary bits. Any suitable technique for extracting such a signature from the received multimedia content may be used. For example, if the multimedia content comprises still images, a signature to each image may be derived by processing the image using one or more of the techniques described in the aforementioned patent applications EP 06255239.3, GB 0700468.2, GB 0712388.8, GB 0719833.6 and GB 0800364.2 
         [0052]    At step  300 , a priority ordering is derived for at least some of the components of the predefined signature. The priority ordering may be determined using one of the above-described techniques of the embodiments, or any other suitable technique. 
         [0053]    At step  400 , each signature is encoded according to the priority ordering determined in step  300 . 
         [0054]    Finally, at step  500 , the encoded signatures are provided as a bitstream (or other data structure) which may be transmitted or stored for use by a decoder. The data structure may be transmitted or stored in binary or XML format, as discussed above, or any other suitable format. 
         [0055]    The above-described method of encoding may be performed in an encoding apparatus  10  comprising a processor  20 , as illustrated in  FIG. 5 . Typically, the method is implemented in the form of a computer program comprising instructions, executable by the processor  20 , to perform the above described method steps. 
         [0056]    A corresponding decoding method may be performed in a decoding apparatus  50  comprising a processor  60 , as illustrated in  FIG. 5 . Typically, the decoding method is implemented in the form of a computer program comprising instructions, executable by the processor  60 . The decoding method comprises receiving and decoding the first m components (e.g. bits) of each encoded signature in the received data structure (e.g. bitstream), which can then be used for image searching and matching, as described above. 
         [0057]    Referring in detail to  FIG. 5 , an encoder  10  receives images at an image receiver module  90  from an image capture device, such as a camera  110 . Encoder processor  20  processes the images, and encodes signatures corresponding to the images, in accordance with the above described techniques. Optionally, encoder processor  20  stores the encoded image signatures, and corresponding images, in memory  30 . 
         [0058]    Encoder processor  20  may further transmit the encoded image signatures (e.g. as an encoded bitstream), and optionally the corresponding images, over a communication link  40  to a receiver  80  of decoder  50 . Decoder processor  60  decodes the received image signatures, in accordance with the above described techniques. Optionally, decoder processor  60  stores the decoded image signatures, and corresponding images, in memory  70 . Decoder processor may further perform image searching and matching using decoded image signatures stored in memory  70 , in accordance with the above described techniques. 
       Alternative Implementations 
       [0059]    In alternative embodiments, a signature may be comprised of non-binary data components. This may also be arranged by priority order and encoded into a bitstream or other data structure. 
         [0060]    The described embodiments order all of the bits in a signature by their priority. As the skilled person will appreciate, it may not be necessary or desirable to order all bits in such a way. Thus, alternative embodiments include a partially priority ordered encoding, where the highest m-bits are encoded based on priority ordering and then the remaining bits in their original order. 
         [0061]    A priority order may be formed from any type of signature extracted from any type of multimedia content, including still and moving images, audio content etc 
         [0062]    As the skilled person will appreciate, many variations and modifications may be made to the described embodiments. It is intended to include all such variations, modifications and equivalents which fall within the spirit and scope of the present invention.