Abstract:
A method to estimate segmented motion uses phase correlation to identify local motion candidates and a region-growing algorithm to group small picture units into few distinct regions, each of which has its own motion according to optimal matching and grouping criteria. Phase correlation and region growing are combined which allows sharing of information. Using phase correlation to identify a small number of motion candidates allows the space of possible motions to be narrowed. The region growing uses efficient management of lists of matching criteria to avoid repetitively evaluating matching criteria.

Description:
FIELD OF THE INVENTION 
     The present invention relates to the field of video processing. More specifically, the present invention relates to simultaneously performing motion estimation and segmentation. 
     BACKGROUND OF THE INVENTION 
     Two common problems in video analysis are motion estimation and segmentation. Motion estimation is necessary for a multitude of tasks in video processing. Knowledge of segmentation, while not required for all video applications is able to provide additional information and enable higher-level understanding of video content. 
     Motion estimation and segmentation have been studied by many researchers. Often the two are addressed independently, which is non-optimal. Often, the two are addressed by complicated theoretical means, which is able to lead to unwieldy implementations. There are numerous methods, ranging from block-based sum-of-absolute-differences to probabilistic methods based on Bayesian estimation. 
     SUMMARY OF THE INVENTION 
     A method to estimate segmented motion uses phase correlation to identify local motion candidates and a region-growing algorithm to group small picture units into few distinct regions, each of which has its own motion according to optimal matching and grouping criteria. Phase correlation and region growing are combined which allows sharing of information. Using phase correlation to identify a small number of motion candidates allows the space of possible motions to be narrowed. The region growing uses efficient management of lists of matching criteria to avoid repetitively evaluating matching criteria. 
     In one aspect, a method of estimating motion in a video on a device comprises performing phase correlation on the video to identify local motion candidates using a processor and merging regions of the video to generate motion segmentation using the processor. Performing the phase correlation further comprises computing a phase correlation surface and identifying biggest peaks from the phase correlation surface, wherein indices of the peaks correspond to possible motions. Merging regions further comprises assigning the local motion candidates according to results from the phase correlation, calculating a set of Sum of Absolute Differences for each sub-block of blocks of the video, including chroma components, initializing region merging and merging regions until there are no regions to be merged. The set of Sum of Absolute Differences are stored in an array. Initializing region merging further comprises generating a linked list of the regions with each sub-block assigned to a region of the regions, maintaining a Sum of Absolute Differences array for each of the regions, assigning a motion vector of each of the regions in the linked list according to a smallest Sum of Absolute Differences in the region&#39;s Sum of Absolute Differences array and assigning an area of each region to be a value representing a single sub-block. Merging regions further comprises for each region in the regions and for each neighboring region, determining if the region and the neighboring region are able to be merged to form a single region. Determining if the region and the neighboring region are able to be merged further comprises computing a combined Sum of Absolute Differences array by summing the Sum of Absolute Differences arrays of the region and the neighboring region, determining a minimum Sum of Absolute Differences in the combined Sum of Absolute Differences array and if the minimum Sum of Absolute Differences is less than a first minimum of the Sum of Absolute Differences of the region, a second minimum of the Sum of Absolute Differences of the neighboring region, and a parameter combined, then merge the region and the neighboring region. Merging the region and the neighboring region comprises adding the neighboring region to the region, assigning the Sum of Absolute Differences array according to the summed Sum of Absolute Differences arrays previously computed, assigning a motion for the region according to a candidate and removing the neighboring region from a region list. In addition to the Sum of Absolute Differences, a spatial smoothness term and a penalty value are used. The method further comprises using global motion candidates to assist in the motion estimation. The method further comprises using spatial neighbor candidates to assist in the motion estimation. The method further comprises using temporal neighbor candidates to assist in the motion estimation. The device is selected from the group consisting of a personal computer, a laptop computer, a computer workstation, a server, a mainframe computer, a handheld computer, a personal digital assistant, a cellular/mobile telephone, a smart appliance, a gaming console, a digital camera, a digital camcorder, a camera phone, an iPhone, an iPod®, a video player, a DVD writer/player, a television and a home entertainment system. 
     In another aspect, a system for estimating motion in a video on a device comprises a phase correlation module for performing phase correlation on the video to identify local motion candidates using a processor and a region merging module for merging regions of the video to generate motion segmentation using the processor. The phase correlation module is further for computing a phase correlation surface and identifying biggest peaks from the phase correlation surface, wherein indices of the peaks correspond to possible motions. The region merging module is further for assigning the local motion candidates according to results from the phase correlation, calculating a set of Sum of Absolute Differences for each sub-block of blocks of the video, including chroma components, initializing region merging and merging regions until there are no regions to be merged. The set of Sum of Absolute Differences are stored in an array. Initializing region merging further comprises generating a linked list of the regions with each sub-block assigned to a region of the regions, maintaining a Sum of Absolute Differences array for each of the regions, assigning a motion vector of each of the regions in the linked list according to a smallest Sum of Absolute Differences in the region&#39;s Sum of Absolute Differences array and assigning an area of each region to be a value representing a single sub-block. Merging regions further comprises for each region in the regions and for each neighboring region, determining if the region and the neighboring region are able to be merged to form a single region. Determining if the region and the neighboring region are able to be merged further comprises computing a combined Sum of Absolute Differences array by summing the Sum of Absolute Differences arrays of the region and the neighboring region, determining a minimum Sum of Absolute Differences in the combined Sum of Absolute Differences array and if the minimum Sum of Absolute Differences is less than a first minimum of the Sum of Absolute Differences of the region, a second minimum of the Sum of Absolute Differences of the neighboring region, and a parameter combined, then merge the region and the neighboring region. Merging the region and the neighboring region comprises adding the neighboring region to the region, assigning the Sum of Absolute Differences array according to the summed Sum of Absolute Differences arrays previously computed, assigning a motion for the region according to a candidate and removing the neighboring region from a region list. In addition to the Sum of Absolute Differences, a spatial smoothness term and a penalty value are used. The system further comprises one or more modules for using global motion, spatial neighbor candidates and/or temporal neighbor candidates to assist in the motion estimation. 
     In another aspect, a device for estimating motion in a video comprises a memory for storing an application, the application for performing phase correlation on the video to identify local motion candidates and merging regions of the video to generate motion segmentation and a processing component coupled to the memory, the processing component configured for processing the application. 
     In another aspect, a camcorder device comprises a video acquisition component for acquiring a video, an encoder for encoding the image, including motion estimation, by performing phase correlation on the video to identify local motion candidates and merging regions of the video while performing the phase correlation to generate motion segmentation and a memory for storing the encoded video. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates an example of co-located blocks according to some embodiments. 
         FIG. 2  illustrates a flowchart of phase correlation according to some embodiments. 
         FIG. 3  shows a simplified representation of region merging according to some embodiments. 
         FIG. 4  illustrates a flowchart of a method of region merging according to some embodiments. 
         FIG. 5  shows spatial relationships according to some embodiments. 
         FIG. 6  illustrates examples of candidates that are difficult to identify according to some embodiments. 
         FIG. 7  demonstrates a global motion candidate, and how it is able to vary according to position according to some embodiments. 
         FIG. 8  demonstrates spatial neighbor candidates according to some embodiments. 
         FIG. 9  illustrates temporal candidates according to some embodiments. 
         FIG. 10  illustrates a block diagram of an exemplary computing device configured to implement the method to estimate segmented motion according to some embodiments. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Motion estimation is performed with phase correlation while simultaneously performing a low-level motion segmentation as described herein. Phase correlation is used to identify local motion candidates and apply region merging on small sub-blocks to generate the low-level motion segmentation. Performing motion estimation and segmentation simultaneously avoids the limitations of performing them independently. Further, phase correlation and region growing are performed in combination. 
     Local Motion Estimation 
     Motion Candidates by Phase Correlation 
     Local motion analysis is performed on each B×B block in a video frame. Phase correlation estimates motion by considering a window that surrounds the B×B block. A surrounding window size of N×N is used, where N=2B. In some embodiments, another window size is used. Phase correlation considers an N×N window in both the current frame and the reference frame, where the windows are able to be co-located or, in a more general case, an offset is able to be present for the block in the reference frame due to a motion predictor.  FIG. 1  illustrates an example of co-located blocks according to some embodiments. 
       FIG. 2  illustrates a flowchart of phase correlation according to some embodiments. In the step  200 , point-wise multiplication of the N×N window in the current frame with window function w[x,y] is performed. A Fast Fourier Transform (FFT) is applied to the result, which yields the complex values G[m,n]. In the step  202 , point-wise multiplication of the N×N window in the reference frame is performed with the window function w[x,y]. FFT is applied to the result, which yields the complex values F[m,n]. In the step  204 , the following equation is computed: 
     
       
         
           
             
               
                 S 
                 ⁡ 
                 
                   [ 
                   
                     m 
                     , 
                     n 
                   
                   ] 
                 
               
               = 
               
                 
                   
                     F 
                     ⁡ 
                     
                       [ 
                       
                         m 
                         , 
                         n 
                       
                       ] 
                     
                   
                   ⁢ 
                   
                     
                       G 
                       * 
                     
                     ⁡ 
                     
                       [ 
                       
                         m 
                         , 
                         n 
                       
                       ] 
                     
                   
                 
                 
                    
                   
                     
                       F 
                       ⁡ 
                       
                         [ 
                         
                           m 
                           , 
                           n 
                         
                         ] 
                       
                     
                     ⁢ 
                     
                       
                         G 
                         * 
                       
                       ⁡ 
                       
                         [ 
                         
                           m 
                           , 
                           n 
                         
                         ] 
                       
                     
                   
                    
                 
               
             
             , 
           
         
       
     
     where * denotes the complex conjugate, and | | represents the magnitude of the complex argument. In the step  206 , the inverse FFT (IFFT) of S[m,n] is computed to yield s[x,y], the phase correlation surface. In the step  208 , the K biggest peaks are identified from the phase correlation surface. The indices of these peaks correspond to possible motions that are present between the N×N windows in the current and reference frames. 
     For the window function, a 2-D separable extension of the Hamming window is used whose 1-D definition is 
               w   ⁡     [   x   ]       =     0.53836   -     0.46164   ⁢           ⁢       cos   ⁡     (       2   ⁢   π   ⁢           ⁢   x       N   -   1       )       .               
