# Patent

## Title
Progressive video detection with aggregated block SADS

## Abstract

A method for detecting progressive material in a video sequence is disclosed. The method generally includes the steps of (A) calculating a plurality of block statistics for each of a plurality of blocks in a current field of the video sequence, (B) calculating a plurality of field statistics by summing the block statistics over all of the blocks in the current field, (C) calculating a noise level for the current field based on a subset of the block statistics from each of the blocks and (D) generating a mode flag for the current field based on both (i) the field statistics and (ii) the noise level, wherein the mode flag identifies if the current field is part of a 2:2 pull-down pattern.

## Background
CROSS REFERENCE TO RELATED APPLICATIONS
This application is related to U.S. patent applications Ser. No. 11/272,300, filed Nov. 10, 2005, Ser. No. 11/314,631, filed Dec. 20, 2005 and Ser. No. 11/343,119, filed Jan. 30, 2006 which are hereby incorporated by reference in their entirety.
FIELD OF THE INVENTION
The present invention relates to inverse telecine generally and, more particularly, to progressive video detection with aggregated block sum-of-absolute-differences.
BACKGROUND OF THE INVENTION
Distinguishing telecined progressive video from normally interlaced video is significant for both video display and video encoding. If a high quality progressive display is intended, a good solution for a telecined progressive source of video is to correctly “weave” together pairs of associated fields for display as individual frames. In contrast, normally interlaced video is de-interlaced for display as a sequence of frames, a process that is not perfect and involves many tradeoffs. For compression, if the format of the video can be correctly discerned and the parity of progressive video identified (i.e., the correct association between a top field and a bottom field of a frame), then compression quality can be much higher by coding the video as natively progressive, instead of individually coding the interlaced fields (which must be done if the progressive format cannot be identified).
Conventional solutions for detecting interlaced fields originating from progressive frames use pixel differences and look for “combing” artifacts in the video. The pixel differences and combing artifacts can distinguish normally interlaced video from telecined progressive video. In addition, combing artifacts are found in frames formed from the two possible different woven combinations of fields (i.e., a top field with a next bottom field and the top field with a previous bottom field, respectively) to correctly identify the parity of a progressive video source.
The conventional solutions are easily fooled by vertical motion and/or by low motion. In such cases, the combing artifacts do not always appear in interlaced material. Therefore, the conventional solutions sometimes incorrectly identify an interlaced source as a progressive source and/or are unable to discern the correct parity of a progressive source in the absence of horizontal motion. In addition, the conventional solutions have difficulty with material having significant vertical details (i.e., high vertical frequency material), which are often incorrectly classified as combing artifacts, leading to false positives and negatives.
SUMMARY OF THE INVENTION
The present invention concerns a method for detecting progressive material in a video sequence. The method generally comprises the steps of (A) calculating a plurality of block statistics for each of a plurality of blocks in a current field of the video sequence, (B) calculating a plurality of field statistics by summing the block statistics over all of the blocks in the current field, (C) calculating a noise level for the current field based on a subset of the block statistics from each of the blocks and (D) generating a mode flag for the current field based on both (i) the field statistics and (ii) the noise level, wherein the mode flag identifies if the current field is part of a 2:2 pull-down pattern.
The objects, features and advantages of the present invention include providing progressive video detection with aggregated block sum-of-absolute-differences that may (i) provide improved 2:2 pull-down performance compared with conventional techniques, (ii) use block sum-of-absolute-difference statistics, (iii) reduce overall system complexity and/or (iv) provide good performance compared with conventional approaches.



BRIEF DESCRIPTION OF THE DRAWINGS
These and other objects, features and advantages of the present invention will be apparent from the following detailed description and the appended claims and drawings in which:
FIG. 1 is a block diagram of an example implementation of a system in accordance with a preferred embodiment of the present invention;
FIG. 2 is a flow diagram of an example method for a unified approach to film mode detection;
FIG. 3 is a flow diagram of an example implementation of a method for film mode decision making;
FIG. 4 is a diagram of an example sequence of video fields;
FIG. 5 is a diagram of a portion of several fields;
FIG. 6 is example pseudo code for determining how stationary a picture is in a current field;
FIG. 7 is an example set of equations for calculating multiple intermediate variables used in a decision making process;
FIG. 8 is an example pseudo code for determining a direction variable;
FIG. 9 is an example set of equations for calculating multiple interlacing indicators;
FIG. 10 is an example set of equations for calculating multiple progressive indicators;
FIG. 11 is an example pseudo code for deciding if the current field originated from a progressive material; and
FIGS. 12-14 are tables of simulation results for a 2:2 pull-down detection method.



DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
Multiple Sum-of-Absolute-Difference (SAD) calculations may be used for basic statistical computations of blocks (e.g., 8×8 pixels) in a video sequence. Several (e.g., 10) field statistics may be calculated based on the block SADs (e.g., block statistics) for each field in the video sequence. The field statistics generally permit discrimination between progressive material and non-progressive material present in the video. The field statistics may also be used to identify a parity (e.g., an odd parity or an even parity) of the progressive material.
A noise level estimation and a motion level estimation are generally used to classify blocks. The block classifications may be used to control the block statistic contributions to the field statistics. Control of the block statistic contributions may ensure that only significant blocks are used for distinguishing progressive material. The control generally aids in improving the quality of the field statistic metrics used for the discrimination.
Referring to FIG. 1, a block diagram of an example implementation of a system 100 is shown in accordance with a preferred embodiment of the present invention. The system (or circuit) 100 may be referred to as a network media system. The network media system 100 generally comprises a circuit (or module) 102 and a circuit (or module) 104. An input signal (e.g., IN) may be received by the circuit 102. The circuit 102 may generate an output signal (e.g., OUT). The circuit 102 may be in communication with the circuit 104 to move video data and video-related information back and forth.
The signal IN may be an analog video signal or a digital video signal that has undergone telecine processing. The signal IN generally comprises a sequence of interlaced-format fields created from a sequence of film frames, a sequence of cartoon frames and/or a normally interlaced material. The signal OUT may be an analog video signal or a digital video signal. The signal OUT generally comprises a sequence of progressive-format frames with some possible interlaced fields mixed within. The frames may be created by inverse telecine processing the interlaced fields received in the signal IN.
The circuit 102 may be referred to as a media processor circuit. The media processor circuit 102 may be operational to gather statistics on the fields from the video signal IN. The media processor circuit 102 may also detect if the fields are in a 3:2 pull-down pattern to control a plurality of 3:2 pull-down flags based on a plurality of statistics gathered from the fields. Simultaneously, the media processor circuit 102 may detect if the fields contain moving interlaced text to control a moving interlaced text flag based on both (i) the statistics and (ii) a repeat-field flag of the 3:2 pull-down flags that indicates a repeating consecutive same polarity field. The media processor may be further configured to detect if the fields are in a 2:2 pull-down pattern based on the statistics to control a plurality of 2:2 pull-down flags. Furthermore, the media processor circuit 102 may decide among a plurality of inverse telecine processes to de-interlace said fields based on all of (i) a 3:2 mode flag, (ii) a 3:2 direction flag, (iii) the moving interlaced text flag, (iv) a 2:2 mode flag and (v) a 2:2 direction flag. A decision may then be made to allocate one or more inverse telecine processes to convert the interlaced fields into frames based on the flags. If the decision is “no weaving”, the video out circuit 112 may use other de-interlacing methods to generate progressive frames (e.g., the signal OUT may still carry progressive frames, just not generated from “weaving”.) The decision may include a solution not to inverse telecine the fields, thus presenting the interlaced fields in the signal OUT.
The circuit 104 may be referred to as a memory circuit. The memory circuit 104 may be operational to temporarily buffer digital versions of the interlaced fields and digital versions of the progressive frames. The memory circuit 104 may be implemented as a single data rate (SDR) dynamic random access memory (DRAM) or a double data rate (DDR) DRAM. Other memory technologies may be implemented to meet the criteria of a particular application.
The media processor circuit 102 generally comprises a circuit (or module) 106, a circuit (or module) 108, a circuit (or module) 110 and a circuit (or module) 112. The circuit 106 may receive the signal IN. The signal OUT may be generated and presented by the circuit 112. All of the circuits 106, 108, 110 and 112 may be in communication with the memory circuit 104 to read and write video data, video-related information and other data.
The circuit 102 may be referred to as a video capture circuit. The video capture circuit 102 may be operational to capture (e.g., digitize) the interlaced fields from the signal IN. In some embodiments, the video capture circuit 102 may also be operational to gather statistics from the fields of the signal IN.
The circuit 108 may be referred to as a processor circuit. The processor circuit 108 may be operational control the overall operations of the network media system 100. The processor circuit 108 may be implemented as a SPARC processor. Other processor technologies may be implemented to meet the criteria of a particular application.
The circuit 110 may be referred to as a video digital signal processor (VDSP) circuit. The VDSP circuit 110 may be operational to perform high speed processing on the video data. In some embodiments, the VDSP circuit 110 may be operational to gather the statistics from the fields in the signal IN.
The circuit 112 may be referred to as a video output circuit. The video output circuit 112 is generally operational to generate the signal OUT. The video output circuit 112 may include a de-interlacing capability (or block) for generating progressive-format frames. The de-interlacing capability may provide one or more methods (or processes) for de-interlacing the interlaced fields.
Referring to FIG. 2, a flow diagram of an example method 120 for a unified approach to film mode detection is shown. The method (or process) 120 generally comprises a step (or block) 122, a step (or block) 124, a step (or block) 126, a step (or block) 128 and a step (or block) 130.
For each input field received in the input signal IN, the video capture module 106 and/or the VDSP circuit 110 may gather (or calculate) statistics from the fields in the step 122. The statistics may be used by other steps to decide how to covert the fields into frames for the output signal OUT. Further details regarding the statistics are generally provided below.
Based on the gathered statistics, a 3:2 pull-down detection may be performed by the VDSP circuit 110 in the step 124. The detection may determine whether or not a regular 3:2 pull-down pattern exists in the input field sequence. The VDSP circuit 110 may generate one or more binary 3:2 pull-down flags (e.g., a telecine mode flag MODE32, a direction flag DIR32 and a repeated field flag REPEAT_FIELD32) as a result of the detection operation. When the flag MODE32 is asserted (e.g., a logical one or boolean true), the detected sequence is locked into the 3:2 pull-down mode. If the flag MODE32 is de-asserted (e.g., a logical zero or boolean false), the 3:2 pull-down mode has not been detected. In a case where MODE32 is asserted and DIR32 has a reverse direction (e.g., a logical one or “1”), the current field (e.g., fN) and a preceding field (e.g., fN−1) may have been detected as originating from a same progressive frame. In a case where MODE32 is asserted and DIR32 has a forward direction (e.g., a logical zero or “0”) the current field fN and a next field (e.g., fN+1) may have been detected as originating from a same progressive frame. An assertion (e.g., a logical one or boolean true) of the flag REPEAT_FIELD32 generally indicates that the current field fN has been detected as a repeated field of a previous same-polarity field (e.g., fN−2). A de-assertion (e.g., a logical zero of boolean false) of the flag REPEAT_FIELD32 generally indicates that the current field fN has not been detected as a repeated field. The flag PREPEAT_FIELD32 may be available to the step 128. Further details of the 3:2 pull-down detection may be found in the co-pending U.S. patent application Ser. No. 11/272,300.
Based on the gathered statistics, a 2:2 pull-down detection may be performed by the VDSP circuit 110 in the step 126. The detection may determine whether or not a regular 2:2 pull-down pattern exists in the input field sequence. The VDSP circuit 110 may generate one or more binary 2:2 pull-down flags (e.g., a mode flag MODE22 and a direction flag DIR22) as a result of the detection operation. An assertion (e.g., a logical one or boolean true) of the flag MODE22 generally means that the sequence of fields is locked into the 2:2 pull-down mode. A de-assertion (e.g., a logical zero or boolean false) of the flag MODE22 may indicate that the 2:2 pull-down pattern was not detected. In a case where MODE22 is asserted and DIR22 indicates a reverse direction, the current field fN and the preceding field fN−1 may have been detected as originating from a same progressive frame. In a case where MODE22 is asserted and DIR22 is de-asserted, the current field fN and the following field fN+1 may have been detected as originating from a same progressive frame. Further details of the 2:2 pull-down detection may be found in the co-pending U.S. patent application Ser. No. 11/272,300.
In the step 128, the VDSP circuit 110 may check the fields to determine if moving interlaced text is present. If moving interlaced is detected, the VDSP circuit 110 may also determine (i) if the movement is vertical or horizontal and (ii) if rows or columns contain the moving text as part of the step 128. The VDSP circuit 110 may generate a binary moving interlaced text flag (e.g., FIELD_MIT) as a result of the detection operation. The flag FIELD_MIT generally indicates whether or nor the current field fN contains moving interlaced text. An assertion (e.g., a logical one or boolean true) of the flag FIELD_MIT generally means that the moving interlaced text has been detected. A de-assertion (e.g., a logical zero or boolean false) of the flag FIELD_MIT generally indicates that no moving interlaced text was detected. Further details of the moving interlaced text detection may be found in the co-pending U.S. patent application Ser. No. 11/343/119.
A final film mode decision is generally made by the VDSP circuit 110 in the step 130 according to a set of rules. The decision may be responsive to the flags MODE32, DIR32, MODE22, DIR22 and FIELD_MIT. Based on the decision, one among a number of inverse telecine processes may be identified to de-interlace the fields back into progressive frames.
Referring to FIG. 3, a flow diagram of an example implementation of a method 140 for film mode decision making is shown. The method (or process) 140 generally comprises a step (or block) 142, a step (or block) 144, a step (or block) 146, a step (or block) 148, a step (or block) 150, a step (or block) 152, a step (or block) 154, a step (or block) 156, a step (or block) 158, a step (or block) 160 and a step (or block) 162.
The method 140 generally starts by checking if the flag MODE32 and/or the flag MODE22 are asserted in the step 142. If neither of the flags MODE32 and MODE22 are asserted (e.g., the NO branch of step 142), the decision presented in the step 144 may indicate that the interlaced fields are part of an original interlaced sequence (e.g., a non-telecine sequence) and thus the weave inverse telecine process should not be used. Furthermore, the non-telecine fields may be de-interlaced by the video output circuit 112 to generate progressive frames in the signal OUT.
If at least one of the flags MODE32 and MODE22 is asserted (e.g., the YES branch of the step 142), a check may be made of the flag FIELD_MIT in the step 146. If the flag FIELD_MIT is asserted to indicate moving interlaced text (e.g., the YES branch of step 146), the decision presented in the step 148 may indicate use of a non-weave inverse telecine process (e.g., the “bob” process). If the flag FIELD_MIT is de-asserted to indicate that no moving interlaced text was detected (e.g., the NO branch of the step 146), a check may be made of the flag MODE32 in the step 150.
If the flag MODE32 is de-asserted (e.g., the YES branch of the step 150), a check of the flag DIR32 may be performed in the step 152. If the flag DIR32 indicates the reverse direction (e.g., the YES branch of the step 152), the decision presented in the step 154 may indicate the weave inverse telecine process to combine the current field fN with the previous field fN−1. If the flag DIR32 indicates the forward direction (e.g., the NO branch of the step 152), the decision presented in the step 156 may indicate the weave inverse telecine process to combine the current field fN with the next field fN+1. 
If the flag MODE32 is de-asserted (e.g., the NO branch of the step 150), a check of the flag DIR22 may be performed in the step 158. If the flag DIR22 indicates the reverse direction (e.g., the YES branch of the step 158), the decision presented in the step 160 may indicate use of the weave inverse telecine process to combine the current field fN with the previous field fN−1. If the flag DIR22 indicates the forward direction (e.g., the NO branch of the step 158), the decision presented in the step 162 may indicate use of the weave inverse telecine process to combine the current field fN with the next field fN+1. Further details of the decision making may be found in the co-pending U.S. patent application Ser. No. 11/314,631.
Referring to FIG. 4, a diagram of an example sequence 170 of video fields is shown. The video fields generally comprise alternating odd-parity fields and even-parity fields. The video fields may originate from a progressive source (e.g., film) interlaced through a telecine process or interlaced video.
Let f0, f1, f2, . . . be a sequence of the video fields. For the purposes of discussion, the polarity of the first field f0 is assumed to be known. Furthermore, a field fN may be referred to as a current field, a field fN−1 may be referred to as a previous field (in time) and a field fN+1 may be referred to as a next field (in time). In addition, the top-most line in a strip (or a field) may be conventionally considered an even line. Let a variable (e.g., CURRENT_STATE) represent the current status of a 2:2 pull-down detection. The variable CURRENT_STATE generally takes one of two values from a set {PROGRESSIVE, INTERLACED}.
Detection of progressive 2:2 pull-down material generally involves gathering of statistics both internal to the fields and from field-to-field. The VDSP module 110 may be operational to execute an instruction (e.g., abserr(IN0, IN1)) that may take two pel-strips, denoted as IN0 and IN1, as inputs and return the following four results:
|IN0 even−IN1 even|: the sum-of-absolute-differences (SAD) between the even lines co-located in IN0 and IN1.
|IN0 odd−IN1 odd|: the SAD between the odd lines co-located in IN0 and IN1.
|IN0 even−IN1 odd|: the SAD between the even lines in IN0 and the neighboring odd lines in IN1.
|IN0 odd−IN0 even|: the SAD between the odd lines in IN0 and the neighboring even lines in IN0.
In the unified approach to film mode decision, two abserr instructions may be used per block (e.g., 8×8 pixels) to gather the statistics used to check for the moving interlaced text. FIG. 4, columns (A) and (B) generally illustrate a first case when the current field fN is a top field. FIG. 4, columns (C) and (D) generally illustrate a second case when the current field fN is a bottom field.
The following two VDSP instructions may be issued for each 8×8 block in the first case where the current field fN is the top field:

