Patent ID: 12238446

DETAILED DESCRIPTION

The techniques described herein implement an automated frame skipping approach used to generate a reduced set of frames for processing. In one example, the automated frame skipping approach is used to more efficiently generate a stitched map of a geographical area being surveilled by an aerial vehicle such as unmanned aerial vehicle (UAV). A stitched map is an image mosaic that is created using the reduced set of frames such that the geographical area being surveilled by the aerial vehicle is accurately depicted.

Various examples, scenarios, and aspects that enable the techniques described herein are described below with respect toFIGS.1-6.

FIG.1illustrates an example environment100in which frame skipping can be implemented to reduce a number of frames to be processed (e.g., stitched together to generate a map). In the example ofFIG.1, the aerial vehicle is illustrated as a UAV102that is configured with a camera. The camera captures video104of a scene106. In the example ofFIG.1, the scene106includes the top level of a parking garage. Accordingly, the UAV102is configured to surveil the top level of the parking garage by moving in various directions (e.g., north, south, east, west). As shown, the UAV102moves from south to north over a period of time108, and thus, the video104includes frames showing the top level of the parking garage based on the movement.

The UAV102and/or the camera is configured with a mechanism to determine its geographical location as the UAV102moves. In one example, the mechanism is a Global Positioning System (GPS) and the geographical location is represented as coordinates such as a latitude position and a longitude position. Accordingly, the video104includes location information110that associates the geographical location of the UAV102and/or the camera with a time when a frame in the video104is captured.

Once the video104is captured by the camera on the UAV102, the video104is provided to a system112along with the location information110. The video104can be provided to the system112in real-time as the video104is captured (e.g., via a wireless network connection). Alternatively, the video104can be provided to the system112after the whole scene106has been surveilled and the UAV102has landed. In one example, the system112is an edge device that can easily be moved to different geographical areas along with the UAV102(e.g., AWS SNOWBALL EDGE device, an AZURE STACK EDGE MINI-R device, a HPE EDGELINE device). However, the system112can include other types of devices such as a computing device (e.g., a server) in the cloud.

The system112includes a frame generation module114and a frame skipping module116, each of which is discussed herein. The number of illustrated modules inFIG.1is just an example, and the number can vary. That is, functionality described herein in association with the illustrated modules can be performed by a fewer number of modules or a larger number of modules on one device or spread across multiple devices.

The frame generation module114is configured to generate a sequence of frames120from the video104captured by the UAV102surveilling the scene106. Moreover, the frame generation module114is configured to associate each frame in the sequence of frames120with a location tag122. The frame generation module114extracts individual frames (i.e., still images) from the video104and associates each extracted frame with a location of the camera and/or the UAV102at a time108when the extracted frame is captured. In one example, the frame generation module114comprises SubRip Subtitle (SRT) software useable to generate a file in the SRT format.

The frame generation module114passes the sequence of frames120and the location tags122to the frame skipping module116. The frame skipping module116is configured to evaluate (e.g., sequentially) the sequence of frames120in order to reduce the total number of frames for processing. Stated alternatively, the frame skipping module116generates a reduced set of frames124. The number of frames in the reduced set of frames124is at least one frame and is smaller than the number of frames in the sequence of frames120. To generate the reduced set of frames124, the frame skipping module116evaluates a location tag122associated with a current frame in the sequence of frames120and determines if the location tag122associated with the current frame indicates a sufficient change in location of the camera and/or the UAV102, such that the amount of overlapping content between the current frame and any previously evaluated frame that has already been added to the reduced set of frames124is less than an overlap threshold (e.g., twenty percent overlap). Whether there is a sufficient change in location is discussed below with respect toFIG.2.

If the location tag122of the current frame indicates a sufficient change in location of the camera and/or the UAV102, the frame skipping module116determines that the content captured in the current frame includes enough non-overlapping content to make the current frame distinct when compared to previous frames that have already been added to the reduced set of frames124. Accordingly, the frame skipping module116designates the current frame as a “distinct” frame126.

