AUTO-CONFIGURING A REGION OF INTEREST (ROI) ASSOCIATED WITH A CAMERA

Disclosed herein are apparatuses and methods for auto-configuring a region of interest (ROI) associated with a camera. In one implementation, A method includes tracking, over a plurality of image frames spanning a first period of time, a plurality of objects moving in an environment, and determining a plurality of respective trajectories of the plurality of objects. The method includes identifying a common trajectory shared by more than one object of the plurality of objects based on comparing each of the plurality of respective trajectories to one another and identifying an ROI that encompasses the common trajectory. The method further includes tracking, over a plurality of new image frames spanning a second period of time, another plurality of objects moving in the environment, and generating an alert that the common trajectory has changed based on new trajectories of the another plurality of objects.

TECHNICAL FIELD

The described aspects relate to object tracking systems.

BACKGROUND

Aspects of the present disclosure relate generally to object tracking systems, and more particularly, to auto-configuring a region of interest (ROI) associated with a camera used to track one or more persons. Cameras are often utilized for various use cases involving object tracking. For example, a camera may be placed above a door for security purposes (e.g., to detect if an intruder has entered the premises) or simply to count the number of people entering or exiting a location. However, in locations with a considerable amount of foot traffic, the detection and counting may be thrown off by outliers. For example, a person may walk nearby the door and be counted as someone entering—even though the person did not actually enter through the door.

Accordingly, there exists a need for improvements in object tracking systems.

SUMMARY

In some aspects, the techniques described herein relate to a method for auto-configuring a region of interest (ROI) associated with a camera, including: tracking, over a plurality of image frames spanning a first period of time, a plurality of objects moving in an environment, wherein the plurality of image frames are received from a camera installed in the environment; determining a plurality of respective trajectories including a respective trajectory of movement for each object of the plurality of objects; identifying a common trajectory shared by more than one object of the plurality of objects based on comparing each of the plurality of respective trajectories to one another; identifying an ROI that encompasses the common trajectory; configuring the ROI to be associated with new image frames from the camera; tracking, over a plurality of new image frames spanning a second period of time, another plurality of objects moving in the environment; identifying a new common trajectory based on trajectories of movement by the another plurality of objects; and generating, for output on a computing device, an alert that the common trajectory has changed in response to determining that the new common trajectory does not correspond to the common trajectory.

In some aspects, the techniques described herein relate to an apparatus for auto-configuring a region of interest (ROI) associated with a camera, including: at least one memory; at least one hardware processor coupled with the at least one memory and configured, individually or in combination, to: track, over a plurality of image frames spanning a first period of time, a plurality of objects moving in an environment, wherein the plurality of image frames are received from a camera installed in the environment; determine a plurality of respective trajectories including a respective trajectory of movement for each object of the plurality of objects; identify a common trajectory shared by more than one object of the plurality of objects based on comparing each of the plurality of respective trajectories to one another; identify an ROI that encompasses the common trajectory; configure the ROI to be associated with new image frames from the camera; track, over a plurality of new image frames spanning a second period of time, another plurality of objects moving in the environment; identify a new common trajectory based on trajectories of movement by the another plurality of objects; and generate, for output on a computing device, an alert that the common trajectory has changed in response to determining that the new common trajectory does not correspond to the common trajectory.

In some aspects, the techniques described herein relate to a non-transitory computer-readable medium for auto-configuring a region of interest (ROI) associated with a camera, including instructions executable by a processor to: tracking, over a plurality of image frames spanning a first period of time, a plurality of objects moving in an environment, wherein the plurality of image frames are received from a camera installed in the environment; determining a plurality of respective trajectories including a respective trajectory of movement for each object of the plurality of objects; identifying a common trajectory shared by more than one object of the plurality of objects based on comparing each of the plurality of respective trajectories to one another; identifying an ROI that encompasses the common trajectory; configuring the ROI to be associated with new image frames from the camera; tracking, over a plurality of new image frames spanning a second period of time, another plurality of objects moving in the environment; identifying a new common trajectory based on trajectories of movement by the another plurality of objects; and generating, for output on a computing device, an alert that the common trajectory has changed in response to determining that the new common trajectory does not correspond to the common trajectory.