abserr(IN0=fN−1,IN1=fN+1)  (1)

abserr(IN0=fN+1,IN1=fN)  (2)

From the first abserr in (1) above, the statistics obtained from (1) and (2) include, but are not limited to:

SadPrevNext[y][x]=|fN−1even−fN+1even|+|fN−1odd−fN+1odd|  (3)

where y and x generally define block indices in a vertical direction and a horizontal direction in the field, respectively. The value |fN−1 even−fN+1 even| from (3) may be visualized as a difference between a previous field pixel and a next field pixel, see for example arrows 172 and 192. The value |fN−1 odd−fN+1 odd| from (3) may be between a previous field pixel and a next field pixel, see for example arrows 174 and 194.

From the second abserr in (2) above, the following three statistics may be obtained:

SadCurrNext1[y][x]=|fN+1even−fNeven|+|fN+1odd−fNodd|  (4)

SadCurrNext2[y][x]=|fN+1even−fNodd|*2  (5)

VerAct2[y][x]=|fN+1odd−fN−1even|*2  (6)

where in (5) and (6), the multiplicative factors of 2 may make the above four statistics (e.g., (3), (4), (5) and (6)) contain the same number of absolute differences. The value |fN+1even−fN even| from (4) may be between a current field pixel and a next field pixel, see for example arrows 178 and 198. The value |fN+1 odd−fN odd| from (4) may be between a current field pixel and a next field pixel, see for example arrows 180 and 200. The value |fN+1 even−fN odd| from (5) may be between a current field pixel and a next field pixel, see for example arrows 182 and 202. The value |fN+1 odd−fN+1 even| from (6) may be between two next field pixels, see for example arrows 176 and 196.