In contrast, if the location tag122of the current frame indicates an insufficient change in location of the camera and/or the UAV102such that the amount of overlapping content between the current frame and any previously evaluated frame that has already been added to the reduced set of frames124is greater than the overlap threshold, the frame skipping module116determines that the content of the current frame is duplicative of the content captured by a previously evaluated frame that has already been added to the reduced set of frames124. Accordingly, the frame skipping module116designates the current frame as a “duplicate” frame128.

FIG.2further illustrates the example frame location evaluation process useable to generate the reduced set of frames124. The frame location evaluation process is implemented by the frame skipping module116. The frame skipping module116typically evaluates the frames in the sequence in which they are generated. Accordingly,FIG.2shows that the frame skipping module116receives the sequence of frames120along with a separate SRT file202that includes human-readable information for an individual frame204in the sequence of frames120. The human-readable information includes a location tag206that indicates the location of the camera and/or the UAV102at the time the frame204is captured. Alternatively, an individual frame204can include metadata that indicates the location tag206. Furthermore, the frame skipping module116is configured to store a table208that maintains locations associated with frames that have already been added to the reduced set of frames124.

The frame skipping module116includes a location delta threshold210. The location delta threshold210, when satisfied, indicates that there is a sufficient amount of new content in a current frame being evaluated when compared to a previously evaluated frame (e.g., any previously evaluated frame, the last frame evaluated) that has already been added to the reduced set of frames124(e.g., the amount of overlapping content between the current frame and any previously evaluated frame is less than an overlap threshold, the amount of distinct content in the current frame is above a distinct content threshold when compared to any previously evaluated frame). The location delta threshold210is used to reduce the time and resources as the frame skipping module116does not need to perform image analysis to determine an amount of content overlap between frames.

As there are no previously evaluated frames at the time when the first frame in the sequence of frames120is evaluated by the frame skipping module116, the frame skipping module116does not need to check212the table208to determine whether a location delta for the first frame satisfies the location delta threshold210. Rather, the frame skipping module116can automatically designate214the first frame as a distinct frame and add216the first frame to the reduced set of frames. Furthermore, to ensure that subsequently evaluated frames do not include duplicative content, the frame skipping module116stores218the location of the distinct frame in the table208. In this example, a record220representing the location of the first frame indicates a latitude position of “38.998691” degrees (North) and a longitude position of “−77.531823” (West).

The frame skipping module116then processes the next frame204in the sequence of frames120. The next frame204is now the current frame being evaluated. The frame skipping module116checks212the table208to determine whether the location delta between the location associated with the current frame, as indicated via the location tag206, and the location associated with a previously evaluated frame that has already been added to the reduced set of frames, as shown via the record220in the table208, satisfies the location delta threshold210. If the location delta does not satisfy the location delta threshold210, the frame skipping module116designates222the current frame as a duplicate frame. Therefore, the frame skipping module116is able to discard the current frame to improve the efficiency with which the video can be processed.

In contrast, if the location delta satisfies the location delta threshold210, the frame skipping module116determines that the content captured in the current frame is distinct (e.g., includes less than a threshold amount of overlap) and designates214the current frame as a distinct frame. The frame skipping module then adds216the distinct frame to the reduced set of frames and stores218the location of the distinct frame in the table208.

In the example ofFIG.2, the location delta threshold210is “0.000005” degrees in either the latitude or the longitude direction. Accordingly, records224and226in the table208show frame locations of the UAV102that satisfy the location delta threshold. Stated alternatively, frames in the reduced set of frames are associated with the locations that are at least “0.000005” degrees apart from one another.