DETAILED DESCRIPTION

The present disclosure includes apparatuses and methods that configure the ROI in a camera to improve performance in performing various tasks. For example, if the task of a camera is to count the number of people in a queue at a store, the apparatuses and methods automatically lock-in at an area of the video frame where the queue may be, based on the trajectories of movement of people being captured by the camera. Locking-in, which involves configuring the ROI, thus allows for outliers (e.g., people near and outside of the queue) to be identified and not included in the count.

FIG.1is a diagram of environment100that includes camera102, in accordance with exemplary aspects of the present disclosure. Suppose that environment100is a grocery store and camera102is installed near the ceiling of environment100. The visual stream captured by camera102, which may be a video or a series of periodic images marked by timestamps, may be transmitted to computing device500.

Computing device500may be a computer, a laptop, a smartphone, a server, or any device capable of receiving the visual stream from camera102and processing it using a ROI configuring component515(discussed inFIGS.5-8). Computing device500may be located in environment100or away from/outside of environment100, or integrated within camera102. Furthermore, camera102may be connected to computing device500wirelessly (e.g., via Bluetooth, Wi-Fi, etc.) or through a wired connection (e.g., USB).

FIG.2is a diagram of view200of camera102inFIG.1with an initial ROI202, in accordance with exemplary aspects of the present disclosure. ROI202is depicted as a boundary of a rectangular shape and captures person104, person106, and person108. Each person has their own respective movements. For example, person104is moving along trajectory204, person106is moving along trajectory206, and person108is moving along trajectory208. If camera102is used to count the number of people entering a checkout line based on being located within ROI202, because ROI202is too large, it counts three people as entering the line. This count is incorrect, however, as person108is in fact walking away from the entrance of the line.

FIG.3is a diagram of view300of camera102inFIG.1with an updated ROI304, in accordance with exemplary aspects of the present disclosure. To avoid the incorrect count of person108, the present disclosure describes apparatuses and methods to update initial ROI202to be more appropriate for accomplishing its task, e.g., in this case, counting the number of people entering a checkout line. InFIG.3, updated ROI304is determined based on an average trajectory302of person104and person106. As will be described inFIG.6, the trajectories of person104and person106are similar, whereas the trajectory of person108is not. Grouping common trajectories enables the apparatuses and methods of the present disclosure to better identify which subset of the video frame captured in view300is in fact important for serving the purpose of camera102(e.g., counting people in a checkout line).

FIG.4is a diagram of view400of camera102inFIG.1with updated ROI402that is a line, in accordance with exemplary aspects of the present disclosure. In some aspects, the ROI of a camera bounds a subset of pixels inside a frame and limits computations regarding the task of camera102(e.g., counting people) to within the subset of pixels. The ROI may be any shape (e.g., a circle, oval, rectangle, pentagon, etc.). In some aspects, the ROI is a three-dimensional shape (e.g., a cube, a rectangular prism, sphere, etc.). For example, if the ROI is a rectangular prism that encompasses the checkout line, the apparatuses and methods may evaluate whether a person has entered/passed through the rectangular prism. In some aspects, the ROI is a line that an object may cross—signifying that the object has entered/exited an area of interest. For example, ROI402is a line at the entrance of the checkout line. When person104or person106pass through ROI402, the person count is incremented. In contrast, the person count is not incremented for person108because he/she does not cross ROI402.

FIG.5is a block diagram of computing device500configured to execute an ROI configuring component, in accordance with exemplary aspects of the present disclosure.FIG.6is a flowchart illustrating method600of auto-configuring a region of interest (ROI) associated with a camera, in accordance with exemplary aspects of the present disclosure. Referring toFIG.5andFIG.6, in operation, computing device500may perform method600of auto-configuring a region of interest (ROI) associated with a camera via execution of ROI configuring component515by processor505and/or memory510.

At block602, the method600includes receiving a plurality of image frames from a camera installed in the environment, wherein the plurality of image frames depicts a view of the environment and wherein the ROI is located within the view. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or receiving component520may be configured to or may comprise means for receiving a plurality of image frames from camera102installed in environment100, wherein the plurality of image frames depicts view200of environment100and wherein ROI202is located within view200. For example, receiving component520may receive via a wireless or wired connection a video stream from camera102and identify each frame in the video stream based on a name and timestamp, and an ROI202may have a known position and/or shape (e.g., based on a setting) within each frame.