In the above four statistics, the statistic SadPrevNext is generally a measure of the same-parity SAD. The statistics SadCurrNext1 and SadCurrNext2 are generally measures of opposite-parity SADs and may be thought of as frame vertical activities of the frame formed from weaving fields fN and fN+1. The statistic VerAct2 is generally a measure of the field vertical activity of the bottom field fN+1. The case where fN is a bottom field may be similar with the case where fN is a top field, except that the abserr instruction in (2) is replaced by the following:

abserr(IN0=fN,IN1=fN+1)  (7)

The difference may make |IN0 even−IN1 odd| meaningful as a measure of the frame vertical activity. Note that the abserr in (7) may also give the vertical activity of the bottom field fN from |IN0 odd−IN1 odd|. However, the vertical activity result is already available from processing the previous field fN−1 (see arrow 176 in FIG. 4(A)). As such, the field vertical activities may be calculated only for bottom fields. Note also that in the stage of processing the current field fN, the following statistics may be realized, not are not limited to:

    
    
        SadPrevCurr1: similar to (4), but calculated from fN−1 and fN,
        SadPrevCurr2: similar to (5), but calculated from fN−1 and fN,
        VerAct1: similar to (6), but calculated from fN−1 when fN is the top field and calculated from fN−2 when fN is the bottom field.
    
    