In one example, the location delta threshold210is determined by the frame skipping module116via the use of image analysis. The image analysis used to determine the location delta threshold210may be limited to an initial set of frames (e.g., the first five or ten frames) in the sequence of frames120. Alternatively, the image analysis used to determine the location delta threshold210may be performed on a previous sequence of frames. Accordingly, the frame skipping module116can use the image analysis to determine that the change in content between a current frame being evaluated and a most recent frame that has been added to the reduced set of frames does not satisfy the overlap threshold. The frame skipping module116can then discard the current frame. If the frame skipping module116determines that the change in content between the current frame and the most recent frame added to the reduced set of frames satisfies the overlap threshold, the frame skipping module116adds the current frame to the reduced set of frames. Furthermore, the frame skipping module116determines the location delta threshold210based on the location of the camera and/or the UAV102when the current frame was captured and the location of the camera and/or the UAV102when the most recent frame added to the reduced set of frames was captured.

As shown inFIG.2, in one example, the frame skipping module116serves the reduced set of frames124to a stitching module228for processing. The stitching module228produces an image mosaic of the reduced set of frames124, thus creating a stitched map of the scene230. That is, the stitching module228takes the reduced set of frames124and uses key points and/or object recognition to implement an image-stitching process that places the frames in the reduced set of frames124to produce a detailed stitched map of the scene230. In one example, the stitching algorithm used by the stitching module228to generate the stitched map of the scene130is NodeODM. Other examples of stitching algorithms include AGISOFT Photoscan, PIX4D, and AUTOPANO. The stitching algorithm typically defines the overlap threshold needed to accurately stitch together a map of a scene. Consequently, the overlap threshold can vary based on a stitching algorithm that is being used. For instance, one stitching algorithm may require at least twenty percent overlap while another stitching algorithm may require thirty percent overlap.

To illustrate the improvement provided by the frame skipping module116, a UAV102surveilled a scene106for fifteen minutes at an altitude of about one hundred feet while moving at a speed of about fifteen miles per hour. The UAV was configured with a camera that captures four frames per second, producing a video104with roughly three thousand and six hundred frames. Using the techniques described herein, the frame skipping module116reduced the three thousand and six hundred frames to thirty-three frames without compromising the quality with which a stitched map230was generated. This reduced the initial number of frames to process by over ninety-nine percent (99%).

FIG.3illustrates an example environment300in which the stitched map of the scene130can be uploaded from the system112to a cloud platform302, where it is made available for download to different users and devices. In this example environment, the system112is an edge device (e.g., AWS SNOWBALL EDGE device, an AZURE STACK EDGE MINI-R device, an HPE EDGELINE device) that can easily be moved to different geographical areas along with an aerial vehicle (e.g., the UAV102), such that it can execute in disconnected environments. The system112may be configured to generate the reduced set of frames124and the stitched map of the scene230offline in a short period of time (e.g., eight to ten minutes after the UAV102has landed). Alternatively, the system112may upload the reduced set of frames124and the cloud platform302can generate the stitched map of the scene230. In other embodiments, the system112is a cloud platform, such that the system112and the cloud platform302are effectively the same entity. In such embodiments, the cloud platform302receives the sequence of frames from the video and processes it as discussed above. Furthermore, the system112and/or the cloud platform302can generate the stitched map of the scene230in different formats such as a two-dimensional (2D) format304or a three-dimensional (3D) format306.

In some embodiments, upon establishing a network connection to the cloud platform302, the system112uploads the reduced set of frames124and/or the stitched map of the scene230in the 2D format304and/or the 3D format306. The cloud platform302enables various user devices308to download the stitched map of the scene230so that a user can interact with the stitched map of the scene230. For instance, a user device308can include a head-mounted display device that enables user interaction with the 3D format306of the stitched map of the scene230.