At block604, the method600includes tracking a plurality of persons in the plurality of image frames. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or tracking component525may be configured to or may comprise means for tracking persons104,106, and108in the plurality of image frames. Tracking component525may utilize computer vision techniques such as person recognition to identify persons104,106, and108in the frame. In some aspects, tracking component525may label each frame with a person identified within ROI202. For example, the plurality of image frames may comprise frames f1to fN, where N is a positive integer. Tracking component525may label f1with an identifier of person104(e.g., insert in the metadata of the frame, the term “person104,” to signify that person104is present in the frame). In an example 100thframe, f100, person106may enter ROI202and accordingly tracking component525may include the identifiers of both person104and106in the metadata of frame f100. In frame fN that depicts view200, tracking component525may include identifiers of persons104,106, and108in the metadata of fN.

At block606, the method600includes determining a plurality of respective trajectories including a respective trajectory of movement for each person of the plurality of persons. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or determining component530may be configured to or may comprise means for determining trajectories204,206, and208for persons104,106, and108, respectively.

Each trajectory has a start point (e.g., as indicated by the beginning of the arrow) and an end point (e.g., the current position of the person or the anticipated position of the person). Determining component530may set the start point to a position where a person began walking and may set the end point to a position where he/she left the frame. In some aspects, determining component530may approximate the trajectory based on a plurality points that the person104walked along in between the start point and end point. Using linear regression, the line of best fit (which represents the trajectory of a person) may be determined. For example, based on each location of person104in the plurality of image frames, determining component530approximates a line/vector indicative of trajectory204. In some aspects, the trajectory may be more complex than a straight line, in which case polynomial regression may be utilized to determine the curve of best fit.

Modeling the path a person moves along later allows ROI configuring component515to identify similar trajectories (whether straight or curved) and set the ROI to focus on capturing those identified trajectories. Using the types of regression listed above also allows determining component530to anticipate where a person is going to be at a future time. For example, in view200, persons104,106, and108have not completely walked along their respective trajectories. However, based on their previous points of walking, determining component530may determine an anticipated end point and extend the trajectory.

In some aspects, trajectories204,206, and208may be lines a two-dimensional graph. The origin point of the graph may be the bottom left corner of view200. Determining component530may treat each person as a point and monitor how the point travels across the plurality of frames that the point appears in. For example, a point on person104may be on the foot or head of person104. Each trajectory can be associated with a pixel in a first frame that the trajectory starts from and a pixel in a subsequent frame that the trajectory ends at. Based on the locations of the pixels (as dictated by the movement of the point representing person104), determining component530may identify a respective slope of the trajectory. For example, the slope of trajectory204may be 2, the slope of trajectory206may be 2.5, and the slope of trajectory208may be −0.75.

In some aspects, when the ROI is three-dimensional, determining component530may create a three-dimensional x-y-z representation of environment100relative to the walls and floor captured in view200. For example, the wall near person108includes door112. The height-wise line of the door may be characterized as parallel to the z-axis. The width-wise line of the door may be characterized as parallel to the x-axis. The y-axis may be determined as the axis perpendicular to both the x-axis and the z-axis. Trajectory204and206can therefore be represented as vectors. The vector of trajectory208, for example, may be parallel to the x-axis, while trajectories204and206may have a larger components along the y-axis.

At block608, the method600includes comparing each of the plurality of respective trajectories to one another. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or comparing component535may be configured to or may comprise means for comparing trajectories204,206, and208to one another.

Continuing the example given previously, comparing component535may select a subset of the determined respective trajectories that have neighboring start points within a first threshold distance, neighboring end points within a second threshold distance, and neighboring slopes within a threshold difference. Comparing component535may then calculate an average trajectory of the subset, wherein the average trajectory is the common trajectory, wherein the common start point is an average of the neighboring start points, and the common end point is an average of the neighboring end points.