Referring to FIG. 5, a diagram of a portion of several fields is shown. Based on the above block statistics (1) through (7), the following field statistics (variables) may be defined:




  
    
      
        
          S
          0
        
        =
        
          
            ∑
            
              y
              ,
              x
            
          
          ⁢
          
            
            
              
                SadPrevCurr
                ⁢
                
                  
                
                ⁢
                
                  
                    1
                    ⁡
                    
                      [
                      y
                      ]
                    
                  
                  ⁡
                  
                    [
                    x
                    ]
                  
                
              
              -
              
                SadPrevCurr
                ⁢
                
                  
                
                ⁢
                
                  
                    2
                    ⁡
                    
                      [
                      y
                      ]
                    
                  
                  ⁡
                  
                    [
                    x
                    ]
                  
                
              
            
            
          
        
      
    
    
      
        (
        8
        )
      
    
  
  
    
      
        
          S
          1
        
        =
        
          
            ∑
            
              y
              ,
              x
            
          
          ⁢
          
            
            
              
                SadCurrNext
                ⁢
                
                  
                
                ⁢
                
                  
                    1
                    ⁡
                    
                      [
                      y
                      ]
                    
                  
                  ⁡
                  
                    [
                    x
                    ]
                  
                
              
              -
              
                SadCurrNext
                ⁢
                
                  
                
                ⁢
                
                  
                    2
                    ⁡
                    
                      [
                      y
                      ]
                    
                  
                  ⁡
                  
                    [
                    x
                    ]
                  
                
              
            
            
          
        
      
    
    
      
        (
        9
        )
      
    
  
  
    
      
        
          S
          2
        
        =
        
          
            ∑
            
              y
              ,
              x
            
          
          ⁢
          
            
            
              
                SadPrevCurr
                ⁢
                
                  
                
                ⁢
                
                  
                    1
                    ⁡
                    
                      [
                      y
                      ]
                    
                  
                  ⁡
                  
                    [
                    x
                    ]
                  
                
              
              -
              
                SadCurrNext
                ⁢
                
                  
                
                ⁢
                
                  
                    1
                    ⁡
                    
                      [
                      y
                      ]
                    
                  
                  ⁡
                  
                    [
                    x
                    ]
                  
                
              
            
            
          
        
      
    
    
      
        (
        10
        )
      
    
  
  
    
      
        
          
            
              
                S
                3
              
              =
              
                
                  ∑
                  
                    y
                    ,
                    x
                  
                
                ⁢
                
                  
                  
                    
                      SadPrevCurr
                      ⁢
                      
                        
                      
                      ⁢
                      
                        
                          2
                          ⁡
                          
                            [
                            y
                            ]
                          
                        
                        ⁡
                        
                          [
                          x
                          ]
                        
                      
                    
                    -
                    
                      SadCurrNext
                      ⁢
                      
                        
                      
                      ⁢
                      
                        
                          2
                          ⁡
                          
                            [
                            y
                            ]
                          
                        
                        ⁡
                        
                          [
                          x
                          ]
                        
                      
                    
                    -
                  
                
              
            
          
        
        
          
            
              
                SadCurrNext
                ⁢
                
                  
                
                ⁢
                
                  
                    2
                    ⁡
                    
                      [
                      y
                      ]
                    
                  
                  ⁡
                  
                    [
                    x
                    ]
                  
                
              
              
            
          
        
      
    
    
      
        (
        11
        )
      
    
  
  
    
      
        
          S
          4
        
        =
        
          
            ∑
            
              y
              ,
              x
            
          
          ⁢
          
            Ver
            ⁢
            
              
            
            ⁢
            Act
            ⁢
            
              
            
            ⁢
            
              
                1
                ⁡
                
                  [
                  y
                  ]
                
              
              ⁡
              
                [
                x
                ]
              
            
          
        
      
    
    
      
        (
        12
        )
      
    
  
  
    
      
        
          S
          5
        
        =
        
          
            ∑
            
              y
              ,
              x
            
          
          ⁢
          
            VerAct
            ⁢
            
              
            
            ⁢
            
              
                2
                ⁡
                
                  [
                  y
                  ]
                
              
              ⁡
              
                [
                x
                ]
              
            
          
        
      
    
    
      
        (
        13
        )
      
    
  
  
    
      
        
          S
          6
        
        =
        
          
            ∑
            
              y
              ,
              x
            
          
          ⁢
          
            SadPrevCurr
            ⁢
            
              
            
            ⁢
            
              
                1
                ⁡
                
                  [
                  y
                  ]
                
              
              ⁡
              
                [
                x
                ]
              
            
          
        
      
    
    
      
        (
        14
        )
      
    
  
  
    
      
        
          S
          7
        
        =
        
          
            ∑
            
              y
              ,
              x
            
          
          ⁢
          
            SadPrevCurr
            ⁢
            
              
            
            ⁢
            
              
                2
                ⁡
                
                  [
                  y
                  ]
                
              
              ⁡
              
                [
                x
                ]
              
            
          
        
      
    
    
      
        (
        15
        )
      
    
  
  
    
      
        
          S
          8
        
        =
        
          
            ∑
            
              y
              ,
              x
            
          
          ⁢
          
            SadCurrNext
            ⁢
            
              
            
            ⁢
            
              
                1
                ⁡
                
                  [
                  y
                  ]
                
              
              ⁡
              
                [
                x
                ]
              
            
          
        
      
    
    
      
        (
        16
        )
      
    
  
  
    
      
        
          S
          9
        
        =
        
          
            ∑
            
              y
              ,
              x
            
          
          ⁢
          
            SadCurrNext
            ⁢
            
              
            
            ⁢
            
              
                2
                ⁡
                
                  [
                  y
                  ]
                
              
              ⁡
              
                [
                x
                ]
              
            
          
        
      
    
    
      
        (
        17
        )
      
    
  