Other implementations are able to be used as well, such as a Hann window, a Blackman window, a Bartlett window or any other window.
 
     The peaks in the correlation surface represent possible motions. Larger peaks indicate higher correlation, and the largest peak often indicates the dominant motion in the N×N window. However, due to the nature of phase correlation (and the Fourier Transform), it is not possible to know which motions correspond to which parts of the B×B block. To resolve the ambiguity, further processing is used. 
     To estimate motion within the B×B block, the B×B block is decomposed into smaller 4×4 sub-blocks. In some embodiments, other sub-block sizes are used. K phase correlation candidates are denoted as:
 
cand i =(Δ x   i   ,Δy   i ),  i= 0, . . . ,  K− 1.
 
     For each 4×4 sub-block, the Sum of Absolute Differences (SAD) is computed for each candidate. In some embodiments, another matching criterion is used. 
     Region Merging for Final Motion Estimates 
     Each 4×4 sub-block is considered a distinct region within the larger B×B block. It is unlikely that the content actually includes so many small regions with independent motions. Rather, it is more likely that the B×B block has at most a few regions that are moving independently. For this reason, the 4×4 sub-blocks are merged into regions, where each region has its own distinct motion.  FIG. 3  shows a simplified representation of region merging according to some embodiments. 
       FIG. 4  illustrates a flowchart of a method of region merging according to some embodiments. In the step  400 , the K motion candidates are calculated from phase correlation. In the step  402 , the SADs for each 4×4 sub-block are calculated (optionally including chroma components for improved performance). Thus, each 4×4 sub-block has an array of SAD values, where the array is indexed according to a motion candidate. In the step  404 , region merging initialization occurs. A linked list of regions is generated, with each 4×4 sub-block assigned to one region. Each region maintains an SAD array for the motion candidates. The SAD array is set for each region in the list according to the SADs of each 4×4 sub-block. The motion vector of each region in the list is assigned according to the smallest SAD in that region&#39;s SAD array. The area of each region is assigned to be 1, meaning that each region initially includes a single 4×4 sub-block. 
     In the step  406 , while at least one pair of regions is able to be merged, merging occurs. For each region, R i , in the list of regions and for each neighbor region, R j , of region, R i , it is determined if the two are able to be merged to form a single region. A new SAD array is computed by summing the SAD arrays of the two regions R j  and R i . The new SAD array represents the SAD array of the union of regions R j  and R i . The minimum SAD is found from the SAD array computed, and it is denoted as SAD i     ∪     j , with the candidate index denoted as k. SAD i  and SAD j  are denoted as the best current SADs of regions R i  and R j . If SAD i     ∪     j &lt;SAD i +SAD j +T, the regions R i  and R j  are merged. The area from region, R j , is added to the area for region R i . The SAD array of R i  is assigned according to the summed SAD arrays previously computed. The motion for Region R i  is assigned according to the candidate k. The region R j  is removed from the region list. 
     By construction, it is always true that SAD i     ∪     j ≧SAD i +SAD j . The parameter T in the above algorithm allows two regions to be merged even though the SAD of the merged region is not better than the SADs of the individual regions. A small T discourages region merging, while a large T encourages region merging. Proper choice of T is important for proper algorithm behavior. T is assigned to be dependent on the area of the two regions, R i  and R j , that are being considered for merging, as follows:
 
 T =ρMIN(area of  R   i ,area of  R   j ).
 