For example, comparing component535may group all trajectories with slopes that are within the threshold slope difference. Suppose that the slope of trajectory204is 2, the slope of trajectory206is 2.5, and the slope of trajectory208is −0.75. The threshold slope difference may be 1. Accordingly, trajectories204and206may be in one group and trajectory208may be in a different group. Comparing component535may then select the group with the most trajectories and determine a subset of common trajectories that are in the same general vicinity. For example, although the slopes are similar of trajectories204and206, their locations may be far apart, implying that persons did not walk around the same area in view200. Accordingly, comparing component535may then determine whether the start points and end points of trajectories204and206are each within a threshold distance from one another. For example, the pixel where the start point of trajectory204is located may have the location (x1, y1) in the two-dimensional graph discussed above and the pixel where the start point of trajectory206is located may have the location (x2, y2). Comparing component535may calculate, via the two-dimensional distance formula, a distance D1between the points and determine whether D1is less than a threshold distance Dt. Likewise, comparing component535may determine whether the end points of trajectories204and206are within a threshold distance (may be same as Dt). In response to determining that both the start points and the end points are within the threshold distances, comparing component535may enter both trajectories in the subset of common trajectories. All other trajectories that are not in the subset may be identified as a plurality of uncommon trajectories by comparing component535. Comparing component535may further identify these uncommon trajectories as ones to not include in the updated ROI.

At block610, the method600includes identifying, based on the comparing, a common trajectory shared by more than one person of the plurality of persons, wherein the common trajectory has a common start point and a common end point, and wherein at least one of the common start point and common end point are not captured in the ROI. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or identifying component540may be configured to or may comprise means for identifying, based on the comparing, trajectory302shared by persons104and108, wherein the common trajectory has a common start point and a common end point, and wherein at least one of the common start point and common end point are not captured in ROI202.

In some aspects, it is possible for the plurality of persons to walk along the same trajectory. For example, the checkout area may be bounded in environment100by railings that guide customers along a single-file line. Because of this, every person may have the same start point and end point. This is referred to as a common start point and common endpoint. Because everyone walks along the same path, they all share a common trajectory.

In some aspects, however, the trajectory of each person may be slightly different (as shown inFIG.2). Because of the differences, identifying component540may determine an average trajectory of all the trajectories in the subset of common trajectories. In order to determine the average trajectory, identifying component540may determine an average start point and an average end point (which become the common start point and common end point). In order to determine the average start point and end point, identifying component540may determine the midpoint between the start points of trajectories204and206along with the midpoint between the end points of trajectories204and206. Identifying component540may then extend a line from the determined midpoints to generate trajectory302. In some aspects, identifying component540may determine a plurality of midpoints between all of the points along trajectories204and206(not just the start and end), to determine the average trajectory (i.e., trajectory302).

At block612, the method600includes updating the ROI to define an updated ROI that is configured to encompass the common trajectory. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or updating component545may be configured to or may comprise means for updating ROI202to define updated ROI304that is configured to encompass trajectory302.

InFIG.2, the initial ROI202was quite large and thus incorporated all movements in view200. The true focus of camera102, however, should be the checkout line because there are several persons walking along the same path. In some aspects, an indication that trajectory302should be the focus (rather than trajectory208) is that along trajectory302, multiple persons in close proximity and the same speed may be moving.

Updating component545identifies the length of trajectory302, and may generate ROI304which encompasses trajectory302. For example, the start point and end point of trajectory302may be on the boundary line of ROI304. In some aspects, the height of ROI304may be set based on the highest point on the body of a person walking in ROI304. For example, the height of ROI304may be as high as the tip of the head of person106. This height enables persons to be identified within ROI304because presumably their head and body will be captured in ROI304. It should be noted that when updating the ROI, updating component545determines an updated ROI that does not encompass the plurality of uncommon trajectories. The specific way to update the ROI to encompass the common trajectory and the plurality of uncommon trajectories is discussed inFIG.7.

At block614, the method600includes configuring the updated ROI to be associated with new image frames from the camera. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or configuring component550may be configured to or may comprise means for configuring updated ROI304to be associated with new image frames from camera102.

For example, configuring component550may associate subsequent frames from camera102with updated ROI304. This means that if a new frame is received from camera102, ROI configuring component515may set the ROI as updated ROI304and when counting persons entering the checkout line, only the persons entering/exiting ROI304will be counted. This results in a more accurate count because updated ROI304will not count persons, such as person108, who are walking along a much different trajectory than trajectory302.