In the above, all the summations may be over all of the blocks in a field. The relationships among the field statistics is generally illustrated in FIG. 5, for a case when fN is a top field.

A noise level (e.g., NOISE) for the current field fN may be estimated at the block level as the minimum of SadPrevNext [y] [x], excluding the blocks in the top row, bottom row, left-most column, and right-most column. The variable NOISE may be calculated as follows:




  
    
      
        NOISE
        =
        
          
            min
            
              
                0
                <
                x
                <
                
                  
                    W
                    8
                  
                  -
                  1
                
              
              
                0
                <
                y
                <
                
                  
                    H
                    8
                  
                  -
                  1
                
              
            
          
          ⁢
          
            (
            
              
                SadPrevNext
                ⁡
                
                  [
                  y
                  ]
                
              
              ⁡
              
                [
                x
                ]
              
            
            )
          
        
      
    
    
      
        (
        18
        )
      
    
  




where H is a field height and W is a field width of the input sequence. A variable (e.g., SadvarFlag) may be defined as the number of blocks (excluding the boundary blocks) with SadPrevNext greater than S*NOISE, where S is a constant (e.g., S=8). Such “noisy” blocks may be thought of as moving blocks.

A motion level estimation may be calculated for the current field fN. According to SadPrevNext and the estimated noise level, the current field fN may be roughly categorized into one of three classes (e.g., fast motion, slow motion, and stationary). A variable (e.g., MOTION_LEVEL) may be defined in the following to indicate the three classes:












 If there are > 128 non-boundary blocks with SadPrevNext > 1024








+ NOISE, then MOTION_LEVEL = 0
// fast motion







 else if there are > 128 non-boundary blocks with SadPrevNext








> 256 + NOISE, then MOTION_LEVEL = 1
// slow motion


 otherwise, MOTION_LEVEL = 2.
// stationary









A variable (e.g., SCENE_CHANGE) may be defined as a binary flag to indicate that the current field fN is involved in a scene change. The variable SCENE_CHANGE may be derived only when the current field fN is a top field as follows:

    
    
        If min(S4, S5)*4<max(S4, S5), then SCENE_CHANGE=1; else SCENE_CHANGE=0.

Note that the field statistics S4 and S5 are generally measures of the vertical activities of two consecutive bottom fields. If two consecutive bottom fields have dramatically different vertical activities, then a scene change has likely occurred between the two consecutive bottom fields.

    
    