This threshold T thus depends on characteristics of both regions R i  and R j . In some embodiments, T is selected using a different method.
 
Encouraging Motion Consistency Across B×B Blocks
 
     To encourage consistency of motion across B×B block boundaries, the above procedure is able to be modified slightly. For the 4×4 sub-blocks on the left and top borders of the B×B blocks, a more generic function is able to be used instead of the SAD. The cost function is:
 
COST=α(SPATIAL SMOOTHNESS TERM)+SAD,
 
where the “SPATIAL SMOOTHNESS TERM” includes a difference between the 4×4 sub-block motion candidate, and a motion predictor from the adjacent sub-blocks in the neighboring B×B block. Further, a controls the strength of the spatial-smoothness penalty term. The left and top borders are considered because B×B blocks in those directions already have motion estimates from previous processing since blocks are processed row by row, from left to right and top to bottom. A different order for block processing would cause different borders to be used. Adding the cost term encourages spatial smoothness across B×B block boundaries.  FIG. 5  shows the spatial relationships according to some embodiments.
 
Supplemental Motion Candidates
 
     Phase correction usually does a good job of identifying candidate motions for image blocks. However, as with all local motion estimators, when there are no unique image features in the window, good candidates are not able to be identified. One example situation is for a window corresponding to the sky; the smooth image content has no features that are able to be correlated in the two windows, and no candidates are able to be identified. Similarly, windows on object edges are able to have multiple motions along the edge with similar correlation, and the true motions are difficult to identify.  FIG. 6  illustrates examples of candidates that are difficult to identify according to some embodiments. 
     When phase correlation is not able to identify the true motion, additional candidates are used. The phase correlation candidates are able to be supplemented with the following additional candidates. 
     Global Motion Candidates 
     A single candidate that corresponds to the global motion (which has been previously computed) is added. Global motion is in general non-translational (for example, rotation), but it is able to be approximated locally as simple block translation. The global motion candidate is able to be treated specially. Although it is considered as a single candidate, it is able to be different at different locations within the B×B block. Thus, each sub-block within the B×B block has a single candidate labeled as “global motion candidate,” although the actual motion for that candidate is able to vary according to position.  FIG. 7  demonstrates the global motion candidate, and how it is able to vary according to position according to some embodiments. 
     Spatial Neighbor Candidates 
     Four candidates are able to be added from spatially neighboring blocks that were previously processed. Two candidates from the B×B block to the left of the current block and two candidates from the B×B block above the current block are used. To determine the candidate, the median of the motion vectors along the shared borders are taken. In some embodiments, another measure such as the mean of the motion vectors is taken.  FIG. 8  demonstrates the spatial neighbor candidates according to some embodiments. 
     Temporal Neighbor Candidates 
     Four temporal candidates from co-located B×B blocks in the previous frame&#39;s motion vector field and one candidate from each of the four quadrants are able to be added. From each of the B×B block&#39;s quadrants, the median motion vector is computed and is added to the list of motion candidates. If the median is considered too complex, a simpler alternative is able to be used, such as the mean.  FIG. 9  illustrates the temporal candidates according to some embodiments. 
       FIG. 10  illustrates a block diagram of an exemplary computing device  1000  configured to implement the method to estimate segmented motion according to some embodiments. The computing device  1000  is able to be used to acquire, store, compute, communicate and/or display information such as images and videos. For example, a computing device  1000  is able to acquire and store a video. The method to estimate segmented motion is able to be used when encoding a video on the device  1000 . In general, a hardware structure suitable for implementing the computing device  1000  includes a network interface  1002 , a memory  1004 , a processor  1006 , I/O device(s)  1008 , a bus  1010  and a storage device  1012 . The choice of processor is not critical as long as a suitable processor with sufficient speed is chosen. The memory  1004  is able to be any conventional computer memory known in the art. The storage device  1012  is able to include a hard drive, CDROM, CDRW, DVD, DVDRW, flash memory card or any other storage device. The computing device  1000  is able to include one or more network interfaces  1002 . An example of a network interface includes a network card connected to an Ethernet or other type of LAN. The I/O device(s)  1008  are able to include one or more of the following: keyboard, mouse, monitor, display, printer, modem, touchscreen, button interface and other devices. Motion estimation application(s)  1030  used to perform the method to estimate segmented motion are likely to be stored in the storage device  1012  and memory  1004  and processed as applications are typically processed. More or less components than shown in  FIG. 10  are able to be included in the computing device  1000 . In some embodiments, motion estimation hardware  1020  is included. Although the computing device  1000  in  FIG. 10  includes applications  1030  and hardware  1020  for motion estimation, the method to estimate segmented motion is able to be implemented on a computing device in hardware, firmware, software or any combination thereof. 
     In some embodiments, the motion estimation application(s)  1030  include several applications and/or modules. In some embodiments, the motion estimation application(s)  1030  include a phase correlation module  1032  and a region merging module  1034 . The phase correlation module  1032  performs phase correlation as described herein. The region merging module  1034  performs region merging as described herein. In some embodiments, the phase correlation module  1032  and the region module  1034  are executed simultaneously. In some embodiments, one or more modules are utilized for using global motion, spatial neighbor candidates and/or temporal neighbor candidates to assist in the motion estimation. In some embodiments, fewer or additional modules are able to be included. 
     Examples of suitable computing devices include a personal computer, a laptop computer, a computer workstation, a server, a mainframe computer, a handheld computer, a personal digital assistant, a cellular/mobile telephone, a smart appliance, a gaming console, a digital camera, a digital camcorder, a camera phone, an iPod®/iPhone, a video player, a DVD writer/player, a television, a home entertainment system or any other suitable computing device. 
     To utilize the method to estimate segmented motion, a user displays a video such as on a digital camcorder, and while the video is displayed, the method to estimate segmented motion automatically performs the motion estimation and motion segmentation at the same time, so that the video is displayed smoothly. The method to estimate segmented motion occurs automatically without user involvement. 
     In operation, the method to estimate segmented motion performs estimation of motion between one video frame and another while simultaneously performing a low-level motion segmentation which avoids the limitations of performing them independently. Phase correlation, which robustly identifies good candidate motions, and region growing, which incorporates optimal matching criteria while grouping local image regions, are also combined. Potential application areas for estimating segmented motion include, but are not limited to, video compression, video surveillance, detecting moving objects, tracking moving objects, various video filtering applications such as super-resolution, frame-rate conversion or de-interlacing. 
     Some Embodiments of Estimating Segmented Motion 
     
         
         1. A method of estimating motion in a video on a device comprising:
       a. performing phase correlation on the video to identify local motion candidates using a processor; and   b. merging regions of the video to generate motion segmentation using the processor.   
     
         2. The method of clause 1 wherein performing the phase correlation further comprises:
       a. computing a phase correlation surface; and   b. identifying biggest peaks from the phase correlation surface, wherein indices of the peaks correspond to possible motions.   
     
         3. The method of clause 1 wherein merging regions further comprises:
       a. assigning the local motion candidates according to results from the phase correlation;   b. calculating a set of Sum of Absolute Differences for each sub-block of blocks of the video, including chroma components;   c. initializing region merging; and   d. merging regions until there are no regions to be merged.   
     
         4. The method of clause 3 wherein the set of Sum of Absolute Differences are stored in an array. 
         5. The method of clause 3 wherein initializing region merging further comprises:
       a. generating a linked list of the regions with each sub-block assigned to a region of the regions;   b. maintaining a Sum of Absolute Differences array for each of the regions;   c. assigning a motion vector of each of the regions in the linked list according to a smallest Sum of Absolute Differences in the region&#39;s Sum of Absolute Differences array; and   d. assigning an area of each region to be a value representing a single sub-block.   
     
         6. The method of clause 3 wherein merging regions further comprises for each region in the regions and for each neighboring region, determining if the region and the neighboring region are able to be merged to form a single region. 
         7. The method of clause 6 wherein determining if the region and the neighboring region are able to be merged further comprises:
       a. computing a combined Sum of Absolute Differences array by summing the Sum of Absolute Differences arrays of the region and the neighboring region;   b. determining a minimum Sum of Absolute Differences in the combined Sum of Absolute Differences array; and   c. if the minimum Sum of Absolute Differences is less than a first minimum of the Sum of Absolute Differences of the region, a second minimum of the Sum of Absolute Differences of the neighboring region, and a parameter combined, then merge the region and the neighboring region.   
     
         8. The method of clause 7 wherein merging the region and the neighboring region comprises:
       a. adding the neighboring region to the region;   b. assigning the Sum of Absolute Differences array according to the summed Sum of Absolute Differences arrays previously computed;   c. assigning a motion for the region according to a candidate; and   d. removing the neighboring region from a region list.   
     
         9. The method of clause 3 wherein in addition to the Sum of Absolute Differences, a spatial smoothness term and a penalty value are used. 
         10. The method of clause 1 further comprising using global motion candidates to assist in the motion estimation. 
         11. The method of clause 1 further comprising using spatial neighbor candidates to assist in the motion estimation. 
         12. The method of clause 1 further comprising using temporal neighbor candidates to assist in the motion estimation. 
         13. The method of clause 1 wherein the device is selected from the group consisting of a personal computer, a laptop computer, a computer workstation, a server, a mainframe computer, a handheld computer, a personal digital assistant, a cellular/mobile telephone, a smart appliance, a gaming console, a digital camera, a digital camcorder, a camera phone, an iPhone, an iPod®, a video player, a DVD writer/player, a television and a home entertainment system. 
         14. A system for estimating motion in a video on a device comprising:
       a. a phase correlation module for performing phase correlation on the video to identify local motion candidates using a processor; and   b. a region merging module for merging regions of the video to generate motion segmentation using the processor.   
     
         15. The system of clause 14 wherein the phase correlation module is further for:
       a. computing a phase correlation surface; and   b. identifying biggest peaks from the phase correlation surface, wherein indices of the peaks correspond to possible motions.   
     
         16. The system of clause 14 wherein the region merging module is further for:
       a. assigning the local motion candidates according to results from the phase correlation;   b. calculating a set of Sum of Absolute Differences for each sub-block of blocks of the video, including chroma components;   c. initializing region merging; and   d. merging regions until there are no regions to be merged.   
     
         17. The system of clause 16 wherein the set of Sum of Absolute Differences are stored in an array. 
         18. The system of clause 16 wherein initializing region merging further comprises:
       a. generating a linked list of the regions with each sub-block assigned to a region of the regions;   b. maintaining a Sum of Absolute Differences array for each of the regions;   c. assigning a motion vector of each of the regions in the linked list according to a smallest Sum of Absolute Differences in the region&#39;s Sum of Absolute Differences array; and   d. assigning an area of each region to be a value representing a single sub-block.   
     
         19. The system of clause 16 wherein merging regions further comprises for each region in the regions and for each neighboring region, determining if the region and the neighboring region are able to be merged to form a single region. 
         20. The system of clause 19 wherein determining if the region and the neighboring region are able to be merged further comprises:
       a. computing a combined Sum of Absolute Differences array by summing the Sum of Absolute Differences arrays of the region and the neighboring region;   b. determining a minimum Sum of Absolute Differences in the combined Sum of Absolute Differences array; and   c. if the minimum Sum of Absolute Differences is less than a first minimum of the Sum of Absolute Differences of the region, a second minimum of the Sum of Absolute Differences of the neighboring region, and a parameter combined, then merge the region and the neighboring region.   
     
         21. The system of clause 20 wherein merging the region and the neighboring region comprises:
       a. adding the neighboring region to the region;   b. assigning the Sum of Absolute Differences array according to the summed Sum of Absolute Differences arrays previously computed;   c. assigning a motion for the region according to a candidate; and   d. removing the neighboring region from a region list.   
     
         22. The system of clause 16 wherein in addition to the Sum of Absolute Differences, a spatial smoothness term and a penalty value are used. 
         23. The system of clause 14 further comprising one or more modules for using global motion, spatial neighbor candidates and/or temporal neighbor candidates to assist in the motion estimation. 
         24. A device for estimating motion in a video comprising:
       a. a memory for storing an application, the application for:
           i. performing phase correlation on the video to identify local motion candidates; and   ii. merging regions of the video to generate motion segmentation; and   
           b. a processing component coupled to the memory, the processing component configured for processing the application.   
     
         25. A camcorder device comprising:
       a. a video acquisition component for acquiring a video;   b. an encoder for encoding the image, including motion estimation, by:
           i. performing phase correlation on the video to identify local motion candidates; and   ii. merging regions of the video while performing the phase correlation to generate motion segmentation; and   
           c. a memory for storing the encoded video.   
     
       
    
     The present invention has been described in terms of specific embodiments incorporating details to facilitate the understanding of principles of construction and operation of the invention. Such reference herein to specific embodiments and details thereof is not intended to limit the scope of the claims appended hereto. It will be readily apparent to one skilled in the art that other various modifications may be made in the embodiment chosen for illustration without departing from the spirit and scope of the invention as defined by the claims.