US20130314505A1 - System And Process For Detecting, Tracking And Counting Human Objects of Interest - Google Patents
System And Process For Detecting, Tracking And Counting Human Objects of Interest Download PDFInfo
- Publication number
- US20130314505A1 US20130314505A1 US13/946,129 US201313946129A US2013314505A1 US 20130314505 A1 US20130314505 A1 US 20130314505A1 US 201313946129 A US201313946129 A US 201313946129A US 2013314505 A1 US2013314505 A1 US 2013314505A1
- Authority
- US
- United States
- Prior art keywords
- track
- objects
- records
- sequence
- image capturing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims description 56
- 230000008569 process Effects 0.000 title description 41
- 238000004891 communication Methods 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 description 108
- 238000010586 diagram Methods 0.000 description 19
- 238000004458 analytical method Methods 0.000 description 12
- 238000012360 testing method Methods 0.000 description 12
- 230000000875 corresponding effect Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 6
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004807 localization Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013101 initial test Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 235000002566 Capsicum Nutrition 0.000 description 1
- 101000606504 Drosophila melanogaster Tyrosine-protein kinase-like otk Proteins 0.000 description 1
- CBENFWSGALASAD-UHFFFAOYSA-N Ozone Chemical compound [O-][O+]=O CBENFWSGALASAD-UHFFFAOYSA-N 0.000 description 1
- 239000006002 Pepper Substances 0.000 description 1
- 206010034944 Photokeratitis Diseases 0.000 description 1
- 235000016761 Piper aduncum Nutrition 0.000 description 1
- 235000017804 Piper guineense Nutrition 0.000 description 1
- 244000203593 Piper nigrum Species 0.000 description 1
- 235000008184 Piper nigrum Nutrition 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013213 extrapolation Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001678 irradiating effect Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/292—Multi-camera tracking
-
- G06K9/00362—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/52—Surveillance or monitoring of activities, e.g. for recognising suspicious objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/246—Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/52—Surveillance or monitoring of activities, e.g. for recognising suspicious objects
- G06V20/54—Surveillance or monitoring of activities, e.g. for recognising suspicious objects of traffic, e.g. cars on the road, trains or boats
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/103—Static body considered as a whole, e.g. static pedestrian or occupant recognition
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C11/00—Arrangements, systems or apparatus for checking, e.g. the occurrence of a condition, not provided for elsewhere
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C9/00—Individual registration on entry or exit
-
- H04N13/0203—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/204—Image signal generators using stereoscopic image cameras
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/18—Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/18—Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
- H04N7/183—Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast for receiving images from a single remote source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
- G06T2207/10021—Stereoscopic video; Stereoscopic image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30196—Human being; Person
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30232—Surveillance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30242—Counting objects in image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/62—Extraction of image or video features relating to a temporal dimension, e.g. time-based feature extraction; Pattern tracking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N2213/00—Details of stereoscopic systems
- H04N2213/005—Aspects relating to the "3D+depth" image format
Definitions
- the present invention generally relates to the field of object detection, tracking, and counting.
- the present invention is a computer-implemented detection and tracking system and process for detecting and tracking human objects of interest that appear in camera images taken, for example, at an entrance or entrances to a facility, as well as counting the number of human objects of interest entering or exiting the facility for a given time period.
- U.S. Pat. No. 7,161,482 describes an integrated electronic article surveillance (EAS) and people counting system.
- the EAS component establishes an interrogatory zone by an antenna positioned adjacent to the interrogation zone at an exit point of a protected area.
- the people counting component includes one people detection device to detect the passage of people through an associated passageway and provide a people detection signal, and another people detection device placed at a predefined distance from the first device and configured to detect another people detection signal.
- the two signals are then processed into an output representative of a direction of travel in response to the signals.
- One class uses monocular video streams or image sequences to extract, recognize, and track objects of interest.
- the other class makes use of two or more video sensors to derive range or height maps from multiple intensity images and uses the range 30 or height maps as a major data source.
- intensity images taken by sensors are converted to range or height maps, and the conversion is not affected by adverse factors such as lighting condition changes, strong shadow, or sunlight.
- Range background differencing suffers from the same problems such as background clutter, as the monocular background differencing approaches, and presents difficulty in differentiating between multiple closely positioned objects.
- U.S. Pat. No. 6,771,818 describes a system and process of identifying and locating people and objects of interest in a scene by selectively clustering blobs to generate “candidate blob clusters” within the scene and comparing the blob clusters to a model representing the people or objects of interest. The comparison of candidate blob clusters to the model identifies the blob clusters that is the closest match or matches to the model. Sequential live depth images may be captured and analyzed in real-time to provide for continuous identification and location of people or objects as a function of time.
- U.S. Pat. Nos. 6,952,496 and 7,092,566 are directed to a system and process employing color images, color histograms, techniques for compensating variations, and a sum of match qualities approach to best identify each of a group of people and objects in the image of a scene.
- An image is segmented to extract regions which likely correspond to people and objects of interest and a histogram is computed for each of the extracted regions.
- the histogram is compared with pre-computed model histograms and is designated as corresponding to a person or object if the degree of similarity exceeds a prescribed threshold.
- the designated histogram can also be stored as an additional model histogram.
- U.S. Pat. No. 7,176,441 describes a counting system for counting the number of persons passing a monitor line set in the width direction of a path.
- a laser is installed for irradiating the monitor line with a slit ray and an image capturing device is deployed for photographing an area including the monitor line.
- the number of passing persons is counted on the basis of one dimensional data generated from an image obtained from the photographing when the slit ray is interrupted on the monitor line when a person passes the monitor line.
- people counting systems typically create anonymous traffic counts. In retail traffic monitoring, however, this may be insufficient. For example, some situations may require store employees to accompany customers through access points that are being monitored by an object tracking and counting system, such as fitting rooms. In these circumstances, existing systems are unable to separately track and count employees and customers.
- the present invention would solve this deficiency.
- the present invention is directed to a system and process for detecting, tracking, and counting human objects of interest entering or exiting an entrance or entrances of a facility.
- the system includes: at least one image capturing device at the entrance to obtain images; a reader device; and a processor for extracting objects of interest from the images and generating tracks for each object of interest, and for matching objects of interest with objects associated with RFID tags, and for counting the number of objects of interest associated with, and not associated with, particular RFID tags.
- An objective of the present invention is to provide a technique capable of achieving a reasonable computation load and providing real-time detection, tracking, and counting results.
- Another objective is to provide easy and unobtrusive tracking and monitoring of the facility.
- Another objective of the present invention is to provide a technique to determine the ratio of the number of human objects entering the facility over the number of human objects of interest passing within a certain distance from the facility.
- FIG. 1 is a schematic perspective view of a facility in which the system of the present invention is installed;
- FIG. 2 is a diagram illustrating the image capturing device connected to an exemplary counting system of the present invention
- FIG. 3 is a diagram illustrating the sequence of converting one or more stereo image pairs captured by the system of the present invention into the height maps, which are analyzed to track and count human objects;
- FIG. 4 is a flow diagram describing the flow of processes for a system performing human object detection, tracking, and counting according to the present invention
- FIG. 5 is a flow diagram describing the flow of processes for object tracking
- FIG. 6 is a flow diagram describing the flow of processes for track analysis
- FIG. 7 is a first part of a flow diagram describing the flow of processes for suboptimal localization of unpaired tracks
- FIG. 8 is a second part of the flow diagram of FIG. 7 describing the flow of processes for suboptimal localization of impaired tracks
- FIG. 9 is a flow diagram describing the flow of processes for second pass matching of tracks and object detects.
- FIG. 10 is a flow diagram describing the flow of processes for track updating or creation
- FIG. 11 is a flow diagram describing the flow of processes for track merging
- FIG. 12 is a flow diagram describing the flow of processes for track updates
- FIG. 13 is a diagram illustrating the image capturing device connected to an exemplary counting system, which includes an RFID reader;
- FIG. 14 is a flow diagram depicting the flow of processes for retrieving object data and tag data and generating track arrays and sequence arrays;
- FIG. 15 is a flow diagram depicting the flow of processes for determining whether any overlap exists between any of the track records and any of the sequence records;
- FIG. 16 is a flow diagram depicting the flow of processes for generating a match record 316 for each group of sequence records whose track records overlap;
- FIG. 17 is a flow diagram depicting the flow of processes for calculating the match quality scores
- FIG. 18A is a flow diagram depicting the flow of processes for determining which track record is the best match for a particular sequence.
- FIG. 18B is a flow diagram depicting the flow of processes for determining the sequence record that holds the sequence record/track record combination with the highest match quality score.
- the present invention is a system 10 comprising at least one image capturing device 20 electronically or wirelessly connected to a counting system.
- a system 10 comprising at least one image capturing device 20 electronically or wirelessly connected to a counting system.
- the at least one image capturing device 20 is mounted above an entrance or entrances 21 to a facility 23 for capturing images from the entrance or entrances 21 .
- Facilities such as malls or stores with wide entrances often require more than one image capturing device to completely cover the entrances.
- the area captured by the image capturing device 20 is field of view 44 .
- Each image, along with the time when the image is captured, is a frame 48 ( FIG. 3 ).
- the image capturing device includes at least one stereo camera with two or more video sensors 46 ( FIG. 2 ), which allows the camera to simulate human binocular vision.
- a pair of stereo images comprises frames 48 taken by each video sensor 46 of the camera.
- a height map 56 is then constructed from the pair of stereo images through computations involving finding corresponding pixels in rectified frames 52 , 53 of the stereo image pair.
- Door zone 84 is an area in the height map 56 marking the start position of an incoming track and end position of an outgoing track.
- Interior zone 86 is an area marking the end position of the incoming track and the start position of the outgoing track.
- Dead zone 90 is an area in the field of view 44 that is not processed by the counting system 30 .
- Video sensors 46 receive photons through lenses, and photons cause electrons in the image capturing device 20 to react and form light images.
- the image capturing device 20 then converts the light images to digital signals through which the device 20 obtains digital raw frames 48 ( FIG. 3 ) comprising pixels.
- a pixel is a single point in a raw frame 48 .
- the raw frame 48 generally comprises several hundred thousands or millions of pixels arranged in rows and columns.
- video sensors 46 used in the present invention include CMOS (Complementary Metal-Oxide Semiconductor) sensors and/or CCD (Charge-Coupled Device) sensors.
- CMOS Complementary Metal-Oxide Semiconductor
- CCD Charge-Coupled Device
- the types of video sensors 46 should not be considered limiting, and any video sensor 46 compatible with the present system may be adopted.
- the counting system 30 comprises three main components: (1) boot loader 32 ; (2) system management and communication component 34 ; and (3) counting component 36 .
- the boot loader 32 is executed when the system is powered up and loads the main application program into memory 38 for execution.
- the system management and communication component 34 includes task schedulers, database interface, recording functions, and TCPIIP or PPP communication protocols.
- the database interface includes modules for pushing and storing data generated from the counting component 36 to a database at a remote site.
- the recording functions provide operations such as writing user defined events to a database, sending emails, and video recording.
- the counting component 36 is a key component of the system 10 and is described in further detail as follows.
- the at least one image capturing device 20 and the counting system 30 are integrated in a single image capturing and processing device.
- the single image capturing and processing device can be installed anywhere above the entrance or entrances to the facility 23 .
- Data output from the single image capturing and processing device can be transmitted through the system management and communication component 34 to the database for storage and further analysis.
- FIG. 4 is a diagram showing the flow of processes of the counting component 36 .
- the processes are: (1) obtaining raw frames (block 100 ); (2) rectification (block 102 ); (3) disparity map generation (block 104 ); (4) height map generation (block 106 ); (5) object detection (block 30 • 108 ); and (6) object tracking (block 110 ).
- the image capturing device 20 obtains raw image frames 48 ( FIG. 3 ) at a given rate (such as for every 1 As second) of the field of view from the video sensors 46 .
- a given rate such as for every 1 As second
- Each pixel in the raw frame 48 records color and light intensity of a position in the field of view 44 .
- video sensor 46 of the device 20 produces a different raw frame 48 simultaneously.
- One or more pairs of raw frames 48 taken simultaneously are then used to generate the height maps 56 for the field of view 44 , as will be described.
- tracks 88 generated by each image capturing device 20 are merged before proceeding to block 102 .
- Block 102 uses calibration data of the stereo cameras (not shown) stored in the image capturing device 20 to rectify raw stereo frames 48 .
- the rectification operation corrects lens distortion effects on the raw frames 48 .
- the calibration data include each sensor's optical center, lens distortion information, focal lengths, and the relative pose of one sensor with respect to the other. After the rectification, straight lines in the real world that have been distorted to curved lines in the raw stereo frames 48 are corrected and restored to straight lines. The resulting frames from rectification are called rectified frames 52 , 53 ( FIG. 3 ).
- Block 104 creates a disparity map 50 ( FIG. 3 ) from each pair of rectified frames 52 , 53 .
- a disparity map 50 is an image map where each pixel comprises a disparity value.
- the term disparity was originally used to describe a 2-D vector between positions of corresponding features seen by the left and right eyes. Rectified frames 52 , 53 in a pair are compared to each other for matching features. The disparity is computed as the difference between positions of the same feature in frame 52 and frame 53 .
- Block 106 converts the disparity map 50 to the height map 56 .
- Each pixel of the height map 56 comprises a height value and x-y coordinates, where the height value is represented by the greatest ground height of all the points in the same location in the field of view 44 .
- the height map 56 is sometimes referred to as a frame in the rest of the description.
- Object detection is a process of locating candidate objects 58 in the height map 56 .
- One objective of the present invention is to detect human objects standing or walking in relatively flat areas. Because human objects of interest are much higher than the ground, local maxima of the height map 56 often represent heads of human objects or occasionally raised hands or other objects carried on the shoulders of human objects walking in counting zone 84 , 86 ( FIG. 1 ). Therefore, local maxima of the height map 56 are identified as positions of potential human object 58 detects. Each potential human object 58 detect is represented in the height map 56 by a local maximum with a height greater than a predefined threshold and all distances from other local maxima above a predefined range.
- the current invention searches in the neighborhood of the most recent local maxima for a suboptimal location as candidate positions for human objects of interest, as will be described later.
- a run is a contiguous set of pixels on the same row of the height map 56 with the same non-zero height values.
- Each run is represented by a four-tuple (row, start-column, end-column, height).
- height map 56 is often represented by a set of runs in order to boost processing performance and object detection is also performed on the runs instead of the pixels.
- Object detection comprises four stages: 1) background reconstruction; 2) first pass component detection; 3) second pass object detection; and 4) merging of closely located detects.
- Pixel q is an eight-neighbor of pixel p if q and p share an edge or a vertex in the height map 56 , and both p and q have non-zero height values.
- a pixel can have as many as eight eight-neighbors.
- a set of pixels E is an eight-connected component if for every pair of pixels Pi and Pi in E, there exists a sequence of pixels Pi′ . . . , Pi such that all pixels in the sequence belong to the set E, and every pair of two adjacent pixels are eight neighbors to each other. Without further noting, an eight connected component is simply referred to as a connected component hereafter.
- the connected component is a data structure representing a set of eight-connected pixels in the height map 56 .
- a connected component may represent one or more human objects of interest.
- Properties of a connected component include height, position, size, etc.
- Table 1 provides a list of properties associated with a connected component. Each property has an abbreviated name enclosed in a pair of parentheses and a description. Properties will be referenced by their abbreviated names hereafter.
- componentiD represents the component.
- componentiD represents the parent component from which the current component is derived.
- peak position Mass center of the pixels in the (det_maxX, det_maxY) component having the greatest height value.
- peak area (det_maxArea) Number of pixels in the component having the greatest height value.
- center (det X, det Y) Mass center of all pixels of the component.
- predicate operators are applied to a sunset of properties of the connected component to check if the subset of properties satisfies a certain condition.
- Component predicate operators include:
- IsNoisy which checks whether a connected component is too small to be considered a valid object detect 58 .
- a connected component is considered as “noise” if at least two of the following three conditions hold: 1) its det_minSize is less than two thirds of a specified minimum human body size, which is configurable in the range of [9,36] inches; 2) its det_area is less than four ninths of the area of a circle with its diameter equal to a specified minimum body size; and 3) the product of its det_minSize and det_area is less than product of the specified minimum human body size and a specified minimum body area.
- IsPointAtBoundaries which checks whether a square window centered at the current point with its side equal to a specified local maximum search window size is intersecting boundaries of the height map 56 , or whether the connected component has more than a specific number of pixels in the dead zone 90 . If this operation returns true, the point being checked is considered as within the boundaries of the height map 56 .
- NotSmallSubComponent which checks if a subcomponent in the second pass component detection is not small. It returns true if its detrninxize is greater than a specified minimum human head size or its det_area is greater than a specified minimum human head area.
- BigSubComponentSeed which checks if a subcomponent seed in the second pass component detection is big enough to stop the grouping operation. It returns true if its detrninxize is greater than the specified maximum human head size or its det_area is greater than the specified maximum human head area.
- SmallSubComponent which checks if a subcomponent in the second pass component detection is small. It returns true if its detrninxize is less than the specified minimum human head size or its det_area is less than the specified minimum human head area.
- the background represents static scenery in the field view of the image capturing device 20 and is constructed from the height map 56 .
- the background building process monitors every pixel of every height map 56 and updates a background height map.
- a pixel may be considered as part of the static scenery if the pixel has the same non-zero height value for a specified percentage of time (e.g., 70%).
- First pass components are computed by applying a variant of an eight-connected image labeling algorithm on the runs of the height map 56 . Properties of first pass components are calculated according to the definitions in Table 1. Predicate operators are also applied to the first pass components. Those first pass components whose “IsNoise” predicate operator returns “true” are ignored without being passed on to the second pass component detection phase of the object detection.
- height map local maxima to be considered as candidate human detects, are derived from the first pass components in the following steps.
- each first pass component finds all eight connected subcomponents whose pixels have the same height.
- the deigrouped property of all subcomponents is cleared to prepare for subcomponent grouping and the deCID property of each subcomponent is set to the ID of the corresponding first pass component.
- the subcomponent has the highest height among all of the ungrouped subcomponents of the given first pass component, or the largest area among all of the ungrouped subcomponents of the given first pass component if several ungrouped subcomponents with the same highest height exist; and (2) the subcomponent is higher than all of its neighboring subcomponents. If such a subcomponent exists, use it as the current seed and proceed to the next step for further subcomponent grouping. Otherwise, return to step 1 to process the next first pass component in line.
- step 2 calculate the distance between centers of the current seed and the subcomponent found in the previous step. If the distance is less than the specified detection search range or the current seed passes the SmallSubComponent test, group the current seed and the subcomponent together and update the properties of the current seed accordingly. Otherwise, set the det_grouped property of the current seed as “grouped”. Return to step 2 to continue the grouping process until no further grouping can be done.
- a human object of interest is identified by a local maximum in the height map.
- more than one local maxima detection is generated from the same human object of interest. For example, when a human object raises both of his hands at the same time, two closely located local maxima may be detected. Therefore, it is necessary to merge closely located local maxima.
- det rnaxlleights of detections if the difference between det rnaxlleights of detections is smaller than a specified person height variation threshold, delete the detection with significantly less 3-D volume (e.g., 13 the product of det_maxHeight and det_masArea for one connected component is less than two thirds of the product for the other connected component) (a strong local maximum has higher priority over a weak one);
- candidate object detects 58 The remaining local maxima detections after the above merging process are defined as candidate object detects 58 , which are then matched with a set of existing tracks 74 for track extension, or new track initiation if no match is found.
- Object tracking uses objects detected in the object detection process (block 108 ) to extend existing tracks 74 or create new tracks 80 . Some short, broken tracks are also analyzed for possible track repair operations.
- zones 82 are delineated in the height map 56 .
- Door zones 84 represent door areas around the facility 23 to the entrance.
- Interior zones 86 represent interior areas of the facility.
- a track 76 traversing from the door zone 84 to the interior zone 86 has a potential “in” count.
- a track 76 traversing to the door zone 84 from the interior zone 86 has a potential “out” count. If a track 76 traverses across zones 82 multiple times, there can be only one potential “in” or “out” count depending on the direction of the latest zone crossing.
- the process of object tracking 110 comprises the following phases: 1) analysis and processing of old tracks (block 120 ); 2) first pass matching between 5 tracks and object detects (block 122 ); 3) suboptimal localization of unpaired tracks (block 124 ); 4) second pass matching between tracks and object detects (block 126 ); and 5) track updating or creation (block 128 ).
- An object track 76 can bemused to determine whether a human object is entering or leaving the facility, or to derive properties such as moving speed and direction for human objects being tracked.
- Object tracks 76 can also be used to eliminate false human object detections, such as static signs around the entrance area. If an object detect 58 has not moved and its associated track 76 has been static for a relatively long time, the object detect 58 will be considered as part of the background and its track 76 will be processed differently than normal tracks (e.g., the counts created by the track will be ignored).
- Object tracking 110 also makes use of color or gray level intensity information in the frames 52 , 53 to search for best match between tracks 76 and object detects 58 . Note that the color or the intensity information is not carried to disparity maps 50 or height maps 56 .
- the same technique used in the object tracking can also be used to determine how long a person stands in a checkout line.
- Each track 76 is a data structure generated from the same object being tracked in both temporal and spatial domains and contains a list of 4-tuples (x, y, t, h) in addition to a set of related properties, where h, x and y present the height and the position of the object in the field 25 of view 44 at time t.
- (x, y, h) is defined in a world coordinate system with the plane formed by x and y parallel to the ground and the h axis vertical to the ground.
- Each track can only have one position at any time.
- track 76 also has a set of properties as defined in Table 2 and the properties will be referred to later by their abbreviated names in the parentheses:
- ID number (trk_ID) A unique number identifying the track.
- 2 track state (trk_state) A track could be in one of three states: active, inactive and deleted. Being active means the track is extended in a previous frame, being inactive means the track is not paired with a detect in a previous frame, and being deleted means the track is marked for deletion.
- 3 start point (trk_start) The initial position of the track (Xs, Ys, Ts, Hs).
- end point (trk end) The end position of the track (Xe, Ye, Te, He).
- moving vector The direction and offset from the closest (trk_movingVec) point in time to the current point with the offset greater than the minimum body size.
- 21 following track The ID of the track that is following (trk_followingTrack) closely. If there is a track following closely, the distance between these two tracks don't change a lot, and the maximum height of the front track is less than a specified height for shopping carts, then the track in the front may be considered as made by a shopping cart.
- predicate operators are defined in order to obtain the current status of the tracks 76 .
- the predicate operators are applied to a subset of properties of a track 76 to check if the subset of properties satisfies a certain condition.
- the predicate operators include:
- a track 76 is considered noisy if the track points with a fixed number of frames in the past (specified as noisy track duration) satisfies one of the following conditions:
- the range of track 76 (trkrange) is less than the specified noisy track range, and either the negative distance (trk_negDist) is larger than two thirds of the positive distance (trk_posDist) or the negative steps (trk_negNum) are more than two thirds of the positive steps (trk_posNum);
- the range of track 76 (trkrange) is less than half of the specified noisy track range, and either the negative distance (trk_negDist) is larger than one third of the positive distance (trk_posDist) or the negative steps (trk_negNum) are more than one third of the positive steps (trk_posNum).
- a track 76 may be noisy at one time and not noisy at another time.
- the range of track 76 (trkrange) is less than the specified noisy track range, and either the negative distance (trk_negDist) is larger than two thirds of the positive distance (trk_posDist) or the negative steps (trk_negNum) are more than two thirds of the positive steps (trk_posNum);
- the range of track 76 (trkrange) is less than half the specified noisy track range, and either the negative distance trk_negDist) is larger than one third of the positive distance (trk_posDist) or the negative steps (trk_negNum) are more than one third of the positive steps (trk_posNum).
- IsSameTrack which check if two tracks 76 , 77 are likely caused by the same human object. All of the following three conditions have to be met for this test to return true: (a) the two tracks 76 , 77 overlap in time for a minimum number of frames specified as the maximum track timeout; (b) the ranges of both tracks 76 , 77 are above a threshold specified as the valid counting track span; and (c) the distance between the two tracks 76 , 77 at any moment must be less than the specified minimum person width.
- IsCountignored when the track 76 crosses the counting zones, it may not be created by a human object of interest. The counts of a track are ignored if one of the following conditions is met:
- Invalid Tracks the absolute difference between trk_exits and trk_enters is not equal to one.
- trkrange is less than the specified minimum counting track length.
- trkrange is less than the specified minimum background counting track length as well as one of the following: trk_mergedTracks is equal to trk_smallSearches, or trk_backgroundCount is more than 80% of the life time of the track 76 , or the track 76 crosses the zone boundaries more than once.
- trk_highPtSteps is larger than half oftrk_totaiSteps.
- trk_lowPtSteps is greater than % of trk_totaiSteps, and trk_maxTrackHt is less than or equal to the specified minimum person height.
- trk_voteFollowing is greater than 3
- trk_minFollowingDist is more than or equal to 80% of trk_maxFollowingDist
- trk_maxTrackHt is less than or equal to the specified shopping cart height.
- trk_voteMirrorTrack is more than 60% of the life time of the track 76
- trk_maxMirrorTrackDist is less than two thirds of the specified maximum person width or trk_totalVoteMirrorTrack is more than 80% of the life time of the track 76 .
- each track 76 is updated with new information on its position, time, and height when there is a best matching human object detect 58 in the current height map 56 for First, set trk_state of the track 76 to 1 (block 360 ).
- the track 76 is not noisy at the beginning, but it has been noisy for longer than the specified stationary track timeout (block 368 ); or
- the track 76 is not in the background at the beginning, but it has been in the background for longer than the specified stationary track timeout (block 370 ).
- the predicted position is calculated by linear extrapolation on positions of the track 76 in the past three seconds.
- Active tracks 88 are tracks 76 that are either created or extended with human object detects 58 in the previous frame. When there is no best matching human object detect 58 for the track 76 , the track 76 is considered as inactive.
- This phase mainly deals with tracks 76 that are inactive for a certain period of time or are marked for deletion in previous frame 56 .
- Track analysis is performed on tracks 76 that have been inactive for a long time to decide whether to group them with existing tracks 74 or to mark them for deletion in the next frame 56 .
- Tracks 76 are deleted if the tracks 76 have been marked for deletion in the previous frame 56 , or the tracks 76 are inactive and were created a very short period of time before. If the counts of the soon-to-be deleted tracks 76 shall not be ignored according to the IsCountlgnored predicate operator, collect the counts of the tracks 76 .
- this phase searches for optimal matches between the human object detects 58 (i.e. the set of local maxima found in the object detection phase) and tracks 76 that have not been deleted.
- the track 76 is active, or it must be long enough (e.g. with more than three points), or it just became inactive a short period of time ago (e.g. it has less than three frames);
- the maximum height of the detect 58 must be greater than or equal to the specified minimum person height
- the detect 58 is neither in the background nor close to dead zones or height map boundaries, and the track 76 is neither in the background nor is noisy in the previous frame, and a first distance from the detect 58 to the predicted position of the track 76 is less than a second distance from the detect 58 to the end position of the track 76 , use the first distance as the matching distance. Otherwise, use the second distance as the matching distance.
- the matching distance has to be less than the specified detection search range;
- the distance from the track 76 to the detect 58 must be less than the specified background detection search range, which is generally smaller than the threshold used in condition (4).
- the sorted list contains pairs of detects 58 and tracks 76 that are not paired. Run through the whole sorted list from the beginning and check each pair. If either the detect 58 or the track 76 of the pair is marked “paired” already, ignore the pair. Otherwise, mark the detect 58 and the track 76 of the pair as “paired”.
- some human objects may not generate local maxima in the height map 56 and therefore may be missed in the object detection process 108 .
- the desired local maxima might get suppressed by a neighboring higher local maximum from a taller object.
- some human object tracks 76 may not always have a corresponding local maximum in the height map 56 . This phase tries to resolve this issue by searching for a suboptimal location for a track 76 that has no corresponding local maximum in the height map 56 at the current time.
- Tracks 76 that have already been paired with a detect 58 in the previous phase might go through this phase too to adjust their locations if the distance between from end of those tracks to their paired detects is much larger than their steps in the past.
- Track A the track 76 currently undergoing this phase is called Track A. The search is performed in the following steps.
- Track A is deemed not suitable for the suboptimal location search operation (i.e., it is inactive, or it's in the background, or it's close to the boundary of the height map 56 or dead zones, or its height in last frame was less than the minimum person height (block 184 )), stop the search process and exit. Otherwise, proceed to the next step.
- Track A has moved a few steps (block 200 ) (e.g., three steps) and is paired with a detection (called Detection A) (block 186 ) that is not in the background and whose current step is much larger than its maximum moving step within a period of time in the past specified by a track time out parameter (block 202 , 204 ), proceed to the next step. Otherwise, stop the search process and exit.
- Detection A a detection
- search around the end point of Track A in a range defined by its maximum moving steps for a location with the largest height sum in a predefined window and call this location Best Spot A (block 188 ). If there are some detects 58 deleted in the process of merging of closely located detects in the object detection phase and Track A is long in either the spatial domain or the temporal domain (e.g. the span of Track A is greater than the specified noisy track span threshold, or Track A has more than three frames) (block 190 ), find the closest one to the end point of Track too. If its distance to the end point of Track A is less than the specified detection search range (block 206 ), search around the deleted component for the position with the largest height sum and call it Best Spot AI (block 208 ).
- Detection B is not already paired with a track 76 (block 220 ), proceed to the next step. Otherwise, call the paired track of the Detection B as Track B and perform one of the following operations in the given order before exiting the search:
- Track B is not sizable in both temporal and spatial domain (block 228 )
- Mark Detection B as Track A's closest detection;
- the distance from detect 58 to the end point of the track 76 (block 274 ) is smaller than two thirds of the specified detection search range (block 278 ) when the track doesn't move too far (e.g. the span of the track 76 is less than the minimal head size and the track 76 has more than three points (block 276 ));
- the maximum height of the detect 58 must be larger than or equal to the specified minimum person height (block 282 );
- the distance from the detect 58 to the track 76 must be smaller than the specified background detection search range, if either the last point of the track 76 or the detect 58 is in background (block 286 ), or the detect 58 is close to dead zones or height map boundaries (block 288 ); or if not, the distance from the detect 58 to the track 76 must be smaller than the specified detection search range (block 292 ).
- the sorted list contains pairs of detects 58 and tracks 76 which are not paired at all at the beginning. Then run through the whole sorted list from the beginning and check each pair. If either the detect 58 or the track 76 of the pair is marked “paired” already, ignore the pair. Otherwise, mark the detect 58 and the track 76 of the pair as “paired” (block 270 ).
- the track 76 is updated with the information of the detect 58 (block 300 , 302 ).
- the distance is less than the specified detection merge range and the detect 58 and the closest track 76 are in the support of the same first pass component (i.e., the detect 58 and the track 76 come from the same first pass component)
- each unpaired track 77 is inactive (block 324 ). If that track 77 has a marked closest detect and the detect 58 has a paired track 76 , set the trk_IastCollidingTrack property of the current track 77 to the track ID of the paired track 76 (block 330 ).
- Track analysis is applied whenever the track 76 is going to be deleted.
- the track 76 will be deleted when it is not paired with any detect for a specified time period. This could happen when a human object moves out of the field view 44 , or when the track 76 is disrupted due to poor disparity map reconstruction conditions such as very low contrast between the human object and the background.
- the goal of track analysis is to find those tracks that are likely continuations of some soon-to-be deleted tracks, and merge them.
- Track analysis starts from the oldest track and may be applied recursively on newly merged tracks until no tracks can be further merged.
- the track that is going to be deleted is called a seed track, while other tracks are referred to as current tracks.
- the steps of track analysis are as followings:
- the seed track was noisy when it was active (block 130 in FIG. 6 ), or its trkrange is less than a specified merging track span (block 132 ), or its trk_IastCollidingTrack does not contain a valid track ID and it was created in less than a specified merging track time period before (block 134 ), stop and exit the track analysis process.
- the initial testing conditions used in this step are: (1) the current track is not marked for deletion and is active long enough (e.g. more than three frames) (block 142 ); (2) the current track is continuous with the seed track (e.g. it is created within a specified maximum track timeout of the end point of the seed track) (block 144 ); (3) if both tracks are short in space (e.g., the trkranges properties of both tracks are less than the noisy track length threshold), then both tracks should move in the same direction according to the relative offset of the trk_start and trk_end properties of each track (block 146 ).
- step 148 if either track is at the boundaries according to the “is at the boundary” checking (block 148 ), both tracks should move in the same direction; and (2) at least one track is not noisy at the time of merging (block 150 ).
- the noisy condition is determined by the “is noisy” predicate operator.
- a first threshold (block 162 ) is specified for normal and clean tracks, and a second threshold is specified for noisy tracks or tracks in the background.
- the second threshold (block 164 ) is used if either the seed track or the current track is unreliable (e.g. at the boundaries, or either track is noisy, or trkranges of both tracks are less than the specified noisy track length threshold and at least one track is in the background) (block 160 ), otherwise the first threshold is used.
- step 166 If the shortest distance between the two tracks during their overlapping time is less than the threshold (block 166 ), mark the current track as the best fit track for the seed track (block 172 ) and if the seed track does not have best fit track yet or the current track is closer to the seed track than the existing best fit track (block 170 ). Go to step 3.
- This operation merges two tracks into one track and assigns the merged track with properties derived from the two tracks. Most properties of the merged track are the sum of the corresponding properties of the two tracks but with the following exceptions:
- trk_enters and trk_exits properties of the merged track are the sum of the corresponding properties of the tracks plus the counts caused by zone crossing from the end point ozone track to the start point of another track, which compensates the missing zone crossing in the time gap between the two tracks (block 350 ).
- the final position is the average (block 352 ).
- the trk_start property of the merged track has the same trk_start value as the newer track among the two tracks being merged, and the trk_end property of the merged track has the same trk_end value as the older track among the two (block 354 ).
- the buffered raw heights and raw positions of the merged track are the buffered raw heights and raw positions of the older track among the two tracks being merged (block 356 ).
- an alternative embodiment of the present invention may be employed and may comprise a system 210 having an image capturing device 220 , a reader device 225 and a counting system 230 .
- the at least one image capturing device 220 may be mounted above an entrance or entrances 221 to a facility 223 for capturing images from the entrance or entrances 221 .
- the area captured by the image capturing device 220 is field of view 244 .
- Each image captured by the image capturing device 220 along with the time when the image is captured, is a frame 248 .
- the image capturing device 220 may be video based.
- the manner in which object data is captured is not meant to be limiting so long as the image capturing device 220 has the ability to track objects in time across a field of view 244 .
- the object data 261 may include many different types of information, but for purposes of this embodiment of the present invention, it includes information indicative of a starting frame, an ending frame, and direction.
- the image capturing device 220 may include at least one stereo camera with two or more video sensors 246 (similar to the image capturing device shown in FIG. 2 ), which allows the camera to simulate human binocular vision.
- a pair of stereo images comprises frames 248 taken by each video sensor 246 of the camera.
- the image capturing device 220 converts light images to digital signals through which the device 220 obtains digital raw frames 248 comprising pixels.
- the types of image capturing devices 220 and video sensors 246 should not be considered limiting, and any image capturing device 220 and video sensor 246 compatible with the present system may be adopted.
- the reader device 225 may employ active RFID tags 227 that transmit their tag information at a fixed time interval.
- the time interval for the present invention will typically be between 1 and 10 times per second, but it should be obvious that other time intervals may be used as well.
- the techniques for transmitting and receiving RFID signals are well known by those with skill in the art, and various methods may be employed in the present invention without departing from the teachings herein.
- An active RFID tag is one that is self-powered, i.e., not powered by the RF energy being transmitted by the reader.
- the reader device 225 may run continuously and independently of the other devices and systems that form the system 210 . It should be evident that the reader device 225 may be replaced by a device that uses other types of RFID tags or similar technology to identify objects, such as passive RFID, ultrasonic, or infrared technology. It is significant, however, that the reader device 225 has the ability to detect RFID tags, or other similar devices, in time across a field of view 228 for the reader device 225 . The area captured by the reader device 225 is the field of view 228 and it is preferred that the field of view 228 for the reader device 225 be entirely within the field of view 244 for the image capturing device 220 .
- the counting system 230 processes digital raw frames 248 , detects and follows objects 258 , and generates tracks associated with objects 258 in a similar manner as the counting system described above.
- the counting system 230 may be electronically or wirelessly connected to at least one image capturing device 220 and at least one reader device 225 via a local area or wide area network.
- the counting system 230 in the present invention is located remotely as part of a central server, it should be evident to those with skill in the art that all or part of the counting system 230 may be (i) formed as part of the image capturing device 220 or the reader device 225 , (ii) stored on a “cloud computing” network, or (iii) stored remotely from the image capturing device 220 and reader device 225 by employing other distributed processing techniques.
- the RFID reader 225 may all be integrated in a single device.
- This unitary device may be installed anywhere above the entrance or entrances to a facility 223 .
- the hardware and methodology that is used for detecting and tracking objects is not limited with respect to this embodiment of the present invention. Rather, it is only important that objects are detected and tracked and the data associated with objects 258 and tracks is used in combination with tag data 226 from the reader device 225 to separately count and track anonymous objects 320 and defined objects 322 , which are associated with an RFID tag 227 .
- the reader device 225 may be connected directly to the counting system 230 or the reader device 225 may be connected remotely via a wireless or wired communications network, as are generally known in the industry. It is also possible that the reader device 225 may send tag data to the image capturing device, which in turn transmits the tag data 226 to the counting system 230 .
- the tag data 226 may be comprised of various information, but for purposes of the present invention, the tag data 226 includes identifier information, signal strength information and battery strength information.
- tag data 226 and object data 261 may be pulled from the reader device 225 and the image capturing device 220 and transmitted to the counting system 230 . It is also possible for the reader device 225 and the image capturing device 220 to push the tag data 226 and object data 261 , respectively, to the counting system 230 . It should be obvious that the traffic data 260 , which consists of both tag data 226 and object data 261 , may also be transmitted to the counting system via other means without departing from the teachings of this invention. The traffic data 260 may be sent as a combination of both tag data 226 and object data 261 and the traffic data 260 may be organized based on time.
- the counting system 230 separates the traffic data 260 into tag data 226 and object data 261 .
- the counting system 230 includes a listener module 310 that converts the tag data 226 into sequence records 312 and the object data 261 into track records 314 .
- the counting system 230 creates a sequence array 352 comprised of all of the sequence records 312 and a track array 354 comprised of all of the track records 314 .
- Each sequence record 312 may consist of (1) a tag ID 312 a , which may be an unsigned integer associated with a physical RFID tag 227 located within the field of view 228 of a reader device 220 ; (2) a startTime 312 b , which may consist of information indicative of a time when the RFID tag 227 was first detected within the field of view 228 ; (3) an endTime, which may consist of information indicative of a time when the RFID tag 227 was last detected within the field of view 228 of the reader device 220 ; and (4) an array of references to all tracks that overlap a particular sequence record 312 .
- Each track record 314 may include (a) a counter, which may be a unique ID representative of an image capturing device 220 associated with the respective track; (b) a direction, which may consist of information that is representative of the direction of movement for the respective track; (c) startTime, which may consist of information indicative of a time when the object of interest was first detected within the field of view 244 of the image capturing device 220 ; (d) endTime, which may consist of information indicative of a time when 30 the object of interest left the field of view 244 of the image capturing device 220 ; and (e) tagiD, which (if non-zero) may include an unsigned integer identifying a tag 227 associated with this track record 314 .
- the counting system 220 for the system must determine which track records 314 and sequence records 312 match one another and then the counting system 220 may subtract the matching track records 312 from consideration, which means that the remaining (unmatched) track records 314 relate to anonymous objects 320 and the track records 312 that match sequence records 314 relate to defined objects 322 .
- the counting system 220 To match track records 314 and sequence records 312 , the counting system 220 first determines which track records 314 overlap with particular sequence records 312 . Then the counting system 2 • 20 creates an array comprised of track records 312 and sequence records 314 that overlap, which is known as a match record 316 . In the final step, the counting system 220 iterates over the records 312 , 314 in the match record 316 and determines which sequence records 312 and track records 314 best match one another.
- the respective matching track record 314 and sequence record 312 may be removed from the match record 316 and the counting system will then iteratively move to the next sequence record 312 to find the best match for that sequence record 312 until all of the sequence records 312 and track records 314 in the match record 316 have matches, or it is determined that no match exists.
- the counting system 220 iterates over each sequence record 312 in the sequence array 352 to find which track records overlap with a particular sequence records 312 ; the term “overlap” generally refers to track records 314 that have startTimes that are within a window defined by the startTime and endTime of a particular sequence records 312 . Therefore, for each sequence record 312 , the counting system 230 also iterates over each track record 314 in the track array 354 and adds a reference to the respective sequence record 312 indicative of each track record 314 that overlaps that sequence record 314 .
- sequence records have null values for overlapping track records 314 and the track records have tagiD fields set to zero, but these values are updated as overlapping records 312 , 314 are found.
- the iteration over the track array 254 stops when a track record 314 is reached that has a startTime for the track record 314 that exceeds the endTime of the sequence record 312 at issue.
- the counting system 230 iterates over the sequence array 352 and for each sequence record 312 a , the counting system 230 compares the track records 314 a that overlap with that sequence record 312 a to the track records 314 b that overlap with the next sequence record 312 b in the sequence array 352 . As shown in FIG. 16 , a match record 316 is then created for each group of sequence records 312 whose track records 314 overlap.
- Each match record 316 is an array of references to all sequence records 312 whose associated track records 314 overlap with each other and the sequence records 312 are arranged in earliest-to-latest startTime order.
- the final step in matching sequence records 312 and track records 314 includes the step of determining which sequence records 312 and track records 314 are the best match.
- the counting system 230 must consider direction history on a per tag 227 basis, i.e., by mapping between the tagiD and the next expected match direction.
- the initial history at the start of a day (or work shift) is configurable to either “in” or “out”, which corresponds to employees initially putting on their badges or name tags outside or inside the monitored area.
- a two level map data structure referred to as a scoreboard 360
- the scoreboard 360 has a top level or sequencemap 362 and a bottom level or trackmap 364 .
- Each level 362 , 364 has keys 370 , 372 and values 374 , 376 .
- the keys 370 for the top level 362 are references to the sequence array 352 and the values 374 are the maps for the bottom level 364 .
- the keys for the bottom level 364 are references to the track array 354 and the values 376 are match quality scores 380 .
- the match quality scores are determined by using the following algorithm.
- OVERLAP (earliest endTime ⁇ latest startTime)/(latest endTime-earliest startTime).
- OVERLAP is ⁇ 0, then set the OVERLAP to 0.
- the counting system 230 populates the scoreboard 360 by iterating over the sequence records 312 that populate the sequence array 352 referenced by the top level 372 and for each of the sequence records 312 , the counting system 230 also iterates over the track records 314 that populate the track array 354 referenced by the bottom level 374 and generates match quality scores 380 for each of the track records 314 .
- match quality scores 380 are generated and inserted as values 376 in the bottom level 364
- each match quality score 380 for each track record 314 is compared to a bestScore value and if the match quality score 380 is greater than the bestScore value, the bestScore value is updated to reflect the higher match quality score 380 .
- the bestTrack reference is also updated to reflect the track record 314 associated with the higher bestScore value.
- the counting system 230 iterates over the keys 370 for the top level 372 to determine the bestSequence, which reflects the sequence record 312 that holds the best match for the bestTrack, i.e., the sequence record/track record combination with the highest match quality score 380 .
- the bestScore and bestSequence values are updated to reflect this determination.
- the sequence record 312 associated with the bestSequence is deleted from the scoreboard 360 and the bestTrack value is set to 0 in all remaining keys 372 for the bottom level 364 .
- the counting system 230 continues to evaluate the remaining sequence records 312 and track records 314 that make up the top and bottom levels 362 , 364 of the scoreboard 360 until all sequence records 312 and track records 314 that populate the match record 316 have been matched and removed from the scoreboard 360 , or until all remaining sequence records 312 have match quality scores 380 that are less than 25 or equal to 0, i.e., no matches remain to be found.
- the information related to the matching sequence records 312 and track records 314 may be used to prepare reports that allow employers to track, among other things, (i) how many times an employee enters or exits an access point; (ii) how many times an employee enters or exits an access point with a customer or anonymous object 320 ; (iii) the length of time that an employee or defined object 322 spends outside; and (iv) how many times a customer enters or exits an access point.
- This information may also be used to determine conversion rates and other “What If” metrics that relate to the amount of interaction employees have with customers.
- the system 210 defined herein may allow employers to calculate, among other things: (a) fitting room capture rates; (b) entrance conversion rates; (c) employee to fitting room traffic ratios; and (d) the average dollar spent. These metrics may also be extrapolated to forecast percentage sales changes that may result from increases to the fitting room capture rate, as shown in Table 3.
- there may be more than one counter 222 which consists of the combination of both the image capturing device 220 and the reader device 225 , to cover multiple access points.
- separate sequence arrays 352 and track arrays 354 will be generated for each of the counters 222 .
- a match array 318 may be generated and may comprise each of the match records 316 associated with each of the counters 222 .
- tag history must be shared between all counters 222 . This may be handled by merging, in a time-sorted order, all of the match records in the match array 318 and by using a single history map structure, which is generally understood by those with skill in the art.
- the match is reflected in the track array 354 associated with a specific counter 222 using the sequence array 352 associated with the same counter 222 .
- This may be achieved in part by using a counter ID field as part of the track records 314 that make up the track array 354 referenced by the bottom level 364 of the scoreboard 360 .
- references to the track arrays 354 may be added to a total track array 356 and indexed by counter ID.
- the sequence arrays 352 would be handled the same way.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Human Computer Interaction (AREA)
- Image Analysis (AREA)
- Radar Systems Or Details Thereof (AREA)
- Closed-Circuit Television Systems (AREA)
Abstract
Description
- This application is a continuation of U.S. patent application Ser. No. 12/942,108 filed on Nov. 9, 2010, which claims the benefit of U.S. Provisional Patent Application No. 61/294,013 filed on Jan. 11, 2010, which is incorporated herein in its entirety.
- 1. Field of the Invention
- The present invention generally relates to the field of object detection, tracking, and counting. In specific, the present invention is a computer-implemented detection and tracking system and process for detecting and tracking human objects of interest that appear in camera images taken, for example, at an entrance or entrances to a facility, as well as counting the number of human objects of interest entering or exiting the facility for a given time period.
- 2. Related Prior Art
- Traditionally, various methods for detecting and counting the passing of an object have been proposed. U.S. Pat. No. 7,161,482 describes an integrated electronic article surveillance (EAS) and people counting system. The EAS component establishes an interrogatory zone by an antenna positioned adjacent to the interrogation zone at an exit point of a protected area. The people counting component includes one people detection device to detect the passage of people through an associated passageway and provide a people detection signal, and another people detection device placed at a predefined distance from the first device and configured to detect another people detection signal. The two signals are then processed into an output representative of a direction of travel in response to the signals.
- Basically, there are two classes of systems employing video images for locating and tracking human objects of interest. One class uses monocular video streams or image sequences to extract, recognize, and track objects of interest. The other class makes use of two or more video sensors to derive range or height maps from multiple intensity images and uses the
range 30 or height maps as a major data source. - In monocular systems, objects of interest are detected and tracked by applying background differencing, or by adaptive template matching, or by contour tracking. The major problem with approaches using background differencing is the presence of background clutters, which negatively affect robustness and reliability of the system performance. Another problem is that the background updating rate is hard to adjust in real applications. The problems with approaches using adaptive template matching are:
- 1) object detections tend to drift from true locations of the objects, or get fixed to strong features in the background; and
- 2) the detections are prone to occlusion. Approaches using the contour tracking suffer from difficulty in overcoming degradation by intensity gradients in the background near contours of the objects. In addition, all the previously mentioned methods are susceptible to changes in lighting conditions, shadows, and sunlight.
- In stereo or multi-sensor systems, intensity images taken by sensors are converted to range or height maps, and the conversion is not affected by adverse factors such as lighting condition changes, strong shadow, or sunlight.
- Therefore, performances of stereo systems are still very robust and reliable in the presence of adverse factors such as hostile lighting conditions. In addition, it is easier to use range or height information for segmenting, detecting, and tracking objects than to use intensity information.
- Most state-of-the-art stereo systems use range background differencing to detect objects of interest. Range background differencing suffers from the same problems such as background clutter, as the monocular background differencing approaches, and presents difficulty in differentiating between multiple closely positioned objects.
- U.S. Pat. No. 6,771,818 describes a system and process of identifying and locating people and objects of interest in a scene by selectively clustering blobs to generate “candidate blob clusters” within the scene and comparing the blob clusters to a model representing the people or objects of interest. The comparison of candidate blob clusters to the model identifies the blob clusters that is the closest match or matches to the model. Sequential live depth images may be captured and analyzed in real-time to provide for continuous identification and location of people or objects as a function of time.
- U.S. Pat. Nos. 6,952,496 and 7,092,566 are directed to a system and process employing color images, color histograms, techniques for compensating variations, and a sum of match qualities approach to best identify each of a group of people and objects in the image of a scene. An image is segmented to extract regions which likely correspond to people and objects of interest and a histogram is computed for each of the extracted regions. The histogram is compared with pre-computed model histograms and is designated as corresponding to a person or object if the degree of similarity exceeds a prescribed threshold. The designated histogram can also be stored as an additional model histogram.
- U.S. Pat. No. 7,176,441 describes a counting system for counting the number of persons passing a monitor line set in the width direction of a path. A laser is installed for irradiating the monitor line with a slit ray and an image capturing device is deployed for photographing an area including the monitor line. The number of passing persons is counted on the basis of one dimensional data generated from an image obtained from the photographing when the slit ray is interrupted on the monitor line when a person passes the monitor line.
- Despite all the prior art in this field, no invention has developed a technology that enables unobtrusive detection and tracking of moving human objects, requiring low budget and maintenance while providing precise traffic counting results with the ability to distinguish between incoming and outgoing traffic, moving and static objects, and between objects of different heights. Thus, it is a primary objective of this invention to provide an unobtrusive traffic detection, tracking, and counting system that involves low cost, easy and low maintenance, high-speed processing, and capable of providing time-stamped results that can be further analyzed.
- In addition, people counting systems typically create anonymous traffic counts. In retail traffic monitoring, however, this may be insufficient. For example, some situations may require store employees to accompany customers through access points that are being monitored by an object tracking and counting system, such as fitting rooms. In these circumstances, existing systems are unable to separately track and count employees and customers. The present invention would solve this deficiency.
- The present invention is directed to a system and process for detecting, tracking, and counting human objects of interest entering or exiting an entrance or entrances of a facility.
- According to the present invention, the system includes: at least one image capturing device at the entrance to obtain images; a reader device; and a processor for extracting objects of interest from the images and generating tracks for each object of interest, and for matching objects of interest with objects associated with RFID tags, and for counting the number of objects of interest associated with, and not associated with, particular RFID tags.
- An objective of the present invention is to provide a technique capable of achieving a reasonable computation load and providing real-time detection, tracking, and counting results.
- Another objective is to provide easy and unobtrusive tracking and monitoring of the facility.
- Another objective of the present invention is to provide a technique to determine the ratio of the number of human objects entering the facility over the number of human objects of interest passing within a certain distance from the facility.
- In accordance with these and other objectives that will become apparent hereafter, the present invention will be described with particular references to the accompanying drawings.
-
FIG. 1 is a schematic perspective view of a facility in which the system of the present invention is installed; -
FIG. 2 is a diagram illustrating the image capturing device connected to an exemplary counting system of the present invention; -
FIG. 3 is a diagram illustrating the sequence of converting one or more stereo image pairs captured by the system of the present invention into the height maps, which are analyzed to track and count human objects; -
FIG. 4 is a flow diagram describing the flow of processes for a system performing human object detection, tracking, and counting according to the present invention; -
FIG. 5 is a flow diagram describing the flow of processes for object tracking; -
FIG. 6 is a flow diagram describing the flow of processes for track analysis; -
FIG. 7 is a first part of a flow diagram describing the flow of processes for suboptimal localization of unpaired tracks; -
FIG. 8 is a second part of the flow diagram ofFIG. 7 describing the flow of processes for suboptimal localization of impaired tracks; -
FIG. 9 is a flow diagram describing the flow of processes for second pass matching of tracks and object detects; -
FIG. 10 is a flow diagram describing the flow of processes for track updating or creation; -
FIG. 11 is a flow diagram describing the flow of processes for track merging; -
FIG. 12 is a flow diagram describing the flow of processes for track updates; -
FIG. 13 is a diagram illustrating the image capturing device connected to an exemplary counting system, which includes an RFID reader; -
FIG. 14 is a flow diagram depicting the flow of processes for retrieving object data and tag data and generating track arrays and sequence arrays; -
FIG. 15 is a flow diagram depicting the flow of processes for determining whether any overlap exists between any of the track records and any of the sequence records; -
FIG. 16 is a flow diagram depicting the flow of processes for generating a match record 316 for each group of sequence records whose track records overlap; -
FIG. 17 is a flow diagram depicting the flow of processes for calculating the match quality scores; -
FIG. 18A is a flow diagram depicting the flow of processes for determining which track record is the best match for a particular sequence; and -
FIG. 18B is a flow diagram depicting the flow of processes for determining the sequence record that holds the sequence record/track record combination with the highest match quality score. - This detailed description is presented in terms of programs, data structures or procedures executed on a computer or a network of computers. The software programs implemented by the system may be written in languages such as JAVA, C, C++, C#, Assembly language, Python, PHP, or HTML. However, one of skill in the art will appreciate that other languages may be used instead, or in combination with the foregoing.
- 1. System Components
- Referring to
FIGS. 1 , 2 and 3, the present invention is asystem 10 comprising at least oneimage capturing device 20 electronically or wirelessly connected to a counting system. In - the illustrated embodiment, the at least one
image capturing device 20 is mounted above an entrance or entrances 21 to afacility 23 for capturing images from the entrance or entrances 21. Facilities such as malls or stores with wide entrances often require more than one image capturing device to completely cover the entrances. The area captured by the image capturing
device 20 is field of view 44. Each image, along with the time when the image is captured, is a frame 48 (FIG. 3 ). - Typically, the image capturing device includes at least one stereo camera with two or more video sensors 46 (
FIG. 2 ), which allows the camera to simulate human binocular vision. A pair of stereo images comprisesframes 48 taken by eachvideo sensor 46 of the camera. Aheight map 56 is then constructed from the pair of stereo images through computations involving finding corresponding pixels in rectified frames 52, 53 of the stereo image pair. -
Door zone 84 is an area in theheight map 56 marking the start position of an incoming track and end position of an outgoing track.Interior zone 86 is an area marking the end position of the incoming track and the start position of the outgoing track.Dead zone 90 is an area in the field of view 44 that is not processed by thecounting system 30. - Video sensors 46 (
FIG. 2 ) receive photons through lenses, and photons cause electrons in theimage capturing device 20 to react and form light images. Theimage capturing device 20 then converts the light images to digital signals through which thedevice 20 obtains digital raw frames 48 (FIG. 3 ) comprising pixels. A pixel is a single point in araw frame 48. Theraw frame 48 generally comprises several hundred thousands or millions of pixels arranged in rows and columns. - Examples of
video sensors 46 used in the present invention include CMOS (Complementary Metal-Oxide Semiconductor) sensors and/or CCD (Charge-Coupled Device) sensors. However, the types ofvideo sensors 46 should not be considered limiting, and anyvideo sensor 46 compatible with the present system may be adopted. - The
counting system 30 comprises three main components: (1)boot loader 32; (2) system management andcommunication component 34; and (3)counting component 36. - The
boot loader 32 is executed when the system is powered up and loads the main application program into memory 38 for execution. - The system management and
communication component 34 includes task schedulers, database interface, recording functions, and TCPIIP or PPP communication protocols. The database interface includes modules for pushing and storing data generated from thecounting component 36 to a database at a remote site. The recording functions provide operations such as writing user defined events to a database, sending emails, and video recording. - The
counting component 36 is a key component of thesystem 10 and is described in further detail as follows. - 2. The Counting Component.
- In an illustrated embodiment of the present invention, the at least one
image capturing device 20 and thecounting system 30 are integrated in a single image capturing and processing device. The single image capturing and processing device can be installed anywhere above the entrance or entrances to thefacility 23. Data output from the single image capturing and processing device can be transmitted through the system management andcommunication component 34 to the database for storage and further analysis. -
FIG. 4 is a diagram showing the flow of processes of thecounting component 36. The processes are: (1) obtaining raw frames (block 100); (2) rectification (block 102); (3) disparity map generation (block 104); (4) height map generation (block 106); (5) object detection (block 30•108); and (6) object tracking (block 110). - Referring to
FIGS. 1-4 , inblock 100, theimage capturing device 20 obtains raw image frames 48 (FIG. 3 ) at a given rate (such as for every 1As second) of the field of view from thevideo sensors 46. Each pixel in theraw frame 48 records color and light intensity of a position in the field of view 44. When theimage capturing device 20 takes a snapshot, each -
video sensor 46 of thedevice 20 produces a differentraw frame 48 simultaneously. One or more pairs ofraw frames 48 taken simultaneously are then used to generate the height maps 56 for the field of view 44, as will be described. - When multiple
image capturing devices 20 are used, tracks 88 generated by eachimage capturing device 20 are merged before proceeding to block 102. -
Block 102 uses calibration data of the stereo cameras (not shown) stored in theimage capturing device 20 to rectify raw stereo frames 48. The rectification operation corrects lens distortion effects on the raw frames 48. The calibration data include each sensor's optical center, lens distortion information, focal lengths, and the relative pose of one sensor with respect to the other. After the rectification, straight lines in the real world that have been distorted to curved lines in the raw stereo frames 48 are corrected and restored to straight lines. The resulting frames from rectification are called rectified frames 52, 53 (FIG. 3 ). -
Block 104 creates a disparity map 50 (FIG. 3 ) from each pair of rectified frames 52, 53. Adisparity map 50 is an image map where each pixel comprises a disparity value. The term disparity was originally used to describe a 2-D vector between positions of corresponding features seen by the left and right eyes. Rectified frames 52, 53 in a pair are compared to each other for matching features. The disparity is computed as the difference between positions of the same feature in frame 52 and frame 53. -
Block 106 converts thedisparity map 50 to theheight map 56. Each pixel of theheight map 56 comprises a height value and x-y coordinates, where the height value is represented by the greatest ground height of all the points in the same location in the field of view 44. Theheight map 56 is sometimes referred to as a frame in the rest of the description. - 2.1 Object Detection
- Object detection (block 108) is a process of locating candidate objects 58 in the
height map 56. One objective of the present invention is to detect human objects standing or walking in relatively flat areas. Because human objects of interest are much higher than the ground, local maxima of theheight map 56 often represent heads of human objects or occasionally raised hands or other objects carried on the shoulders of human objects walking in countingzone 84,86 (FIG. 1 ). Therefore, local maxima of theheight map 56 are identified as positions of potentialhuman object 58 detects. Each potentialhuman object 58 detect is represented in theheight map 56 by a local maximum with a height greater than a predefined threshold and all distances from other local maxima above a predefined range. - Occasionally, some human objects of interest do not appear as local maxima for reasons such as that the
height map 56 is affected by false detection due to snow blindness effect in the process of generating thedisparity map 50, or that human objects of interests are standing close to taller objects such as walls or doors. To overcome this problem, the current invention searches in the neighborhood of the most recent local maxima for a suboptimal location as candidate positions for human objects of interest, as will be described later. - A run is a contiguous set of pixels on the same row of the
height map 56 with the same non-zero height values. Each run is represented by a four-tuple (row, start-column, end-column, height). In practice,height map 56 is often represented by a set of runs in order to boost processing performance and object detection is also performed on the runs instead of the pixels. - Object detection comprises four stages: 1) background reconstruction; 2) first pass component detection; 3) second pass object detection; and 4) merging of closely located detects.
- 2.1.1 Component Definition and Properties
- Pixel q is an eight-neighbor of pixel p if q and p share an edge or a vertex in the
height map 56, and both p and q have non-zero height values. A pixel can have as many as eight eight-neighbors. - A set of pixels E is an eight-connected component if for every pair of pixels Pi and Pi in E, there exists a sequence of pixels Pi′ . . . , Pi such that all pixels in the sequence belong to the set E, and every pair of two adjacent pixels are eight neighbors to each other. Without further noting, an eight connected component is simply referred to as a connected component hereafter.
- The connected component is a data structure representing a set of eight-connected pixels in the
height map 56. A connected component may represent one or more human objects of interest. Properties of a connected component include height, position, size, etc. Table 1 provides a list of properties associated with a connected component. Each property has an abbreviated name enclosed in a pair of parentheses and a description. Properties will be referenced by their abbreviated names hereafter. -
TABLE 1 Variable Name Number (abbreviated name) Description 1 component ID (det_ID) Identification of a component. In the first pass, componentiD represents the component. In the second pass, componentiD represents the parent component from which the current component is derived. 2 peak position Mass center of the pixels in the (det_maxX, det_maxY) component having the greatest height value. 3 peak area (det_maxArea) Number of pixels in the component having the greatest height value. 4 center (det X, det Y) Mass center of all pixels of the component. 5 minimum size Size of the shortest side of two (det_minSize) minimum rectangles that enclose the component at 0 and 45 degrees. 6 maximum size Size of the longest side of two (det_maxSize) minimum rectangles that enclose the component at 0 and 45 degrees. 7 area (det area) Number of pixels of the component. 8 minimum height Minimum height of all pixels of the (det_minHeight) component. 9 maximum height Maximum height of all pixels of the (det_maxHeight) component. 10 height sum (det_htSum) Sum of heights of pixels in a small square window centered at the center position of the component, the window having a configurable size. 11 Grouping flag A flag indicating whether the (de_grouped) subcomponent still needs grouping. 12 background A flag indicating whether the mass (det inBackground) center of the component is in the background 13 the closest detection Identifies a second pass component (det_closestDet) closest to the component but remaining separate after operation of “merging close detections”. - Several predicate operators are applied to a sunset of properties of the connected component to check if the subset of properties satisfies a certain condition. Component predicate operators include:
- IsNoisy, which checks whether a connected component is too small to be considered a valid object detect 58. A connected component is considered as “noise” if at least two of the following three conditions hold: 1) its det_minSize is less than two thirds of a specified minimum human body size, which is configurable in the range of [9,36] inches; 2) its det_area is less than four ninths of the area of a circle with its diameter equal to a specified minimum body size; and 3) the product of its det_minSize and det_area is less than product of the specified minimum human body size and a specified minimum body area.
- IsPointAtBoundaries, which checks whether a square window centered at the current point with its side equal to a specified local maximum search window size is intersecting boundaries of the
height map 56, or whether the connected component has more than a specific number of pixels in thedead zone 90. If this operation returns true, the point being checked is considered as within the boundaries of theheight map 56. - NotSmallSubComponent, which checks if a subcomponent in the second pass component detection is not small. It returns true if its detrninxize is greater than a specified minimum human head size or its det_area is greater than a specified minimum human head area.
- BigSubComponentSeed, which checks if a subcomponent seed in the second pass component detection is big enough to stop the grouping operation. It returns true if its detrninxize is greater than the specified maximum human head size or its det_area is greater than the specified maximum human head area.
- SmallSubComponent, which checks if a subcomponent in the second pass component detection is small. It returns true if its detrninxize is less than the specified minimum human head size or its det_area is less than the specified minimum human head area.
- 2.1.2 Background Reconstruction
- The background represents static scenery in the field view of the
image capturing device 20 and is constructed from theheight map 56. The background building process monitors every pixel of everyheight map 56 and updates a background height map. A pixel may be considered as part of the static scenery if the pixel has the same non-zero height value for a specified percentage of time (e.g., 70%). - 2.1.3 First-Pass Component Detection
- First pass components are computed by applying a variant of an eight-connected image labeling algorithm on the runs of the
height map 56. Properties of first pass components are calculated according to the definitions in Table 1. Predicate operators are also applied to the first pass components. Those first pass components whose “IsNoise” predicate operator returns “true” are ignored without being passed on to the second pass component detection phase of the object detection. - 2.1.4 Second Pass Object Detection
- In this phase, height map local maxima, to be considered as candidate human detects, are derived from the first pass components in the following steps.
- First, for each first pass component, find all eight connected subcomponents whose pixels have the same height. The deigrouped property of all subcomponents is cleared to prepare for subcomponent grouping and the deCID property of each subcomponent is set to the ID of the corresponding first pass component.
- Second, try to find the highest ungrouped local maximal subcomponent satisfying the following two conditions: (1) the subcomponent has the highest height among all of the ungrouped subcomponents of the given first pass component, or the largest area among all of the ungrouped subcomponents of the given first pass component if several ungrouped subcomponents with the same highest height exist; and (2) the subcomponent is higher than all of its neighboring subcomponents. If such a subcomponent exists, use it as the current seed and proceed to the next step for further subcomponent grouping. Otherwise, return to step 1 to process the next first pass component in line.
- Third, if BigSubComponentSeed test returns true on the current seed, the subcomponent is then considered as a potential human object detect. Set the det grouped flag of 25 the subcomponent to mark it as grouped and proceed to step 2 to look for a new seed. If the test returns false, proceed to the next step.
- Fourth, try to find a subcomponent next to the current seed that has the highest height and meets all of the following three conditions: (1) it is eight-connected to the current seed; (2) its height is smaller than that of the current seed; and (3) it is not connected to a third subcomponent that is higher and it passes the NotSmallSubComponent test. If more than one subcomponent meets all of above conditions, choose the one with the largest area. When no subcomponent meets the criteria, set the deigrouped property of the current seed to “grouped” and go to step 2. Otherwise, proceed to the next step.
- Fifth, calculate the distance between centers of the current seed and the subcomponent found in the previous step. If the distance is less than the specified detection search range or the current seed passes the SmallSubComponent test, group the current seed and the subcomponent together and update the properties of the current seed accordingly. Otherwise, set the det_grouped property of the current seed as “grouped”. Return to step 2 to continue the grouping process until no further grouping can be done.
- 2.1.5 Merging Closely Located Detections
- Because the
image capturing device 20 is mounted on the ceiling of the facility entrance (FIG. 1 ), a human object of interest is identified by a local maximum in the height map. Sometimes more than one local maxima detection is generated from the same human object of interest. For example, when a human object raises both of his hands at the same time, two closely located local maxima may be detected. Therefore, it is necessary to merge closely located local maxima. - The steps of this phase are as follows.
- First, search for the closest pair of local maxima detections. If the distance between the two closest detections is greater than the specified detection merging distance, stop and exit the process. Otherwise, proceed to the next step.
- Second, check and process the two detections according to the following conditions in the given order. Once one condition is met, ignore the remaining conditions and proceed to the next step:
- a) if either but not all detection is in the background, ignore the one in the background since it is most likely a static object (the local maximum in the foreground has higher priority over the one in the background);
- b) if either but not all detection is touching edges of the
height map 56 or dead zones, delete the one that is touching edges of theheight map 56 or dead zones (a complete local maximum has higher priority over an incomplete one); - c) if the difference between det rnaxlleights of detections is smaller than a specified person height variation threshold, delete the detection with significantly less 3-D volume (e.g., 13 the product of det_maxHeight and det_masArea for one connected component is less than two thirds of the product for the other connected component) (a strong local maximum has higher priority over a weak one);
- d) if the difference between maximum heights of detections is more than one foot, delete the detection with smaller det_maxHeight if the detection with greater height among the two is less than the specified maximum person height, or delete the detection with greater det_maxHeight if the maximum height of that detection is greater than the specified maximum person height (a local maxima with a reasonable height has higher priority over a local maximum with an unlikely height);
- e) delete the detection whose det area is twice as small as the other (a small local maximum close to a large local maximum is more likely a pepper noise);
- f) if the distance between the two detections is smaller than the specified detection search range, merge the two detections into one (both local maxima are equally good and close to each other);
- g) keep both detections if the distance between the two detections is larger than or equal to the specified detection search range (both local maxima are equally good and not too close to each other). Update the det., closestDet attribute for each detection with the other detection's ID.
- Then, return to step 1 to look for the next closest pair of detections.
- The remaining local maxima detections after the above merging process are defined as candidate object detects 58, which are then matched with a set of existing tracks 74 for track extension, or new track initiation if no match is found.
- 2.2 Object Tracking
- Object tracking (block 110 in
FIG. 1 ) uses objects detected in the object detection process (block 108) to extend existing tracks 74 or create new tracks 80. Some short, broken tracks are also analyzed for possible track repair operations. - To count human objects using object tracks, zones 82 are delineated in the
height map 56.Door zones 84 represent door areas around thefacility 23 to the entrance.Interior zones 86 represent interior areas of the facility. A track 76 traversing from thedoor zone 84 to theinterior zone 86 has a potential “in” count. A track 76 traversing to thedoor zone 84 from theinterior zone 86 has a potential “out” count. If a track 76 traverses across zones 82 multiple times, there can be only one potential “in” or “out” count depending on the direction of the latest zone crossing. - As illustrated in
FIG. 5 , the process of object tracking 110 comprises the following phases: 1) analysis and processing of old tracks (block 120); 2) first pass matching between 5 tracks and object detects (block 122); 3) suboptimal localization of unpaired tracks (block 124); 4) second pass matching between tracks and object detects (block 126); and 5) track updating or creation (block 128). - An object track 76 can bemused to determine whether a human object is entering or leaving the facility, or to derive properties such as moving speed and direction for human objects being tracked.
- Object tracks 76 can also be used to eliminate false human object detections, such as static signs around the entrance area. If an object detect 58 has not moved and its associated track 76 has been static for a relatively long time, the object detect 58 will be considered as part of the background and its track 76 will be processed differently than normal tracks (e.g., the counts created by the track will be ignored).
- Object tracking 110 also makes use of color or gray level intensity information in the frames 52, 53 to search for best match between tracks 76 and object detects 58. Note that the color or the intensity information is not carried to disparity maps 50 or height maps 56.
- The same technique used in the object tracking can also be used to determine how long a person stands in a checkout line.
- 2.2.1 Properties of Object Track
- Each track 76 is a data structure generated from the same object being tracked in both temporal and spatial domains and contains a list of 4-tuples (x, y, t, h) in addition to a set of related properties, where h, x and y present the height and the position of the object in the field 25 of view 44 at time t. (x, y, h) is defined in a world coordinate system with the plane formed by x and y parallel to the ground and the h axis vertical to the ground. Each track can only have one position at any time. In addition to the list of 4-tuples, track 76 also has a set of properties as defined in Table 2 and the properties will be referred to later by their abbreviated names in the parentheses:
-
TABLE 2 Number Variable Name Description 1 ID number (trk_ID) A unique number identifying the track. 2 track state (trk_state) A track could be in one of three states: active, inactive and deleted. Being active means the track is extended in a previous frame, being inactive means the track is not paired with a detect in a previous frame, and being deleted means the track is marked for deletion. 3 start point (trk_start) The initial position of the track (Xs, Ys, Ts, Hs). 4 end point (trk end) The end position of the track (Xe, Ye, Te, He). 5 positive Step Numbers Number of steps moving in the same (trk_posNum) direction as the previous step. 6 positive Distance Total distance by positive steps. (trk_posDist) 7 negative Step Numbers Number of steps moving in the opposite (trk_negNum) direction to the previous step. 8 negative Distance Total distance by negative steps. (trk negDist) 9 background count The accumulative duration of the track in (trk_backgroundCount) background. 10 track range (trk_range) The length of the diagonal of the minimal rectangle covering all of the track's points. 11 start zone A zone number representing either door (trk_startZone) zone or interior zone when the track is created. 12 last zone (trk_lastZone) A zone number representing the last zone the track was in. 13 enters (trk_enters) Number of times the track goes from a door zone to an interior zone. 14 exits (trk_exits) Number of times the track goes from an interior zone to a door zone. 15 total steps (trk totalSteps) The total non-stationary steps of the track. 16 high point steps The number of non-stationary steps that (trk_higbPtSteps) the track has above a maximum person height (e.g. 85 inches). 17 low point steps The number of non-stationary steps (trk_lowPtSteps) below a specified minimum person height. 18 maximum track height The maximum height of the track. (trk maxTrackHt) 19 non-local maximum The accumulative duration of the time detection point that the track has from non-local (trk_nonMaxDetNum) maximum point in the height map and that is closest to any active track. 20 moving vector The direction and offset from the closest (trk_movingVec) point in time to the current point with the offset greater than the minimum body size. 21 following track The ID of the track that is following (trk_followingTrack) closely. If there is a track following closely, the distance between these two tracks don't change a lot, and the maximum height of the front track is less than a specified height for shopping carts, then the track in the front may be considered as made by a shopping cart. 22 minimum following The minimum distance from this track distance to the following track at a point of time. (trk minFollowingDist) 23 maximum following The maximum distance from this track distance to the following track at a point of time. (trk maxFollowingDist) 24 following duration The time in frames that the track is (trk_voteFollowing) followed by the track specified in trk_followingTrack. 25 most recent track The id of a track whose detection t was (trk_lastCollidingTrack) once very close to this track's non-local minimum candidate extending position. 26 number of merged tracks The number of small tracks that this (trk mergedTracks) track is made of through connection of broken tracks. 27 number of small The number of small track search ranges track searches used in merging tracks. (trk smallSearches) 28 Mirror track The ID of the track that is very close (trk_mirrorTrack) to this track and that might be the cause of this track. This track itself has to be from a non-local maximum detection created by a blind search, or its height has to be less than or equal to the specified minimum person height in order to be qualified as a candidate for false tracks. 29 Mirror track duration The time in frames that the track is a (trk_voteMirrorTrack) candidate for false tracks and is closely accompanied by the track specified in trk_mirrorTrack within a distance of the specified maximum person width. 30 Maximum mirror track The maximum distance between the distance track and the track specified in trk (trk_maxMirrorDist) mirrorTrack. - 2.2.2 Track-Related Predicative Operations
- Several predicate operators are defined in order to obtain the current status of the tracks 76. The predicate operators are applied to a subset of properties of a track 76 to check if the subset of properties satisfies a certain condition. The predicate operators include:
- IsNoisyNow, which checks if track bouncing back and forth locally at the current time. Specifically, a track 76 is considered noisy if the track points with a fixed number of frames in the past (specified as noisy track duration) satisfies one of the following conditions:
- a) the range of track 76 (trkrange) is less than the specified noisy track range, and either the negative distance (trk_negDist) is larger than two thirds of the positive distance (trk_posDist) or the negative steps (trk_negNum) are more than two thirds of the positive steps (trk_posNum);
- b) the range of track 76 (trkrange) is less than half of the specified noisy track range, and either the negative distance (trk_negDist) is larger than one third of the positive distance (trk_posDist) or the negative steps (trk_negNum) are more than one third of the positive steps (trk_posNum).
- WholeTracklsNoisy: a track 76 may be noisy at one time and not noisy at another time.
- This check is used when the track 76 was created a short time ago, and the whole track 76 is considered noisy if one of the following conditions holds:
- a) the range of track 76 (trkrange) is less than the specified noisy track range, and either the negative distance (trk_negDist) is larger than two thirds of the positive distance (trk_posDist) or the negative steps (trk_negNum) are more than two thirds of the positive steps (trk_posNum);
- b) the range of track 76 (trkrange) is less than half the specified noisy track range, and either the negative distance trk_negDist) is larger than one third of the positive distance (trk_posDist) or the negative steps (trk_negNum) are more than one third of the positive steps (trk_posNum).
- IsSameTrack, which check if two tracks 76, 77 are likely caused by the same human object. All of the following three conditions have to be met for this test to return true: (a) the two tracks 76, 77 overlap in time for a minimum number of frames specified as the maximum track timeout; (b) the ranges of both tracks 76, 77 are above a threshold specified as the valid counting track span; and (c) the distance between the two tracks 76, 77 at any moment must be less than the specified minimum person width.
- IsCountignored: when the track 76 crosses the counting zones, it may not be created by a human object of interest. The counts of a track are ignored if one of the following conditions is met:
- Invalid Tracks: the absolute difference between trk_exits and trk_enters is not equal to one.
- Small Tracks: trkrange is less than the specified minimum counting track length.
- Unreliable Merged Tracks: trkrange is less than the specified minimum background counting track length as well as one of the following: trk_mergedTracks is equal to trk_smallSearches, or trk_backgroundCount is more than 80% of the life time of the track 76, or the track 76 crosses the zone boundaries more than once.
- High Object Test: trk_highPtSteps is larger than half oftrk_totaiSteps.
- Small Child Test: trk_lowPtSteps is greater than % of trk_totaiSteps, and trk_maxTrackHt is less than or equal to the specified minimum person height.
- Shopping Cart Test: trk_voteFollowing is greater than 3, trk_minFollowingDist is more than or equal to 80% of trk_maxFollowingDist, and trk_maxTrackHt is less than or equal to the specified shopping cart height.
- False Track test: trk_voteMirrorTrack is more than 60% of the life time of the track 76, and trk_maxMirrorTrackDist is less than two thirds of the specified maximum person width or trk_totalVoteMirrorTrack is more than 80% of the life time of the track 76.
- 2.2.3 Track Updating Operation
- Referring to
FIG. 12 , each track 76 is updated with new information on its position, time, and height when there is a best matching human object detect 58 in thecurrent height map 56 for First, set trk_state of the track 76 to 1 (block 360). - Second, for the current frame, obtain the height by using median filter on the most recent three heights of the track 76 and calculate the
new position 56 by averaging on the most recent three positions of the track 76 (block 362). - Third, for the current frame, check the noise status using track predicate operator IsNoisyNow. If true, mark a specified number of frames in the past as noisy. In addition, update noise related properties of the track 76 (block 364).
- Fourth, update the span of the track 76 (block 366).
- Fifth, if one of the following conditions is met, collect the count carried by track 76 (block 374):
- a) the track 76 is not noisy at the beginning, but it has been noisy for longer than the specified stationary track timeout (block 368); or
- b) the track 76 is not in the background at the beginning, but it has been in the background for longer than the specified stationary track timeout (block 370).
- Finally, update the current zone information (block 372).
- 2.2.4 Track Prediction Calculation
- It helps to use a predicted position of the track 76 when looking for best matching detect 58. The predicted position is calculated by linear extrapolation on positions of the track 76 in the past three seconds.
- 2.2.5 Analysis and Processing of Old Track
- This is the first phase of object tracking.
Active tracks 88 are tracks 76 that are either created or extended with human object detects 58 in the previous frame. When there is no best matching human object detect 58 for the track 76, the track 76 is considered as inactive. - This phase mainly deals with tracks 76 that are inactive for a certain period of time or are marked for deletion in
previous frame 56. Track analysis is performed on tracks 76 that have been inactive for a long time to decide whether to group them with existing tracks 74 or to mark them for deletion in thenext frame 56. Tracks 76 are deleted if the tracks 76 have been marked for deletion in theprevious frame 56, or the tracks 76 are inactive and were created a very short period of time before. If the counts of the soon-to-be deleted tracks 76 shall not be ignored according to the IsCountlgnored predicate operator, collect the counts of the tracks 76. - 2.2.6 First Pass Matching Between Tracks and Detects
- After all tracks 76 are analyzed for grouping or deletion, this phase searches for optimal matches between the human object detects 58 (i.e. the set of local maxima found in the object detection phase) and tracks 76 that have not been deleted.
- First, check every possible pair of track 76 and detect 58 and put the pair into a candidate list if all of the following conditions are met:
- 1) The track 76 is active, or it must be long enough (e.g. with more than three points), or it just became inactive a short period of time ago (e.g. it has less than three frames);
- 2) The smaller of the distances from center of the detect 58 to the last two points of the track 76 is less than two thirds of the specified detection search range when the track 76 hasn't moved very far (e.g. the span of the track 76 is less than the specified minimum human head size and the track 76 has more than 3 points);
- 3) If the detect 58 is in the background, the maximum height of the detect 58 must be greater than or equal to the specified minimum person height;
- 4) If the detect 58 is neither in the background nor close to dead zones or height map boundaries, and the track 76 is neither in the background nor is noisy in the previous frame, and a first distance from the detect 58 to the predicted position of the track 76 is less than a second distance from the detect 58 to the end position of the track 76, use the first distance as the matching distance. Otherwise, use the second distance as the matching distance. The matching distance has to be less than the specified detection search range;
- 5) The difference between the maximum height of the detect 58 and the height oblast point of the track 76 must be less than the specified maximum height difference; and
- 6) If either the last point off-track 76 or the detect 58 is in the background, or the detect 58 is close to dead zones or height map boundaries, the distance from the track 76 to the detect 58 must be less than the specified background detection search range, which is generally smaller than the threshold used in condition (4).
- Sort the candidate list in terms of the distance from the detect 58 to the track 76 or the height difference between the detect 58 and the track 76 (if the distance is the same) in ascending order.
- The sorted list contains pairs of detects 58 and tracks 76 that are not paired. Run through the whole sorted list from the beginning and check each pair. If either the detect 58 or the track 76 of the pair is marked “paired” already, ignore the pair. Otherwise, mark the detect 58 and the track 76 of the pair as “paired”.
- 2.2.7 Search of Suboptimal Location for Unpaired Tracks
- Due to sparseness nature of the
disparity map 50 and theheight map 56, some human objects may not generate local maxima in theheight map 56 and therefore may be missed in theobject detection process 108. In addition, the desired local maxima might get suppressed by a neighboring higher local maximum from a taller object. Thus, some human object tracks 76 may not always have a corresponding local maximum in theheight map 56. This phase tries to resolve this issue by searching for a suboptimal location for a track 76 that has no corresponding local maximum in theheight map 56 at the current time. Tracks 76 that have already been paired with a detect 58 in the previous phase might go through this phase too to adjust their locations if the distance between from end of those tracks to their paired detects is much larger than their steps in the past. In the following description, the track 76 currently undergoing this phase is called Track A. The search is performed in the following steps. - First, referring to
FIG. 7 , if Track A is deemed not suitable for the suboptimal location search operation (i.e., it is inactive, or it's in the background, or it's close to the boundary of theheight map 56 or dead zones, or its height in last frame was less than the minimum person height (block 184)), stop the search process and exit. Otherwise, proceed to the next step. - Second, if Track A has moved a few steps (block 200) (e.g., three steps) and is paired with a detection (called Detection A) (block 186) that is not in the background and whose current step is much larger than its maximum moving step within a period of time in the past specified by a track time out parameter (block 202,204), proceed to the next step. Otherwise, stop the search process and exit.
- Third, search around the end point of Track A in a range defined by its maximum moving steps for a location with the largest height sum in a predefined window and call this location Best Spot A (block 188). If there are some detects 58 deleted in the process of merging of closely located detects in the object detection phase and Track A is long in either the spatial domain or the temporal domain (e.g. the span of Track A is greater than the specified noisy track span threshold, or Track A has more than three frames) (block 190), find the closest one to the end point of Track too. If its distance to the end point of Track A is less than the specified detection search range (block 206), search around the deleted component for the position with the largest height sum and call it Best Spot AI (block 208). If neither Best Spot A nor Best Spot AI exists, stop the search process and exit. If both Best Spot A and Best Spot AI exist, choose the one with larger height sum. The best spot selected is called suboptimal location for Track A. If the maximum height at the suboptimal location is greater than the predefined maximum person height (block 192), stop the search and exit. If there is no current detection around the suboptimal location (block 194), create a new detect 58 (block 214) at the suboptimal location and stop the search. Otherwise, find the closest detect 58 to the suboptimal location and call it Detection B (block 196). If Detection B is the same detection as Detection A in step 2 (block 198), update Detection A's position with the suboptimal location (block 216) and exit the search. Otherwise, proceed to the next step.
- Fourth, referring to
FIG. 8 , if Detection B is not already paired with a track 76 (block 220), proceed to the next step. Otherwise, call the paired track of the Detection B as Track B and perform one of the following operations in the given order before exiting the search: - 1) When the suboptimal location for Track A and Detection Bare from the same parent component (e.g. in the support of the same first pass component) and the distance between Track A and Detection B is less than half of the specified maximum person width, create a new detect 58 at the suboptimal location (block 238) if all of the following three conditions are met: (i) the difference between the maximum heights at the suboptimal location and Detection B is less than a specified person height error range; (ii) the difference between the height sums at the two locations is less than half of the greater one; (iii) the distance between them is greater than 15 the specified detection search range and the trk_range values of both Track A and Track B are greater than the specified noisy track offset. Otherwise, ignore the suboptimal location and exit;
- 2) If the distance between the suboptimal location and Detection B is greater than the specified detection search range, create a new detect 58 at the suboptimal location and exit;
- 3) If Track A is not sizable in both temporal and spatial domains (block 226), ignore the suboptimal location;
- 4) If Track B is not sizable in both temporal and spatial domain (block 228), detach Track B from Detection Band update Detection B's position with the suboptimal location (block 246). Mark Detection B as Track A's closest detection;
- 5) Look for best spot for Track B around its end position (block 230). If the distance between the best spot for Track B and the suboptimal location is less than the specified detection search range (block 232) and the best spot for Track B has a larger height sum, replace the suboptimal location with the best spot for Track B (block 233). If the distance between is larger than the specified detection search range, create a detect 58 at the best spot for Track B (block 250). Update Detection A's location with the suboptimal location if Detection A exists.
- Fifth, if the suboptimal location and Detection B are not in the support of the same first pass component, proceed to the next step. Otherwise create a new detection at the suboptimal location if their distance is larger than half of the specified maximum person width, or ignore the suboptimal location and mark Detection B as Track A's closest detection otherwise.
- Finally, create a new detect 58 at suboptimal location and mark Detection B as Track A's closest detection (block 252) if their distance is larger than the specified detection search range. Otherwise, update Track A's end position with the suboptimal location (block 254) if the height sum at the suboptimal location is greater than the height sum at Detection B, or mark Detection Bas Track A's closest detection otherwise.
- 2.2.8 Second Pass Matching Between Tracks and Detects
- After the previous phase, a few new detections may be added and some paired detects 72 and tracks 76 become unpaired again. This phase looks for the optimal match between current unpaired detects 72 and tracks 76 as in the following steps.
- For every pair of track 76 and detect 58 that remain unpaired, put the pair into a candidate list if all of the following five conditions are met:
- 1) the track 76 is active (block 262 in
FIG. 9 ); - 2) the distance from detect 58 to the end point of the track 76 (block 274) is smaller than two thirds of the specified detection search range (block 278) when the track doesn't move too far (e.g. the span of the track 76 is less than the minimal head size and the track 76 has more than three points (block 276));
- 3) if the detect 58 is in the background (block 280), the maximum height of the detect 58 must be larger than or equal to the specified minimum person height (block 282);
- 4) the difference between the maximum height and the height of the last point of the track 76 is less than the specified maximum height difference (block 284);
- 5) the distance from the detect 58 to the track 76 must be smaller than the specified background detection search range, if either the last point of the track 76 or the detect 58 is in background (block 286), or the detect 58 is close to dead zones or height map boundaries (block 288); or if not, the distance from the detect 58 to the track 76 must be smaller than the specified detection search range (block 292).
- Sort the candidate list in terms of the distance from the detect 58 to the track 76 or the height difference between the two (if distance is the same) in ascending order (block 264).
- The sorted list contains pairs of detects 58 and tracks 76 which are not paired at all at the beginning. Then run through the whole sorted list from the beginning and check each pair. If either the detect 58 or the track 76 of the pair is marked “paired” already, ignore the pair. Otherwise, mark the detect 58 and the track 76 of the pair as “paired” (block 270).
- 2.2.9 Track Update or Creation
- After the second pass of matching, the following steps are performed to update old tracks or to create new tracks:
- First, referring to
FIG. 10 , for each paired set of track 76 and detect 58 the track 76 is updated with the information of the detect 58 (block 300,302). - Second, create a new track 80 for every detect 58 that is not matched to the track 76 if the maximum height of the detect 58 is greater than the specified minimum person height, and the distance between the detect 58 and the closest track 76 of the detect 58 is greater than the specified detection search range (block 306,308). When the distance is less than the specified detection merge range and the detect 58 and the closest track 76 are in the support of the same first pass component (i.e., the detect 58 and the track 76 come from the same first pass component), set the trk_IastCollidingTrack of the closest track 76 to the ID of the newly created track 80 if there is one (block 310,320).
- Third, mark each unpaired track 77 as inactive (block 324). If that track 77 has a marked closest detect and the detect 58 has a paired track 76, set the trk_IastCollidingTrack property of the current track 77 to the track ID of the paired track 76 (block 330).
- Fourth, for each
active track 88, search for the closest track 89 moving in directions that are at most thirty degrees from the direction of theactive track 88. If the closest track 89 exists, thetrack 88 is considered as closely followed by another track, and “Shopping Cart Test” related properties of thetrack 88 are updated to prepare for “Shopping Cart Test” when thetrack 88 is going to be deleted later (block 334). - Finally, for each
active track 88, search for the closest track 89. If the distance between the two is less than the specified maximum person width and either thetrack 88 has a marked closest detect or its height is less than the specified minimum person height, thetrack 88 is considered as a less reliable false track. Update “False Track” related properties to prepare for the “False Track” test later when thetrack 88 is going to be deleted later (block 338). - As a result, all of the existing tracks 74 are either extended or marked as inactive, and new tracks 80 are created.
- 2.2.10 Track Analysis
- Track analysis is applied whenever the track 76 is going to be deleted. The track 76 will be deleted when it is not paired with any detect for a specified time period. This could happen when a human object moves out of the field view 44, or when the track 76 is disrupted due to poor disparity map reconstruction conditions such as very low contrast between the human object and the background.
- The goal of track analysis is to find those tracks that are likely continuations of some soon-to-be deleted tracks, and merge them. Track analysis starts from the oldest track and may be applied recursively on newly merged tracks until no tracks can be further merged. In the following description, the track that is going to be deleted is called a seed track, while other tracks are referred to as current tracks. The steps of track analysis are as followings:
- First, if the seed track was noisy when it was active (block 130 in
FIG. 6 ), or its trkrange is less than a specified merging track span (block 132), or its trk_IastCollidingTrack does not contain a valid track ID and it was created in less than a specified merging track time period before (block 134), stop and exit the track analysis process. - Second, examine each active track that was created before the specified merging track time period and merge an active track with the seed track if the “Is the Same Track” predicate operation on the active track (block 140) returns true.
- Third, if the current track satisfies all of the following three initial testing conditions; proceed to the next step. Otherwise, if there exists a best fit track (definition and search criteria for the best fit track will be described in forthcoming steps), merge the best fit track with the seed track (block 172, 176). If there is no best fit track, keep the seed track if the seed track has been merged with at least one track in this operation (block 178), or delete the seed track (block 182) otherwise. Then, exit the track analysis.
- The initial testing conditions used in this step are: (1) the current track is not marked for deletion and is active long enough (e.g. more than three frames) (block 142); (2) the current track is continuous with the seed track (e.g. it is created within a specified maximum track timeout of the end point of the seed track) (block 144); (3) if both tracks are short in space (e.g., the trkranges properties of both tracks are less than the noisy track length threshold), then both tracks should move in the same direction according to the relative offset of the trk_start and trk_end properties of each track (block 146).
- Fourth, merge the seed track and the current track (block 152). Return to the last step if the current track has collided with the seed track (i.e., the trk_IastCollidingTrack of the current track is the trk_ID of the seed track). Otherwise, proceed to the next step.
- Fifth, proceed to the next step if the following two conditions are met at the same time, otherwise return to step 3: (1) if either track is at the boundaries according to the “is at the boundary” checking (block 148), both tracks should move in the same direction; and (2) at least one track is not noisy at the time of merging (block 150). The noisy condition is determined by the “is noisy” predicate operator.
- Sixth, one of two thresholds coming up is used in distance checking. A first threshold (block 162) is specified for normal and clean tracks, and a second threshold is specified for noisy tracks or tracks in the background. The second threshold (block 164) is used if either the seed track or the current track is unreliable (e.g. at the boundaries, or either track is noisy, or trkranges of both tracks are less than the specified noisy track length threshold and at least one track is in the background) (block 160), otherwise the first threshold is used. If the shortest distance between the two tracks during their overlapping time is less than the threshold (block 166), mark the current track as the best fit track for the seed track (block 172) and if the seed track does not have best fit track yet or the current track is closer to the seed track than the existing best fit track (block 170). Go to step 3.
- 2.2.11 Merging of Tracks
- This operation merges two tracks into one track and assigns the merged track with properties derived from the two tracks. Most properties of the merged track are the sum of the corresponding properties of the two tracks but with the following exceptions:
- Referring to
FIG. 11 , trk_enters and trk_exits properties of the merged track are the sum of the corresponding properties of the tracks plus the counts caused by zone crossing from the end point ozone track to the start point of another track, which compensates the missing zone crossing in the time gap between the two tracks (block 350). - If a point in time has multiple positions after the merge, the final position is the average (block 352).
- The trk_start property of the merged track has the same trk_start value as the newer track among the two tracks being merged, and the trk_end property of the merged track has the same trk_end value as the older track among the two (block 354).
- The buffered raw heights and raw positions of the merged track are the buffered raw heights and raw positions of the older track among the two tracks being merged (block 356).
- As shown in
FIG. 13 , an alternative embodiment of the present invention may be employed and may comprise asystem 210 having animage capturing device 220, areader device 225 and acounting system 230. In the illustrated embodiment, the at least oneimage capturing device 220 may be mounted above an entrance or entrances 221 to a facility 223 for capturing images from the entrance or entrances 221. The area captured by theimage capturing device 220 is field ofview 244. Each image captured by theimage capturing device 220, along with the time when the image is captured, is aframe 248. As described above with respect to image capturingdevice 20 for the previous embodiment of the present invention, theimage capturing device 220 may be video based. The manner in which object data is captured is not meant to be limiting so long as theimage capturing device 220 has the ability to track objects in time across a field ofview 244. The object data 261 may include many different types of information, but for purposes of this embodiment of the present invention, it includes information indicative of a starting frame, an ending frame, and direction. - For exemplary purposes, the
image capturing device 220 may include at least one stereo camera with two or more video sensors 246 (similar to the image capturing device shown inFIG. 2 ), which allows the camera to simulate human binocular vision. A pair of stereo images comprisesframes 248 taken by eachvideo sensor 246 of the camera. Theimage capturing device 220 converts light images to digital signals through which thedevice 220 obtains digitalraw frames 248 comprising pixels. The types ofimage capturing devices 220 andvideo sensors 246 should not be considered limiting, and anyimage capturing device 220 andvideo sensor 246 compatible with the present system may be adopted. - For capturing
tag data 226 associated with RFID tags, such as name tags that may be worn by an employee or product tags that could be attached to pallets of products, thereader device 225 may employ active RFID tags 227 that transmit their tag information at a fixed time interval. The time interval for the present invention will typically be between 1 and 10 times per second, but it should be obvious that other time intervals may be used as well. In addition, the techniques for transmitting and receiving RFID signals are well known by those with skill in the art, and various methods may be employed in the present invention without departing from the teachings herein. An active RFID tag is one that is self-powered, i.e., not powered by the RF energy being transmitted by the reader. To ensure that all RFID tags 227 are captured, thereader device 225 may run continuously and independently of the other devices and systems that form thesystem 210. It should be evident that thereader device 225 may be replaced by a device that uses other types of RFID tags or similar technology to identify objects, such as passive RFID, ultrasonic, or infrared technology. It is significant, however, that thereader device 225 has the ability to detect RFID tags, or other similar devices, in time across a field ofview 228 for thereader device 225. The area captured by thereader device 225 is the field ofview 228 and it is preferred that the field ofview 228 for thereader device 225 be entirely within the field ofview 244 for theimage capturing device 220. - The
counting system 230 processes digitalraw frames 248, detects and follows objects 258, and generates tracks associated with objects 258 in a similar manner as the counting system described above. Thecounting system 230 may be electronically or wirelessly connected to at least oneimage capturing device 220 and at least onereader device 225 via a local area or wide area network. Although thecounting system 230 in the present invention is located remotely as part of a central server, it should be evident to those with skill in the art that all or part of thecounting system 230 may be (i) formed as part of theimage capturing device 220 or thereader device 225, (ii) stored on a “cloud computing” network, or (iii) stored remotely from theimage capturing device 220 andreader device 225 by employing other distributed processing techniques. In addition, theRFID reader 225, theimage capturing device 220, and thecounting system 230 may all be integrated in a single device. This unitary device may be installed anywhere above the entrance or entrances to a facility 223. It should be understood, however, that the hardware and methodology that is used for detecting and tracking objects is not limited with respect to this embodiment of the present invention. Rather, it is only important that objects are detected and tracked and the data associated with objects 258 and tracks is used in combination withtag data 226 from thereader device 225 to separately count and trackanonymous objects 320 and definedobjects 322, which are associated with an RFID tag 227. - To transmit
tag data 226 from thereader device 225 to acounting system 230, thereader device 225 may be connected directly to thecounting system 230 or thereader device 225 may be connected remotely via a wireless or wired communications network, as are generally known in the industry. It is also possible that thereader device 225 may send tag data to the image capturing device, which in turn transmits thetag data 226 to thecounting system 230. Thetag data 226 may be comprised of various information, but for purposes of the present invention, thetag data 226 includes identifier information, signal strength information and battery strength information. - To allow the
counting system 230 to processtraffic data 260,tag data 226 and object data 261 may be pulled from thereader device 225 and theimage capturing device 220 and transmitted to thecounting system 230. It is also possible for thereader device 225 and theimage capturing device 220 to push thetag data 226 and object data 261, respectively, to thecounting system 230. It should be obvious that thetraffic data 260, which consists of bothtag data 226 and object data 261, may also be transmitted to the counting system via other means without departing from the teachings of this invention. Thetraffic data 260 may be sent as a combination of bothtag data 226 and object data 261 and thetraffic data 260 may be organized based on time. - The
counting system 230 separates thetraffic data 260 intotag data 226 and object data 261. To further process thetraffic data 260, thecounting system 230 includes alistener module 310 that converts thetag data 226 into sequence records 312 and the object data 261 into track records 314. Moreover, thecounting system 230 creates asequence array 352 comprised of all of the sequence records 312 and atrack array 354 comprised of all of the track records 314. Each sequence record 312 may consist of (1) a tag ID 312 a, which may be an unsigned integer associated with a physical RFID tag 227 located within the field ofview 228 of areader device 220; (2) a startTime 312 b, which may consist of information indicative of a time when the RFID tag 227 was first detected within the field ofview 228; (3) an endTime, which may consist of information indicative of a time when the RFID tag 227 was last detected within the field ofview 228 of thereader device 220; and (4) an array of references to all tracks that overlap a particular sequence record 312. Each track record 314 may include (a) a counter, which may be a unique ID representative of animage capturing device 220 associated with the respective track; (b) a direction, which may consist of information that is representative of the direction of movement for the respective track; (c) startTime, which may consist of information indicative of a time when the object of interest was first detected within the field ofview 244 of theimage capturing device 220; (d) endTime, which may consist of information indicative of a time when 30 the object of interest left the field ofview 244 of theimage capturing device 220; and (e) tagiD, which (if non-zero) may include an unsigned integer identifying a tag 227 associated with this track record 314. - To separate and track
anonymous objects 320, such as shoppers or customers, and definedobjects 322, such as employees and products, thecounting system 220 for the system must determine which track records 314 and sequence records 312 match one another and then thecounting system 220 may subtract the matching track records 312 from consideration, which means that the remaining (unmatched) track records 314 relate toanonymous objects 320 and the track records 312 that match sequence records 314 relate to definedobjects 322. - To match track records 314 and sequence records 312, the
counting system 220 first determines which track records 314 overlap with particular sequence records 312. Then the counting system 2•20 creates an array comprised of track records 312 and sequence records 314 that overlap, which is known as a match record 316. In the final step, thecounting system 220 iterates over the records 312, 314 in the match record 316 and determines which sequence records 312 and track records 314 best match one another. Based on the best match determination, the respective matching track record 314 and sequence record 312 may be removed from the match record 316 and the counting system will then iteratively move to the next sequence record 312 to find the best match for that sequence record 312 until all of the sequence records 312 and track records 314 in the match record 316 have matches, or it is determined that no match exists. - The steps for determining which sequence records 312 and track records 314 overlap are shown in
FIG. 15 . To determine which records 312, 314 overlap, thecounting system 220 iterates over each sequence record 312 in thesequence array 352 to find which track records overlap with a particular sequence records 312; the term “overlap” generally refers to track records 314 that have startTimes that are within a window defined by the startTime and endTime of a particular sequence records 312. Therefore, for each sequence record 312, thecounting system 230 also iterates over each track record 314 in thetrack array 354 and adds a reference to the respective sequence record 312 indicative of each track record 314 that overlaps that sequence record 314. Initially, the sequence records have null values for overlapping track records 314 and the track records have tagiD fields set to zero, but these values are updated as overlapping records 312, 314 are found. The iteration over thetrack array 254 stops when a track record 314 is reached that has a startTime for the track record 314 that exceeds the endTime of the sequence record 312 at issue. - To create an array of “overlapped” records 312, 314 known as match records 316, the
counting system 230 iterates over thesequence array 352 and for each sequence record 312 a, thecounting system 230 compares the track records 314 a that overlap with that sequence record 312 a to the track records 314 b that overlap with the next sequence record 312 b in thesequence array 352. As shown inFIG. 16 , a match record 316 is then created for each group of sequence records 312 whose track records 314 overlap. Each match record 316 is an array of references to all sequence records 312 whose associated track records 314 overlap with each other and the sequence records 312 are arranged in earliest-to-latest startTime order. - The final step in matching sequence records 312 and track records 314 includes the step of determining which sequence records 312 and track records 314 are the best match. To optimally match records 312, 314, the
counting system 230 must consider direction history on a per tag 227 basis, i.e., by mapping between the tagiD and the next expected match direction. The initial history at the start of a day (or work shift) is configurable to either “in” or “out”, which corresponds to employees initially putting on their badges or name tags outside or inside the monitored area. - To optimally match records 312, 314, a two level map data structure, referred to as a
scoreboard 360, may be built. Thescoreboard 360 has a top level orsequencemap 362 and a bottom level ortrackmap 364. Eachlevel keys values 374, 376. Thekeys 370 for thetop level 362 are references to thesequence array 352 and thevalues 374 are the maps for thebottom level 364. The keys for thebottom level 364 are references to thetrack array 354 and the values 376 are match quality scores 380. As exemplified inFIG. 17 , the match quality scores are determined by using the following algorithm. - 1) Determine if the expected direction for the sequence record is the same as the expected direction for the track record. If they are the same, the MULTIPLIER is set to
- 10. Otherwise, the MULTIPLIER is set to 1.
- 2) Calculate the percent of overlap between the sequence record 312 and the track record 314 as an integer between 0 and 100 by using the formula:
- OVERLAP=(earliest endTime−latest startTime)/(latest endTime-earliest startTime).
- If OVERLAP is <0, then set the OVERLAP to 0.
- 3) Calculate the match quality score by using the following formula:
-
CORE=OVERLAP×MULTIPLIER - The
counting system 230 populates thescoreboard 360 by iterating over the sequence records 312 that populate thesequence array 352 referenced by thetop level 372 and for each of the sequence records 312, thecounting system 230 also iterates over the track records 314 that populate thetrack array 354 referenced by thebottom level 374 and generates match quality scores 380 for each of the track records 314. As exemplified inFIG. 18A , once match quality scores 380 are generated and inserted as values 376 in thebottom level 364, each match quality score 380 for each track record 314 is compared to a bestScore value and if the match quality score 380 is greater than the bestScore value, the bestScore value is updated to reflect the higher match quality score 380. The bestTrack reference is also updated to reflect the track record 314 associated with the higher bestScore value. - As shown in
FIG. 18B , once the bestTrack for the first sequence in the match record is determined, thecounting system 230 iterates over thekeys 370 for thetop level 372 to determine the bestSequence, which reflects the sequence record 312 that holds the best match for the bestTrack, i.e., the sequence record/track record combination with the highest match quality score 380. The bestScore and bestSequence values are updated to reflect this determination. When the bestTrack and bestSequence values have been generated, the sequence record 312 associated with the bestSequence is deleted from thescoreboard 360 and the bestTrack value is set to 0 in all remainingkeys 372 for thebottom level 364. Thecounting system 230 continues to evaluate the remaining sequence records 312 and track records 314 that make up the top andbottom levels scoreboard 360 until all sequence records 312 and track records 314 that populate the match record 316 have been matched and removed from thescoreboard 360, or until all remaining sequence records 312 have match quality scores 380 that are less than 25 or equal to 0, i.e., no matches remain to be found. As shown in Table 1, the information related to the matching sequence records 312 and track records 314 may be used to prepare reports that allow employers to track, among other things, (i) how many times an employee enters or exits an access point; (ii) how many times an employee enters or exits an access point with a customer oranonymous object 320; (iii) the length of time that an employee or definedobject 322 spends outside; and (iv) how many times a customer enters or exits an access point. This information may also be used to determine conversion rates and other “What If” metrics that relate to the amount of interaction employees have with customers. For example, as shown in Table 2, thesystem 210 defined herein may allow employers to calculate, among other things: (a) fitting room capture rates; (b) entrance conversion rates; (c) employee to fitting room traffic ratios; and (d) the average dollar spent. These metrics may also be extrapolated to forecast percentage sales changes that may result from increases to the fitting room capture rate, as shown in Table 3. - In some cases, there may be more than one
counter 222, which consists of the combination of both theimage capturing device 220 and thereader device 225, to cover multiple access points. In this case,separate sequence arrays 352 and trackarrays 354 will be generated for each of thecounters 222. In addition, a match array 318 may be generated and may comprise each of the match records 316 associated with each of thecounters 222. In order to make optimal matches, tag history must be shared between all counters 222. This may be handled by merging, in a time-sorted order, all of the match records in the match array 318 and by using a single history map structure, which is generally understood by those with skill in the art. When matches are made within the match array 318, the match is reflected in thetrack array 354 associated with aspecific counter 222 using thesequence array 352 associated with thesame counter 222. This may be achieved in part by using a counter ID field as part of the track records 314 that make up thetrack array 354 referenced by thebottom level 364 of thescoreboard 360. For example, references to thetrack arrays 354 may be added to atotal track array 356 and indexed by counter ID. Thesequence arrays 352 would be handled the same way. - The invention is not limited by the embodiments disclosed herein and it will be appreciated that numerous modifications and embodiments may be devised by those skilled in the art. Therefore, it is intended that the following claims cover all such embodiments and modifications that fall within the true spirit and scope of the present invention.
-
- [1] C. Wren, A. Azarbayejani, T. Darrel and A. Pentland. Pfinder: Real-time tracking of the human body. In IEEE Transactions on Pattern Analysis and Machine Intelligence, July 1997, Vol 19, No. 7, Page 780-785.
- [2] 1. Haritaoglu, D. Harwood and L. Davis. W4: Who? When? Where? What? A real time system for detecting and tracking people. Proceedings of the Third IEEE International Conference on Automatic Face and Gesture Recognition, Nara, Japan, April 1998.
- [3] M. Isard and A. Blake, Contour tracking by stochastic propagation of conditional density. Proc ECCV 1996.
- [4] P. Remagnino, P. Brand and R. Mohr, Correlation techniques in adaptive template matching with uncalibrated cameras. In Vision Geometry III, SPIE Proceedings vol. 2356, Boston, Mass., 2-3 Nov. 1994
- [5] C. Eveland, K. Konolige, R. C. Bolles, Background modeling for segmentation of video-rate stereo sequence. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,
page 226, 1998. - [6] J. Krumm and S. Harris, System and process for identifying and locating people or objects in scene by selectively slustering three-dimensional region. U.S. Pat. No. 6,771,818 B1, August 2004.
- [7] T. Darrel, G. Gordon, M. Harville and J. Woodfill, Integrated person tracking using stereo, color, and pattern detection. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, page 601609, Santa Barbara, June 1998.
Claims (20)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/946,129 US20130314505A1 (en) | 2010-01-11 | 2013-07-19 | System And Process For Detecting, Tracking And Counting Human Objects of Interest |
US14/752,457 US20150294482A1 (en) | 2010-01-11 | 2015-06-26 | System And Process For Detecting, Tracking And Counting Human Objects Of Interest |
US16/011,853 US10909695B2 (en) | 2010-01-11 | 2018-06-19 | System and process for detecting, tracking and counting human objects of interest |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29401310P | 2010-01-11 | 2010-01-11 | |
US12/942,108 US20110169917A1 (en) | 2010-01-11 | 2010-11-09 | System And Process For Detecting, Tracking And Counting Human Objects of Interest |
US13/946,129 US20130314505A1 (en) | 2010-01-11 | 2013-07-19 | System And Process For Detecting, Tracking And Counting Human Objects of Interest |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/942,108 Continuation US20110169917A1 (en) | 2010-01-11 | 2010-11-09 | System And Process For Detecting, Tracking And Counting Human Objects of Interest |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/752,457 Continuation US20150294482A1 (en) | 2010-01-11 | 2015-06-26 | System And Process For Detecting, Tracking And Counting Human Objects Of Interest |
Publications (1)
Publication Number | Publication Date |
---|---|
US20130314505A1 true US20130314505A1 (en) | 2013-11-28 |
Family
ID=43639065
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/942,108 Abandoned US20110169917A1 (en) | 2010-01-11 | 2010-11-09 | System And Process For Detecting, Tracking And Counting Human Objects of Interest |
US13/946,129 Abandoned US20130314505A1 (en) | 2010-01-11 | 2013-07-19 | System And Process For Detecting, Tracking And Counting Human Objects of Interest |
US14/752,457 Abandoned US20150294482A1 (en) | 2010-01-11 | 2015-06-26 | System And Process For Detecting, Tracking And Counting Human Objects Of Interest |
US16/011,853 Active US10909695B2 (en) | 2010-01-11 | 2018-06-19 | System and process for detecting, tracking and counting human objects of interest |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/942,108 Abandoned US20110169917A1 (en) | 2010-01-11 | 2010-11-09 | System And Process For Detecting, Tracking And Counting Human Objects of Interest |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/752,457 Abandoned US20150294482A1 (en) | 2010-01-11 | 2015-06-26 | System And Process For Detecting, Tracking And Counting Human Objects Of Interest |
US16/011,853 Active US10909695B2 (en) | 2010-01-11 | 2018-06-19 | System and process for detecting, tracking and counting human objects of interest |
Country Status (3)
Country | Link |
---|---|
US (4) | US20110169917A1 (en) |
CA (1) | CA2723613A1 (en) |
GB (1) | GB2476869B (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150235237A1 (en) * | 2012-02-29 | 2015-08-20 | RetailNext, Inc. | Methods and systems for excluding individuals from retail analytics |
US10262331B1 (en) | 2016-01-29 | 2019-04-16 | Videomining Corporation | Cross-channel in-store shopper behavior analysis |
US10354262B1 (en) | 2016-06-02 | 2019-07-16 | Videomining Corporation | Brand-switching analysis using longitudinal tracking of at-shelf shopper behavior |
US10387896B1 (en) | 2016-04-27 | 2019-08-20 | Videomining Corporation | At-shelf brand strength tracking and decision analytics |
US10963893B1 (en) | 2016-02-23 | 2021-03-30 | Videomining Corporation | Personalized decision tree based on in-store behavior analysis |
US11354683B1 (en) | 2015-12-30 | 2022-06-07 | Videomining Corporation | Method and system for creating anonymous shopper panel using multi-modal sensor fusion |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7965866B2 (en) * | 2007-07-03 | 2011-06-21 | Shoppertrak Rct Corporation | System and process for detecting, tracking and counting human objects of interest |
US20110169917A1 (en) | 2010-01-11 | 2011-07-14 | Shoppertrak Rct Corporation | System And Process For Detecting, Tracking And Counting Human Objects of Interest |
US8615254B2 (en) * | 2010-08-18 | 2013-12-24 | Nearbuy Systems, Inc. | Target localization utilizing wireless and camera sensor fusion |
US9390334B2 (en) * | 2011-03-31 | 2016-07-12 | Panasonic Intellectual Property Management Co., Ltd. | Number of persons measurement device |
EP2565857B1 (en) * | 2011-09-01 | 2017-05-31 | Siemens Schweiz AG | Method and system for evaluating the security situation in a building with living areas with access authorisation |
EP2745276B1 (en) * | 2011-09-23 | 2017-12-20 | Shoppertrack RCT Corporation | System and method for detecting, tracking and counting human objects of interest using a counting system and a data capture device |
US10402631B2 (en) | 2011-09-23 | 2019-09-03 | Shoppertrak Rct Corporation | Techniques for automatically identifying secondary objects in a stereo-optical counting system |
US9177195B2 (en) * | 2011-09-23 | 2015-11-03 | Shoppertrak Rct Corporation | System and method for detecting, tracking and counting human objects of interest using a counting system and a data capture device |
US8923556B2 (en) | 2011-12-17 | 2014-12-30 | Symbol Technologies, Inc. | Method and apparatus for detecting people within video frames based upon multiple colors within their clothing |
US8786707B1 (en) * | 2012-03-19 | 2014-07-22 | Google Inc. | Pattern-free camera calibration for mobile devices with accelerometers |
US9113235B2 (en) | 2012-11-14 | 2015-08-18 | Symbol Technologies, Llc | Device and method for functionality sequencing |
US9554094B1 (en) * | 2012-11-30 | 2017-01-24 | Cognex Corporation | System and method for determining a displaced substrate with a vision system |
DE102013200817A1 (en) * | 2013-01-18 | 2014-07-24 | Hella Kgaa Hueck & Co. | Method for detecting an occupancy of a monitored zone |
CN103942598A (en) * | 2013-01-21 | 2014-07-23 | 新谊整合科技股份有限公司 | Object Counting System and Method |
BR102013013365B1 (en) | 2013-05-29 | 2021-12-14 | Sicpa Brasil Indústria De Tintas E Sistemas Ltda | METHOD AND DEVICE FOR COUNTING OBJECTS TRANSPORTED ON A CONVEYOR BELT |
JP5683663B1 (en) * | 2013-09-27 | 2015-03-11 | パナソニックIpマネジメント株式会社 | Residence time measuring device, residence time measuring system, and residence time measuring method |
US9644379B2 (en) | 2013-11-05 | 2017-05-09 | The Boeing Company | Elevated platform system including restraining systems and vision system |
US9760852B2 (en) | 2014-01-28 | 2017-09-12 | Junaid Hasan | Surveillance tracking system and related methods |
US10977662B2 (en) * | 2014-04-28 | 2021-04-13 | RetailNext, Inc. | Methods and systems for simulating agent behavior in a virtual environment |
US9836936B1 (en) | 2014-08-01 | 2017-12-05 | C & A Associates, Inc. | Object tracking system |
US9973671B2 (en) | 2014-08-27 | 2018-05-15 | Symbol Technologies, Llc | Method and apparatus for directing data capture devices in a mobile unit with a single operation |
US9679180B2 (en) | 2014-12-23 | 2017-06-13 | Symbol Technologies, Llc | Portable data capture device |
JP6455310B2 (en) * | 2015-05-18 | 2019-01-23 | 本田技研工業株式会社 | Motion estimation device, robot, and motion estimation method |
CA2934102A1 (en) * | 2015-06-25 | 2016-12-25 | Appropolis Inc. | A system and a method for tracking mobile objects using cameras and tag devices |
JP6367166B2 (en) * | 2015-09-01 | 2018-08-01 | 株式会社東芝 | Electronic apparatus and method |
EP3398111B1 (en) * | 2015-12-28 | 2023-12-13 | Robert Bosch GmbH | Depth sensing based system for detecting, tracking, estimating, and identifying occupancy in real-time |
CN107980138B (en) * | 2016-12-28 | 2021-08-17 | 达闼机器人有限公司 | False alarm obstacle detection method and device |
CN108876968A (en) * | 2017-05-10 | 2018-11-23 | 北京旷视科技有限公司 | Recognition of face gate and its anti-trailing method |
US10948354B2 (en) | 2017-06-05 | 2021-03-16 | Robert Bosch Gmbh | Measuring people-flow through doorways using easy-to-install IR array sensors |
EP3493102B1 (en) | 2017-11-30 | 2020-04-29 | Axis AB | A method and system for tracking a plurality of objects in a sequence of images |
US11321592B2 (en) | 2018-04-25 | 2022-05-03 | Avigilon Corporation | Method and system for tracking an object-of-interest without any required tracking tag theron |
EP3895058A1 (en) * | 2018-12-14 | 2021-10-20 | Xovis AG | Method and arrangement for determining a group of persons to be considered |
US10657746B1 (en) * | 2019-01-18 | 2020-05-19 | Robert Bosch Gmbh | Access control system including occupancy estimation |
CN112902911B (en) * | 2019-12-03 | 2023-06-20 | 上海高德威智能交通系统有限公司 | Monocular camera-based ranging method, device, equipment and storage medium |
WO2021204344A1 (en) | 2020-04-06 | 2021-10-14 | HELLA GmbH & Co. KGaA | Method and system for detecting a vehicle having at least one wheel |
CA3181167A1 (en) * | 2020-04-24 | 2021-10-28 | Alarm.Com Incorporated | Enhanced property access with video analytics |
US20220335452A1 (en) * | 2021-04-20 | 2022-10-20 | Walmart Apollo, Llc | Systems and methods for retail facilities |
CN113184647B (en) * | 2021-04-27 | 2022-11-22 | 安徽师范大学 | Contactless elevator system based on RFID |
CN113344132A (en) * | 2021-06-30 | 2021-09-03 | 成都商汤科技有限公司 | Identity recognition method, system, device, computer equipment and storage medium |
JP7324923B1 (en) * | 2022-11-14 | 2023-08-10 | 株式会社 日立産業制御ソリューションズ | Object recognition device and object recognition method |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020008632A1 (en) * | 1999-09-07 | 2002-01-24 | Clothier Brian L. | Method and apparatus for magnetic induction heating using radio frequency identification of object to be heated |
US20040145568A1 (en) * | 2002-12-17 | 2004-07-29 | Jung-Hong Ahn | Optical mouse and method for preventing abnormal operation of the same |
US20070008138A1 (en) * | 2004-07-20 | 2007-01-11 | Precision Dynamics Corporation | Coordinated identification of persons and/or articles via radio frequency identification cross-identification |
US20090231136A1 (en) * | 2008-03-12 | 2009-09-17 | Binay Sugla | Tags and tag-based systems and methods for locating and tracking objects |
US20090251286A1 (en) * | 2008-04-03 | 2009-10-08 | Robert Black | Object tracking devices and methods |
US20100052867A1 (en) * | 2007-01-24 | 2010-03-04 | The Hong Kong Polytechnic University | Apparatus and method for identifying object movement and location with rfid device |
US8085132B2 (en) * | 2003-12-10 | 2011-12-27 | Barry Allen | Method and apparatus for resolving RFID-based object traffic transactions to a single object in the presence of a plurality of objects |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4916621A (en) * | 1987-05-18 | 1990-04-10 | Bean John E | Microcomputer traffic counter and data collection method |
JPH08510373A (en) * | 1993-05-14 | 1996-10-29 | アールシーティー・システムズ・インコーポレーテッド | Video traffic monitor device in shops |
US6028626A (en) * | 1995-01-03 | 2000-02-22 | Arc Incorporated | Abnormality detection and surveillance system |
US5973732A (en) * | 1997-02-19 | 1999-10-26 | Guthrie; Thomas C. | Object tracking system for monitoring a controlled space |
US6188777B1 (en) * | 1997-08-01 | 2001-02-13 | Interval Research Corporation | Method and apparatus for personnel detection and tracking |
US7128270B2 (en) * | 1999-09-17 | 2006-10-31 | Silverbrook Research Pty Ltd | Scanning device for coded data |
US6611622B1 (en) * | 1999-11-23 | 2003-08-26 | Microsoft Corporation | Object recognition system and process for identifying people and objects in an image of a scene |
US6697104B1 (en) * | 2000-01-13 | 2004-02-24 | Countwise, Llc | Video based system and method for detecting and counting persons traversing an area being monitored |
US7612796B2 (en) * | 2000-01-13 | 2009-11-03 | Countwise, Llc | Video-based system and method for counting persons traversing areas being monitored |
US6674877B1 (en) * | 2000-02-03 | 2004-01-06 | Microsoft Corporation | System and method for visually tracking occluded objects in real time |
US6771818B1 (en) * | 2000-04-04 | 2004-08-03 | Microsoft Corporation | System and process for identifying and locating people or objects in a scene by selectively clustering three-dimensional regions |
AU2003221893A1 (en) * | 2002-04-08 | 2003-10-27 | Newton Security Inc. | Tailgating and reverse entry detection, alarm, recording and prevention using machine vision |
US7003136B1 (en) * | 2002-04-26 | 2006-02-21 | Hewlett-Packard Development Company, L.P. | Plan-view projections of depth image data for object tracking |
US7227893B1 (en) * | 2002-08-22 | 2007-06-05 | Xlabs Holdings, Llc | Application-specific object-based segmentation and recognition system |
US7400744B2 (en) * | 2002-09-05 | 2008-07-15 | Cognex Technology And Investment Corporation | Stereo door sensor |
US7081818B2 (en) * | 2003-05-19 | 2006-07-25 | Checkpoint Systems, Inc. | Article identification and tracking using electronic shadows created by RFID tags |
US7161482B2 (en) * | 2003-05-30 | 2007-01-09 | Sensormatic Electronics Corporation | Integrated electronic article surveillance and people counting system |
US7068815B2 (en) * | 2003-06-13 | 2006-06-27 | Sarnoff Corporation | Method and apparatus for ground detection and removal in vision systems |
JP3757959B2 (en) * | 2003-07-04 | 2006-03-22 | コニカミノルタホールディングス株式会社 | Counting system and counting method |
US7623674B2 (en) * | 2003-11-05 | 2009-11-24 | Cognex Technology And Investment Corporation | Method and system for enhanced portal security through stereoscopy |
EP1709568A4 (en) * | 2003-12-15 | 2009-07-29 | Sarnoff Corp | Method and apparatus for object tracking prior to imminent collision detection |
US7929017B2 (en) * | 2004-07-28 | 2011-04-19 | Sri International | Method and apparatus for stereo, multi-camera tracking and RF and video track fusion |
US7602420B2 (en) * | 2004-08-06 | 2009-10-13 | Canon Kabushiki Kaisha | Image capture apparatus, method for controlling the same and computer program |
US7447337B2 (en) * | 2004-10-25 | 2008-11-04 | Hewlett-Packard Development Company, L.P. | Video content understanding through real time video motion analysis |
JP4696264B2 (en) * | 2005-08-24 | 2011-06-08 | 独立行政法人情報通信研究機構 | Optical FSK / SSB modulator with intensity balance function |
US9036028B2 (en) * | 2005-09-02 | 2015-05-19 | Sensormatic Electronics, LLC | Object tracking and alerts |
US8184154B2 (en) * | 2006-02-27 | 2012-05-22 | Texas Instruments Incorporated | Video surveillance correlating detected moving objects and RF signals |
US20070200701A1 (en) * | 2006-02-27 | 2007-08-30 | English Kent L | Network centric sensor fusion for shipping container security |
US8380558B1 (en) * | 2006-12-21 | 2013-02-19 | Videomining Corporation | Method and system for analyzing shopping behavior in a store by associating RFID data with video-based behavior and segmentation data |
US20080157967A1 (en) * | 2006-12-28 | 2008-07-03 | International Business Machines Corporation | Rfid inventory device |
GB0709329D0 (en) * | 2007-05-15 | 2007-06-20 | Ipsotek Ltd | Data processing apparatus |
US7965866B2 (en) * | 2007-07-03 | 2011-06-21 | Shoppertrak Rct Corporation | System and process for detecting, tracking and counting human objects of interest |
US8915866B2 (en) * | 2008-01-18 | 2014-12-23 | Warsaw Orthopedic, Inc. | Implantable sensor and associated methods |
US7982609B2 (en) * | 2008-06-18 | 2011-07-19 | Microsoft Corporation | RFID-based enterprise intelligence |
US20110169917A1 (en) | 2010-01-11 | 2011-07-14 | Shoppertrak Rct Corporation | System And Process For Detecting, Tracking And Counting Human Objects of Interest |
-
2010
- 2010-11-09 US US12/942,108 patent/US20110169917A1/en not_active Abandoned
- 2010-12-01 CA CA2723613A patent/CA2723613A1/en not_active Abandoned
-
2011
- 2011-01-06 GB GB1100105.4A patent/GB2476869B/en not_active Expired - Fee Related
-
2013
- 2013-07-19 US US13/946,129 patent/US20130314505A1/en not_active Abandoned
-
2015
- 2015-06-26 US US14/752,457 patent/US20150294482A1/en not_active Abandoned
-
2018
- 2018-06-19 US US16/011,853 patent/US10909695B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020008632A1 (en) * | 1999-09-07 | 2002-01-24 | Clothier Brian L. | Method and apparatus for magnetic induction heating using radio frequency identification of object to be heated |
US20040145568A1 (en) * | 2002-12-17 | 2004-07-29 | Jung-Hong Ahn | Optical mouse and method for preventing abnormal operation of the same |
US8085132B2 (en) * | 2003-12-10 | 2011-12-27 | Barry Allen | Method and apparatus for resolving RFID-based object traffic transactions to a single object in the presence of a plurality of objects |
US20070008138A1 (en) * | 2004-07-20 | 2007-01-11 | Precision Dynamics Corporation | Coordinated identification of persons and/or articles via radio frequency identification cross-identification |
US20100052867A1 (en) * | 2007-01-24 | 2010-03-04 | The Hong Kong Polytechnic University | Apparatus and method for identifying object movement and location with rfid device |
US20090231136A1 (en) * | 2008-03-12 | 2009-09-17 | Binay Sugla | Tags and tag-based systems and methods for locating and tracking objects |
US20090251286A1 (en) * | 2008-04-03 | 2009-10-08 | Robert Black | Object tracking devices and methods |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150235237A1 (en) * | 2012-02-29 | 2015-08-20 | RetailNext, Inc. | Methods and systems for excluding individuals from retail analytics |
US9569786B2 (en) * | 2012-02-29 | 2017-02-14 | RetailNext, Inc. | Methods and systems for excluding individuals from retail analytics |
US11354683B1 (en) | 2015-12-30 | 2022-06-07 | Videomining Corporation | Method and system for creating anonymous shopper panel using multi-modal sensor fusion |
US10262331B1 (en) | 2016-01-29 | 2019-04-16 | Videomining Corporation | Cross-channel in-store shopper behavior analysis |
US10963893B1 (en) | 2016-02-23 | 2021-03-30 | Videomining Corporation | Personalized decision tree based on in-store behavior analysis |
US10387896B1 (en) | 2016-04-27 | 2019-08-20 | Videomining Corporation | At-shelf brand strength tracking and decision analytics |
US10354262B1 (en) | 2016-06-02 | 2019-07-16 | Videomining Corporation | Brand-switching analysis using longitudinal tracking of at-shelf shopper behavior |
Also Published As
Publication number | Publication date |
---|---|
US20150294482A1 (en) | 2015-10-15 |
GB201100105D0 (en) | 2011-02-16 |
CA2723613A1 (en) | 2011-07-11 |
GB2476869B (en) | 2013-10-30 |
US20180300887A1 (en) | 2018-10-18 |
GB2476869A (en) | 2011-07-13 |
US20110169917A1 (en) | 2011-07-14 |
US10909695B2 (en) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10909695B2 (en) | System and process for detecting, tracking and counting human objects of interest | |
US11670086B2 (en) | System and process for detecting, tracking and counting human objects of interest | |
US10410048B2 (en) | System and method for detecting, tracking and counting human objects of interest using a counting system and a data capture device | |
US12039803B2 (en) | Techniques for automatically identifying secondary objects in a stereo-optical counting system | |
EP3355282A1 (en) | System and method for detecting, tracking and counting human objects of interest using a counting system and a data capture device | |
US12266205B2 (en) | System and method for detecting, tracking and counting human objects of interest with an improved height calculation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SHOPPERTRAK RCT CORPORATION, ILLINOIS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:STEPHEN, ANNE MARIE;MCNEILL, DAVID PATRICK;FARIAS, JANE;AND OTHERS;SIGNING DATES FROM 20101110 TO 20101116;REEL/FRAME:030883/0417 |
|
AS | Assignment |
Owner name: FIRSTMERIT BANK, N.A., ILLINOIS Free format text: SECURITY AGREEMENT;ASSIGNOR:SHOPPERTRAK RTC CORPORATION;REEL/FRAME:031617/0050 Effective date: 20131105 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: SHOPPERTRAK RCT CORPORATION, ILLINOIS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (031617/0050);ASSIGNOR:FIRSTMERIT BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:037604/0227 Effective date: 20160125 |