As mentioned above, one scenario in which the techniques described herein can be used is when a geographical area needs to be urgently inspected to identify problems. For instance, a public safety reason may require the immediate manual inspection of the geographical area (e.g., to identify damages to building structures, to determine where people in need of help are located, to identify the current location and available navigation routes of a public threat such as an active shooter or a wild animal). Accordingly, via the use of the UAV102, the frame generation module114, the frame skipping module116, and the stitching module228, the stitched map of the scene230can be made available to a remote user device308in a matter of minutes. Accordingly, an inspector can view and interact with the stitched map of the scene230(e.g., zoom in, zoom out) to quickly identify concerns or problems.

In various examples, the cloud platform302can perform additional image analysis on the stitched map of the scene130to enhance the user experience. For example, the cloud platform302can implement object detection techniques to mark points of interest on the stitched map of the scene230. In one example, a point of interest may be an object that is part of a predetermined problem or concern (e.g., an active shooter, an animal, a vehicle, a landmark, a person in need of assistance such as a missing hiker or someone to be rescued from flooding waters).

FIG.4illustrates an example location conversion process that assigns a precise location to a pixel in the stitched map of the scene230. The stitching module228is configured to use the locations associated with the reduced set of frames124to determine a range of longitudinal coordinates associated with the surveilled scene and a range of latitudinal coordinates associated with the surveilled scene. Stated alternatively, the stitching module228determines a maximum longitude position402and minimum longitude position404from the locations, as well as a maximum latitude position406and minimum latitude position408from the locations.

The stitching module228uses the maximum longitude position402and the minimum longitude position404into a longitudinal range410. Moreover, the stitching module118uses the maximum latitude position406and the minimum latitude position408into a latitudinal range412. Once the ranges410and412are determined, the stitching module228can use a conversion process414to assign a precise longitude position and latitude position to each pixel416in the stitched map of the scene230. For instance, the stitching module228knows a height and a width (e.g., in number of pixels) in the stitched map of the scene230. The conversion process414can divide the longitudinal range410by the number of pixels that comprises the width to determine a difference in longitude between each pixel. Moreover, the conversion process414can divide the latitudinal range412by the number of pixels that comprises the height to determine a difference in latitude between each pixel. The differences in longitude and latitude can be used to assign the precise longitude position and latitude position to each pixel416.

Turning now toFIG.5, aspects of a method500implemented to reduce a number of frames to be processed (e.g., stitched together to generate a map) are shown and described. The method500beings at operation502where a sequence of frames is generated from video captured by a camera surveilling a scene. Alternatively, the sequence of frames can be received from an external entity. A frame in the sequence of frames is associated with a location of the camera at a time when the camera captures the frame.

At operation504, a first frame in the sequence of frames is designated as a first distinct frame. At operation506, the first distinct frame is added to a set of frames for subsequent processing. At operation508, the location associated with the first distinct frame is stored in a table.

At operation510, a location delta is determined for a subsequent frame in the sequence of frames based on the location associated with the subsequent frame and a location stored in the table. Then at operation512, it is determined whether the location delta is greater than a location delta threshold. If it is determined via operation512that the location delta is not greater than the location delta threshold (i.e., “No”), the process proceeds to operation514where the subsequent frame is designated as a duplicate frame. Operation516captures how the duplicate frames can be discarded with regard to subsequent processing (e.g., not included in the subsequent processing).

Alternatively, if it is determined via operation512that the location delta is greater than the location delta threshold (i.e., “Yes”), the process proceeds to operation518where the subsequent frame is designated as a distinct frame. Then at operation520, the distinct frame is added to the set of frames for subsequent processing. Moreover, at operation522, the location associated with the distinct frame is stored in the table. As shown by the arrows from operations516and522back to operation510, the locations for each subsequent frame is evaluated until all the frames in the sequence of frames have been evaluated.

Using the different designations allows the system to reduce a number of frames that are passed on for processing. That is, a number of frames in the set of frames is less than a number of frames in the sequence of frames.

For ease of understanding, the process discussed in this disclosure is delineated as separate operations represented as independent blocks. However, these separately delineated operations should not be construed as necessarily order dependent on their performance. The order in which the process is described is not intended to be construed as a limitation, and any number of the described process blocks may be combined in any order to implement the process or an alternate process. Moreover, it is also possible that one or more of the provided operations is modified or omitted.