Referring to FIG. 6, example pseudo code for determining how stationary a picture is in the current field fN is shown. A variable (e.g., CLOSE_TO_STATIONARY) is generally derived to indicate one among several stationary degrees (e.g., strong indication of stationary, weak indication of stationary, very weak indication of stationary and no indication of stationary). The variable CLOSE_TO_STATIONARY may be determined as shown FIG. 6. If the sequence is stationary from the previous field fN−1 to the next field fN+1, the field statistics S2 and S3 should small relative to S0, S1, S6, S7, S8, and S9.
Referring to FIG. 7, an example set of equations for calculating multiple intermediate variables used in a decision making process is shown. A first intermediate variable (e.g., INCONSIST[ ]) generally comprises a multi-entry (e.g., 4-entry) array. In FIG. 7, MXAINTER=max(|S6−S8|, |S7−S9|) and MNAINTER=min(|S6−S8|, |S7−S9|). The statistic Sik is generally the statistics Si in processing the field fN−k, for k=1, 2, 3, and 4. The variables MXAINTERk and MNAINTERk may be calculated from Sik. The function “sgn” is generally defined as sgn(x)=1 if x>0, sgn(x)=−1 if x<0, and sgn(0)=0. The terminology (top?1:−1) generally returns 1 if the current field is a top field and −1 if the current field is a bottom field.
Referring to FIG. 8, an example pseudo code for determining a direction variable (e.g., FORWARD) is shown. A variable (e.g., S_FORWARD) may be defined as a summation of several (e.g., 5) most recent values of FORWARD, including the current value.
Referring to FIG. 9, an example set of equations for calculating multiple interlacing indicators is shown. Four variables (e.g., IIND1, IIND2, IIND3, and IIND4) may derived as indicators of an interlacing sequence. Larger values of the indicators IIND1 through IIND4 generally indicate a greater likelihood that the current field fN originated as a normally interlaced field.
Considering the indicator IIND2 for an interlaced sequence, (i) the field statistics S6 and S7 should be very close to S8 and S9, (ii) a difference S0-S1 should have random signs in the most recent several (e.g., 5) fields and (iii) a difference max(S6,S7)−max(S8,S9) should have random signs in the most recent several (e.g., 5) fields. In the indicator IIND3 for the interlaced sequence, (i) the field statistics S0 and S1 should be very close to each other and (ii) either IIND2==1 or S0 and S1 may be much smaller than S2 and S3. In the indicator IIND4 for the interlaced sequence, spatial (vertical) activities should be much less than temporal activities.
Referring to FIG. 10, an example set of equations for calculating multiple progressive indicators is shown. Four variables (e.g., PIND1, PIND2, PIND3 and PIND4) may be derived as indicators of a progressive sequence. Larger values of the indicators PIND1 through PIND4 generally indicate a greater likelihood that the current field fN originated from a progressive frame.
Referring to FIG. 11, an example pseudo code for deciding if the current field originated from a progressive material is shown. The variable PREV_PROGFWD may carry a value of a variable PROGFWD calculated in processing the previous field fN−1. The mode flag MODE22 may be asserted/deasserted according to the state of the variable CURRENT_STATE. The direction flag DIR22 may be asserted/deasserted according to the variable PROGFWD.
Referring to FIGS. 12-14, tables of simulation results for the above 2:2 pull-down detection method are shown. The detection method (or process) is tested on 18 interlaced sequences and 18 progressive sequences. To test how fast the detection method locked to the correct mode, an initial state was set (i) to “PROGRESSIVE” for the interlaced sequences and (ii) to “INTERLACED” for the progressive sequences.
In the simulations, a “false negative” generally means that a field in a progressive sequence was improperly detected as an interlaced field. A “false positive” generally means that a field in an interlaced sequence was improperly detected as a field from a progressive frame. In FIGS. 12 and 13, the numbers of “false negatives” and “false positives” do not include the number of fields before the detection method is locked in the proper mode. Where the 2:2 pull-down detect method is applied in de-interlacing, a “false positive” may cause serious interlacing artifacts and thus should be avoid as much as possible. A “false negative” may cause some detail loss, but is more tolerable than a “false positive” in terms of visual effects.
In addition to the above 2:2 pull-down detection method, the system 100 may count (i) a number blocks with symmetric forward interlacing artifacts and backward interlacing artifacts, (ii) the number of blocks with only backward interlacing artifacts but without forward interlacing artifacts and (iii) the number of blocks with only forward interlacing artifacts but without backward interlacing artifacts. Decisions may then be based on comparisons of the three numbers. The counting may be applied where the block statistics are available. In another embodiment, the three numbers may be counted for block-rows, instead of blocks. Each of the block-rows may contain a number (e.g., 8) of pixel rows. The above may be applied where only row-based statistics are available.
The block-level statistics (e.g., SADs) may be readily computed/implemented in video display and/or compression systems for use in such purposes as 3:2 telecine detection, encoding block mode decision, rate-control and the like. By reusing the basic statistics, instead of explicitly detecting combing artifacts for a 2:2 pull-down detection, an overall system complexity may be reduced. A performance of the present invention may be outstanding, even on challenging material (e.g., extremely low motion, high vertical detail, low horizontal motion, etc.) Many of the challenging sequences are generally distinguished correctly even though the sequences have no discernable combing artifacts. As such, both encoding performance and/or display performance may be improved for the challenging sequences that could not be correctly identified by conventional methods.
The function performed by the flow diagrams, equations and pseudo code of FIGS. 3 and 6-11 may be implemented using a conventional general purpose digital computer programmed according to the teachings of the present specification, as will be apparent to those skilled in the relevant art(s). Appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure, as will also be apparent to those skilled in the relevant art(s).
The present invention may also be implemented by the preparation of ASICs, FPGAs, or by interconnecting an appropriate network of conventional component circuits, as is described herein, modifications of which will be readily apparent to those skilled in the art(s).
The present invention thus may also include a computer product which may be a storage medium including instructions which can be used to program a computer to perform a process in accordance with the present invention. The storage medium can include, but is not limited to, any type of disk including floppy disk, optical disk, CD-ROM, magneto-optical disks, ROMS, RAMs, EPROMs, EEPROMS, Flash memory, magnetic or optical cards, or any type of media suitable for storing electronic instructions. As used herein, the term “simultaneously” is meant to describe events that share some common time period but the term is not meant to be limited to events that begin at the same point in time, end at the same point in time, or have the same duration.
While the invention has been particularly shown and described with reference to the preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made without departing from the scope of the invention.