FIG.7is a flowchart illustrating method700of updating the ROI, in accordance with exemplary aspects of the present disclosure.FIG.7has four optional steps that are executed by in block612. Although it is shown that only one of the four blocks are selected, depending on the height of the persons walking in a particular area, the length/position of the common trajectory, and the positions/lengths of the uncommon trajectories, any combination of the blocks may be performed. For example, block702may be executed, followed by any combination of704,706, and708.

At block702, the method700includes shifting the ROI from a first position to a second position that enables the updated ROI to encompass the common trajectory. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or shifting component551may be configured to or may comprise means for shifting ROI202from a first position to a second position that enables updated ROI304to encompass the common trajectory.

In this case, the dimensions (i.e., height and width) of initial ROI202may remain the same. ROI202may instead only be translated such that its center point changes from the first position to the second position.

At block704, the method700includes scaling the ROI from a first size to a second size that enables the updated ROI to encompass the common trajectory. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or scaling component552may be configured to or may comprise means for scaling ROI202from a first size to a second size that enables updated ROI304to encompass the common trajectory.

In this case, the position of the center point of initial ROI202remains the same. However, the height and width of initial ROI202are changed to encompass trajectory302.

At block706, the method700includes reshaping the ROI from the first shape to a second shape that enables the updated ROI to encompass the common trajectory. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or reshaping component553may be configured to or may comprise means for reshaping ROI202from the first shape to a second shape that enables updated ROI304to encompass the common trajectory.

In this case, the shape of initial ROI202may be changed from a rectangle to a shape that can incorporate trajectory302(e.g., a square, oval, etc.).

At block708, the method700includes shifting the ROI to the common start point and rotating the ROI to be perpendicular to the common trajectory. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or rotating component554may be configured to or may comprise means for shifting ROI202to the common start point and rotating ROI202to be perpendicular to the common trajectory.

In this case, the initial ROI may be a line that crosses the horizontal axis of view200along its midpoint. The updated ROI may be shifted and rotated (in any order) such that updated ROI402is perpendicular to the common trajectory (e.g., trajectory302) and intersects with the common start point of trajectory302. In some aspects, the length of the line may also be adjusted based on the length of the farthest start points in the subset of common trajectories. For example, if the farthest start points are (x1, y1) and (x2, y2), the length of ROI402is set to the distance between (x1, y1) and (x2, y2).

FIG.8is a flowchart illustrating method800of identifying a new common trajectory, in accordance with exemplary aspects of the present disclosure. The detection of a new common trajectory that is quite different from a previously identified common trajectory is indicative of a change in the position/orientation of the camera or a change in the layout of the environment.

At block802, the method800includes tracking, over a plurality of image frames spanning a first period of time, a plurality of objects moving in an environment, wherein the plurality of image frames are received from a camera installed in the environment. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or tracking component525may be configured to or may comprise means tracking, over a plurality of image frames spanning a first period of time (e.g., a first day of the week), a plurality of objects moving in an environment, wherein the plurality of image frames are received from camera102installed in the environment100. The tracking feature is described in further detail in the description of block604.

At block804, the method800includes determining a plurality of respective trajectories including a respective trajectory of movement for each object of the plurality of objects. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or determining component530may be configured to or may comprise means determining a plurality of respective trajectories including a respective trajectory of movement for each object of the plurality of objects. For example, determining component530may determine trajectories204,206, and208for persons104,106, and108, respectively. This determining feature is described in further detail in the description of block604.

At block806, the method800includes identifying a common trajectory shared by more than one object of the plurality of objects based on comparing each of the plurality of respective trajectories to one another. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or comparing component535may be configured to or may comprise means identifying a common trajectory302shared by more than one object of the plurality of objects (e.g., persons104and108) based on comparing each of the plurality of respective trajectories to one another. This identifying feature is described in further detail in the description of blocks608and610.

At block808, the method800includes identifying an ROI that encompasses the common trajectory. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or identifying component540may be configured to or may comprise means identifying an ROI304that encompasses the common trajectory. This identifying feature is described in further detail in the description of block612.