The particular implementation of the technologies disclosed herein is a matter of choice dependent on the performance and other requirements of a computing device. Accordingly, the logical operations described herein may be referred to variously as states, operations, structural devices, acts, or modules. These states, operations, structural devices, acts, and modules can be implemented in hardware, software, firmware, in special-purpose digital logic, and any combination thereof. It should be appreciated that more or fewer operations can be performed than shown in the figures and described herein. These operations can also be performed in a different order than those described herein.

It also should be understood that the illustrated methods can end at any time and need not be performed in their entirety. Some or all operations of the methods, and/or substantially equivalent operations, can be performed by execution of computer-readable instructions included on a computer-storage media, as defined below. The term “computer-readable instructions,” and variants thereof, as used in the description and claims, is used expansively herein to include routines, applications, application modules, program modules, programs, components, data structures, algorithms, and the like. Computer-readable instructions can be implemented on various system configurations, including single-processor or multiprocessor systems, minicomputers, mainframe computers, personal computers, hand-held computing devices, microprocessor-based, programmable consumer electronics, combinations thereof, and the like.

Thus, it should be appreciated that the logical operations described herein are implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance and other requirements of the computing system.

FIG.6shows additional details of an example computer architecture600for a device, such as a computer or a server capable of executing computer instructions (e.g., a module described herein). The computer architecture600illustrated inFIG.6includes processing system including processing unit(s)602, a system memory604, including a random-access memory606(RAM) and a read-only memory (ROM)608, and a system bus610that couples the memory604to the processing unit(s)602. In various examples, the processing units602of the processing system are distributed. Stated another way, one processing unit602of the processing system may be located in a first location (e.g., a rack within a datacenter) while another processing unit602of the processing system is located in a second location separate from the first location.

Processing unit(s), such as processing unit(s)602, can represent, for example, a CPU-type processing unit, a GPU-type processing unit, a field-programmable gate array (FPGA), another class of digital signal processor (DSP), or other hardware logic components that may, in some instances, be driven by a CPU. For example, illustrative types of hardware logic components that can be used include Application-Specific Integrated Circuits (ASICs), Application-Specific Standard Products (ASSPs), System-on-a-Chip Systems (SOCs), Complex Programmable Logic Devices (CPLDs), and the like.

A basic input/output system containing the basic routines that help to transfer information between elements within the computer architecture600, such as during startup, is stored in the ROM608. The computer architecture600further includes a mass storage device612for storing an operating system614, application(s)616, modules618, and other data described herein.

The mass storage device612is connected to processing unit(s)602through a mass storage controller connected to the bus610. The mass storage device612and its associated computer-readable media provide non-volatile storage for the computer architecture600. Although the description of computer-readable media contained herein refers to a mass storage device, it should be appreciated by those skilled in the art that computer-readable media can be any available computer-readable storage media or communication media that can be accessed by the computer architecture600.

Computer-readable media includes computer-readable storage media and/or communication media. Computer-readable storage media includes one or more of volatile memory, nonvolatile memory, and/or other persistent and/or auxiliary computer storage media, removable and non-removable computer storage media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Thus, computer storage media includes tangible and/or physical forms of media included in a device and/or hardware component that is part of a device or external to a device, including RAM, static RAM (SRAM), dynamic RAM (DRAM), phase change memory (PCM), ROM, erasable programmable ROM (EPROM), electrically EPROM (EEPROM), flash memory, compact disc read-only memory (CD-ROM), digital versatile disks (DVDs), optical cards or other optical storage media, magnetic cassettes, magnetic tape, magnetic disk storage, magnetic cards or other magnetic storage devices or media, solid-state memory devices, storage arrays, network attached storage, storage area networks, hosted computer storage or any other storage memory, storage device, and/or storage medium that can be used to store and maintain information for access by a computing device.

