VIDEO TRACKING SYSTEMS AND METHODS EMPLOYING COGNITIVE VISION
20190228233 ยท 2019-07-25
Assignee
Inventors
- Sadiye Zeyno Guler (Winchester, MA, US)
- Jason Adam Silverstein (Burlington, MA, US)
- Matthew Kevin Farrow (Canton, MA, US)
- Ian Harris Pushee (Ayer, MA, US)
Cpc classification
G06T7/246
PHYSICS
G08B13/19652
PHYSICS
G06V20/52
PHYSICS
G08B13/19608
PHYSICS
International classification
H04N7/18
ELECTRICITY
G06T7/246
PHYSICS
Abstract
Video tracking systems and methods include a peripheral master tracking process integrated with one or more tunnel tracking processes. The video tracking systems and methods utilize video data to detect and/or track separately several stationary or moving objects in a manner of tunnel vision. The video tracking system includes a master peripheral tracker for monitoring a scene and detecting an object, and a first tunnel tracker initiated by the master peripheral tracker, wherein the first tunnel tracker is dedicated to track one detected object.
Claims
1. A video tracking system, comprising: a master peripheral tracker operative to interact with an image data stream, said master peripheral tracker including logic to monitor a scene and to detect an object; and a first tunnel tracker initiated by said master peripheral tracker, said first tunnel tracker including logic dedicated to track one said detected object.
2. The video tracking system of claim 1 further including a second tunnel tracker initiated by said master peripheral tracker after detecting a second object, said second tunnel tracker including logic dedicated to track said second detected object.
3. The video tracking system of claim 2 further including a third tunnel tracker initiated by said master peripheral tracker after detecting a third object, said third tunnel tracker including logic dedicated to track third second detected object.
4. The video tracking system of claim 1 further including a digital video controller constructed and arranged to receive image data.
5. The video tracking system of claim 1 further including a tracker proxy for communicating with said master peripheral tracker and client applications.
6. The video tracking system of claim 1, wherein said master peripheral tracker includes an object detector and an object tracker.
7. The video tracking system of claim 1, wherein said tunnel tracker executes an edge based tunnel tracking algorithm.
8. The video tracking system of claim 1, wherein said tunnel tracker executes a Kernel based tunnel tracking algorithm.
9. The video tracking system of claim 1, wherein said tunnel tracker executes a Background subtraction based tunnel tracking algorithm.
10. A video tracking method, comprising: monitoring a scene and detecting an object using a master peripheral tracker; and initiating by said master peripheral tracker a first tunnel tracker dedicated to track one said detected object.
11. The video tracking method of claim 10 further including initiating by said master peripheral tracker a second tunnel tracker dedicated to track a second detected object.
12. The video tracking method of claim 10 wherein said master peripheral tracker sends image requests to a digital video controller.
13. The video tracking method of claim 10 wherein said master peripheral tracker and said digital video controller exchange image data streams and notification messages.
14. The video tracking method of claim 10 wherein said master peripheral tracker provides assembled tracking images to a tracker proxy that communicates with client applications.
15. (canceled)
16. A server executable embodied on a non-transitory computer readable medium for use with the video tracking system comprising: monitoring a scene and detecting an object using a master peripheral tracker; and initiating by said master peripheral tracker a first tunnel tracker dedicated to track one said detected object.
17. A computer program product for providing video tracking data, comprising: monitoring a scene and detecting an object using a master peripheral tracker; and initiating by said master peripheral tracker a first tunnel tracker dedicated to track one said detected object.
18-31. (canceled)
32. A video camera system, comprising: a video camera providing a digitized image data stream corresponding to acquired video data; a digital video controller; and a graphics processing unit executing layered processing comprising including a master peripheral tracker operatively interacting with said digital video controller to receive some of said image data stream and being programmed to monitor a scene and to detect a first object in said video data; said master peripheral tracker initiating a first tunnel tracker including logic dedicated to track said first detected object.
33. The video camera system of claim 32 wherein said master peripheral tracker detects a second object and initiates a second tunnel tracker including logic dedicated to track said second detected object.
34. The video camera system of claim 33 wherein said master peripheral tracker detects a third object and initiates a third tunnel tracker including logic dedicated to track said third detected object.
35-55. (canceled)
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
DETAILED DESCRIPTION OF AN ILLUSTRATIVE EMBODIMENT
[0037]
[0038] Referring to
[0039] Overall, video tracking system 40, with its peripheral (master) tracker 44 and tunnel vision tracker 46 (i.e., tunnel trackers 46A, 46B, 46C . . . ) is a novel realization of the spatially-based peripheral vision and object-based focused vision in a vision and tracking system. The disclosed system tracks multiple objects preserves their spatial relationships in a scene and understands objects' activities and thus operates like a cognitive vision system. The video tracking system 40 allocates attention to spatial locations (space-based attention) and to objects (object-based attention). The video tracking system 40 efficiently allocates processing resources through attentional mechanisms to provide tracking and analysis of the objects in video scenes. Tunnel vision tracker 46 enables attention allocation by taking advantage of a multi layer tracking and detection paradigm. Peripheral master tracker 44 at the first layer is responsible from spatial detection and overall, general tracking of the objects in a scene and triggering of highly focused tunnel trackers (46A, 46B, 46C . . . ) dedicated to detailed analysis of the individual objects.
[0040] The video tracking system may include various embodiments of master peripheral tracker 44 and tunnel trackers 46A, 46B, 46C, . . . initiated by the master peripheral tracker. The master peripheral tracker includes logic to monitor a scene and to detect an object. The first tunnel tracker includes logic dedicated to track and analyze one said detected object. The master peripheral tracker and the tunnel tracker may be implemented on one or several processors or different types. The processors may be in one location or may be distributed over a network including a network of video cameras. The processor may include a digital signal processor (DSP) or a graphics processing unit (GPU). For example, a processor executing master peripheral tracking may offload certain calculations to a separate DSP or a GPU. Furthermore, the tunnel tracker may be a separate DSP or GPU. The processors may execute downloadable algorithms or ASICs may be designed specifically for one or severla algorithms, both of which are within the meaning of the processor or the logic being programmed to execute the algorithm. The processing may be implemented using fixed-point arithmetic or floating point arithmetic. Furthermore, multicore implementations of DSPs or GPUs may be used.
[0041] As illustrated in
[0042] Master peripheral tracker 44 functions as a coordinator and an abstracted positional tracker using only condensed object information and relying partially on detailed object information generated by tunnel trackers (46A, 46B, 46C . . . ) or attentional task layers to manage the overall tracking dynamics of a scene. The vision tunnels (46A, 46B, 46C . . . ) are responsible for detailed object analysis. Each tunnel sees an object (e.g., a car 308 in
[0043]
[0044]
[0045] The peripheral tracker's main function is to detect spatial changes in the overall scene and hence detect moving objects. Once detected the peripheral tracker initiates a tunnel tracker for that object and continues to coarsely track the object as long as it moves providing the location information for the tunnel tracker at each frame. When a moving object becomes stationary, a static object detector 380 (shown
[0046]
[0047] Referring to
[0052]
=(f0.redf1.red)2+(f0.greenf1.green)2+(f0.bluef1.blue)2 [0057] if >t than d0=I else d0=0 (steps 116, 117, 118) [0058] Push d0 into q0 [0059] Set d1 to q0[c](popped image)
[0060] The new difference image is processed by Combine Image algorithm 122, which is as follows: [0061] Iterate through Motion History Image h0, d0, d1: [0062] if (h0>0) than h0=d1 [0063] if (h0<255) than h0+=d0 [0064] Then, Erode Image 126 erodes h0 storing result in e0, and performs connected components on e0 and return regions in algorithm 128. Object detector 110 provides image and object bounding boxes to object tracker 140.
[0065] Object detector 110 detects moving objects using a Motion History Image created by a windowed sequence of consecutive frame differences as explained below. We use the following notation: [0066] Motion History Window Size: N [0067] Motion History Image (at frame i): Mi is an N-level image, with Level-N indicating pixels that have changed N times within the N frame window, Level-(N1) denoting pixels that have changed (N1) times, so and so forth, and level-0 indicating pixels with no change within the temporal window of N frames. [0068] Current Frame: Fi [0069] Previous Frame: Fi1 [0070] Frame Difference between the current and previous frames is denoted by: [0071] FiFi1 and is calculated by corresponding color channel pixel (squared) differences in Red, Green and Blue channels:
FiFi1=(Fi.redFi1.red).sup.2+(Fi.greenFi1.green).sup.2+(Fi.blueFi1.blue).sup.2 [0072] The Current Difference Image Di is a binary image obtained by thresholding the Frame Difference FiFi1 as follows: [0073] if (FiFi1)x,y>t than (Di)x,y=1else (Di)x,y=0 [0074] The Difference images Di's for the N most recent frames are maintained in a queue and used to calculate the Motion History Image (MHI). [0075] Motion History Image at current frame i, Mi is then obtained as follows: [0076] If (Mi)x,y<N Adding the effect of most recently changed pixels (Mi)x,y=(Mi)x,y+(Di)x,y based on current frame difference Di [0077] If (Mi)x,y>0 Eliminating the effect of least recently changed pixels (Mi)x,y=(Mi)x,y(DiN)x,y based on (iN)th frame difference DiN [0078] Motion History Image (MHI) thus created is then filtered by a morphological erode operation to eliminate isolated pixels that might have been detected spuriously and break weak pixel links.
[0079] As the last step of the Object Detection the filtered Motion History Image undergoes a connected components operation to form connected regions from pixels which changed most recently and most frequently. These pixels are the ones that correspond to the moving object regions. The result of the connected components operation is a binary image with 0 pixels denoting the background and the 1 region denoting the moving object regions. The next step of the Peripheral Tracker is to track these detected moving object regions and provide these regions to tunnels over a sequence of frames as the objects move within the scene.
[0080]
[0081] Referring still to
[0082] When peripheral master tracker 44 detects one or more new objects appearing in a scene, it triggers one or several highly focused tunnel trackers at the second layer 46A, 46B, 46C, . . . , wherein there is one tunnel tracker dedicated for each detected object. Tunnel tracker 46 can execute different algorithms (only in the tunnel region) such as an edge-based polygon foreground-background (object) segmentation and tracking algorithm 200, or a color kernel density based foreground-background (object) segmentation and tracking algorithm 240, or a background subtraction based foreground-background (object) segmentation algorithm.
[0083]
[0084] The video frames are processed as they arrive in real-time. The moving window average is used to estimate the center and dimensions of the object polygon in each new frame. The edges found at equal angle increments are stored in a sorted list. Referring to
[0085] The local search and optimization is executed by repeating the process with four new center points, each slightly offset from the projected center. Then, the polygon that gives a center closest to the projected center is used and is added to the moving window average.
[0086] Referring to
[0087]
[0088] The algorithm 240 finds edge points along rays emanating from the center point of the object (242), and then forms a polygon using the edge points farthest away from the object center point on each ray (244). The algorithm samples the pixels that lie outside the polygon to produce the background color kernel density distribution, BgKD (246). This is done for the first frame background and foreground segmentation (248). Then, the algorithm samples the pixels that lie inside the polygon and puts in a foreground color kernel distribution FgKD(250). After the first frame, the algorithm chooses the next edge point on each ray farthest away from the object center point (254). For each edge point and its four connected neighbors e, in step 256, if P(e|FgKD)>P(e|BgKD), the algorithm samples the pixels that lie inside the polygon and puts in a foreground color kernel distribution FgKD (250). If P(e|FgKD)<P(e|BgKD), the algorithm executes step 254 again. After step 250, the algorithm classifies each pixel P in step 258 shown in
[0089] Alternatively,
[0090]
[0091] Update History Image 382 compare current image with background using Activity Mask m. Then, it iterates through History Image. For each pixel p that is considered foreground from background comparison, the algorithm increments p by value i. For each pixel p that is considered background from background comparison, the algorithm decrements p by value i times 7.
[0092] Connect History Image 384 runs Connected Components on History Image, and then filters bounding boxes that do not meet a minimum size. The algorithm passes bounding boxes to Object Tracker Module to track the current frame, and removes duplicate static objects.
[0093] Remove False Objects 386 iterates through each object and crops the current image and background using the object's bounding box. The algorithm then uses a Sobel Edge filter on the current and background image. If the number of edge pixels in the foreground is less than the number of edge pixels in the background, the algorithm removes the object as false.
[0094] Update Activity Mask 388 saves the Peripheral Tracker's bounding boxes that were detected in the last frame to a time queue of bounding boxes of length time t. Then, the algorithm iterates through the queue: decrementing the Activity Mask for each pixel in the bounding box that will expire; and incrementing the Activity Mask for each pixel in the newly inserted bounding boxes. The algorithm increments the mask for each Static Object's current bounding box, and creates a binary mask from this Activity Mask used with the next background comparison in the next frame.
[0095] The background for the static object detector is calculated as follows: [0096] Video frames periodically sent to the background generator, along with bounding boxes of detected and suspected objects. [0097] The background generator incorporates the new frame, ignoring the areas deliminated by the object bounding boxes. [0098] For each pixel, the background generator stores 5 values:
[0099] 1. Weighted average of each the red, blue and green channels of the video
[weighted average]=([old average]*(1.0w))+([new value]*w)
[0100] wherein w is the user supplied update weight
[0101] 2. Combined average color (essentially 24-bit greyscale)
[color]=[red average]*9+[green average]*18+[blue average]*3
[0102] 3. Standard deviation of the combined color
[0103] New frames are compared to the background.
[0104] For each pixel, a likeness value is generated. This describes how likely the given pixel is to belong to the background.
[0105] The likeness is generated based on how many standard deviations apart the back-ground average and new frame's color are.
[likeness]=1/([diff]/[stdev]).sup.2
[0106] whereindifferences less than 1 standard deviation from the average have a 1.0 likeness (100% likely to be the background)
[0107] differences greater than 10 standard deviations from the average have a 0.0 like-ness (0% likely to be in the background)
[0108] The Perimeter Event algorithm executes the following algorithm: [0109] User designates a perimeter zone. [0110] Objects are allowed to be outside the zone, or to appear inside the zone and stay there. [0111] If any object moves from outside of the zone to inside the zone, it triggers an alarm as long as it stays within the zone. [0112] Inside and outside is determined by the percentage of an object's bounding box contained by the zone. As defined: Inside if [overlap]/[bounding box area]>p; where p is a percentage supplied by the user.
[0113]
[0114]
[0115] Alternatively, a kernel-based tracker for this step may be used as described above. Given the small size of the halo the kernel-based approach can also be implemented very efficiently.
[0116]
[0117] However, in each tunnel, maintaining both the object pixel and the background statistics is important because all the pixels within the halo of one tunnel tracker constitute the background pixels for other tunnel trackers. Referring to
[0118] Peripheral master tracker 44 periodically requests the pixel statistics from all tunnel trackers (46A, 46B, 46C . . . ) to update its background. As the object in halo 322 waits (i.e., sedan shown in
[0119] Peripheral master tracker 44 can also adjust the size of the halo so that an initialized tunnel tracker is not overly sensitive to sudden object motion. Furthermore, peripheral master tracker 44 can execute a separate algorithm in situations where the master tracker or the tunnel trackers are affected by cast shadows. The small image area within a tunnel tracker is usually less prone to persistent shadow regions and the variability of these regions.
[0120] The Tunnel-Vision Tracker paradigm has many possible applications, such as multi-view cameras or multi-camera environments, as well as the potential for mapping to hardware platforms. The tunnel-vision tracker presents a natural processing hierarchy for efficient mapping of tracking tasks on dedicated processors within various software and hardware architectures. It provides a natural framework for tracking within wide view cameras with embedded high-definition views or multiple camera/view environments with multiple views provided by a camera array with overlapping or non-overlapping views.
[0121] The abandoned object algorithm operates by watching for regions which deviate from the background in an aperiodic fashion for a long time. This abandoned object detection algorithm is robust to occlusions in crowded scenes based on aperiodic persistent region detection: a stationary abandoned object will cause a region to remain different from the background for as long as that object stays in place. Moving objects occluding an abandoned object does not create a problem, as the region of the abandoned object remains different from the background, regardless of whether it is the abandoned object or a moving object in the foreground. The algorithm takes into account lots of other moving objects causing occlusion of the abandoned object. The abandoned object algorithm can be implemented as a standalone application, or as part of the video tracking system 40.
[0122] In addition, it will be understood by those skilled in the relevant art that control and data flows between and among functional elements and various data structures may vary in many ways from the control and data flows described above. More particularly, intermediary functional elements (not shown) may direct control or data flows, and the functions of various elements may be combined, divided, or otherwise rearranged to allow parallel processing or for other reasons. Also, intermediate data structures or files may be used and various described data structures or files may be combined or otherwise arranged. Numerous other embodiments, and modifications thereof, are contemplated as falling within the scope of the present invention as defined by appended claims and equivalents thereto.