## Claims

1. A method for detecting progressive material in a video sequence, comprising the steps of:
(A) calculating a plurality of block statistics for each of a plurality of blocks in a current field of said video sequence;
(B) calculating a plurality of field statistics by summing said block statistics over all of said blocks in said current field;
(C) calculating a noise level for said current field based on a subset of said block statistics from each of said blocks; and
(D) generating a mode flag for said current field based on both (i) said field statistics and (ii) said noise level, wherein said mode flag identifies if said current field is part of a 2:2 pull-down pattern.

2. The method according to claim 1, further comprising the step of:
calculating a motion level for said current field based on said subset of said block statistic from each of said blocks, wherein generation of said mode flag is further based on said motion level.

3. The method according to claim 2, further comprising the step of:
calculating a stationary level for said current field based on said field statistics, wherein (i) said stationary level identifies a stillness in said current field and (ii) generation of said mode flag is further based on said stationary level.

4. The method according to claim 2, wherein (i) said noise for said current block comprises a minimum among a plurality of sums-of-absolute-differences between a plurality of co-located blocks in a previous field and a next field and (ii) said motion level is based on said sum-of-absolute-differences relative to a plurality of thresholds.

5. The method according to claim 1, further comprising the step of:
generating a scene change flag for said current field based on a plurality of said field statistics, wherein (i) said scene change flag identifies if said current field is part of a scene change and (ii) generation of said mode flag is further based on said scene change flag.

6. The method according to claim 1, further comprising the step of:
calculating a plurality of intermediate variables for said current field based on said field statistics.

7. The method according to claim 6, further comprising the step of:
calculating a plurality of interlacing indicators for said current field based on both (i) said field statistics and (ii) said intermediate variables, wherein said interlacing indicators defining a probability that said current field is part of an interlacing sequence.

8. The method according to claim 6, further comprising the step of:
calculating a plurality of progressive indicators for said current field based on both (i) said field statistics and (ii) said intermediate variables, wherein said progressive indicators defining a probability that said current field is part of a progressive sequence.

9. The method according to claim 1, wherein said block statistics comprise a same-parity sum-of-absolute-difference between two co-located areas, one each in a previous field and a next field.

10. The method according to claim 1, wherein said block statistics comprise two opposite-parity sum-of-absolute-differences between two co-located areas, one each in said current field and a next field.

11. A method for detecting progressive material in a video sequence, comprising the steps of:
(A) calculating a plurality of block statistics for each of a plurality of blocks in a current field of said video sequence;
(B) calculating a plurality of field statistics by summing said block statistics over all of said blocks in said current field;
(C) calculating a motion level for said current field based on a subset of said block statistics from each of said blocks; and
(D) generating a mode flag for said current field based on both (i) said field statistics and (ii) said motion level, wherein said mode flag identifies if said current field is part of a 2:2 pull-down pattern.

12. The method according to claim 11, further comprising the step of:
calculating a noise level for said current field based on said subset of said block statistics from each of said blocks, wherein generation of said mode flag is further based on said noise level.

13. The method according to claim 11, further comprising the step of:
calculating a stationary level for said current field based on said field statistics, wherein (i) said stationary level identifies a stillness in said current field and (ii) generation of said mode flag is further based on said stationary level.

14. The method according to claim 11, further comprising the step of:
generating a scene change flag for said current field based on a plurality of said field statistics, wherein (i) said scene change flag identifies if said current field is part of a scene change and (ii) generation of said mode flag is further based on said scene change flag.

15. The method according to claim 11, further comprising the step of:
calculating a plurality of intermediate variables for said current field based on said field statistics.

16. The method according to claim 15, further comprising the step of:
calculating a plurality of interlacing indicators for said current field based on both (i) said field statistics and (ii) said intermediate variables, wherein said interlacing indicators define a probability that said current field is part of an interlacing sequence.

17. The method according to claim 15, further comprising the step of:
calculating a plurality of progressive indicators for said current field based on both (i) said field statistics and (ii) said intermediate variables, wherein said progressive indicators define a probability that said current field is part of a progressive sequence.

18. The method according to claim 11, wherein said block statistics comprise two measures of field vertical activity, one each in a previous field and a next field.

19. The method according to claim 11, wherein said block statistics comprise two opposite-parity sum-of-absolute-differences between two co-located areas, one each in said current field and a previous field.

20. A system comprising:
a memory configured to store a portion of a video sequence; and
a media processor configured to (A) calculate a plurality of block statistics for each of a plurality of blocks in a current field of said video sequence, (B) calculate a plurality of field statistics by summing said block statistics over all of said blocks in said current field, (C) calculate a noise level for said current field based on a subset of said block statistics from each of said blocks, (D) calculate a motion level for said current field based on said subset of said block statistics from each of said blocks and (E) generate a mode flag for said current field based on (i) said field statistics, (ii) said noise level and (iii) said motion level, wherein said mode flag identifies if said current field is part of a 2:2 pull-down pattern.