At block810, the method800includes configuring the ROI to be associated with new image frames from the camera. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or configuring component550may be configured to or may comprise means configuring the ROI304to be associated with new image frames from the camera102. This configuring feature is described in further detail in the description of block614.

At block812, the method800includes tracking, over a plurality of new image frames spanning a second period of time, another plurality of objects moving in the environment. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or tracking component525may be configured to or may comprise means tracking, over a plurality of new image frames spanning a second period of time (e.g., a different day of the week), another plurality of objects moving in the environment.

For example, if the environment is a store, based on the trajectories identified in the first day (as described in block802as “first period of time”; also described above in block604), ROI configuring component515identifies ROI304. Suppose that the orientation or position of camera102is changed at a second period of time, e.g., on a different day, such that the frames capture a different part of the environment. Alternatively, suppose that the layout of the environment is changed at a second period of time, e.g., on a different day, such that queues are formed along a different path. In both cases, the common trajectory originally identified in the first period of time, e.g., the first day, will change and not be the same in the second period of time, e.g., on the different day. ROI configuring component515monitors for changes in the common trajectory by performing another analysis on a new set of frames. ROI configuring component515first tracks another plurality of objects (possibly the same or different objects).

At block814, the method800includes identifying a new common trajectory based on trajectories of movement by the another plurality of objects. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or comparing component535may be configured to or may comprise means identifying a new common trajectory based on trajectories of movement by the another plurality of objects. Using the techniques previously described, ROI configuring component515determines a new common trajectory of the objects being tracked for the second period of time, and this new common trajectory can be used to determine if there has been a change in the previously-determined common trajectory.

At block816, the method800includes generating, for output on a computing device, an alert that the common trajectory has changed in response to determining that the new common trajectory does not correspond to the common trajectory. For example, in an aspect, computing device500, processor505, memory510, ROI configuring component515, and/or generating component555may be configured to or may comprise means generating, for output on a computing device, an alert that the common trajectory has changed in response to determining that the new common trajectory does not correspond to the common trajectory.

For example, the first common trajectory may be described as a first ray and the new common trajectory may be described as a second ray. During a comparison procedure, ROI configuring component515may determine whether a start point of the first ray is within a threshold distance from a start point of the second ray. ROI configuring component515may further determine whether an end point of the first ray is within a threshold distance from an end point of the second ray. ROI configuring component515may further determine whether a slope of the first ray is within a threshold slope difference from a slope of the second ray. If all of these determinations indicate that the start points, end points, and slopes are within their respective thresholds, ROI configuring component515may determine that the common trajectory and the new common trajectory correspond to one another. Accordingly, no change to the ROI is necessary. However, if one or more of the start points, end points, and slopes are not within their respective thresholds, ROI configuring component515determines that the common trajectory does not correspond to the new common trajectory. In response, ROI configuring component515generates an alert on a computing device (e.g., of an administrator associated with the environment) that the common trajectory has changed.

Subsequently, ROI configuring component515updates the ROI to encompass the new common trajectory and configures the updated ROI to be associated with newer image frames from the camera. The newer image frames are specifically image frames captured subsequent to the plurality of new image frames using to detect the new common trajectory.

In some aspects, ROI configuring component515may further identify a structural boundary of the environment and an inanimate object in the plurality of image frames from the first period of time. For example, using image recognition, ROI configuring component515may identify a structural boundary such as a wall and an inanimate object such as a piece of furniture. ROI configuring component515may then generate, for output on the computing device, an indication that a layout of the environment has changed in response to determining that the structural boundary has not changed position and the inanimate object has changed position in the plurality of new image frames from the second period of time. For example, if the wall has not changed position in the images, but the inanimate object has, ROI configuring component515determines that the camera has remained in place and the new common trajectory is a result of the layout of the environment being changed (e.g., a store has adjusted the queues for improved access by customers).

In some aspects, ROI configuring component515may generate, for output on the computing device, an indication that the camera has been moved in response to determining that both the structural boundary and the inanimate object have changed position or are not visible in the plurality of new image frames from the second period of time. For example, the position of a structure boundary such as a wall (which normally cannot be moved) will typically only change in an image if the camera itself has been moved. Although it is possible that the boundary is obscured by an obstacle, if both the boundary and the inanimate object are no longer visible or have changed position, there is a great likelihood that the camera has been adjusted in terms of orientation and/or position.

