Abstract:
A method and apparatus is described that categorizes images by extracting regions and describing the regions with a set of 15-dimensional image patch feature vectors, which are concatenations of color and texture feature vectors. By comparing the image patch feature vectors in images with similarly-obtained image patch vectors in a Gaussian mixture based model pool (obtained in an image patch modeling phase), the images may be categorized (in an image patch recognition phase) with probabilities relating to each image patch. Higher probabilities are likelier correlations. The device may be a single or multiple core CPU, or parallelized vector processor for characterizing many images. The images may be photographs, videos, or video stills, without restriction. When used real-time, the method may be used for visual searching or sorting.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    Not Applicable 
       STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT 
       [0002]    Not Applicable 
       INCORPORATION-BY-REFERENCE OF MATERIAL SUBMITTED ON A COMPACT DISC 
       [0003]    Not Applicable 
       NOTICE OF MATERIAL SUBJECT TO COPYRIGHT PROTECTION 
       [0004]    A portion of the material in this patent document is subject to copyright protection under the copyright laws of the United States and of other countries. The owner of the copyright rights has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the United States Patent and Trademark Office publicly available file or records, but otherwise reserves all copyright rights whatsoever. The copyright owner does not hereby waive any of its rights to have this patent document maintained in secrecy, including without limitation its rights pursuant to 37 C.F.R. §1.14. 
       BACKGROUND OF THE INVENTION 
       [0005]    1. Field of the Invention 
         [0006]    This invention pertains generally to image classification, and more particularly to image classification using subscene characterization. This invention relates to an apparatus and method for processing pictures, more particularly, to an apparatus and method for intrinsic image patch feature extraction and subscene recognition. 
         [0007]    2. Description of Related Art 
         [0008]    Image classification and object detection been investigated for many years. Image classification approaches have ranged from image retrieval by using color histogram in 1990s, to image matching using Scale-Invariant Feature Transform (or SIFT). However, currently available techniques still remain far away from customer expectations of non-expert image classification and object detection. Except for a few very well defined problems, such as face recognition, the problem of general image classification and object detection remains largely unsolved. 
       BRIEF SUMMARY OF THE INVENTION 
       [0009]    An aspect of the invention is an image classification apparatus, comprising: a computer; and means for patch classifying an input image using the computer. 
         [0010]    The means for patch classifying may comprise subscene modeling; and performing subscene recognition. 
         [0011]    The subscene modeling step may comprise programming for executing steps further comprising: segmenting an input image training set from an image database into one or more segmented regions based on an input pool of N subscene categories; extracting a set of training patch feature vectors for each of the segmented regions corresponding to the input pool of N subscene categories; and forming a subscene model pool comprising training patch feature vectors for each for the input pool of N subscene categories. 
         [0012]    The computer may be capable of executing the means for patch classifying either sequentially or at least partially in parallel. 
         [0013]    The performing subscene recognition step may comprise: segmenting the input image into a set of input regions; extracting patch features corresponding to each of the set of input regions to form a set of extracted patch feature vectors; and filtering the set of extracted patch features against the subscene model pool to form a filtered output. 
         [0014]    The performing subscene recognition step may further comprise: selecting the set of extracted patch features corresponding to one or more of the largest filtered outputs. 
         [0015]    The image classification apparatus above may further comprise: setting a subscene to one of the group consisting of: the training patch feature vectors and the set of extracted patch feature vectors; and dividing the subscene into a set of image patches, describing each image patch by a set of concatenated image patch feature vectors {right arrow over (V)} image     —     patch  comprising: a color feature vector {right arrow over (V)} color ; and a texture feature vector {right arrow over (V)} texture ; wherein the subscene is in a YCbCr color space with a luminance Y channel, a blue chrominance Cb channel, and a red chrominance Cr channel. 
         [0016]    The color feature vector {right arrow over (V)} color  may be calculated for each image patch in the subscene using steps comprising: calculating a mean value  Y  of the luminance Y channel and mean values  Cb  and red  Cr  respectively for both the blue Cb and red Cr chrominance channels. The color feature vector {right arrow over (V)} color  may be calculated for each image patch using steps further comprising: calculating a two dimensional (2D) chrominance histogram of both the blue Cb and red Cr chrominance channels; wherein the histogram comprises bins. 
         [0017]    The color feature vector {right arrow over (V)} color  may be calculated in the patch using steps comprising: calculating an patch luminance variance as: 
         [0000]    
       
         
           
             
               
                 Var 
                  
                 
                   ( 
                   Y 
                   ) 
                 
               
               = 
               
                 
                   1 
                   N 
                 
                  
                 
                   
                     ∑ 
                     
                       i 
                       = 
                       1 
                     
                     N 
                   
                    
                   
                     
                       ( 
                       
                         
                           Y 
                           i 
                         
                         - 
                         
                           Y 
                           _ 
                         
                       
                       ) 
                     
                     2 
                   
                 
               
             
             ; 
           
         
       
     
         [0000]    and calculating a patch chrominance variance as: 
         [0000]    
       
         
           
             
               Var 
                
               
                 ( 
                 CbCr 
                 ) 
               
             
             = 
             
               
                 1 
                 N 
               
                
               
                 ( 
                 
                   
                     
                       ∑ 
                       
                         i 
                         = 
                         1 
                       
                       N 
                     
                      
                     
                       
                         ( 
                         
                           
                             Cb 
                             i 
                           
                           - 
                           
                             Cb 
                             _ 
                           
                         
                         ) 
                       
                       2 
                     
                   
                   + 
                   
                     
                       ( 
                       
                         
                           Cr 
                           i 
                         
                         - 
                         
                           Cr 
                           _ 
                         
                       
                       ) 
                     
                     2 
                   
                 
                 ) 
               
             
           
         
       
     
         [0000]    where N denotes a number of pixels in the patch, Y i , Cb i , and Cr i  denote a pixel value in position i in the image patch in each of the luminance Y channel, the blue Cb, and the red Cr chrominance channels,  Y  represents the mean value of Y,  Cb  represents the mean value of Cb, and  Cr  represents the mean value of Cr. 
         [0018]    The color feature vector {right arrow over (V)} color  may be calculated in the image patch using steps further comprising: calculating a colorfulness value as Colorfulness=|  Cb −  Cr |. 
         [0019]    The color feature vector {right arrow over (V)} color  may be calculated for the image patch using steps further comprising: forming a 6-dimensional (6D) color feature vector ({right arrow over (V)} color ) as {right arrow over (V)} color =(  Y ,  Cb ,  Cr , Var(Y), Var(CbCr), Colorfulness). 
         [0020]    The texture feature vector {right arrow over (V)} texture  may be calculated for each image patch in the subscene using steps comprising: performing an edge detection procedure on the luminance channel (Y domain) to generate a set of edge points; categorizing each edge point into one of nine classes according to their gradient directions, which are rounded to integer degrees into one of nine directions selected from the group of directions consisting of: D 0 (−10° to +10°), D 1  (11° to 30°), D 2  (31° to 50°), D 3  (51° to 70°), D 4  (71° to 90°), D 5  (91° to 110°), D 6  (111° to 130°), D 7  (131° to 150°), and D 8  (151° to 170°). 
         [0021]    The texture feature vector {right arrow over (V)} texture  may be calculated for each image patch using steps further comprising: for each image patch 
         [0000]    
       
         
           
             
               D 
               U 
             
             = 
             
               
                 ∑ 
                 
                   
                     Direction 
                      
                     
                       ( 
                       
                         Edge 
                          
                         
                           ( 
                           
                             i 
                             , 
                             j 
                           
                           ) 
                         
                       
                       ) 
                     
                   
                   = 
                   U 
                 
               
                
               
                  
                 
                   
                     Edge 
                      
                     
                       ( 
                       
                         i 
                         , 
                         j 
                       
                       ) 
                     
                   
                    
                 
               
             
           
         
       
     
         [0000]    where U is the direction index, Uε(D 0 , D 1 , D 2 , D 3 , D 4 , D 5 , D 6 , D 7 , D 8 ), (i, j) denotes the point position within the range of the image patch, and ∥Edge (i,j)∥ denotes the edge strength (amplitude of the gradient). 
         [0022]    The texture feature vector {right arrow over (V)} texture  may be calculated using steps comprising: forming a concatenated 9-dimensional (9D) texture feature vector ({right arrow over (V)} texture ), wherein {right arrow over (V)} texture =(D 0 , D 1 , D 2 , D 3 , D 4 , D 5 , D 6 , D 7 , D 8 ). 
         [0023]    Each of the image patch feature vectors {right arrow over (V)} image     —     patch  may be calculated using steps comprising: forming a concatenated 15-dimensional (15D) texture feature vector {right arrow over (V)} image     —     patch , wherein {right arrow over (V)} image     —     patch =({right arrow over (V)} color , {right arrow over (V)} texture ) wherein {right arrow over (V)} image     —     patch  written in detail comprises: 
         [0000]    
       
         
           
             
               
                 V 
                 → 
               
               image_patch 
             
             = 
             
               
                 ( 
                 
                   
                     
                       
                         
                           Y 
                           _ 
                         
                         , 
                         
                           Cb 
                           _ 
                         
                         , 
                         
                           Cr 
                           _ 
                         
                         , 
                         
                           Var 
                            
                           
                             ( 
                             Y 
                             ) 
                           
                         
                         , 
                         
                           Var 
                            
                           
                             ( 
                             CbCr 
                             ) 
                           
                         
                         , 
                         Colorfulness 
                         , 
                       
                     
                   
                   
                     
                       
                         
                           D 
                           0 
                         
                         , 
                         
                           D 
                           1 
                         
                         , 
                         
                           D 
                           2 
                         
                         , 
                         
                           D 
                           3 
                         
                         , 
                         
                           D 
                           4 
                         
                         , 
                         
                           D 
                           5 
                         
                         , 
                         
                           D 
                           6 
                         
                         , 
                         
                           D 
                           7 
                         
                         , 
                         
                           D 
                           8 
                         
                       
                     
                   
                 
                 ) 
               
               . 
             
           
         
       
     
         [0024]    In the image classification apparatus above, the subscene modeling step may comprise a means for selecting an optimal number of clusters in the step of forming the subscene model pool. 
         [0025]    The means for patch classifying above may be stored on a computer readable medium. 
         [0026]    In the image classification apparatus above, the performing subscene recognition step may be performed on a set of photographs. 
         [0027]    In another aspect of the invention, an image classification apparatus may comprise: a computer; and a program executable on the computer for patch classifying an input; wherein said patch classifying comprises: performing subscene recognition; and steps for performing subscene modeling; wherein said steps for performing subscene modeling comprises: segmenting an input image training set from an image database into one or more segmented regions based on an input pool of N subscene categories; extracting a set of training patch feature vectors for each of the segmented regions corresponding to the input pool of N subscene categories; and forming a subscene model pool comprising training patch feature vectors for each for the input pool of N subscene categories. 
         [0028]    The program executable above may be stored on a computer readable medium as a program in either source code or object code. 
         [0029]    In another aspect of the invention, an image classification apparatus may comprise: a computer; and a programming executable on the computer for performing one or more steps comprising patch classifying an input image; wherein the patch classifying comprises programming for executing steps comprising: subscene modeling; and performing subscene recognition. A computer readable medium may be used for storing the programming executable above. 
         [0030]    The subscene modeling step may comprise means for selecting an optimal number of clusters in the step of forming the subscene model pool. 
         [0031]    Another aspect of the invention is the image classification above, wherein the means for patch classifying are stored on a computer readable memory. 
         [0032]    A still further aspect of the invention is the image classification apparatus above, wherein the performing subscene recognition step is performed on a set of photographs. 
         [0033]    Further aspects of the invention will be brought out in the following portions of the specification, wherein the detailed description is for the purpose of fully disclosing preferred embodiments of the invention without placing limitations thereon. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING(S) 
         [0034]    The invention will be more fully understood by reference to the following drawings which are for illustrative purposes only: 
           [0035]      FIG. 1  is a flow chart of an overall method of patch subscene modeling and recognition. 
           [0036]      FIG. 2  is a flow chart of an image patch color feature extraction method. 
           [0037]      FIG. 3  is a flow chart of an image patch texture feature extraction method. 
           [0038]      FIG. 4  is a flow chart for determining the optimal number of clusters in the image patch modeling process. 
           [0039]      FIG. 5  is a flow chart of the image patch modeling based recognition method. 
           [0040]      FIG. 6  is a flow chart of the cluster selection process. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     A. Introduction 
       [0041]    With increased computational hardware now available, it becomes possible to create processes that were previously inconceivable. More and more intelligent features that emulate human capabilities are desirable for new products, thereby improving and easing human-machine interactions. 
         [0042]    In automobiles, for instance, people would like automatic detection of people behind or in front of the car to prevent accidents. Users would also like a camera or video recorder to automatically determine an optimal setup given ambient environmental conditions to take the best possible photographs and videos. In computers, users would also want their computers to automatically categorize personal or business photo collections. For video recordings, users would be intrigued with a camcorder that could automatically remove meaningless scenes and compile an attractive video clip. All of the foregoing applications, and many other related applications, cannot be realized without accurate image classification and object detection. 
         [0043]    Since image classification and object detection is an area of great interest in both research and application, it has been investigated for many years. Many image classification approaches have been proposed, ranging from image retrieval by using color histogram in 1990s, to image matching using Scale-Invariant Feature Transform (or SIFT), which is an algorithm in computer vision used to detect and describe local features in images. However, extant techniques remain still far away from customer expectations of non-expert image classification and object detection. Except for a few very well defined problems, such as face recognition, the problem of general image classification and object detection remains largely unsolved. 
         [0044]    Scene recognition and representation is an important branch in general image classification and object detection. Good scene recognition and representation techniques can greatly improve the performance of many computer vision applications, such as image categorization (natural grouping of images instead of clusters based on time or simple text descriptions), image retrieval (used to find images in archives based on visual similarity). It can also provide contextual information to improve the object recognition. For instance, if we know the scene represents a city street, then the probability of a vehicle will be much higher than a ship. 
         [0045]    Currently, one to many words are typically used to describe a given scene. However, such annotations often lead to very different scenes having the same description. To address this problem here, an image is described with a set of meaningful regions or objects with certain spatial relationships. In this invention, the term “subscene” is used to represent a meaningful region or object within an image or video scene. 
         [0046]    The aim here is to detect and classify each subscene within an image, and then to represent the subscene with a semantic label of low complexity without any human intervention. To do so, a patch color extraction scheme is developed to extract the patch color features; and a patch texture extraction scheme is developed to extract the patch texture features. By combining these features a multi-dimensional feature vector is generated for each patch. Then a Gaussian mixture model is used to represent the subscene with the feature vector as the variable. 
         [0047]    The parameters of the Gaussian mixture model are obtained by using an Expectation Maximization (EM) algorithm on all of the training data selected from an image database set. After the models for each subscene feature category are obtained, the subscene classification is done by voting on each of the subscene categories. The model with the maximum output is selected as the best description. 
       B. Overall Method Description 
       [0048]    Refer now to  FIGS. 1A and 1B , which form a flowchart of the overall architecture of the method  100 . It consists of two sections: a subscene modeling section  102  and a subscene recognition section  104 . In the subscene modeling section  102 , the subscene representation model is obtained by the following procedure: 
         [0049]    1. In the first step, the images comprising an image database  106  are first segmented  108  based on subscene categories to form subscenes. As an example, without limitation, if category 1 subscene represents a mountain, then the mountain within each image is segmented out as an independent subscene. 
         [0050]    2. Each subscene is divided into a set of fixed size image patches, and the patch features are correspondingly extracted into one or more patch feature vectors  110  respectively. 
         [0051]    3. After all the input mountain subscenes in the image database  106  are processed, the extracted features are stored in the Category 1 feature pool  112 . 
         [0052]    4. Then, features in the pool are used to learn a patch representation of the subscene model in the module Subscene Modeling  114 . 
         [0053]    5. Steps 1 to 4 are repeated until all the subscene models from category 1 through category N  116  are obtained. These individual N models are then stored in a subscene model pool  118 . 
         [0054]    Now in the subscene recognition section  104  of  FIG. 1B , subscene recognition is conducted as follows: 
         [0055]    1. An input image  120  is first segmented  122  into a set of subscenes. 
         [0056]    2. Each subscene is divided into a set of fixed size image patches, from which the patch features are correspondingly extracted  124 . 
         [0057]    3. The extracted patch feature  124  is filtered  126  by all the subscene models present in the subscene model pool  118  in module “Subscene Model Filtering” and the subscene category with the largest numeric filtering output  128  is selected. 
         [0058]    4. Steps 2 to 3 above are repeated until all the regions in the input image  120  are processed. 
         [0059]    The technical details for these methods and an example embodiment will be described in the following sections. 
       C. Patch Feature Extraction 
       [0060]    In the method described herein, a patch feature comprises two kinds of features: a color feature and a texture feature. These will be described in detail below. In this invention, features are extracted in the YCbCr domain. Since most of the images are stored in RGB format, typically a format transformation from another format to YCbCr must be performed prior to feature extraction. 
         [0061]    Color Feature Extraction 
         [0062]    Refer now to  FIG. 2 , which is a flow chart illustrating the image patch color feature extraction method  200 , which is done as follows. 
         [0063]    1. Initially, an image patch  202  is input. 
         [0064]    2. Mean values of luminance channel (the Y domain) and the blue and red chrominance channels (the CbCr domain) for the image patch  202  are calculated in the module “Mean Color Extraction”  204 , yielding respectively the average values  Y ,  Cb , and  Cr . The “Mean Color Extraction”  204  may be processed either concurrently (if processed with parallel hardware), or at a different time (using traditional computational methods without substantial parallelism). 
         [0065]    3. An image patch luminance variance is calculated in the module “Luminance Variance”  206  as follows: 
         [0000]    
       
         
           
             
               Var 
                
               
                 ( 
                 Y 
                 ) 
               
             
             = 
             
               
                 1 
                 N 
               
                
               
                 
                   ∑ 
                   
                     i 
                     = 
                     1 
                   
                   N 
                 
                  
                 
                   
                     ( 
                     
                       
                         Y 
                         i 
                       
                       - 
                       
                         Y 
                         _ 
                       
                     
                     ) 
                   
                   2 
                 
               
             
           
         
       
     
         [0066]    An image patch chrominance variance is calculated in the module “Chrominance Variance”  208  as follows: 
         [0000]    
       
         
           
             
               Var 
                
               
                 ( 
                 CbCr 
                 ) 
               
             
             = 
             
               
                 1 
                 N 
               
                
               
                 ( 
                 
                   
                     
                       ∑ 
                       
                         i 
                         = 
                         1 
                       
                       N 
                     
                      
                     
                       
                         ( 
                         
                           
                             Cb 
                             i 
                           
                           - 
                           
                             Cb 
                             _ 
                           
                         
                         ) 
                       
                       2 
                     
                   
                   + 
                   
                     
                       ( 
                       
                         
                           Cr 
                           i 
                         
                         - 
                         
                           Cr 
                           _ 
                         
                       
                       ) 
                     
                     2 
                   
                 
                 ) 
               
             
           
         
       
     
         [0000]    where N denotes the number of pixels in the image patch, Y i , Cb i , and Cr i  denote the pixel value in position i in the image patch in each color channel,  Y  represents the mean value of Y,  Cb  represents the mean value of Cb, and  Cr  represents the mean value of Cr. 
         [0067]    4. After  Cb  and  Cr  are obtained, an image patch colorfulness value is calculated as 
         [0000]      Colorfulness=|   Cb −  Cr |   
         [0000]    in the “Colorfulness Measurement” module  210 . 
         [0068]    5. Finally, the above extracted values are combined to form a 6 dimension (6D) color feature vector ({right arrow over (V)} color ): 
         [0000]        {right arrow over (V)}   color =(   Y ,  Cb ,  Cr ,Var ( Y ), Var ( CbCr ),Colorfulness) 
         [0000]    in the “6D Feature Vector” formation module  212 . The resultant output 6D feature vector  214  is the output of the color feature extraction. 
         [0069]    Texture Feature Extraction 
         [0070]    Refer now to  FIG. 3 , which is a flowchart illustrating the texture feature extraction method  300 . Here, the texture feature is extracted by using the luminance channel as follows: 
         [0071]    1. An image patch is input  302  that will have texture feature extraction. 
         [0072]    2. An edge detection procedure is applied on the luminance channel (Y domain) in the module “Edge Detection”  304  to extract edge points within the image patch  302 . The edge detection procedure may use any prior art edge detection method. In a current embodiment, the Canny edge detection (developed by John F. Canny) scheme is used. 
         [0073]    3. After all the edge points are obtained, they are categorized into nine classes according to their gradient directions, which are rounded to integer degrees in module “Edge Categorization”  306 . The nine directions are: D 0  (−10° to +10°), D 1  (11° to 30°), D 2  (31° to 50°), D 3  (51° to 70°), D 4  (71° to 90°), D 5  (91° to 110°), D 6  (111° to 130°), D 7  (131° to 150°), and D 8  (151° to 170°). 
         [0074]    Depending on the hardware used for processing, the “Edge Categorization”  306  step may be processed in parallel for an improvement in execution speed. Alternatively, they may be processed sequentially. 
         [0075]    4. After step 3, the texture feature is calculated as follows in module “Texture Feature Extraction”  308  for each image patch  302 : 
         [0000]    
       
         
           
             
               D 
               U 
             
             = 
             
               
                 ∑ 
                 
                   
                     Direction 
                      
                     
                       ( 
                       
                         Edge 
                          
                         
                           ( 
                           
                             i 
                             , 
                             j 
                           
                           ) 
                         
                       
                       ) 
                     
                   
                   = 
                   U 
                 
               
                
               
                  
                 
                   Edge 
                    
                   
                     ( 
                     
                       i 
                       , 
                       j 
                     
                     ) 
                   
                 
                  
               
             
           
         
       
     
         [0000]    where U is the direction index, Uε(D 0 , D 1 , D 2 , D 3 , D 4 , D 5 , D 6 , D 7 , D 8 ) previously defined, (i,j) denotes the point position within the range of the image patch  302  and ∥Edge(i,j)∥ denotes the edge strength (amplitude of the gradient). 
         [0076]    5. After the categorization  306  is performed for all nine directions, a 9D texture feature vector is obtained  310  as follows: 
         [0000]        {right arrow over (V)}   texture =( D   0   ,D   1   ,D   2   ,D   3   ,D   4   ,D   5   ,D   6   ,D   7   ,D   8 ) 
         [0077]    Subscene Patch Feature Formation 
         [0078]    After the color feature and texture feature are calculated, they are concatenated sequentially to form a 15 dimensional (15D) image patch feature vector ({right arrow over (V)} image     —     patch ) to represent the image patch  302 : 
         [0000]        {right arrow over (V)}   image     —     patch =( {right arrow over (V)}   color   ,{right arrow over (V)}   texture ) 
         [0000]    Based on {right arrow over (V)} image     —     patch , a subscene model is then developed. 
       D. Subscene Modeling Based on Image Patch Features 
       [0079]    Through many years of investigation, two approaches have been proposed for general object or scene recognition. One approach is discriminative based, which basically trains classifiers to find decision boundaries in the feature space to separate one class from the others. However, the discrimination approach requires a sufficient amount of training data to achieve a complete description of all others. In reality, the sufficient amount is impossible to achieve. As soon as new data is available, the training must be redone. 
         [0080]    The second recognition approach is generative based. This is different from the previously described classifier based approach in that it only models the target class and assumes all other classes have different distributions. After the generative model is learned from the training data, the probability density of a subscene region can be estimated based on the maximum likelihood between the subscene image patch feature and the corresponding generative model. 
         [0081]    In this invention, the generative approach is used to develop a multivariable Gaussian mixture based subscene model for subscene representation. By using a feature vector {right arrow over (X)} having d dimensionality, a multivariable Gaussian distribution can be described as follows: 
         [0000]    
       
         
           
             
               
                 p 
                 k 
               
                
               
                 ( 
                 
                   X 
                   → 
                 
                 ) 
               
             
             = 
             
               
                 1 
                 
                   
                     
                       ( 
                       
                         2 
                          
                         π 
                       
                       ) 
                     
                     
                       d 
                       / 
                       2 
                     
                   
                    
                   
                     
                        
                       
                         S 
                         k 
                       
                        
                     
                     
                       1 
                       / 
                       2 
                     
                   
                 
               
                
               
                 exp 
                  
                 
                   ( 
                   
                     
                       1 
                       2 
                     
                      
                     
                       
                         
                           
                             ( 
                             
                               
                                 X 
                                 → 
                               
                               - 
                               
                                 
                                   M 
                                   → 
                                 
                                 k 
                               
                             
                             ) 
                           
                           T 
                         
                          
                         
                           [ 
                           
                             S 
                             k 
                           
                           ] 
                         
                       
                       
                         - 
                         1 
                       
                     
                      
                     
                       ( 
                       
                         
                           X 
                           → 
                         
                         - 
                         
                           
                             M 
                             → 
                           
                           k 
                         
                       
                       ) 
                     
                   
                   ) 
                 
               
             
           
         
       
     
         [0082]    A Gaussian mixture can be described as: 
         [0000]    
       
         
           
             
               
                 P 
                 ( 
                 
                   
                     
                       X 
                        
                     
                     ; 
                     
                       
                         M 
                          
                       
                       k 
                     
                   
                   , 
                   
                     [ 
                     
                       S 
                       k 
                     
                     ] 
                   
                   , 
                   
                     w 
                     k 
                   
                 
                 ) 
               
               = 
               
                 
                   ∑ 
                   
                     k 
                     = 
                     1 
                   
                   m 
                 
                  
                 
                   
                     w 
                     k 
                   
                    
                   
                     
                       p 
                       k 
                     
                      
                     
                       ( 
                       
                         X 
                          
                       
                       ) 
                     
                   
                 
               
             
             , 
             
               
                 w 
                 k 
               
               ≥ 
               0 
             
             , 
             
               
                 
                   ∑ 
                   
                     k 
                     = 
                     1 
                   
                   m 
                 
                  
                 
                   w 
                   k 
                 
               
               = 
               1 
             
           
         
       
     
         [0000]    where m is the number of mixtures or clusters, {right arrow over (M)} k  is the mean vector, [S k ] is the covariance matrix, ∥S k ∥ 1/2  is the norm of the covariance matrix, and w k  is the weight of k th  cluster. When the training data and the number of clusters m are known, an expectation-maximization (EM) algorithm is used to estimate the parameters of the Gaussian mixture. Therefore, for fixed training data and m clusters, the parameters {right arrow over (M)} k , [S k ], and w k  are fixed. Once the training data is fixed, the key to achieve a good Gaussian mixture model is to find a suitable value for the number of clusters, m. Smaller numbers of clusters m usually generate looser models that have very weak discriminative powers. On the other hand, too large a number of clusters m will generate an over-fit model that can only recognize the training data. 
         [0083]    Refer now to  FIG. 4 , which is a flowchart of the method used to find a suitable number of clusters, m, for subscene modeling  500 . Initially, all input feature vectors  402  are randomly divided  404  into training data  406  and testing data  408 . The subscene model is then constructed as follows: 
         [0084]    1. Initialize a number of clusters equal to a small number index m (where ranges from 24≦m≦256 in a current embodiment  410 ). 
         [0085]    2. Apply the expectation-maximization (EM) algorithm  412  with m clusters on the training data  406  to obtain an m th  Gaussian mixture model. 
         [0086]    3. Test  414 : 1) the obtained m th  Gaussian mixture model on the training data  406  to obtain a training accuracy rate Accuracy training  (m); and 2) the obtained Gaussian mixture model on the testing data  408  to obtain a testing accuracy rate Accuracy testing (m). Calculate the combined accuracy rate Accuracy combined  (m)  416  as: 
         [0000]    
       
         
           
             
               
                 Accuracy 
                 combined 
               
                
               
                 ( 
                 m 
                 ) 
               
             
             = 
             
               { 
               
                 
                   
                     
                       
                         
                           Accuracy 
                           training 
                         
                          
                         
                           ( 
                           m 
                           ) 
                         
                       
                       + 
                     
                   
                 
                 
                   
                     
                       
                         
                           Accuracy 
                           testing 
                         
                          
                         
                           ( 
                           m 
                           ) 
                         
                       
                       - 
                     
                   
                 
                 
                   
                     
                       
                         c 
                         1 
                       
                       * 
                       
                          
                         
                           
                             
                               Accuracy 
                               training 
                             
                              
                             
                               ( 
                               m 
                               ) 
                             
                           
                           - 
                           
                             
                               Accuracy 
                               testing 
                             
                              
                             
                               ( 
                               m 
                               ) 
                             
                           
                         
                          
                       
                     
                   
                 
               
             
           
         
       
     
         [0000]    where c 1  is a weighting parameter that ranges from [0-0.5]. 
         [0087]    4. Increase the number of clusters m by sixteen (m+16)  418  and repeat the above steps 2-3 until the number of clusters m reaches a maximum threshold (which is 256 in a current embodiment). 
         [0088]    5. Select and output  420  the model that has the highest combined Accuracy combined  (m) rate as: 
         [0000]    
       
         
           
             arg 
              
             
               
                 max 
                 m 
               
                
               
                 ( 
                 
                   
                     Accuracy 
                     combined 
                   
                    
                   
                     ( 
                     m 
                     ) 
                   
                 
                 ) 
               
             
           
         
       
     
       E. Subscene Recognition 
       [0089]    By using the patch feature extraction and modeling processes described herein, one can generate a representation model for nearly any subscene category. The subscene can be recognized based on a representation model output corresponding to the subscene patch feature. When a new image is obtained, subscene recognition can be used to annotate each region of the image. By combining all subscene regions in an image, a complete representation of an image may be obtained. 
         [0090]    Refer now to  FIG. 5 , which is a flowchart of the overall subscene recognition scheme described herein  500 . It can be applied as follows: 
         [0091]    1. Given an input image  502 , segment  504  the input image  502  into a set of regions. Users may choose any good segmentation technique to perform the segmentation. 
         [0092]    2. Each region is divided into a set of fixed size image patches. From these patches, patch features including a color feature and a texture feature are extracted in the patch feature extraction module  506 . 
         [0093]    3. After a patch feature {right arrow over (X)} is extracted, it is used as input into different subscene models, from Model  1   508 , to Model j  510 , to Model N  512  of N models (where 1≦j≦N). Each model has a corresponding calculated output: 
         [0000]    
       
         
           
             
               O 
               i 
             
             = 
             
               
                 1 
                 K 
               
                
               
                 
                   ∑ 
                   
                     j 
                     = 
                     0 
                   
                   K 
                 
                  
                 
                   Output 
                    
                   
                     ( 
                     j 
                     ) 
                   
                 
               
             
           
         
       
     
         [0000]    where i is an index for the model of the specified sub-scene category, j is the index for the image patches, K is the number of image patches in the sub-scene and Output (j) is the image patch filter output which is calculated as: 
         [0000]    
       
         
           
             
               Output 
                
               
                 ( 
                 j 
                 ) 
               
             
             = 
             
               1 
               
                 1 
                 + 
                 
                    
                   
                     - 
                     CP 
                   
                 
               
             
           
         
       
     
         [0000]    where C is a constant parameter and P is calculated as P=log C k , k is the index for the selected cluster in the Gaussian mixture model, and C k  is the cluster output. 
         [0094]    After all the N Model outputs (e.g.  508 ,  510 ,  512 ) are obtained, the model with the maximum output is selected in voting block  514  as the recognition output  516  by the following expression: 
         [0000]    
       
         
           
             
               
                 argmax 
                 i 
               
                
               
                 ( 
                 
                   
                     O 
                     0 
                   
                   , 
                   
                     O 
                     1 
                   
                   , 
                   … 
                    
                   
                       
                   
                   , 
                   
                     O 
                     k 
                   
                   , 
                   … 
                    
                   
                       
                   
                   , 
                   
                     O 
                     N 
                   
                 
                 ) 
               
             
             . 
           
         
       
     
         [0095]    Refer now to  FIG. 6  for a flow chart  600  depicting the process of cluster selection. First, a patch input  602  is obtained. Then patch feature extraction  604  is done on the patch input  602 , which results in M output clusters, ranging from Cluster  1   606 , to Cluster k  608 , to Cluster M  610 . For each Cluster “k”  608  in the model, a respective output is calculated by: 
         [0000]        C   k   =w   k   p   k ( X   j ). 
         [0096]    After all the Cluster outputs have been obtained, the Cluster with the maximum output is selected in the voting block  612  as the image patch filter output  614  by: 
         [0000]    
       
         
           
             
               
                 argmax 
                 k 
               
                
               
                 ( 
                 
                   
                     C 
                     0 
                   
                   , 
                   
                     C 
                     1 
                   
                   , 
                   … 
                    
                   
                       
                   
                   , 
                   
                     C 
                     k 
                   
                   , 
                   … 
                    
                   
                       
                   
                   , 
                   
                     C 
                     M 
                   
                 
                 ) 
               
             
             . 
           
         
       
     
         [0097]    The above procedure is continued until all the image patch regions are processed. 
         [0098]    Embodiments of the present invention may be described with reference to equations, algorithms, and/or flowchart illustrations of methods according to embodiments of the invention. These methods may be implemented using computer program instructions executable on a computer. These methods may also be implemented as computer program products either separately, or as a component of an apparatus or system. In this regard, each equation, algorithm, or block or step of a flowchart, and combinations thereof, may be implemented by various means, such as hardware, firmware, and/or software including one or more computer program instructions embodied in computer-readable program code logic. As will be appreciated, any such computer program instructions may be loaded onto a computer, including without limitation a general purpose computer or special purpose computer, or other programmable processing apparatus to produce a machine, such that the computer program instructions which execute on the computer or other programmable processing apparatus create means for implementing the functions specified in the equation (s), algorithm(s), and/or flowchart(s). 
         [0099]    Accordingly, the equations, algorithms, and/or flowcharts support combinations of means for performing the specified functions, combinations of steps for performing the specified functions, and computer program instructions, such as embodied in computer-readable program code logic means, for performing the specified functions. It will also be understood that each equation, algorithm, and/or block in flowchart illustrations, and combinations thereof, may be implemented by special purpose hardware-based computer systems which perform the specified functions or steps, or combinations of special purpose hardware and computer-readable program code logic means. 
         [0100]    Furthermore, these computer program instructions, such as embodied in computer-readable program code logic, may also be stored in a computer readable memory that can direct a computer or other programmable processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the block(s) of the flowchart(s). The computer program instructions may also be loaded onto a computer or other programmable processing apparatus to cause a series of operational steps to be performed on the computer or other programmable processing apparatus to produce a computer-implemented process such that the instructions which execute on the computer or other programmable processing apparatus provide steps for implementing the functions specified in the equation (s), algorithm(s), and/or block(s) of the flowchart(s). 
         [0101]    From the discussion above it will be appreciated that the invention can be embodied in various ways, including the following: 
         [0102]    1. An image classification apparatus, comprising: a computer; and means for patch classifying an input image using the computer. 
         [0103]    2. The apparatus of claim  1 , wherein the means for patch classifying comprises programming executable on the computer for performing steps comprising: subscene modeling; and subscene recognition. 
         [0104]    3. The apparatus of claim  2 , wherein said subscene modeling step comprises: segmenting an input image training set from an image database into one or more segmented regions based on an input pool of N subscene categories; extracting a set of training patch feature vectors for each of the segmented regions corresponding to the input pool of N subscene categories; and forming a subscene model pool comprising training patch feature vectors for each for the input pool of N subscene categories. 
         [0105]    4. The apparatus of claim  1 , wherein the computer is capable of executing the means for patch classifying either sequentially or at least partially in parallel. 
         [0106]    5. The apparatus of claim  3 , wherein the subscene recognition step comprises: segmenting the input image into a set of input regions; extracting patch features corresponding to each of the set of input regions to form a set of extracted patch feature vectors; and filtering the set of extracted patch features against the subscene model pool to form a filtered output. 
         [0107]    6. The apparatus of claim  5 , wherein the subscene recognition step further comprises: selecting a set of Gaussian cluster outputs corresponding to one or more of the largest filtered outputs; and selecting a subscene category corresponding to the largest filtered output. 
         [0108]    7. The apparatus of claim  5 , wherein the programming performs steps further comprising: (a) setting a subscene to one of the group consisting of the training patch feature vectors and the set of extracted patch feature vectors; (b) dividing the subscene into a set of image patches; and (c) describing each image patch by a set of concatenated image patch feature vectors {right arrow over (V)} image     —     patch  comprising: a color feature vector {right arrow over (V)} color ; and a texture feature vector {right arrow over (V)} texture ; (d) wherein the subscene is in a YCbCr color space with a luminance Y channel, a blue chrominance Cb channel, and a red chrominance Cr channel. 
         [0109]    8. The apparatus of claim  7 , wherein the color feature vector {right arrow over (V)} color  is calculated for each image patch in the subscene by performing steps comprising: calculating a mean value  Y  of the luminance Y channel and mean values  Cb  and red  Cr  respectively for both the blue Cb and red Cr chrominance channels. 
         [0110]    9. The apparatus of claim  8 , wherein the color feature vector {right arrow over (V)} color  is calculated for each image patch by performing steps comprising: calculating a patch luminance variance as: 
         [0000]    
       
         
           
             
               
                 Var 
                  
                 
                   ( 
                   Y 
                   ) 
                 
               
               = 
               
                 
                   1 
                   N 
                 
                  
                 
                   
                     ∑ 
                     
                       i 
                       = 
                       1 
                     
                     N 
                   
                    
                   
                     
                       ( 
                       
                         
                           Y 
                           i 
                         
                         - 
                         
                           Y 
                           _ 
                         
                       
                       ) 
                     
                     2 
                   
                 
               
             
             ; 
           
         
       
     
         [0000]    and calculating a patch chrominance variance as: 
         [0000]    
       
         
           
             
               
                 Var 
                  
                 
                   ( 
                   CbCr 
                   ) 
                 
               
               = 
               
                 
                   1 
                   N 
                 
                  
                 
                   ( 
                   
                     
                       
                         ∑ 
                         
                           i 
                           = 
                           1 
                         
                         N 
                       
                        
                       
                         
                           ( 
                           
                             
                               Cb 
                               i 
                             
                             - 
                             
                               Cb 
                               _ 
                             
                           
                           ) 
                         
                         2 
                       
                     
                     + 
                     
                       
                         ( 
                         
                           
                             Cr 
                             i 
                           
                           - 
                           
                             Cr 
                             _ 
                           
                         
                         ) 
                       
                       2 
                     
                   
                   ) 
                 
               
             
             ; 
           
         
       
     
         [0000]    wherein N denotes a number of pixels in the image patch, Y i , Cb i , and Cr i  denote a pixel value in position i in the image patch in each of the luminance Y channel, the blue Cb, and the red Cr chrominance channels,  Y  represents the mean value of Y,  Cb  represents the mean value of Cb, and  Cr  represents the mean value of Cr. 
         [0111]    10. The apparatus of claim  9 , wherein the color feature vector {right arrow over (V)} color  is calculated for each image patch by performing steps further comprising calculating a colorfulness value as Colorfulness=|  Cb −  Cr |. 
         [0112]    11. The apparatus of claim  10 , wherein the color feature vector {right arrow over (V)} color  is calculated for each image patch by performing steps further comprising forming a 6-dimensional (6D) color feature vector ({right arrow over (V)} color ) as 
         [0000]        {right arrow over (V)}   color =(   Y ,  Cb ,  Cr ,Var ( Y ), Var ( CbCr ),Colorfulness). 
         [0113]    12. The apparatus of claim  11 , wherein the texture feature vector {right arrow over (V)} texture  is calculated for each image patch in the subscene by performing steps comprising: performing an edge detection procedure on the luminance channel (Y domain) to generate a set of edge points; and categorizing each edge point into one of nine classes according to their gradient directions, which are rounded to integer degrees into one of nine directions selected from the group of directions consisting of: D 0  (−10° to +10°), D 1  (11° to 30°), D 2  (31° to 50°), D 3  (51° to 70°), D 4  (71° to 90°), D 5  (91° to 110°), D 6  (111° to 130°), D 7  (131° to 150°), and D 8  (151° to 170°). 
         [0114]    13. The apparatus of claim  12 , wherein the texture feature vector {right arrow over (V)} texture  is calculated for each image patch in the subscene according to 
         [0000]    
       
         
           
             
               D 
               U 
             
             = 
             
               
                 ∑ 
                 
                   
                     Direction 
                      
                     
                       ( 
                       
                         Edge 
                          
                         
                           ( 
                           
                             i 
                             , 
                             j 
                           
                           ) 
                         
                       
                       ) 
                     
                   
                   = 
                   U 
                 
               
                
               
                  
                 
                   Edge 
                    
                   
                     ( 
                     
                       i 
                       , 
                       j 
                     
                     ) 
                   
                 
                  
               
             
           
         
       
     
         [0000]    where U is the direction index, Uε(D 0 , D 1 , D 2 , D 3 , D 4 , D 5 , D 6 , D 7 , D 8 ), (i,j) denotes the point position within the range of the image patch, and ∥Edge (i,j)∥ denotes the edge strength (amplitude of the gradient). 
         [0115]    14. The apparatus of claim  13 , wherein the texture feature vector {right arrow over (V)} texture  is calculated by performing steps comprising forming a concatenated 9-dimensional (9D) texture feature vector ({right arrow over (V)} texture ), where 
         [0000]        {right arrow over (V)}   texture =( D   0   ,D   1   ,D   2   ,D   3   ,D   4   ,D   5   ,D   6   ,D   7   ,D   8 ). 
         [0116]    15. The apparatus of claim  14 , wherein each of the image patch feature vectors {right arrow over (V)} image     —     patch  is calculated by performing steps comprising forming a concatenated 15-dimensional (15D) texture feature vector {right arrow over (V)} image     —     patch , where {right arrow over (V)} image     —     patch =({right arrow over (V)} color ,{right arrow over (V)} texture ) and where {right arrow over (V)} image     —     patch  written in detail comprises 
         [0000]    
       
         
           
             
               
                 V 
                  
               
               image_patch 
             
             = 
             
               
                 ( 
                 
                   
                     
                       
                         
                           Y 
                           _ 
                         
                         , 
                         
                           Cb 
                           _ 
                         
                         , 
                         
                           Cr 
                           _ 
                         
                         , 
                         
                           Var 
                            
                           
                             ( 
                             Y 
                             ) 
                           
                         
                         , 
                         
                           Var 
                            
                           
                             ( 
                             CbCr 
                             ) 
                           
                         
                         , 
                         Colorfulness 
                         , 
                       
                     
                   
                   
                     
                       
                         
                           D 
                           0 
                         
                         , 
                         
                           D 
                           1 
                         
                         , 
                         
                           D 
                           2 
                         
                         , 
                         
                           D 
                           3 
                         
                         , 
                         
                           D 
                           4 
                         
                         , 
                         
                           D 
                           5 
                         
                         , 
                         
                           D 
                           6 
                         
                         , 
                         
                           D 
                           7 
                         
                         , 
                         
                           D 
                           8 
                         
                       
                     
                   
                 
                 ) 
               
               . 
             
           
         
       
     
         [0117]    16. The apparatus of claim  3 , wherein the subscene modeling step comprises selecting an optimal number of clusters in the step of forming the subscene model pool. 
         [0118]    17. The apparatus of claim  1 , wherein the means for patch classifying is stored on a computer readable medium. 
         [0119]    18. The apparatus of claim  2 , wherein the subscene recognition step is performed on a set of photographs. 
         [0120]    19. An image classification apparatus, comprising: a computer; and programming executable on the computer for patch classifying an input image by performing steps comprising: subscene recognition; and subscene modeling; wherein the programming performs the subscene modeling step by performing steps comprising: segmenting an input image training set from an image database into one or more segmented regions based on an input pool of N subscene categories; extracting a set of training patch feature vectors for each of the segmented regions corresponding to the input pool of N subscene categories; and forming a subscene model pool comprising training patch feature vectors for each for the input pool of N subscene categories. 
         [0121]    20. The apparatus of claim  19 , wherein programming is stored on a computer readable medium in either source code or object code. 
         [0122]    21. An image classification apparatus, comprising: a computer; and programming executable on the computer for patch classifying an input image by performing steps comprising: subscene modeling; and subscene recognition. 
         [0123]    22. A computer readable medium wherein the programming of claim  21  is stored. 
         [0124]    Although the description above contains many details, these should not be construed as limiting the scope of the invention but as merely providing illustrations of some of the presently preferred embodiments of this invention. Therefore, it will be appreciated that the scope of the present invention fully encompasses other embodiments which may become obvious to those skilled in the art, and that the scope of the present invention is accordingly to be limited by nothing other than the appended claims, in which reference to an element in the singular is not intended to mean “one and only one” unless explicitly so stated, but rather “one or more.” All structural, chemical, and functional equivalents to the elements of the above-described preferred embodiment that are known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the present claims. Moreover, it is not necessary for a device or method to address each and every problem sought to be solved by the present invention, for it to be encompassed by the present claims. Furthermore, no element, component, or method step in the present disclosure is intended to be dedicated to the public regardless of whether the element, component, or method step is explicitly recited in the claims. No claim element herein is to be construed under the provisions of 35 U.S.C. 112, sixth paragraph, unless the element is expressly recited using the phrase “means for.”