In contrast to computer-readable storage media, communication media can embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave, or other transmission mechanism. As defined herein, computer storage media does not include communication media. That is, computer-readable storage media does not include communications media consisting solely of a modulated data signal, a carrier wave, or a propagated signal, per se.

According to various configurations, the computer architecture600may operate in a networked environment using logical connections to remote computers through the network620. The computer architecture600may connect to the network620through a network interface unit622connected to the bus610.

It should be appreciated that the software components described herein may, when loaded into the processing unit(s)602and executed, transform the processing unit(s)602and the overall computer architecture600from a general-purpose computing system into a special-purpose computing system customized to facilitate the functionality presented herein. The processing unit(s)602may be constructed from any number of transistors or other discrete circuit elements, which may individually or collectively assume any number of states. More specifically, the processing unit(s)602may operate as a finite-state machine, in response to executable instructions contained within the software modules disclosed herein. These computer-executable instructions may transform the processing unit(s)602by specifying how the processing unit(s)602transition between states, thereby transforming the transistors or other discrete hardware elements constituting the processing unit(s)602.

The disclosure presented herein also encompasses the subject matter set forth in the following clauses.

Example Clause A, a system comprising: a processing system; and computer-readable storage media storing instructions that, when executed by the processing system, cause the system to perform operations comprising: receiving a sequence of frames from video captured by a camera surveilling a scene, wherein a respective frame in the sequence of frames is associated with a respective location of the camera at a time when the camera captures the respective frame; designating a first frame in the sequence of frames as a first distinct frame; adding the first distinct frame to a set of frames for subsequent processing; storing a first location associated with the first distinct frame in a table; determining a first location delta for a second frame in the sequence of frames based on a second location associated with the second frame and another location stored in the table; determining that the first location delta is not greater than a location delta threshold; in response to determining that the first location delta is not greater than the location delta threshold, designating the second frame as a duplicate frame; determining a second location delta for a third frame in the sequence of frames based on a third location associated with the third frame and another location stored in the table; determining that the second location delta is greater than the location delta threshold; in response to determining that the second location delta is greater than the location delta threshold: designating the third frame as a subsequent distinct frame; adding the subsequent distinct frame to the set of frames for subsequent processing, wherein a number of frames in the set of frames is less than a number of frames in the sequence of frames; and storing the third location associated with the subsequent distinct frame in the table.

Example Clause B, the system of Example Clause A, wherein the operations further comprise generating a stitched map for the scene using the set of frames.

Example Clause C, the system of Example Clause B, wherein the stitched map for the scene is generated in a two-dimensional format.

Example Clause D, the system of Example Clause B, wherein the stitched map for the scene is generated in a three-dimensional format.

Example Clause E, the system of any one of Example Clauses B through D, wherein the respective location associated with the respective frame comprises global positioning system (GPS) coordinates.

Example Clause F, the system of Example Clause E, wherein the operations further comprise: determining a first range of longitudinal positions associated with the scene; determining a second range of latitudinal positions associated with the scene; using the first range and the second range to determine a longitudinal position and a latitudinal position for an individual pixel in the stitched map; and associating the longitudinal position and the latitudinal position with the individual pixel in the stitched map.

Example Clause G, the system of any one of Example Clauses A through F, wherein the operations further comprise determining the location delta threshold based on two locations associated with two frames determined to have less than a threshold amount of content overlap via image analysis.

Example Clause H, the system of any one of Example Clauses A through G, wherein the camera is associated with an unmanned aerial vehicle (UAV).