It should be noted that method800may be combined with any other of the previously described features. For example, in some aspects, updating the ROI comprises shifting the ROI from a first position to a second position that enables the updated ROI to encompass the new common trajectory. In some aspects, updating the ROI comprises scaling the ROI from a first size to a second size that enables the updated ROI to encompass the new common trajectory. In some aspects, the ROI is of a first shape, and updating the ROI comprises reshaping the ROI from the first shape to a second shape that enables the updated ROI to encompass the new common trajectory. In some aspects, the ROI is a line, and updating the ROI comprises shifting the ROI to a common start point and rotating the ROI to be perpendicular to the new common trajectory. In some aspects, ROI configuring component515identifies a plurality of uncommon trajectories based on comparing each of the plurality of respective trajectories to one another, wherein the identified ROI does not encompass the plurality of uncommon trajectories.

In some aspects, ROI configuring component515identifies the common trajectory by selecting a subset of the determined respective trajectories that have neighboring start points within a first threshold distance, neighboring end points within a second threshold distance, and neighboring slopes including the neighboring start points and the neighboring end points; and calculating an average trajectory of the subset, wherein the average trajectory is the common trajectory.Clause 1. A method for auto-configuring a region of interest (ROI) associated with a camera, comprising: tracking, over a plurality of image frames spanning a first period of time, a plurality of objects moving in an environment, wherein the plurality of image frames are received from a camera installed in the environment; determining a plurality of respective trajectories including a respective trajectory of movement for each object of the plurality of objects; identifying a common trajectory shared by more than one object of the plurality of objects based on comparing each of the plurality of respective trajectories to one another; identifying an ROI that encompasses the common trajectory; configuring the ROI to be associated with new image frames from the camera; tracking, over a plurality of new image frames spanning a second period of time, another plurality of objects moving in the environment; identifying a new common trajectory based on trajectories of movement by the another plurality of objects; and generating, for output on a computing device, an alert that the common trajectory has changed in response to determining that the new common trajectory does not correspond to the common trajectory.Clause 2. The method of clause 1, further comprising: identifying a structural boundary of the environment and an inanimate object in the plurality of image frames from the first period of time; and generating, for output on the computing device, an indication that a layout of the environment has changed in response to determining that the structural boundary has not changed position and the inanimate object has changed position in the plurality of new image frames from the second period of time.Clause 3. The method of any one or more of the previous clauses, further comprising: identifying a structural boundary of the environment and an inanimate object in the plurality of image frames from the first period of time; and generating, for output on the computing device, an indication that the camera has been moved in response to determining that both the structural boundary and the inanimate object have changed position or are not visible in the plurality of new image frames from the second period of time.Clause 4. The method of any one or more of the previous clauses, further comprising: updating the ROI to encompass the new common trajectory; and configuring the updated ROI to be associated with newer image frames from the camera, wherein the newer image frames are captured subsequent to the plurality of new image frames.Clause 5. The method of any one or more of the previous clauses, wherein updating the ROI comprises shifting the ROI from a first position to a second position that enables the updated ROI to encompass the new common trajectory.Clause 6. The method of any one or more of the previous clauses, wherein updating the ROI comprises scaling the ROI from a first size to a second size that enables the updated ROI to encompass the new common trajectory.Clause 7. The method of any one or more of the previous clauses, wherein the ROI is of a first shape, and wherein updating the ROI comprises reshaping the ROI from the first shape to a second shape that enables the updated ROI to encompass the new common trajectory.Clause 8. The method of any one or more of the previous clauses, wherein the ROI is a line, and wherein updating the ROI comprises shifting the ROI to a common start point and rotating the ROI to be perpendicular to the new common trajectory.Clause 9. The method of any one or more of the previous clauses, further comprising: identifying a plurality of uncommon trajectories based on comparing each of the plurality of respective trajectories to one another, wherein the identified ROI does not encompass the plurality of uncommon trajectories.Clause 10. The method of any one or more of the previous clauses, wherein identifying the common trajectory comprises: selecting a subset of the determined respective trajectories that have neighboring start points within a first threshold distance, neighboring end points within a second threshold distance, and neighboring slopes including the neighboring start points and the neighboring end points; and calculating an average trajectory of the subset, wherein the average trajectory is the common trajectory.Clause 11. An apparatus for auto-configuring a region of interest (ROI) associated with a camera, comprising: at least one memory; and at least one hardware processor coupled with the at least one memory and configured, individually or in combination, to: track, over a plurality of image frames spanning a first period of time, a plurality of objects moving in an environment, wherein the plurality of image frames are received from a camera installed in the environment; determine a plurality of respective trajectories including a respective trajectory of movement for each object of the plurality of objects; identify a common trajectory shared by more than one object of the plurality of objects based on comparing each of the plurality of respective trajectories to one another; identify an ROI that encompasses the common trajectory; configure the ROI to be associated with new image frames from the camera; track, over a plurality of new image frames spanning a second period of time, another plurality of objects moving in the environment; identify a new common trajectory based on trajectories of movement by the another plurality of objects; and generate, for output on a computing device, an alert that the common trajectory has changed in response to determining that the new common trajectory does not correspond to the common trajectory.Clause 12. The apparatus of any one or more of the previous clauses, wherein the at least one hardware processor is further configured to: identify a structural boundary of the environment and an inanimate object in the plurality of image frames from the first period of time; and generate, for output on the computing device, an indication that a layout of the environment has changed in response to determining that the structural boundary has not changed position and the inanimate object has changed position in the plurality of new image frames from the second period of time.Clause 13. The apparatus of any one or more of the previous clauses, wherein the at least one hardware processor is further configured to: identify a structural boundary of the environment and an inanimate object in the plurality of image frames from the first period of time; and generate, for output on the computing device, an indication that the camera has been moved in response to determining that both the structural boundary and the inanimate object have changed position or are not visible in the plurality of new image frames from the second period of time.Clause 14. The apparatus of any one or more of the previous clauses, wherein the at least one hardware processor is further configured to: update the ROI to encompass the new common trajectory; and configure the updated ROI to be associated with newer image frames from the camera, wherein the newer image frames are captured subsequent to the plurality of new image frames.Clause 15. The apparatus of any one or more of the previous clauses, wherein updating the ROI comprises shifting the ROI from a first position to a second position that enables the updated ROI to encompass the new common trajectory.Clause 16. The apparatus of any one or more of the previous clauses, wherein updating the ROI comprises scaling the ROI from a first size to a second size that enables the updated ROI to encompass the new common trajectory.Clause 17. The apparatus of any one or more of the previous clauses, wherein the ROI is of a first shape, and wherein updating the ROI comprises reshaping the ROI from the first shape to a second shape that enables the updated ROI to encompass the new common trajectory.Clause 18. The apparatus of any one or more of the previous clauses, wherein the ROI is a line, and wherein updating the ROI comprises shifting the ROI to a common start point and rotating the ROI to be perpendicular to the new common trajectory.Clause 19. The apparatus of any one or more of the previous clauses, wherein the at least one hardware processor is further configured to: identify a plurality of uncommon trajectories based on comparing each of the plurality of respective trajectories to one another, wherein the identified ROI does not encompass the plurality of uncommon trajectories.Clause 20. A non-transitory computer-readable medium for auto-configuring a region of interest (ROI) associated with a camera, including instructions executable by a processor to: tracking, over a plurality of image frames spanning a first period of time, a plurality of objects moving in an environment, wherein the plurality of image frames are received from a camera installed in the environment; determining a plurality of respective trajectories including a respective trajectory of movement for each object of the plurality of objects; identifying a common trajectory shared by more than one object of the plurality of objects based on comparing each of the plurality of respective trajectories to one another; identifying an ROI that encompasses the common trajectory; configuring the ROI to be associated with new image frames from the camera; tracking, over a plurality of new image frames spanning a second period of time, another plurality of objects moving in the environment; identifying a new common trajectory based on trajectories of movement by the another plurality of objects; and generating, for output on a computing device, an alert that the common trajectory has changed in response to determining that the new common trajectory does not correspond to the common trajectory.