Example Clause I, a system comprising: a processing system; and computer-readable storage media storing instructions that, when executed by the processing system, cause the system to perform operations comprising: generating a sequence of frames from video captured by a camera surveilling a scene, wherein a respective frame in the sequence of frames is associated with a respective location of the camera at a time when the camera captures the respective frame; designating a first frame in the sequence of frames as a first distinct frame; adding the first distinct frame to a set of frames; storing the first location associated with the first distinct frame in a table; for a subsequent frame in the sequence of frames: determining a location delta based on a particular location associated with the subsequent frame and another location stored in the table; determining that the location delta is greater than a location delta threshold; in response to determining that the location delta is greater than the location delta threshold: designating the subsequent frame as a subsequent distinct frame; adding the subsequent distinct frame to the set of frames, wherein a number of frames in the set of frames is less than a number of frames in the sequence of frames; and storing the particular location associated with the subsequent distinct frame in the table.

Example Clause J, the system of Example Clause I, wherein the operations further comprise generating a stitched map for the scene using the set of frames.

Example Clause K, the system of Example Clause J, wherein the stitched map for the scene is generated in a two-dimensional format.

Example Clause L, the system of Example Clause J, wherein the stitched map for the scene is generated in a three-dimensional format.

Example Clause M, the system of any one of Example Clauses J through L, wherein the respective location associated with the respective frame comprises global positioning system (GPS) coordinates.

Example Clause N, the system of Example Clause M, wherein the operations further comprise: determining a first range of longitudinal positions associated with the scene; determining a second range of latitudinal positions associated with the scene; using the first range and the second range to determine a longitudinal position and a latitudinal position for an individual pixel in the stitched map; and associating the longitudinal position and the latitudinal position with the individual pixel in the stitched map.

Example Clause O, the system of any one of Example Clauses I through N, wherein the operations further comprise determining the location delta threshold based on two locations associated with two frames determined to have less than a threshold amount of content overlap via image analysis.

Example Clause P, a method comprising: receiving a sequence of frames from video of a scene captured by a camera, wherein a respective frame in the sequence of frames is associated with a respective location of the camera at a time when the camera captures the respective frame; designating a first frame in the sequence of frames as a first distinct frame; adding the first distinct frame to a set of frames for subsequent processing; storing the location associated with the first distinct frame in a table; for a subsequent frame in the sequence of frames: determining a location delta based on a particular location associated with the subsequent frame and another location stored in the table; determining that the location delta is greater than a location delta threshold; in response to determining that the location delta is greater than the location delta threshold: designating the subsequent frame as a subsequent distinct frame; adding the subsequent distinct frame to the set of frames for subsequent processing, wherein a number of frames in the set of frames is less than a number of frames in the sequence of frames; and storing the particular location associated with the subsequent distinct frame in the table.

Example Clause Q, the method of Example Clause P, wherein the operations further comprise generating a stitched map for the scene using the set of frames.

Example Clause R, the method of Example Clause Q, wherein the respective location associated with the respective frame comprises global positioning system (GPS) coordinates.

Example Clause S, the method of Example Clause R, further comprising: determining a first range of longitudinal positions associated with the scene; determining a second range of latitudinal positions associated with the scene; using the first range and the second range to determine a longitudinal position and a latitudinal position for an individual pixel in the stitched map; and associating the longitudinal position and the latitudinal position with the individual pixel in the stitched map.

Example Clause T, the method of any one of Example Clauses P through S, further comprising determining the location delta threshold based on two locations associated with two frames determined to have less than a threshold amount of content overlap via image analysis.

While certain example embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions disclosed herein. Thus, nothing in the foregoing description is intended to imply that any particular feature, characteristic, step, component, module, or block is necessary or indispensable. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the inventions disclosed herein. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of certain of the inventions disclosed herein.

It should be appreciated that any reference to “first,” “second,” etc. elements within the Summary and/or Detailed Description is not intended to and should not be construed to necessarily correspond to any reference of “first,” “second,” etc. elements of the claims. Rather, any use of “first” and “second” within the Summary, Detailed Description, and/or claims may be used to distinguish between two different instances of the same element (e.g., two different frames)

In closing, although the various configurations have been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended representations is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claimed subject matter.