Method and apparatus for motion detection

By calculating the pixel differences between camera image frames and applying threshold filtering technology, motion areas in the monitoring system are identified, solving the problems of false positive alarms and high power consumption, and achieving more reliable threat detection and energy saving.

CN120917481APending Publication Date: 2025-11-07SIMPLISAFE INC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202480009525.3
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-01-30
Filing Date
2024-01-26
Publication Date
2025-11-07

AI Technical Summary

Technical Problem

Existing monitoring systems have difficulty distinguishing between changes in pixel intensity caused by moving objects and changes caused by automatic exposure adjustment during camera exposure adjustment, resulting in frequent false positive alarms. Furthermore, high-frequency alarms increase power consumption and potential event detection delays.

Method used

By acquiring multiple image frames from the camera, calculating the pixel intensity differences between images, and applying thresholding and filtering techniques, motion regions can be identified, reducing false positive alarms and lowering power consumption.

Benefits of technology

It improves the reliability of threat detection, reduces the frequency of false positive alerts, saves energy, and extends battery life.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120917481A_ABST
    Figure CN120917481A_ABST
Patent Text Reader

Abstract

In one example, a method of motion detection includes generating a first image based on a plurality of previous images, the first image including pixels having an intensity value that approximates a difference in intensity values between a pair of pixels within the previous images, and the pair of pixels is one pixel from each of the first and second previous images and is present at the same position within its respective image; generating a second image by applying a threshold to the first image, the second image comprising one or more pixels having an intensity value higher than the threshold, the threshold derived from pixel intensity values within the first image and a number of pixels having a corresponding intensity value in the first image; and determining a region of the second image indicative of motion based on the position of the one or more pixels in the second image.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross Reference to Related Applications

[0002] This application claims priority to co-pending U.S. Provisional Application No. 63 / 482,236, filed January 30, 2023, and titled “METHODS AND APPARATUS FOR MOTION DETECTION,” which is hereby incorporated by reference in its entirety for all purposes. TECHNICAL FIELD

[0003] Aspects of the technology described herein relate to security systems and methods, and more particularly, to motion sensitive cameras, systems, and methods that utilize the security systems and the methods. BACKGROUND

[0004] Some monitoring systems use one or more cameras to capture images of an area surrounding or within a residential or commercial location. Such monitoring systems can process the images locally and transmit the captured images to a remote service. If motion is detected, the monitoring system can send an alert to one or more user devices. SUMMARY

[0005] Aspects and examples relate to techniques for improving the accuracy of threat detection based on detected motion, and to security devices and systems that implement the techniques.

[0006] According to one example, a method includes generating a first image based on a plurality of previous images that form part of a sequence of images, the first image including pixels having intensity values that approximate a difference in intensity values between a pair of pixels within the previous images, and the pair of pixels being one pixel from each of a first previous image and a second previous image and present at a same location within their respective images; generating a second image by applying a threshold to the first image, the second image including one or more pixels having intensity values above the threshold, and the threshold being derived from pixel intensity values within the first image and a number of pixels in the first image having corresponding intensity values; and determining a region of the second image indicative of motion based on locations of the one or more pixels in the second image.

[0007] Examples of the method can include any one or more of the following features.

[0008] The method can further include acquiring the plurality of previous images using a camera. In an example, the method further includes detecting a motion event in a scene using a motion detector; and based on detecting the motion event, initiating the camera to acquire the plurality of images.

[0009] The method can further include determining the first threshold by: assembling a data set corresponding to the first image, the data set specifying intensity values of pixels within the first image and a number of pixels in the first image having respective intensity values; computing a mean of the data set and a standard deviation for the data set; and determining the first threshold based on the mean and the standard deviation.

[0010] According to another example, a motion detection method includes: acquiring, using an image capture device, a first image and a second image of a scene; generating a third image based on the first image and the second image, wherein a first intensity value of each pixel in the third image corresponds to a magnitude of a difference in intensity between corresponding pixels in the first image and the second image; determining a first threshold based on the third image; applying the first threshold to the third image to generate a fourth image, wherein each pixel in the fourth image has a respective second intensity value, and wherein the second intensity value is determined based on whether the first intensity value of the corresponding pixel in the difference image exceeds the first threshold; grouping pixels of the fourth image into a plurality of blocks, each block including a plurality of pixels of the filtered image; summing the second intensity values of the plurality of pixels in each block to generate a summed value for the respective block; and identifying a region of motion in the second image based on two or more adjacent blocks in the fourth image having summed values that exceed a second threshold.

[0011] The method can include any one or more of the following features.

[0012] In one example, identifying the region of motion in the second image includes: generating a bounding box corresponding to the two or more adjacent blocks; and superimposing at least one bounding box on the second image. In another example, generating the bounding box includes: forming a connected region in the fourth image, the connected region including the two or more adjacent blocks; and generating the bounding box based at least in part on an outline of the connected region.

[0013] In one example, determining the first threshold includes: assembling a data set corresponding to the difference image; computing a mean of the data set and a standard deviation for the data set; and determining the first threshold based on the mean and the standard deviation. In another example, determining the first threshold includes: determining the first threshold based on a sum of the mean multiplied by a first constant and the standard deviation multiplied by a second constant, wherein the first constant and the second constant are empirically determined constants.

[0014] In one example, the second intensity value of each pixel in the fourth image is one of: zero based on the first intensity value of the corresponding pixel in the third image being at or below the first threshold; or the first intensity value of the corresponding pixel in the third image based on the first intensity value of the corresponding pixel in the third image exceeding the first threshold.

[0015] In one example, the method further includes detecting a motion event in the scene using a motion detector; and based on detecting the motion event, initiating the image capture device to acquire the first image and the second image.

[0016] The method can further include converting the first image and the second image into a first grayscale image and a second grayscale image, respectively, prior to generating the third image, wherein generating the third image includes generating the third image based on the first grayscale image and the second grayscale image.

[0017] Another example relates to a method of motion detection, including: acquiring, using an image capture device, a first image and a second image of a scene; generating, based on the first image and the second image, a difference image including a first plurality of pixels, wherein respective first intensity values of the first plurality of pixels in the difference image correspond to magnitudes of differences in intensity between respective corresponding pixels in the first image and the second image; determining a first threshold based on the difference image; filtering the difference image by applying the first threshold to generate a filtered image having a second plurality of pixels, wherein respective second intensity values of the second plurality of pixels in the filtered image are determined based on whether first intensity values of corresponding pixels in the third image exceed the first threshold; dividing the filtered image into a plurality of blocks, each block including a sub-group of pixels of the plurality of pixels of the filtered image; summing the second intensity values of the sub-group of pixels in each block to generate a summed value for the respective block; and identifying a region of motion in the second image based on two or more adjacent blocks in the filtered image having summed values that exceed a second threshold.

[0018] Examples of the method can include any one or more of the following features.

[0019] In one example, determining the first threshold includes: assembling a data set corresponding to the difference image, the data set identifying the first intensity values and a number of pixels in the third difference image having each first intensity value; calculating a mean value of the data set and a standard deviation for the data set; and determining the first threshold based on the mean value and the standard deviation.

[0020] In another example, the respective second intensity values of the second plurality of pixels in the filtered image are one of: zero; or the first intensity values of the corresponding pixels in the difference image based on the first intensity values exceeding the first threshold.

[0021] According to another example, a security sensor includes: an image capture device; at least one processor; and a data storage device storing instructions that, when executed by the at least one processor, cause the security sensor to: acquire, using the image capture device, a first image frame and a second image frame; determine a difference in pixel intensity between the first image and the second image; generate, based on the difference, a third image in which a first intensity value of each pixel in the third image corresponds to a magnitude of the difference in intensity between a corresponding pair of pixels in the first image and the second image; determine, based on the third image, a first threshold value; generate, based on the first threshold value, a fourth image in which each pixel in the fourth image has a respective second intensity value determined based on whether the first intensity value of the corresponding pixel in the third image exceeds the first threshold value; divide the fourth image into a plurality of blocks, each block including a respective subset of pixels of the fourth image; sum the second intensity values of the respective subset of pixels in each block to generate a corresponding plurality of summed values; and identify a region of motion in the second image based on two or more adjacent blocks in the third image having summed values that exceed a second threshold value.

[0022] In one example, to identify the region of motion, the data storage device further stores instructions that, when executed by the at least one processor, cause the security sensor to: generate a bounding box corresponding to the two or more adjacent blocks; and superimpose the at least one bounding box on the second image. In another example, to determine the first threshold value, the data storage device further stores instructions that, when executed by the at least one processor, cause the security sensor to: assemble a data set corresponding to the third image, the data set identifying the first intensity values and a number of pixels in the third image having each first intensity value; compute a mean value of the data set and a standard deviation for the data set; and determine the first threshold value based on the mean value and the standard deviation. In another example, the data storage device further stores instructions that, when executed by the at least one processor, cause the security sensor to: determine the first threshold value based on a sum of the mean value multiplied by a first constant and the standard deviation multiplied by a second constant, wherein the first constant and the second constant are empirically determined constants.

[0023] In one example, the second intensity value of each pixel in the fourth image is one of: zero based on the first intensity value of the corresponding pixel in the third image being at or below the first threshold value; or the first intensity value of the corresponding pixel in the third image based on the first intensity value of the corresponding pixel in the third image exceeding the first threshold value.

[0024] In one example, the second threshold value is higher than the first threshold value.

[0025] In another example, the security sensor further includes a motion detector configured to detect a motion event in the scene. In one example, the motion detector is a passive infrared sensor. In another example, the data storage device further stores instructions that, when executed by the at least one processor, cause the security sensor to: based on detection of the motion event with the motion detector, initiate the image capture device to acquire the first image and the second image. The security sensor can further include a battery coupled to the motion detector, the image capture device, the data storage device, and the at least one processor.

[0026] These example aspects and further aspects, examples, and advantages of the examples are discussed in detail below. The examples disclosed herein can be combined with any of the principles disclosed herein in any manner, and the references to “the example,” “some examples,” “an alternative example,” “various examples,” “one example” etc. are not necessarily mutually exclusive, and are intended to indicate that there are a plurality of individual aspects that alone can comprise an example. Such terminology does not necessarily refer to the same example and is used based on the experience of the drafter of the specification. BRIEF DESCRIPTION OF DRAWINGS

[0027] Various aspects of at least one example are discussed with reference to the following figures. The drawings are not intended to be to scale. The drawings are included to provide a illustration and a further understanding of the various aspects, and are incorporated in and constitute a part of this disclosure. However, the figures are not intended to limit the specification to any particular example. The figures and the remainder of the disclosure are used to explain the principles and operation of the aspects being presented and described. In the drawings:

[0028] Figure 1 is a schematic diagram of a security system according to some examples described herein;

[0029] Figure 2 is a schematic diagram of a base station according to some examples described herein;

[0030] Figure 3 is a schematic diagram of a keyboard according to some examples described herein;

[0031] Figure 4A is a schematic diagram of a security sensor according to some examples described herein;

[0032] Figure 4B is a schematic diagram of an image capture device according to some examples described herein;

[0033] Figure 5is a schematic diagram of a data center environment, a monitoring center environment, and a client device according to some examples described herein;

[0034] Figure 6 is a sequence diagram of a monitoring process according to some examples described herein;

[0035] Figure 7 is a schematic diagram of one example of a sensor according to some examples described herein;

[0036] Figure 8 is a flowchart showing an example of a motion detection process that can be performed by a security sensor according to some examples described herein; Figure 7

[0037] Figure 9A is a graph of one example of an image of a scene according to some examples described herein;

[0038] Figure 9B is a graph of an example of another image of a scene according to some examples described herein;

[0039] Figure 10A is a graph highlighting certain pixels of an image of Figure 9A according to some examples described herein;

[0040] Figure 10B is a graph highlighting certain pixels of an image of Figure 9B according to some examples described herein;

[0041] Figure 11 is a graph showing an example of a difference image obtained by comparing intensities of corresponding pixels of images of Figure 9A and Figure 9B according to some examples described herein;

[0042] Figure 12A is a chart showing an example of a difference histogram for a difference image according to some examples described herein;

[0043] Figure 12B is a chart showing another example of a difference histogram based on an image acquired while a camera is making an automatic exposure adjustment according to some examples described herein;

[0044] Figure 13 is a flowchart of one example of a process of determining an adaptive threshold and applying the adaptive threshold to a difference image according to some examples described herein;

[0045] Figure 14 is a chart showing a difference histogram corresponding to an example difference image of Figure 11 according to some examples described herein;​

[0046] Figure 15 is a graph showing an example of a filtered image corresponding to an example difference image of Figure 11

[0047] Figure 16 is a graph showing an example of a grid applied to a filtered image of Figure 15

[0048] Figure 17A is a graph showing an example of a summed grid corresponding to a filtered image of Figure 15

[0049] Figure 17B is a graph showing an example of a connected region identified in a summed grid of Figure 17A

[0050] Figure 18 is a graph showing an example of a motion detection bounding box overlaid on an image of Figure 9B

[0051] Figure 19 is a schematic diagram of a computing device according to some examples described herein. DETAILED DESCRIPTION

[0052] A security system can include a series of sensors configured to detect various events or conditions, such as motion, humidity, temperature changes, and sound, among others. For example, an imaging sensor can include a camera that captures still and / or video images of a scene within a field of view of the camera. The field of view of the camera corresponds to the extent of the observable world that is “seen” by the image capture device at any given moment, which is typically a solid angle over which the camera is sensitive to electromagnetic radiation passing through it.

[0053] ​​​​​When a camera is activated to begin capturing images of a scene, the camera goes through a period of auto-exposure adjustment before it is able to acquire well-exposed images. During this adjustment period, images from the camera can vary significantly in brightness. Because of this variation in brightness, images are not useful for motion detection, as pixel intensity changes caused by moving objects are indistinguishable from pixel intensity changes caused by the camera's auto-exposure adjustment or other lighting changes. As a result, the sensor can generate false positive alerts during the camera's adjustment period. For a variety of reasons, a high number of false positive alerts is undesirable. For example, receiving many false positive alerts can be annoying and distracting to the owner of the security system. Additionally, it can cause the security system to use more power, as a high alert rate causes electronic devices of the system, such as processors and transmitters, to be active for more time. This is generally undesirable for environmental and energy efficiency reasons, and can even be more problematic for battery-powered security sensors, where unnecessary activity can shorten battery life. Alternatively, the motion detection process can be delayed until the camera has reached well-exposed images, but such a delay results in a period of time during which important events can go undetected.

[0054] To address these and other issues, aspects and examples involve techniques for improving security sensors by providing reliable threat detection while also reducing power consumption to conserve energy and / or extend battery time. In particular, aspects and examples provide techniques for reducing false positive events that can occur during the auto-adjustment period when a camera is activated, without introducing undesirable delays in processing, thereby improving the reliability of threat detection, as discussed further below.

[0055] An example of the technology disclosed herein can be implemented using a sensor (e.g., a battery-powered imaging security sensor) that includes a motion detector configured to detect a moving object, an image capture device (e.g., a camera), a battery, at least one processor, and a data storage device. The data storage device stores instructions that, when executed by the at least one processor, cause the image capture device to: acquire, using the image capture device, a first image frame and a second image frame; determine a difference in pixel intensity between the first image and the second image; generate, based on the difference, a difference image, where a first intensity value of each pixel in the difference image corresponds to a magnitude of a difference in intensity between a corresponding pixel in the first image and the second image; determine a first threshold based on the difference image; generate, based on the first threshold, a filtered image, where each pixel in the filtered image has a second intensity value, and where the second intensity value is determined based on whether the first intensity value of a corresponding pixel in the difference image exceeds the first threshold; group the pixels of the filtered image into a plurality of blocks, each block including a plurality of pixels of the filtered image; sum the second intensity values of the plurality of pixels in each block to generate a summed value for each block; and identify a region of motion in the second image based on two or more adjacent blocks in the filtered image having summed values that exceed a second threshold.

[0056] These and other features and examples are discussed in greater detail below.

[0057] While various examples are described herein, it will be apparent to one of ordinary skill in the art that many more examples and implementations are possible. Accordingly, the examples described herein are not intended to be limiting, and the described examples are not intended to be the only examples in which the described advantages can be realized. Furthermore, the described advantages are not necessarily expected to be achieved in every implementation.

[0058] For the purposes of promoting an understanding of the principles of the present disclosure, reference will now be made to the examples illustrated in the drawings, and specific language will be used to describe the examples. It will nevertheless be understood that no limitation of the scope of the examples described herein is intended by this specific language.

[0059] Figure 1 is a schematic diagram of a security system 100 configured to monitor locations that differ in geographic location, in accordance with some examples. As shown, the system 100 includes various devices disposed at a monitored location 102A, a monitoring center environment 120, a data center environment 124, one or more customer devices 122, and a communication network 118. Each of the monitoring center environment 120, the data center environment 124, the one or more customer devices 122, and the communication network 118 includes one or more computing devices (e.g., as described below with reference to FIG. 2). The monitoring center environment 120, the data center environment 124, the one or more customer devices 122, and the communication network 118 are communicatively coupled to each other via the communication network 118. Figure 1 As shown, the system 100 includes various devices disposed at a monitored location 102A, a monitoring center environment 120, a data center environment 124, one or more customer devices 122, and a communication network 118. Each of the monitoring center environment 120, the data center environment 124, the one or more customer devices 122, and the communication network 118 includes one or more computing devices (e.g., as described below with reference to Figure 19Some or all of the devices disposed at the monitored location 102A can also include one or more computing devices. One or more client devices 122 are configured to host one or more client interface applications 132. The monitoring center environment 120 is configured to host one or more monitor interface applications 130. The data center environment 124 is configured to host a monitoring service 128 and one or more transport services 126. In some examples, the devices at the monitored location 102A include the image capture devices 104 and 110, the contact sensor assembly 106, the keyboard 108, the motion sensor assembly 112, the base station 114, and the router 116. The base station 114 hosts a monitoring client 136. The image capture device 110 hosts a camera agent 138. The security devices (e.g., devices 104, 106, 108, 110, 112, and 114) disposed at the monitored location 102A can be referred to herein as location-based devices.

[0060] In some examples, the router 116 is a wireless router configured to communicate with the location-based devices via communications consistent with a communications standard, such as any of the various Institute of Electrical and Electronics Engineers (IEEE) 802.11 standards. As Figure 1 As shown, the router 116 is also configured to communicate with the network 118. It should be noted that the router 116 implements a local area network (LAN) within and proximate to the monitored location 102A, by way of example only. Other networking technologies involving other computing devices are suitable for use within the location 102A. For example, in some examples, the base station 114 can receive and forward communication data packets transmitted by the image capture device 110 via a personal area network (PAN) protocol, such as BLUETOOTH. Additionally or alternatively, in some examples, the location-based devices communicate directly with one another using any of a variety of standards suitable for point-to-point use, such as any of the IEEE 802.11 standards, PAN standards, and the like. In at least one example, the location-based devices can communicate with one another using a sub-GHz wireless networking standard, such as IEEE 802.11 ah, Z-WAVE, ZIGBEE, and the like. Other wired, wireless, and mesh network technologies and topologies will be apparent in light of this disclosure and are intended to fall within the scope of the examples disclosed herein.

[0061] Continuing Figure 1In examples, network 118 can include one or more public and / or private networks that support, for example, IP. Network 118 can include, for example, one or more LANs, one or more PANs, and / or one or more wide area networks (WANs). A LAN can include a wired or wireless network that supports various LAN standards, such as versions of IEEE 802.11, and the like. A PAN can include a wired or wireless network that supports various PAN standards, such as BLUETOOTH, ZIGBEE, and the like. A WAN can include a wired or wireless network that supports various WAN standards, such as code division multiple access (CDMA) radio standards, global system for mobile (GSM) radio standards, and the like. Network 118 connects and enables data communication between computing devices within monitored location 102A, monitoring center environment 120, data center environment 124, and customer device 122. In at least some examples, both monitoring center environment 120 and data center environment 124 include network equipment (e.g., similar to router 116) that is configured to communicate with network 118 and with computing devices collocated or proximate to the network equipment. It should be noted that, in some examples, network 118 and existing networks within monitored location 102A support other communication protocols, such as MQTT or other IoT protocols.

[0062] Continuing Figure 1 In examples, data center environment 124 can include physical space, communication, cooling, and power infrastructure to support networked operation of computing devices. For example, the infrastructure can include rack space into which computing devices are mounted, uninterrupted power supply into which, cooling plenum and equipment, and networking equipment. Data center environment 124 can be dedicated to security system 100; can be a non-dedicated, commercially available cloud computing service (e.g., MICROSOFT AZURE, AMAZON WEB SERVICES, GOOGLE CLOUD, etc.); or can include a hybrid configuration composed of dedicated and non-dedicated resources. Regardless of its physical or logical configuration, as shown in FIG. 1, data center environment 124 is configured to host monitoring service 128 and transport service 126. Figure 1

[0063] Continuing Figure 1 In examples, monitoring center environment 120 can include multiple computing devices (e.g., desktop computers) and network equipment (e.g., one or more routers) connected to the computing devices and network 118. Customer device 122 can include a personal computing device (e.g., a desktop computer, a laptop computer, a tablet computer, a smart phone, etc.) and network equipment (e.g., a router, a cellular modem, a cellular radio, etc.). As shown in FIG. 1, monitoring center environment 120 is configured to host monitor interface 130, and customer device 122 is configured to host customer interface 132. Figure 1

[0064] Continuing​​Figure 1 In the example of FIG. 1, devices 104, 106, 110, and 112 are configured to acquire analog signals via sensors incorporated into the devices; generate digital sensor data based on the acquired signals; and transmit the sensor data to base station 114 (e.g., via a wireless link with router 116). The types of sensor data generated and transmitted by these devices vary with the types of sensors included in the devices. For example, image capture devices 104 and 110 can acquire ambient light; generate frames of image data based on the acquired light; and transmit the frames to base station 114, monitor interface 130, and / or customer interface 132, although the pixel resolution and frame rate can vary according to the capabilities of the devices. In cases where image capture devices 104 and 110 have sufficient processing capabilities and available power, image capture devices 104 and 110 can process the image frames based on the content depicted in the image frames and transmit messages, as further described below. These messages can specify reportable events, and can be transmitted in place of or in addition to the image frames. Such messages can be sent directly to another location-based device (e.g., via sub-GHz networking) and / or indirectly to any device within system 100 (e.g., via router 116). As shown, image capture device 104 has a field of view (FOV) that originates proximate the front door of location 102A, and can acquire images of the walkway, the road, and the space between location 102A and the road. Image capture device 110 has a FOV that originates proximate the bathroom of location 102A, and can acquire images of the living room and dining area of location 102A. Image capture device 110 can further acquire images of the outdoor area beyond location 102A through windows 117A and 117B on the right side of location 102A. Figure 1

[0065] Further, as shown in FIG. 1, in some examples, image capture device 110 is configured to communicate with monitoring service 128, monitor interface 130, and customer interface 132 separately from monitoring client 136 via execution of camera agent 138. These communications can include sensor data generated by image capture device 110 and / or commands to be executed by image capture device 110 sent by monitoring service 128, monitor interface 130, and / or customer interface 132. The commands can include, for example, a request for an interactive communication session in which a monitoring personnel and / or customer interacts with image capture device 110 via monitor interface 130 and customer interface 132. These interactions can include a request for image capture device 110 to transmit additional sensor data and / or a request for image capture device 110 to present output via a user interface (e.g., user interface 412 of Figure 1 Figure 4B and Figure 4C ​​​

[0066] Continuing Figure 1 In the example of contact sensor assembly 106, the sensor can detect the presence or absence of a magnetic field generated by the magnet when the magnet is proximate to the sensor. When the magnetic field is present, contact sensor assembly 106 generates Boolean sensor data specifying a closed state. When the magnetic field is not present, contact sensor assembly 106 generates Boolean sensor data specifying an open state. In either case, contact sensor assembly 106 can transmit sensor data to base station 114 indicating whether the front door of location 102A is open or closed. Motion sensor assembly 112 can include an audio emitter that can radiate sound waves (e.g., ultrasonic sound waves) and an audio sensor that can acquire reflections of the waves. When the audio sensor detects a reflection, motion sensor assembly 112 generates Boolean sensor data specifying a still state because there is no object in motion within the space monitored by the audio sensor. When the audio sensor does not detect a reflection, motion sensor assembly 112 generates Boolean sensor data specifying an alarm state because there is an object in motion within the monitored space. In either case, motion sensor assembly 112 can transmit sensor data to base station 114. It should be noted that the particular sensing modes described above are not limiting of the present disclosure. For example, as one of many potential examples, motion sensor assembly 112 can base its operation on acquisition of changes in temperature rather than changes in reflected sound waves.

[0067] Continuing Figure 1 In the example of keyboard 108, keyboard 108 is configured to interact with a user and interoperate with other location-based devices in response to the interaction with the user. For example, in some examples, keyboard 108 is configured to receive input from a user specifying one or more commands and transmit the commands to one or more addressing processes. These addressing processes can include processes implemented by one or more of the location-based devices and / or one or more of monitor interface 130 or monitoring service 128. The commands can include, for example, a code authenticating the user as a resident of location 102A and / or a code requesting activation or deactivation of one or more of the location-based devices. Alternatively or additionally, in some examples, keyboard 108 includes a user interface (e.g., a tactile interface such as a set of physical buttons or a set of virtual buttons on a touch screen) configured to interact with a user (e.g., receive input from the user and / or present output to the user). Still further, in some examples, keyboard 108 can receive and respond to transmitted commands and present the response as visual or audio output via the user interface.

[0068] Continuing Figure 1In the example of FIG. 1, the base station 114 is configured to interoperate with other location-based devices to provide local command and control functionality and store-and-forward functionality via monitoring of the execution of the client 136. In some examples, to implement the store-and-forward functionality, the base station 114 receives sensor data by monitoring the execution of the client 136, packages the data for transmission, and stores the packaged sensor data in local memory for subsequent communication. Such communication of the packaged sensor data can include, for example, transmitting the packaged sensor data as a payload of a message to one or more of the transport services 126 when a communication link to the transport services 126 via the network 118 is operable. In some examples, packaging the sensor data can include filtering the sensor data and / or generating one or more summaries of a plurality of sensor readings (a maximum value, a minimum value, an average value, a change in value since a last communication, etc.). To implement the local command and control functionality, the base station 114 performs a variety of programmed operations in response to various events under the control of the client 136. Examples of these events can include receiving a command from the keypad 108, receiving a command from one of the watcher interface 130 or the client interface application 132 via the network 118, or detecting the occurrence of a scheduled event. The programmed operations performed by the base station 114 under the control of the client 136 can include activation or deactivation of one or more of the devices 104, 106, 108, 110, and 112, sounding of an alarm, reporting of an event to the monitoring service 128, and transmitting location data to one or more of the transport services 126, to name a few operations. The location data can include data specifying sensor readings (sensor data), configuration data for any of the location-based devices, user input and commands received from a user (e.g., via the keypad 108 or the client interface 132), or data derived from one or more of these data types (e.g., filtered sensor data, summaries of sensor data, event data specifying events detected at the location via sensor data, etc.).

[0069] Continuing Figure 1In the example of FIG. 1, the transmission service 126 is configured to securely, reliably, and efficiently exchange messages between processes implemented by the location-based devices and processes implemented by other devices in the system 100. These other devices can include the customer devices 122, devices disposed in the data center environment 124, and / or devices disposed in the monitoring center environment 120. In some examples, the transmission service 126 is also configured to parse messages from the location-based devices to extract payloads included therein, and store the payloads and / or data derived from the payloads within one or more data stores hosted in the data center environment 124. The data housed in these data stores can then be accessed by, for example, the monitoring service 128, the monitor interface 130, and the customer interface 132.

[0070] In certain examples, the transmission service 126 exposes and implements one or more application programming interfaces (APIs) configured to receive, process, and respond to invocations from processes implemented by base stations (e.g., the base station 114) and / or processes implemented by other devices (e.g., the image capture device 110) (e.g., the monitoring client 136 and / or the camera agent 138). Individual instances of the transmission service within the transmission service 126 can be associated with and specific to certain make and model of location-based monitoring equipment (e.g., SIMPLISAFE equipment, RING equipment, etc.). The APIs can be implemented using a variety of architectural styles and interoperability standards. For example, in one example, the APIs are web service interfaces implemented using a representational state transfer (REST) architectural style. In this example, the API invocations are encoded in hypertext transfer protocol (HTTP) along with JavaScript object notation (JSON) and / or extensible markup language (XML). These API invocations are addressed to one or more uniform resource locators (URLs) that are API endpoints monitored by the transmission service 126. In some examples, portions of the HTTP communications are encrypted to increase security. Additionally or alternatively, in some examples, the APIs are implemented as MQTT brokers that receive messages and transmit response messages to MQTT clients hosted by the base stations and / or other devices. Alternatively or additionally, in some examples, the APIs are implemented using simple file transfer protocol commands. Thus, the transmission service 126 is not limited to a particular protocol or architectural style. It should be noted that, in at least some examples, the transmission service 126 can transmit one or more API invocations to a location-based device to request data from the location-based device or an interactive communication session with the location-based device.

[0071] Continuing Figure 1of the system 100. Thus, the monitoring service 128 can interoperate with the transport service 126, the monitor interfaces 130, the customer interface 132, and any of the location-based devices. In some examples, the monitoring service 128 is configured to monitor data from a variety of sources for reportable events (e.g., a break-in event), and to notify one or more of the monitor interfaces 130 and / or the customer interface 132 when a reportable event is detected. In some examples, the monitoring service 128 is also configured to maintain status information regarding the location 102A. This status information can indicate, for example, whether the location 102A is secure or threatened. In certain examples, the monitoring service 128 is configured to change the status information to indicate that the location 102A is secure only upon receiving a communication indicating an event that is not a problem (e.g., rather than making such a change in response to a non-consecutive reception of a break-in event). This feature can prevent a "ram and smash" robbery from being successfully executed. Additional example processes that the monitoring service 128 is configured to perform are described below with reference to Figure 5 and Figure 6 are described below.

[0072] Continuing Figure 1 In examples, each monitor interface 130 is configured to control interaction with a computing device of a monitoring personnel, and to perform a variety of programmed operations in response to that interaction. For example, in some examples, the monitor interface 130 controls its host device to provide information to the monitoring personnel regarding reportable events detected at a monitored location, such as the location 102A. Such events can include, for example, movement or alarm conditions generated by one or more of the location-based devices. Alternatively or additionally, in some examples, the monitor interface 130 controls its host device to interact with a user to configure features of the system 100. Additional example processes that the monitor interface 130 is configured to perform are described below with reference to Figure 6 It should be noted that, in at least some examples, the monitor interface 130 is a browser-based application that is served to the monitoring center environment 120 through web servers included within the data center environment 124. In certain examples, these web servers can be part of the monitoring service 128.

[0073] Continuing Figure 1For example, each client interface 132 is configured to control interaction with a client's computing device and to perform various programmed operations in response to that interaction. For instance, in some examples, client interface 132 controls its host device to provide the client with information about reportable events detected at a monitored location (such as location 102A). Such events may include, for example, alarm conditions generated by one or more location-based devices. Alternatively or additionally, in some examples, client interface 132 is configured to process input received from the client to activate or deactivate one or more location-based devices. Furthermore, in some examples, client interface 132 configures features of system 100 in response to input from a user. Further example procedures that client interface 132 is configured to perform are referenced below. Figure 6 It has been described.

[0074] Now go to Figure 2 The example base station 114 is illustrated schematically. Figure 2 As shown, base station 114 includes at least one processor 200, volatile memory 202, non-volatile memory 206, at least one network interface 204, user interface 212, battery assembly 214, and interconnection mechanism 216. The non-volatile memory 206 stores executable code 208 and includes data storage 210. Figure 2 In some of the examples shown, the features of base station 114 listed above are incorporated into or are part of housing 218.

[0075] In some examples, the non-volatile (non-transitory) memory 206 includes: one or more read-only memory (ROM) chips; one or more hard disk drives or other magnetic or optical storage media; one or more solid-state drives (SSDs), such as flash drives or other solid-state storage media; and / or one or more hybrid magnetic and SSDs. In some examples, the code 208 stored in the non-volatile memory may include an operating system and one or more applications or programs configured to execute under the operating system. Alternatively or additionally, the code 208 may include specialized firmware and embedded software that are executable without relying on a commercially available operating system. In any case, the execution of the code 208 can achieve Figure 1 The monitoring client 136 can generate manipulation data, which is part of the data storage 210.

[0076] continue Figure 2In examples of the base station 114, the processor 200 can include one or more programmable processors to execute one or more executable instructions, such as a computer program specified by the code 208, to control operation of the base station 114. As used herein, the term "processor" describes circuitry that performs a function, an operation, or a sequence of operations. The function, operation, or sequence of operations can be hard coded into the circuitry or soft coded by way of instructions held as a software program in a memory device, such as the volatile memory 202, and executed by the circuitry. In some examples, the processor 200 is a digital processor, but the processor 200 can be analog, digital, or mixed-signal. As such, the processor 200 can perform a function, operation, or sequence of operations using digital values and / or using analog signals. In some examples, the processor 200 can be embodied in one or more application specific integrated circuits (ASICs), microprocessors, digital signal processors (DSPs), graphics processing units (GPUs), neural processing units (NPUs), microcontrollers, field programmable gate arrays (FPGAs), programmable logic arrays (PLAs), or multi-core processors. Examples of multi-core processors 200 can provide functionality for parallel, simultaneous execution of instructions, or for parallel, simultaneous execution of one instruction over more than one data.

[0077] Continuing Figure 2 In examples of the base station 114, the processor 200 can include one or more programmable processors to execute one or more executable instructions, such as a computer program specified by the code 208, to control operation of the base station 114. As used herein, the term "processor" describes circuitry that performs a function, an operation, or a sequence of operations. The function, operation, or sequence of operations can be hard coded into the circuitry or soft coded by way of instructions held as a software program in a memory device, such as the volatile memory 202, and executed by the circuitry. In some examples, the processor 200 is a digital processor, but the processor 200 can be analog, digital, or mixed-signal. As such, the processor 200 can perform a function, operation, or sequence of operations using digital values and / or using analog signals. In some examples, the processor 200 can be embodied in one or more application specific integrated circuits (ASICs), microprocessors, digital signal processors (DSPs), graphics processing units (GPUs), neural processing units (NPUs), microcontrollers, field programmable gate arrays (FPGAs), programmable logic arrays (PLAs), or multi-core processors. Examples of multi-core processors 200 can provide functionality for parallel, simultaneous execution of instructions, or for parallel, simultaneous execution of one instruction over more than one data.

[0078] Through execution of the code 208, the processor 200 can control operation of the network interface 204. For example, in some examples, the network interface 204 includes one or more physical interfaces (e.g., radios, Ethernet ports, universal serial bus (USB) ports, etc.) as well as a software stack including drivers and / or other code 208 configured to communicate with the one or more physical interfaces to support one or more LAN, PAN, and / or WAN standard communication protocols. The communication protocols can include, for example, transmission control protocol (TCP), user datagram protocol (UDP), HTTP, and MQTT, among others. Thus, the network interface 204 enables the base station 114 to communicate over a computer network, such as a LAN, a PAN, and / or a WAN established by the router 116. Figure 1 Figure 1 ​The network interface 204 can be configured to access other computing devices (e.g., location-based devices) and communicate with the other devices (e.g., via the network 118 and / or a point-to-point connection). For example, in at least one example, the network interface 204 utilizes sub-GHz wireless networking to transmit messages to other location-based devices. These messages can include wake-up messages to other computing devices requesting a stream of sensor data, alarm messages to trigger an alarm response, or other messages to initiate other operations. The frequency bands in which the network interface 204 can be used for sub-GHz wireless networking include, for example, the 868 MHz frequency band and / or the 915 MHz frequency band. Using sub-GHz wireless networking can improve the operable communication distance and / or reduce the power consumed to communicate.

[0079] Through execution of the code 208, the processor 200 can control operation of the user interface 212. For example, in some examples, the user interface 212 includes user input and / or output devices (e.g., a keyboard, a mouse, a touchscreen, a display, a speaker, a camera, an accelerometer, a biometric scanner, an environmental sensor, etc.) and a software stack including drivers and / or other code 208 configured to communicate with the user input and / or output devices. For example, the user interface 212 can be implemented by the customer device 122 hosting the mobile application (e.g., the customer interface 132). The user interface 212 enables the base station 114 to interact with a user to receive input and / or present output. The presented output can include, for example, one or more graphical user interfaces (GUIs) including one or more controls configured to display output and / or receive input. The input can specify values to be stored in the data store 210. The output can indicate values stored in the data store 210. It should be noted that, in some examples, portions of the user interface 212 are accessible and / or visible as part of and / or through the housing 218. These portions of the user interface 212 can include, for example, one or more light-emitting diodes (LEDs). Alternatively or additionally, in some examples, the user interface 212 includes a 95 db siren that the processor 200 sounds to indicate that a break-in event has been detected.

[0080] Continuing Figure 2In some examples, the interconnection mechanism 216 includes a communication bus. Additionally, in some examples, the battery assembly 214 is configured to supply operating power to the various features of the base station 114 described above. In some examples, the battery assembly 214 includes at least one rechargeable battery (e.g., one or more NiMH or lithium batteries). In some examples, the rechargeable battery has a runtime capacity sufficient to operate the base station 114 for 24 hours or more when the base station 114 is disconnected from or otherwise does not receive line power. Alternatively or additionally, in some examples, the battery assembly 214 includes power supply circuitry to receive, condition, and distribute line power to both operate the base station 114 and recharge the rechargeable battery. The power supply circuitry can include, for example, transformers and rectifiers to convert AC line power to DC device and recharging power, among other circuitry.

[0081] Turning now to Figure 3 , an example keyboard 108 is schematically illustrated. As Figure 3 shown, the keyboard 108 includes at least one processor 300, volatile memory 302, non-volatile memory 306, at least one network interface 304, a user interface 312, a battery assembly 314, and an interconnection mechanism 316. The non-volatile memory 306 stores executable code 308 and data storage 310. In some examples, illustrated by Figure 3 the above-listed features of the keyboard 108 are incorporated within or are part of a housing 318.

[0082] In some examples, the respective descriptions of the processor 200, volatile memory 202, non-volatile memory 206, interconnection mechanism 216, and battery assembly 214 with reference to the base station 114 can apply with reference to the processor 300, volatile memory 302, non-volatile memory 306, interconnection mechanism 316, and battery assembly 314 with reference to the keyboard 108. Accordingly, these descriptions will not be repeated.

[0083] Continuing Figure 3In examples, processor 300 can control operation of network interface 304 via execution of code 308. In some examples, network interface 304 includes one or more physical interfaces (e.g., radios, Ethernet ports, USB ports, etc.) and a software stack including drivers and / or other code 308 configured to communicate with the one or more physical interfaces to support one or more LAN, PAN, and / or WAN standard communication protocols. These communication protocols can include, for example, TCP, UDP, HTTP, and MQTT, among others. Thus, network interface 304 enables keyboard 108 to access and communicate with other computing devices (e.g., location-based devices) via a computer network (e.g., a LAN and / or point-to-point connection established by router 116).

[0084] Continuing Figure 3 In examples, processor 300 can control operation of user interface 312 via execution of code 308. In some examples, user interface 312 includes user input and / or output devices (e.g., physical keys arranged as a keyboard, a touchscreen, a display, a speaker, a camera, a biometric scanner, an environmental sensor, etc.) and a software stack including drivers and / or other code 308 configured to communicate with the user input and / or output devices. Thus, user interface 312 enables keyboard 108 to interact with a user to receive input and / or present output. This presented output can include, for example, one or more GUIs including one or more controls configured to display output and / or receive input. This input can specify values to be stored in data store 310. This output can indicate values stored in data store 310. It should be noted that, in some examples, portions of user interface 312 (e.g., one or more LEDs) are accessible and / or visible as part of or through enclosure 318.

[0085] In some examples, devices like keyboard 108 that rely on user input to trigger an alarm condition can be included within a security system, such as security system 100 of Figure 1 Examples of such devices include dedicated key fobs and panic buttons. These dedicated security devices provide a user with a simple, direct way to trigger an alarm condition, which can be particularly useful in times of duress.

[0086] Turning now to Figure 4A FIG. 4, an example security sensor 422 is schematically illustrated. Figure 4Aparticular configuration of the safety sensor 422 (e.g., the image capture devices 104 and 110, the motion sensor assembly 112, and the contact sensor assembly 106) is shown and described above. Other examples of safety sensors 422 include a glass break sensor, a carbon monoxide sensor, a smoke detector, a water sensor, a temperature sensor, and a door lock sensor, to name a few. As Figure 4A As shown, the safety sensor 422 includes at least one processor 400, volatile memory 402, non-volatile memory 406, at least one network interface 404, a battery assembly 414, an interconnect mechanism 416, and at least one sensor assembly 420. The non-volatile memory 406 stores executable code 408 and data storage 410. Some examples include a user interface 412. In the description of the processor 200, the volatile memory 202, the non-volatile memory 206, the interconnect mechanism 216, and the battery assembly 214 by the reference base station 114, Figure 4A In certain examples shown, the features of the safety sensor 422 listed above are incorporated within or are part of the housing 418.

[0087] In some examples, the respective descriptions of the processor 200, the volatile memory 202, the non-volatile memory 206, the interconnect mechanism 216, and the battery assembly 214 by the reference base station 114 can apply to the processor 400, the volatile memory 402, the non-volatile memory 406, the interconnect mechanism 416, and the battery assembly 414 by the reference safety sensor 422. Accordingly, these descriptions will not be repeated.

[0088] Continuing Figure 4AIn the example of the secure sensor 422, the processor 400 can control the operation of the network interface 404 via execution of the code 408. In some examples, the network interface 404 includes one or more physical interfaces (e.g., radios (including antennas), Ethernet ports, USB ports, etc.) and a software stack including drivers and / or other code 408 configured to communicate with the one or more physical interfaces to support one or more LAN, PAN, and / or WAN standard communication protocols. The communication protocols can include, for example, TCP, UDP, HTTP, and MQTT, among others. Thus, the network interface 404 enables the secure sensor 422 to access and communicate with other computing devices (e.g., location-based devices) via a computer network (e.g., a LAN and / or point-to-point connection established by the router 116). For example, in at least one example, the processor 400 controls the network interface to stream sensor data acquired from the sensor assembly 420 (e.g., via UDP) to the base station 114 when executing the code 408. Alternatively or additionally, in at least one example, the processor 400 controls the network interface 404 to enter a power saving mode by turning off the 2.4 GHz radio and turning on the sub-GHz radio (both of which are included in the network interface 404) via execution of the code 408. In this example, the processor 400 controls the network interface 404 to enter a streaming or interactive mode by turning on the 2.4 GHz radio and turning off the sub-GHz radio, for example, in response to receiving a wake-up signal from the base station via the sub-GHz radio, via execution of the code 408.

[0089] Continuing Figure 4A In the example of the secure sensor 422, the processor 400 can control the operation of the user interface 412 via execution of the code 408. In some examples, the user interface 412 includes user input and / or output devices (e.g., physical buttons, touchscreens, displays, speakers, cameras, accelerometers, biometric scanners, environmental sensors, one or more LEDs, etc.) and a software stack including drivers and / or other code 408 configured to communicate with the user input and / or output devices. Thus, the user interface 412 enables the secure sensor 422 to interact with a user to receive input and / or present output. The presented output can include, for example, one or more GUIs including one or more controls configured to display output and / or receive input. The input can specify values to be stored in the data store 410. The output can indicate values stored in the data store 410. It should be noted that, in some examples, portions of the user interface 412 are accessible and / or visible as part of and / or through the housing 418.

[0090] Continuing Figure 4AFor example, sensor component 420 may include one or more types of sensors (such as those mentioned above). Figure 1 The sensor assembly 420 may include the image capture devices 104 and 110, the motion sensor assembly 112, and the contact sensor assembly 106 (as described in the original text), or other types of sensors. For example, in at least one example, sensor assembly 420 includes an image sensor (e.g., a charge-coupled device or an active pixel sensor) and a temperature or thermal imaging sensor (e.g., an active and / or passive infrared (PIR) sensor). Regardless of the type of one or more sensors included, processor 400 may (e.g., via execution of code 408) acquire sensor data from the included sensors and stream the acquired sensor data to processor 400 for communication to a base station.

[0091] It should be noted that in some examples of devices 108 and 422, the operations performed by processors 300 and 400 under the corresponding control of codes 308 and 408 can be hard-coded and / or implemented in hardware, rather than as a combination of hardware and software. Furthermore, the execution of code 408 can achieve... Figure 1 The camera agent 138 can generate manipulation data, which is part of the data storage 410.

[0092] Now go to Figure 4B The example image capture device 500 is shown schematically. Figure 1 The image capture device 500 is shown and described above, with specific configurations (e.g., image capture devices 104 and 110) also illustrated. Figure 4B As shown, the image capture device 500 includes at least one processor 400, volatile memory 402, non-volatile memory 406, at least one network interface 404, a battery assembly 414, and an interconnect mechanism 416. These features of the image capture device 500 are shown in dashed lines to indicate that they reside within a housing 418. The non-volatile memory 406 stores executable code 408 and data storage 410.

[0093] Some examples further include an image sensor assembly 450, a light 452, a speaker 454, a microphone 456, a wall mount 458, and a magnet 460. The image sensor assembly 450 can include a lens and an image sensor (e.g., a charge-coupled device or an active pixel sensor) and / or a temperature or thermal image sensor (e.g., an active and / or passive infrared (PIR) sensor). The light 452 can include a light-emitting diode (LED), such as a red-green-blue light-emitting LED. In some examples, the light 452 can further include an infrared light-emitting diode. The speaker 454 can include a transducer configured to emit sound in a range of 60 dB to 80 dB or greater. Further, in some examples, the speaker 454 can include a siren configured to emit sound in a range of 70 dB to 90 dB or greater. The microphone 456 can include a microelectromechanical system (MEMS) microphone. The wall mount 458 can include a mounting bracket configured to accept a screw or other fastener that adheres the bracket to a wall and a cover configured to mechanically couple to the mounting bracket. In some examples, the cover is composed of a magnetic material, such as aluminum or stainless steel, to enable the magnet 460 to magnetically couple to the wall mount 458, thereby holding the image capture device 500 in place.

[0094] In some examples, the respective descriptions of the processor 400, the volatile memory 402, the network interface 404, the interconnected mechanism 416, and the battery assembly 414 with respect to the network interface 404, the interconnected mechanism 416, and the battery assembly 414 can apply to these same features with respect to the image capture device 500. Accordingly, these descriptions will not be repeated here.

[0095] Continuing Figure 4B In examples, the processor 400, via execution of the code 408, can control operation of the image sensor assembly 450, the light 452, the speaker 454, and the microphone 456. For example, in at least one example, when executing the code 408, the processor 400 controls the image sensor assembly 450 to acquire sensor data in the form of image data to stream to the base station 114 (or Figure 1 Alternatively or additionally, in at least one example, the processor 400, via execution of the code 408, controls the light 452 to emit light such that the image sensor assembly 450 collects sufficient reflected light to constitute image data. Further, in some examples, the processor 400, via execution of the code 408, controls the speaker 454 to emit sound. The sound can be generated locally (e.g., via a siren’s audible alert) or from the base station 114 (or Figure 1streaming (e.g., utterances from a user or a monitoring person) to the base station 114 (or Figure 1 one of the processes 130, 128, or 132).

[0096] It should be appreciated that in Figure 4B examples, the light 452, the speaker 454, and the microphone 456 implement Figure 4A instances of the user interface 412. It should also be appreciated that the image sensor assembly 450 and the light 452 implement Figure 4A instances of the sensor assembly 420. Thus, Figure 4B the image capture device 500 illustrated in Figure 4A is at least one example of the security sensor 422 illustrated in The image capture device 500 can be a battery-powered outdoor sensor configured to be installed and operated in an outdoor environment, e.g., such as outside a home, office, store, or other commercial or residential building.

[0097] Figure 4C Turning now to Figure 1 , another example image capture device 520 is schematically illustrated. Figure 4C A particular configuration of the image capture device 520 (e.g., the image capture devices 104 and 110) is illustrated in Figure 4B and described above. As shown, the image capture device 520 includes at least one processor 400, volatile memory 402, non-volatile memory 406, at least one network interface 404, a battery assembly 414, and an interconnection mechanism 416. These features of the image capture device 520 are illustrated in dashed lines to indicate that they reside within a housing 418. The non-volatile memory 406 stores executable code 408 and data storage 410. The image capture device 520 further includes an image sensor assembly 450, a speaker 454, and a microphone 456 as described above with reference to the image capture device 500.

[0098] In some examples, the image capture device 520 further includes lights 452A and 452B. The light 452A can include a light-emitting diode (LED), such as a red-green-blue light-emitting LED. The light 452B can also include an infrared light-emitting diode to enable night vision in some examples.

[0099] It should be appreciated that in Figure 4C examples, the lights 452A and 452B, the speaker 454, and the microphone 456 implement Figure 4AAn instance of the user interface 412. It should also be recognized that the image sensor assembly 450 and the lamp 452 implement... Figure 4A An example of sensor assembly 420. Therefore, Figure 4C The image capture device 520 shown is Figure 4A At least one example of the security sensor 422 shown in the image. The image capture device 520 can be a battery-powered indoor sensor configured to be installed and operated in an indoor environment, such as in a home, office, shop or other commercial or residential building.

[0100] Now go to Figure 5 It schematically demonstrates Figure 1 Data center environment 124 Figure 1 The monitoring center environment 120 Figure 1 One of the customer devices in customer device 122 Figure 1 Network 118 and Figure 1 Various aspects of the multiple monitored locations 102A to 102N (collectively referred to as location 102). For example... Figure 5 As shown, data center environment 124 hosts monitoring services 128 and transmission services 126 (collectively referred to as transmission services 126A to 126D). Monitoring service 128 includes location data storage 502, sensor data storage 504, artificial intelligence (AI) service 508, event listening service 510, and identity provider 512. Monitoring center environment 120 includes computing devices 518A to 518M (collectively referred to as computing devices 518) that host monitor interfaces 130A to 130M. Each location 102A to 102N includes base stations (e.g., hosting monitoring clients 136A to 136N (collectively referred to as monitoring clients 136)) that host monitoring clients 136A to 136N. Figure 1 The base station 114 (not shown) and the image capture device (e.g., the managed software camera agent 138A to 138N (collectively referred to as camera agent 138) are used for image capture. Figure 1 Image capturing device 110 (not shown).

[0101] like Figure 5As shown, the transport service 126 is configured to handle incoming messages 516B from the client interface 132A, the watch client 136, the camera agent 138, and / or the watcher interface 130. The transport service 126 is also configured to handle outgoing messages 516A addressed to the client interface 132A, the watch client 136, the camera agent 138, and the watcher interface 130. The location data store 502 is configured to store location data associated with an identifier of a client whose location is being monitored within a plurality of records. For example, the location data can be stored in a record having an identifier of the client and / or an identifier of a location to associate the location data with the client and the location. The sensor data store 504 is configured to store sensor data (e.g., one or more frames of image data) within a plurality of records that is separate from other location data but associated with an identifier of a location and a timestamp at which the sensor data was acquired. In some examples, the sensor data store 504 is optional and can be used, for example, where the sensor data housed therein has specialized storage or processing requirements.

[0102] Continuing Figure 5 In the example, the AI service 508 is configured to process sensor data (e.g., images and / or sequences of images) to identify movements, faces, and other features within the sensor data. The event listener service 510 is configured to scan location data transmitted via incoming messages 516B for event data and, where event data is identified, execute one or more event handlers to process the event data. In some examples, the event handlers can include an event reporter configured to identify reportable events and transmit a message specifying the reportable event to one or more recipient processes (e.g., the client interface 132 and / or the watcher interface 130). In some examples, the event listener service 510 can interoperate with the AI service 508 to identify events from sensor data. The identity provider 512 is configured to receive authentication requests from the watch client 136 or the camera agent 138 including security credentials via the transport service 126. When the identity provider 512 can authenticate the security credentials in the request (e.g., via a verification function, cross-reference lookup, or some other authentication process), the identity provider 512 can transmit a security token in response to the request. The watch client 136 or the camera agent 138 can receive, store, and include the security token in subsequent incoming messages 516B so that the transport service 126A can securely handle (e.g., unpack / parse) data packets included in the incoming messages 516B to extract location data before passing the location data to the watch service 128.

[0103] Continuing Figure 5of the example, the transmission service 126 is configured to receive the incoming message 516B; verify the authenticity of the message 516B; parse the message 516B; and extract location data encoded therein before passing the location data to the monitoring service 128 for processing. The location data can include any of the location data described above with reference to Figure 1 The various transmission services 126 can be configured to process incoming messages 516B generated by location-based monitoring devices of particular manufacturers and / or models. The monitoring client 136 and camera agent 138 are configured to generate and transmit, via the network 118, an incoming message 516B to the monitoring service 128, the incoming message including a data packet of location data based on sensor information received at the location 102.

[0104] Continuing Figure 5 of the example, the computing device 518 is configured to host the monitor interface 130. In some examples, the various monitor interfaces 130A-130M are configured to present a GUI including one or more image frames and / or other sensor data. In certain examples, the client device 122 is configured to host the client interface 132. In some examples, the client interface 132 is configured to present a GUI including one or more image frames and / or other sensor data. Other features of the monitor interface 130 and the client interface 132 are described further below with reference to Figure 6 .

[0105] Turning now to Figure 6 , the monitoring process 600 is illustrated as a sequence diagram. In some examples, the process 600 can be performed by a security system (e.g., the security system 100 of Figure 1 More specifically, in some examples, at least a portion of the process 600 is performed by a location-based device under control of device control system (DCS) code (e.g., the code 308 or 408) implemented by at least one processor (e.g., any of the processors 300 or 400 of Figures 3-4C The DCS code can include, for example, a camera agent (e.g., the camera agent 138 of Figure 1 At least a portion of the process 600 is performed by a base station (e.g., the base station 114 of Figure 1 under control of a monitoring client (e.g., the monitoring client 136 of Figure 1 At least a portion of the process 600 is performed by a monitoring center environment (e.g., the monitoring center environment 120 of Figure 1 under control of a monitor interface (e.g., the monitor interface 130 of Figure 1 At least a portion of the process 600 is performed by a data center environment (e.g., the data center environment 124 of Figure 1 under control of a monitoring service (e.g., the monitoring service 128 of Figure 1Under the control of the monitoring service 128) or the transmission service (e.g., Figure 1 The process 600 is executed under the control of the transmission service 126. At least a portion of the process 600 is controlled by the client device (e.g., Figure 1 The client device 122) in the client interface (e.g., Figure 1 Executed under the control of the client interface 132).

[0106] like Figure 6 As shown, process 600 begins with monitoring client 136 exchanging one or more authentication requests and responses 604 with transport service 126 to communicate with identity provider (e.g., Figure 5 The identity provider 512 performs authentication. More specifically, in some examples, the monitoring client 136 transmits an authentication request to the transport service 126 via one or more API calls to the transport service 126. In these examples, the transport service 126 parses the authentication request to extract security credentials from it and passes the security credentials to the identity provider for authentication. In some examples, if the identity provider authenticates the security credentials, the identity provider generates a security token and transmits the security token to the transport service 126. The transport service 126 then receives the security token and transmits it as a payload within the authentication response to the authentication request. In these examples, if the identity provider cannot authenticate the security credentials, the transport service 126 generates an error code and transmits the error code as a payload within the authentication response to the authentication request. Upon receiving the authentication response, the monitoring client 136 parses the authentication response to extract the payload. If the payload includes an error code, the monitoring client 136 may retry authentication and / or its user interface with its host device (e.g., ...). Figure 2 The monitoring client 136 interoperates with the user interface 212 of base station 114 to present an output indicating authentication failure. If the payload includes a security token, the monitoring client 136 stores the security token for subsequent use in communications via location data from incoming messages. It should be noted that the security token may have a limited lifetime (e.g., 1 hour, 1 day, 1 week, 1 month, etc.), after which the monitoring client 136 may need to re-authenticate with the transport service 126.

[0107] Continuing process 600, one or more DCS 602s hosted by one or more location-based devices acquire (at operation 606) a description of the location (e.g., Figure 1 Sensor data at location 102A. The acquired sensor data can be of any type, as referenced above. Figures 1-4Cdiscussed. In some examples, one or more of the DCSs 602 continuously acquire sensor data. In some examples, one or more of the DCSs 602 acquire sensor data in response to an event, such as expiration of a local timer (a push event) or receipt of an acquisition poll signal transmitted by the monitoring client 136 (a poll event). In certain examples, one or more of the DCSs 602 stream sensor data to the monitoring client 136, with minimal processing beyond acquisition and digitization. In these examples, the sensor data can constitute a sequence of vectors, with individual vector members comprising a sensor reading and a timestamp. Alternatively or additionally, in some examples, one or more of the DCSs 602 perform additional processing of the sensor data, such as generation of one or more summaries of multiple sensor readings. Still further, in some examples, one or more of the DCSs 602 perform complex processing of the sensor data. For example, if a security sensor comprises an image capture device, the security sensor can perform image processing routines, such as edge detection, motion detection, facial recognition, threat assessment, and reportable event generation.

[0108] Continuing with the process 600, the DCSs 602 transmit sensor data 608 to the monitoring client 136. As with sensor data acquisition, the DCSs 602 can transmit sensor data 608 continuously or in response to an event, such as a push event (originating from the DCSs 602) or a poll event (originating from the monitoring client 136).

[0109] Continuing process 600, monitoring client 136 monitors 610 the location by processing the received sensor data 608. For example, in some examples, monitoring client 136 executes one or more image processing routines. These image processing routines can include any of the image processing routines described above with reference to operation 606. By distributing at least some of the image processing routines between DCS 602 and monitoring client 136, some examples reduce the power consumed by the battery-powered device by offloading processing to the line-powered device. Further, in some examples, monitoring client 136 can execute an ensemble threat detection process that utilizes sensor data 608 from multiple different DCSs 602 as input. For example, in at least one example, monitoring client 136 will attempt to corroborate an open state received from a contact sensor, where motion and facial recognition processing of images of the scene include a window to which the contact sensor is affixed. If two or more of the three processes indicate the presence of an intruder, the threat score increases, and or a break-in event is declared, locally logged, and communicated. Other processing that monitoring client 136 can perform includes outputting local alerts (e.g., in response to detection of particular events and / or satisfaction of other criteria) and detecting maintenance conditions for the location-based device, such as the need to change or recharge a low battery and / or replace / maintain the device hosting DCS 602. Any of the processes described above within operation 610 can result in the creation of location data specifying the outcome of the process.

[0110] Continuing process 600, monitoring client 136 transmits location data 614 to monitoring service 128 via one or more incoming messages 612 to transmission service 126. As with the communication of sensor data 608, monitoring client 136 can transmit location data 614 continuously or in response to an event, such as a push event (originating from monitoring client 136) or a polling event (originating from monitoring service 128).

[0111] Continuing the process 600, the monitoring service 128 processes 616 the received location data. For example, in some examples, the monitoring service 128 executes one or more routines described above with reference to operations 606 and / or 610. Additionally or alternatively, in some examples, the monitoring service 128 uses historical information associated with the location identified in the location data and / or other locations geographically proximate to that location (e.g., within the same ZIP code) to calculate a threat score or refine an existing threat score. For example, in some examples, if multiple break-ins have been recorded for that location and / or other locations within the same ZIP code within a configurable time span including the current time, the monitoring service 128 can increase the threat score calculated by the DCS 602 and / or the monitoring client 136. In some examples, the monitoring service 128 determines whether the location data 614 includes any reportable events by applying a set of rules and criteria to the location data 614, and if so, transmits an event report 618A and / or 618B to the monitor interface 130 and / or the client interface 132. The reportable event can be a certain type of event (e.g., a break-in) or a certain type of event that satisfies additional criteria (e.g., movement within a particular ZIP code combined with a threat score that exceeds a threshold). The event report 618A and / or 618B can have a priority based on the same criteria used to determine whether the event reported therein is reportable, or can have a priority based on a different set of criteria or rules.

[0112] Continuing with process 600, monitor interface 130 interacts 620 with a monitoring person via, for example, one or more GUIs. These GUIs can provide detailed information and context about one or more events that are warranted for reporting to a user. In some examples, monitor interface 130 is configured to interact with the monitoring person to both receive input and present output about an alarm triggered at a monitored location, such as location 102A. For example, in some examples, monitor interface 130 is configured to notify the monitoring person of the occurrence of an alarm at a monitored location; present audiovisual data and other sensor data collected by a location-based device at the monitored location and stored in data stores 502 and / or 504; and establish a live connection with the location-based device. Further, in some examples, monitor interface 130 includes controls configured to receive input specifying actions taken by the monitoring person to resolve the alarm, such as interacting with actors including a customer, a customer contact, a dispatcher, and / or a first responder called to investigate the alarm. These actions can include, for example, calling or dialing the customer’s phone regarding the alarm; verifying the authenticity of the alarm; contacting a person at the location reporting the alarm; calling an appropriate public service answering point (PSAP) to request dispatch of an emergency responder, such as a police, fire, or emergency medical service; updating status information regarding such dispatch; updating status information for the alarm; and canceling the alarm and / or dispatched responders, to name a few actions. Some or all of these and other actions can be converted by monitor interface 130 into events that are communicated to monitoring service 128 via, for example, a monitoring API.

[0113] Continuing with process 600, customer interface 132 interacts 622 with at least one customer via, for example, one or more GUIs. These GUIs can provide detailed information and context about one or more reportable events.

[0114] It should be noted that the processing of sensor data and / or location data as described above with reference to operations 606, 610, and 616 can be performed by processors disposed within various parts of system 100. For example, in some examples, DCS 602 performs minimal processing of sensor data (e.g., only acquisition and streaming), and the remainder of the processing described above is performed by monitoring client 136 and / or monitoring service 128. This approach can help to lengthen battery runtime of location-based devices. In other examples, DCS 602 performs as much sensor data processing as possible, leaving monitoring client 136 and monitoring service 128 to perform only processes that require sensor data across location-based devices and / or locations. This approach can help to increase the scalability of system 100 with respect to adding new locations.

[0115] Turning now to Figure 7, which illustrates an example of a sensor 702 configured to implement various techniques disclosed herein. The sensor 702 can be associated with a security system installed at a monitored location, as discussed above. The sensor 702 includes a motion detector 704 and an image capture device (e.g., a camera) 706 electrically coupled to a controller 700. The controller can include or be implemented by one or more processors, such as the processor 400 discussed above, for example. The sensor 702 can further include any of the components and functionality of the security sensor 422 and / or the image capture device 500, as discussed above with reference to Figure 4A and Figure 4B Thus, it should be understood that the sensor 702 can include components not shown in Figure 7 .

[0116] In one example, the motion detector 704 is a passive infrared (PIR) motion detector, and the image capture device 706 is a digital camera. A PIR sensor is a motion sensor that detects changes in temperature over a predetermined field of view. The PIR sensor can be configured with a threshold such that any change greater than the threshold constitutes motion and causes the sensor to take some additional action, such as sounding an alarm or activating one or more other sensors, as discussed below. The image capture device 706 collects still image frames and / or video image frames that constitute a video feed / stream. The image capture device 706 can include the image sensor assembly 450 discussed above with reference to Figure 4B In one example, the controller 700 includes a neural processing unit (NPU) 708 that is used to efficiently run a neural network to conduct aspects of an adaptive motion detection process based on image frames captured by the image capture device 706, as discussed in more detail below. In an example, the sensor 702 is a battery-powered indoor sensor that is configured to be installed and operated in an indoor environment, such as within a home, office, store, or other commercial or residential building, for example. In other examples, the sensor 702 can be configured to be installed and operated in an outdoor environment.

[0117] In examples, the sensor 702 is capable of detecting and distinguishing between certain objects (such as people) in image frames captured by the image capture device 706, for example, and can be configured to trigger an object detection alert if an object of interest is identified. The sensor 702 can use any of a variety of techniques to locate and identify objects in image frames. For example, computer vision-based object detection can use specialized filters for locating different attributes or features within an image frame, and then combine the features to classify whether a particular object class is found. For example, an object detector can locate all human faces in a frame. In some examples, the NPU 708 can be configured to implement a machine learning-based approach used, where an algorithm or model is trained on a large number of images containing objects of interest to recognize similar objects in new or previously unseen images. Additionally, examples of the sensor 702 are configured to detect motion relative to an identified object. Motion detection is the process of detecting a change in the position of an object relative to its surroundings or a change in the surroundings relative to an object. As discussed in more detail below, image processing-based motion detection can be performed by computing pixel-to-pixel differences in intensity between successive frames to create a “difference image,” and then applying a constant threshold to the difference image. Any difference value greater than the threshold constitutes motion.

[0118] According to certain examples, the controller 700 and the motion detector 704 operate in a low-power state (operating mode) in which the image capture device 706 (and optional other components of the sensor 702) are deactivated until an event triggers the motion detector 704. In the low-power operating mode, the motion detector 704 remains active, but components that typically consume more power (e.g., such as the image capture device 706) are powered down. In the low-power operating mode, the controller 700 performs minimal processing sufficient to monitor for events that trigger the motion detector 704. When the motion detector 704 indicates motion and signals or notifies (e.g., sends a motion trigger report to the controller 700), the controller 700 is placed into a normal operating mode in which the image capture device 706 (and any other components of the sensor 702 that were powered down in the low-power state) are activated. Thus, the motion detector 704 acts as a mode “switch” that configures the sensor 702 to a “full-power” or normal operating mode only when necessary. In this way, power can be conserved by operating the sensor 702 in a low-power mode in which various components are powered down until a potential event of interest is detected. As discussed above, in certain examples, the motion detector 704 is a PIR sensor that detects motion based on detected changes in temperature across its field of view. Thus, in some examples, the motion sensor 704 can be tuned to detect humans and / or animals based on known temperature ranges associated with body temperatures of humans / animals.

[0119] Once active, the image capture device 706 captures one or more frames of image data. In some examples, the image capture device 706 passes frames of image data ("images" or "image frames") to the controller 700 for processing. In examples, the controller 700 applies a motion detection process to the captured image frames to detect moving objects, which can then be identified as objects of interest (e.g., people) whose detection can cause the sensor 702 to issue an alert, or benign objects that can be safely ignored.

[0120] As discussed above, when the image capture device 706 is activated, it can make a series of automatic exposure adjustments to adapt to current lighting conditions in order to be able to capture well-exposed images (e.g., images with balanced brightness, etc., and not overexposed or underexposed). These exposure adjustments can cause large changes in image brightness or intensity of light at pixels in the image (referred to as pixel intensity) between successive frames of image data captured by the image capture device 706. In examples, the automatic exposure adjustments are made over approximately 5 or 6 image frames captured by the image capture device 706, and take approximately 125-200 milliseconds. As discussed above, in certain examples, the motion detection process operates by evaluating pixel intensity differences between successive image frames using a threshold (e.g., a constant difference value threshold). In such examples, the changes in pixel intensity caused by the automatic exposure adjustments can trigger false positive instances of motion detection. Accordingly, aspects and examples address this issue by using a threshold (e.g., an adaptive difference threshold) based on the distribution of pixel intensities in the difference image (as discussed in more detail below). Examples recognize and exploit the fact that the automatic exposure adjustments appear as a nearly constant intensity bias applied to the difference image, and thus, a strategically calculated threshold can offset the effects of these adjustments.

[0121] Referring to Figure 8 A flowchart illustrating one example of a motion detection process 800 that can be implemented by the sensor 702 is shown. The process 800 begins at 802 when the image capture device 706 is activated. As discussed above, in examples, the image capture device 706 can be activated based on a motion event detected by the motion sensor 704; however, in other examples, the image capture device 706 can be activated based on one or more other triggers, information, events, or causes. Once activated, at 804, the image capture device 706 captures images of the observed scene.

[0122] At 806, process 800 includes obtaining a difference image based on consecutive frames of image data captured at 804. In the example, image capture device 706 is configured to acquire a color image of the observed scene. In some such examples, obtaining the difference image at 806 includes converting at least some of the image frames captured at 804 to grayscale to produce at least two consecutive grayscale image frames that can be compared to generate the difference image. The advantage of using grayscale images is that variations in brightness due to color settings (and independent of motion) or other offsets and / or errors due to color can be removed from the image before further processing. In addition to converting the image to grayscale, in some examples, the image size is also resized for motion detection. In one example, the grayscale frame size is resized to 320 x 192 pixels for motion detection; however, other frame sizes may be used in other examples. In some instances, the image capture device may capture images with a significantly larger size (higher resolution); however, this resolution may not be necessary for sufficiently accurate motion detection for the purposes / applications of sensor 702. Larger images represent more data and therefore may require more time and / or processing power to be processed for motion detection. Therefore, the image size can be reduced to decrease the time and / or amount of computational resources required to apply the motion detection process discussed herein.

[0123] Figure 9A and Figure 9B The first grayscale image of the scene is displayed. Figure 9A ) and the subsequently captured second grayscale image ( Figure 9B Example of an image. For the purposes of the following discussion, the first image 902 is referred to as the "previous image frame" or "previous frame," and the second image 904 is referred to as the "current image frame" or "current frame." In the example shown, the image includes a person 906 walking along street 910 on sidewalk 908. A car 912 parked on street 910 is also visible in the image. Each image 902, 904 consists of multiple pixels 914. In the example shown, each image is 20 x 20 pixels 914; however, it should be recognized that in practice, an image may include thousands of pixels or more. As can be seen by comparison... Figure 9A and Figure 9B It can be seen that, in Figure 9B In the current image frame, person 906 is relative to Figure 9A The position of person 906 in the previous image frame has shifted two pixels to the right. The background in the image frame has not changed. Therefore, the motion detection process can detect the motion of person 906 relative to the unchanged background, as discussed further below.

[0124] In an example, the differencing process includes a pixel-to-pixel comparison of the current image frame 904 to the previous image frame 902 to determine differences in pixel intensity between the two frames. Figure 10A and Figure 10B respectively show Figure 9A and Figure 9B copies of the images 902, 904, highlighting, for example, a plurality of comparison pixels 914a-f. As can be seen by comparing Figure 10A and Figure 10B the intensities of the pixels 914a, 914d, 914e, and 914f have not changed from the previous image frame 902 to the current image frame 904. However, the movement of the person 906 has caused a change in intensity of the pixels 914b and 914c. Further, it can be seen that the change in intensity at pixel 914b is different from the change in intensity at pixel 914c due to the difference in brightness of the background relative to the person 906 at the locations of the two pixels.

[0125] In an example, the differencing process at 806 includes calculating the difference (e.g., absolute difference) in pixel intensity between the current image frame 904 and the previous image frame 902, and producing a difference image 916, an example of which is shown in Figure 11 The difference image 916 records the magnitude of the change in pixel intensity for each pixel 914. Thus, the intensity of each pixel in the difference image 916 corresponds to the magnitude of the change in intensity of that pixel from the previous image frame 902 to the current image frame 904. Referring to Figure 9A and Figure 9B it can be seen that there is no change in pixel intensity at most pixels, as reflected in the difference image 916, where the intensity values of most pixels are zero. As discussed above, some pixels change more than others due to the difference in background as the person 906 moves. In the example shown in Figure 11 the intensities of some of the non-zero pixels in the difference image 916 are 250 and others are 150; however, it should be appreciated that these numbers are arbitrary and for illustrative purposes only.

[0126] To identify motion, a threshold is applied to the difference image, where intensity differences above the threshold are associated with motion. In an example, the difference image is filtered based on the threshold to produce a filtered image, where the intensity values of the pixels are determined based on whether the intensity values of the corresponding pixels in the difference image are above or below the threshold, as discussed further below. The thresholding filters out small changes in pixel intensity from frame to frame that can occur due to noise in the image capture device 706 or accuracy / resolution limitations, changes in lighting, or other events that are not necessarily related to motion, particularly motion of the object of interest.

[0127] The pixel intensities of the difference image can be visualized in histogram form. For example, Figure 12A An example of a histogram of the difference image (difference histogram) is shown, showing the number of pixels (vertical axis) with each intensity value (horizontal axis). The difference histogram represents the distribution of pixel intensities, where high pixel intensities indicate a larger change in pixel value between consecutive frames, and vice versa. Thus, high pixel intensities are generally an indicator of motion between frames. In Figure 12A In the example of Figure 12A , it can be seen that many pixels have low intensities, indicated by the group of lines 1202, which represent small changes as can be caused by noise and other factors, as discussed above. A clear separation between the group of pixel intensity values 1202 and the pixel intensity values 1204, which represent or otherwise indicate motion events, can be seen. Thus, in this case, the use of a fixed intensity threshold 40, indicated at 1206 in Figure 12A , will accurately detect motion, as only the intensity values 1204 above the threshold 1206 are based on motion, as can be seen in

[0128] Figure 12A The histogram of Figure 12B shows an example where the camera is in a steady state (capturing well-exposed images) and is not undergoing an auto-exposure adjustment. Figure 12A shows a corresponding example where the camera is undergoing an auto-exposure adjustment, during which time period the two images used to produce the difference image were captured. As can be seen by comparing Figure 12B and Figure 12B , in this case, the changes in pixel intensities of the difference histogram are spread out over a larger range of pixel intensities, and the pixel intensity values 1204 that are clearly visible in Figure 12A are not visually distinguishable from other pixel intensity values shown in Figure 12B . In the case of Figure 12B , a fixed intensity threshold 40, indicated at 1206, will potentially detect motion, such as the motion event corresponding to the pixel intensity values 1204 in Figure 12A , but will also cause false positive motion detection corresponding to the numerous pixels with intensities above the threshold 40. Setting the fixed threshold to a value that is high enough to avoid false positive motion detection during the adjustment phase of the camera would cause the sensor to potentially miss a true motion event (e.g., the motion indicated by the pixel intensity values 1204), resulting in a lack of reliability in threat detection.

[0129] Referring again to Figure 8According to certain examples, to overcome the thresholding limitations discussed above, the process 800 includes applying an adaptive threshold at 808 to produce a filtered image (also referred to as a thresholded difference image), where the intensity values of the individual pixels are determined based on the adaptive threshold. Thus, at 808 of the example of the process 800, rather than using a fixed, predetermined threshold, an adaptive or dynamic threshold is computed based on the difference image obtained at 806. As discussed above, the exposure adjustments made by the image capture device 706 manifest as a nearly constant intensity bias in the difference image, and thus, by basing the threshold on the difference image itself, the effects of these adjustments can be offset without compromising the ability of the sensor 702 to reliably detect motion events.

[0130] Figure 13 A flowchart illustrating one example of the process 808 is shown. The process 808 begins at 1302 with the difference image obtained at 806. At 1304, a data set corresponding to the current difference image obtained at 806 is assembled. The data set includes the intensity values represented in the difference image and the number of pixels in the difference image that have an intensity value associated with them. As discussed above with reference to Figure 12A and Figure 12B , the data set can be visualized as a histogram. In an example, the process 808 computes the adaptive threshold T according to the following equation:

[0131] T = mμ + nσ (1)

[0132] In equation (1), μ is the mean of the data set, σ is the standard deviation of the data set, and m and n are empirical constants. Thus, at 1306, the process 808 includes computing the mean and standard deviation for the data set assembled at 1304. The threshold T is then computed at 1308 according to equation (1). In an example, the values of the constants m and n are determined based on analysis of a large set of data and can be programmed in the firmware of the sensor 702. Thus, the constants m and n can be set and not updated or set and changed during the process 800, while the values of μ and σ are computed at 1306 during the performance of the process 808. In some examples, m is given a value of 1 and n is given a value in the range of 3 to 5.

[0133] Returning to the example of Figures 9A-11 , a histogram corresponding to the difference image 916 of Figure 14 is shown. In this example, the mean μ is computed according to the following equation (2) and the standard deviation is σ = 65.11. Figure 11

[0134] μ = (0*368 + 4*150 + 28*250) / 400 = 19 (2)

[0135] ​Therefore, for this example, the threshold T, calculated according to equation (1) and rounded to the nearest integer using the values ​​m = 1 and n = 3, is given by the following formula:

[0136] T = 1 * 19 + 3 * 65.11 = 214

[0137] refer to Figure 12A and Figure 12B Examples, by Figure 12A Histogram representation of the ratio of the mean to the standard deviation for a data set is given by Figure 12B The histogram representing the data set has a much lower mean and standard deviation. As discussed above, the difference histogram represents the distribution of pixel intensity, where high pixel intensity indicates a larger change in pixel values ​​between consecutive frames, and vice versa. During automatic exposure adjustment, there is an overall increase in brightness for the difference image, causing the histogram to shift to the right and increasing the mean of the distribution. Applying the adaptive thresholding method discussed above to... Figure 12A and Figure 12B Examples (using the mean and standard deviation calculated for the data set as shown in these figures) would therefore produce the following: Figure 12B The ratio calculated and applied in the example Figure 12A The higher threshold in the example will advantageously cause at least some intensity differences caused by automatic exposure adjustment to be filtered out. Furthermore, by calculating the threshold T based on the characteristics of the difference image itself, process 808 can become highly sensitive to motion, thus allowing motion detection process 800 to operate well even in low-light conditions.

[0138] Refer again Figure 13 The example of process 808 applies a determined threshold to the difference image. In the example, process 808 includes determining the pixel intensity (Iintensity) for each pixel in the difference image. P The decision box determines whether the pixel intensity is above a threshold, as indicated at decision box 1310. If the pixel intensity exceeds the threshold, the pixel retains its current intensity value, as indicated at 1312. If the pixel intensity does not exceed the threshold (i.e., the pixel intensity is at or below the threshold), the pixel's intensity value is set to zero, as indicated at 1314, or otherwise ignored (or disregarded) for the purpose of generating a thresholded (or filtered) difference image. The pixel values ​​from 1312 and 1314 are then used to generate the filtered image at 1316.

[0139] Figure 15 An example of filtered image 918 is shown, which corresponds to Figures 9A-11 and Figure 14 An example. In other words, Figure 15 The filtered image 918 shown is from Figure 11difference image 916, where the threshold 214 calculated above is applied. As can be seen by comparing Figure 11 and Figure 15 in FIGS. 9A and 9B, in the filtered image 918, pixels having intensity values greater than 214 (shown as white pixels in Figure 15 ) retain the same intensity values they had in the difference image 916, while all other pixels (shown as black pixels in Figure 15 ) are set to zero. For example, a pixel having an intensity value of 150 in the difference image 916 of Figure 11 now has an intensity value of zero in the filtered image 918.

[0140] In some examples of the process 800, motion regions can be identified based on the filtered image 918. In some examples, the system can be configured to indicate one or more motion regions based on non-zero pixels (e.g., white pixels in Figure 15 ) in the filtered image 918. For example, non-zero pixels or groups of adjacent non-zero pixels can be identified as motion. In other examples, additional processing can be applied to the filtered image 918 to identify motion regions, as illustrated in Figure 8 .

[0141] Accordingly, returning to Figure 8 , at 810, the filtered image 918 can be divided into a plurality of blocks 920 according to a grid 922 overlaid on the filtered image, as illustrated in Figure 16 . In the illustrated example, each block 920 in the grid 922 is composed of 4 x 4 pixels 914. However, in other examples, the blocks 920 can have different sizes, e.g., 8 x 8 pixels, 16 x 16 pixels, or some other size or shape. In examples, the pixel intensity values for all pixels in each block 920 are summed to produce a sum grid, e.g., as illustrated in Figure 17A . Figure 17A The sum grid 924 illustrated in Figure 11 , Figure 15 and Figure 16 corresponds to the example illustrated in

[0142] At 812, examples of the process 800 include applying a second threshold to the summed grid obtained at 810. The blocks 920 having values that exceed the second threshold are considered to contain motion and are retained, while blocks having values that are at or below the second threshold are ignored. In examples, the second threshold has a fixed value. For example, the second threshold is used to filter out noise or motion corresponding to very small objects. In some examples, the adaptive threshold T computed at 1308 can be close to zero; however, the second threshold applied at 812 can filter out noise that can have exceeded the threshold T. Thus, in examples where the adaptive threshold T is very low (very sensitive to motion detection), the second threshold can remove noise and small motion. Small moving objects can produce high pixel intensities over a small number of pixels in the difference image. Because the second threshold is applied to the summed grid 924, which sums the values of all pixels 914 grouped into the individual blocks 920, the effect on such small moving objects is reduced. For example, if a few pixels in a block have high intensity values due to a small moving object, but the remaining pixels in the block have low intensity values, the total value for the block can still fall below the second threshold. Thus, small moving objects (which generally do not pose a threat) can be filtered out. In contrast, large moving objects (such as people, vehicles, or large animals) can cause high pixel intensity values over a large number of pixels within one or more blocks. Thus, these blocks can have values that exceed the second threshold, resulting in detection of motion for the large objects.

[0143] Still referring to Figure 8 , at 814, an analysis can be applied to connect adjacent remaining blocks to form one or more connected regions, e.g., as shown in Figure 17A . In examples, blocks 920 are connected at 814 if they have a combined / summed intensity value (e.g., a sum of the intensity values of all pixels included in the individual blocks 920) that exceeds the second threshold and share at least one common boundary. In the example shown in Figure 17B , a second threshold 300 is applied to the summed grid 924 of Figure 17A . Blocks having a combined intensity value less than 300 are omitted from further analysis. The remaining blocks 920 (as shaded in Figure 17B ) are adjacent and thus are connected to form a connected region of interest 926. The connected region is considered to indicate a region of motion. Thus, at 816, one or more bounding boxes are generated, each bounding box corresponding to, defining, or otherwise including a connected region. In examples, the bounding boxes are rectangles, rather than precisely following the shape of the corresponding connected region, although this need not be the case in all instances.

[0144] The one or more bounding boxes generated at 816 can then be superimposed on the current image frame (as indicated at 818) to indicate where instances of motion have been detected in the image frame. For example, referring toFigure 18 With Figure 17B the bounding box 928 corresponding to the connection area 926 of the person 906 is shown superimposed on the current image frame 904. As shown, and also with reference to Figure 9A and Figure 9B , the bounding box 928 correctly identifies the region of the image where motion corresponding to the person 906 moving along the sidewalk 910 occurred. As discussed above, the sensor 702 can take various actions based on detecting motion. For example, the sensor 702 can trigger an alarm based on the detected motion. In an example, the sensor 702 can identify the object associated with the detected motion as a moving object, which can then be classified as a person of interest whose detection can cause the sensor 702 to sound an alarm, or a benign object that can be safely ignored.

[0145] As shown in Figure 8 , as the image capture device 706 continues to capture more image frames at 804, the process 800 can then continue and repeat. In an example, the process 800 repeats until the image capture device 706 is deactivated, and the sensor 702 returns to the low-power mode of operation.

[0146] Accordingly, aspects and examples provide systems and methods that can improve the reliability and user experience of a surveillance security system. As discussed above, examples include applying an adaptive or dynamic threshold to difference images to detect motion. As described herein, the use of an adaptive threshold can reduce false positive motion detection caused by automatic exposure adjustments, and improve true positive motion detection during automatic exposure adjustments. Additionally, the need for a delay in motion detection until an exposure good image is reached can be eliminated through the use of the processes disclosed herein. Examples of the processes disclosed herein can be used to improve the accuracy of the motion detection bounding boxes made by the sensor 702. As discussed above, examples of the processes and techniques disclosed herein help ensure that the sensor only detects motion caused by a moving object, and also allow motion detection to start more quickly, as the processes and techniques do not depend on an exposure good image. Accordingly, the sensor 702 can make decisions to alert a user (based on detected motion) more quickly, thereby saving battery life by reducing the amount of time the image capture device 706 needs to remain active and record images. Additionally, as also discussed above, examples provide more accurate motion detection that can distinguish between large moving objects and small moving objects. Accordingly, the sensor 702 can be configured to ignore small moving objects that are considered safe from a security perspective.

[0147] Turning now to Figure 19 , a computing device 1900 is schematically illustrated. As Figure 19As shown, the computing device includes at least one processor 1902, volatile memory 1904, one or more interfaces 1906, non-volatile memory 1908, and an interconnect mechanism 1914. The non-volatile memory 1908 includes code 1910 and at least one data store 1912.

[0148] In some examples, the non-volatile (non-transitory) memory 1908 includes one or more read-only memory (ROM) chips; one or more hard disk drives or other magnetic or optical storage media; one or more solid state drives (SSDs), such as flash drives or other solid state storage media; and / or one or more hybrid magnetic and SSD. In certain examples, the code 1910 stored in the non-volatile memory can include an operating system, as well as one or more applications or programs configured to execute under the operating system. Alternatively or additionally, the code 1910 can include specialized firmware and embedded software that is executable without reliance on a commercially available operating system. Regardless, execution of the code 1910 can produce manipulated data that can be stored in the data store 1912 as one or more data structures. The data structures can have fields that are associated with one another by co-location in the data structure. Such associations can also be achieved by the assignment of storage for a field in memory that is correlated with the location of a related field in memory. However, other mechanisms of establishing associations between information in fields of the data structures can be used, including through the use of pointers, tags or other mechanisms.

[0149] Continuing Figure 19 In examples, the processor 1902 can be one or more programmable processors to execute one or more executable instructions, such as a computer program specified by the code 1910, to control operations of the computing device 1900. As used herein, the term “processor” describes circuitry that performs a function, an operation, or a sequence of operations. The function, operation, or sequence of operations can be hard coded into the circuitry or soft coded by way of instructions held in a memory device, such as the volatile memory 1904, and executed by the circuitry. In some examples, the processor 1902 is a digital processor, but the processor 1902 can be analog, digital, or mixed-signal. Accordingly, the processor 1902 can perform a function, operation, or sequence of operations using digital values and / or using analog signals. In some examples, the processor 1902 can be embodied in one or more application specific integrated circuits (ASICs), microprocessors, digital signal processors (DSPs), graphics processing units (GPUs), neural processing units (NPUs), microcontrollers, field programmable gate arrays (FPGAs), programmable logic arrays (PLAs), or multi-core processors. Examples of multi-core processors 1902 can provide functionality for parallel, simultaneous execution of instructions, or for parallel, simultaneous execution of one instruction over more than one data.

[0150] Continuing Figure 19 In the example of the execution of code 1910, processor 1902 can copy code 1910 from non-volatile memory 1908 to volatile memory 1904 prior to execution of code 1910. In some examples, volatile memory 1904 includes one or more static or dynamic random access memory (RAM) chips and / or cache memory (e.g., memory disposed on a silicon die with processor 1902). Volatile memory 1904 can provide faster response times than a main memory, such as non-volatile memory 1908.

[0151] Through execution of code 1910, processor 1902 can control operation of interface 1906. Interface 1906 can include a network interface. These network interfaces can include one or more physical interfaces (e.g., radios, Ethernet ports, USB ports, etc.) as well as a software stack including drivers and / or other code 1910 configured to communicate with the one or more physical interfaces to support one or more LAN, PAN, and / or WAN standard communication protocols. This communication protocol can include, for example, TCP and UDP, among others. Thus, the network interface enables computing device 1900 to access and communicate with other computing devices via a computer network.

[0152] Interface 1906 can include a user interface. For example, in some examples, the user interface includes user input and / or output devices (e.g., a keyboard, a mouse, a touchscreen, a display, a speaker, a camera, an accelerometer, a biometric scanner, an environmental sensor, etc.) as well as a software stack including drivers and / or other code 1910 configured to communicate with the user input and / or output devices. Thus, the user interface enables computing device 1900 to interact with a user to receive input and / or to present output. This presented output can include, for example, one or more GUIs including one or more controls configured to display output and / or receive input. This input can specify values to be stored in data store 1912. This output can indicate values stored in data store 1912.

[0153] Continuing Figure 19 In the example of the above-described computing device 1900, various features of the computing device 1900 can communicate with one another using the interconnection mechanism 1914. In some examples, the interconnection mechanism 1914 includes a communication bus.

[0154] Various inventive concepts can be embodied as one or more methods, of which an example has been provided. The acts performed as part of the method can be ordered in any suitable way. Accordingly, examples can be constructed in which acts are performed in an order different than illustrated, which can include performing some acts simultaneously, even though shown as being performed sequentially by virtue of being included in the same example.

[0155] The use of ordinal terms such as "first," "second," "third," etc., in a claim for modifying a claim element does not by itself connote any priority, precedence, or order of one claim element over another or the temporal sequence of acts of a method. Such terms are merely used as labels to distinguish one claim element having a certain name from another element having a same name (but for use of the ordinal term).

[0156] Examples of the methods and systems discussed herein are not limited in application to the details of construction and the arrangement of components set forth in the following description or illustrated in the accompanying drawings. The methods and systems are capable of implementation in other examples and of being practiced or of being carried out in various ways. Examples of specific implementations are provided by way of illustration only and are not intended to be limiting. In particular, acts, components, elements and features discussed in connection with any one or more examples are not intended to be excluded from a similar role in any other examples.

[0157] Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. Any references to examples, components, elements or acts that are described in the singular encompass examples having one or more of such examples, components, elements, or acts, and any references to examples, components, elements or acts in the plural do not necessarily encompass two or more instances of such examples, components, elements, or acts. The mere fact that measures, components, elements or acts are recited in plural form does not necessarily imply that more than one of such measures, components, elements or acts is necessary. The use of the terms "including", "containing", "comprising", "having" and "involving" and variations thereof herein are meant to encompass the items listed thereafter and equivalents thereof as well as additional items. References to "or" can be construed as inclusive so that any terms described using "or" can indicate any of a single, more than one, and all of the described terms. In addition, in cases where there is a conflict between what is described in this document and what is described in a document that might be incorporated by reference, the term usage in this document controls. The term "about" means approximately or nearly as understood by one of ordinary skill in the art. When used in a context as a modifier of a property or attribute, "about" can include a difference or variation of up to ±10% of the modified property or attribute.

[0158] Having described several examples, one skilled in the art will be aware of various modifications and improvements within the scope of the present disclosure. Such modifications and improvements are intended to fall within the scope of the present disclosure. Accordingly, the foregoing description is by way of example only, and is not intended as limiting.

[0159] Additional Examples

[0160] Example 1 provides a method comprising: generating a first image based on a plurality of previous images forming part of a sequence of images, the first image comprising pixels having intensity values approximating a difference in intensity values between a pair of pixels within the previous images, and the pair of pixels being one pixel from each of a first previous image and a second previous image and present at a same location within their respective images; generating a second image by applying a threshold to the first image, the second image comprising one or more pixels having intensity values above the threshold, and the threshold being derived from pixel intensity values within the first image and a number of pixels in the first image having corresponding intensity values; and determining a region of the second image indicative of motion based on locations of the one or more pixels in the second image.

[0161] Example 2 includes the method of example 1, further comprising acquiring the plurality of previous images using a camera.

[0162] Example 3 includes the method of example 2, further comprising: detecting a motion event in a scene using a motion detector; and based on detecting the motion event, initiating the camera to acquire the plurality of images.

[0163] Example 4 includes the method of any one of examples 1-3, further comprising determining the first threshold by: assembling a data set corresponding to the first image, the data set specifying pixel intensity values within the first image and a number of pixels in the first image having corresponding intensity values; calculating a mean value of the data set and a standard deviation for the data set; and determining the first threshold based on the mean value and the standard deviation.

[0164] Example 5 provides a security sensor comprising: an image capture device; at least one processor; and a data storage device storing instructions that, when executed by the at least one processor, cause the security sensor to perform the method of any one of examples 1-4.

[0165] Example 6 includes the security sensor of example 5, further comprising a battery coupled to the motion detector, the image capture device, the data storage device, and the at least one processor.

[0166] Example 7 provides a method of motion detection, comprising: acquiring, using an image capture device, a first image and a second image of a scene; generating a third image based on the first image and the second image, wherein a first intensity value of each pixel in the third image corresponds to a magnitude of a difference in intensity between a corresponding pair of pixels in the first image and the second image; determining a first threshold based on the third image; applying the first threshold to the third image to generate a fourth image, wherein each pixel in the fourth image has a respective second intensity value, and wherein the second intensity value is determined based on whether the first intensity value of the corresponding pixel in the third image exceeds the first threshold; grouping the pixels of the fourth image into a plurality of blocks, each block comprising a plurality of pixels of the fourth image; summing the second intensity values of the plurality of pixels in each block to generate a sum value for the respective block; and identifying a region of motion in the second image based on two or more adjacent blocks in the fourth image having sum values that exceed a second threshold.

[0167] Example 8 includes the method of Example 7, wherein identifying the region of motion in the second image comprises: generating a bounding box corresponding to the two or more adjacent blocks; and superimposing at least one bounding box on the second image.

[0168] Example 9 includes the method of Example 8, wherein generating the bounding box comprises: forming a connected region in the fourth image, the connected region comprising the two or more adjacent blocks; and generating the bounding box based at least in part on an outline of the connected region.

[0169] Example 10 includes the method of any one of Examples 7-9, wherein determining the first threshold comprises: assembling a data set corresponding to the difference image; calculating a mean value of the data set and a standard deviation for the data set; and determining the first threshold based on the mean value and the standard deviation.

[0170] Example 11 includes the method of Example 10, wherein determining the first threshold comprises determining the first threshold based on a sum of the mean value multiplied by a first constant and the standard deviation multiplied by a second constant, wherein the first constant and the second constant are empirically determined constants.

[0171] Example 12 includes the method of any one of Examples 7-11, wherein the second intensity value of each pixel in the fourth image is one of: zero based on the first intensity value of the corresponding pixel in the third image being at or below the first threshold; or the first intensity value of the corresponding pixel in the third image based on the first intensity value of the corresponding pixel in the third image exceeding the first threshold.

[0172] Example 13 includes the method of any one of examples 7-12, further comprising: detecting a motion event in the scene using a motion detector; and based on detecting the motion event, initiating the image capture device to acquire the first image and the second image.

[0173] Example 14 includes the method of any one of examples 7-13, further comprising: prior to generating the third image, converting the first image and the second image to a first grayscale image and a second grayscale image, respectively, wherein generating the third image includes generating the third image based on the first grayscale image and the second grayscale image.

[0174] Example 15 provides a motion detection method, comprising: acquiring, using an image capture device, a first image and a second image of a scene; generating, based on the first image and the second image, a difference image including a first plurality of pixels, wherein a respective first intensity value of a respective pixel of the first plurality of pixels in the difference image corresponds to a magnitude of a difference in intensity between a corresponding pixel in the first image and the second image; determining a first threshold value based on the difference image; filtering the difference image by applying the first threshold value to generate a filtered image having a second plurality of pixels, wherein a respective second intensity value of a respective pixel of the second plurality of pixels in the filtered image is determined based on whether a first intensity value of a corresponding pixel in the third image exceeds the first threshold value; dividing the filtered image into a plurality of blocks, each block including a sub-group of pixels of the plurality of pixels of the filtered image; summing the second intensity values of the sub-group of pixels in each block to generate a summed value for the respective block; and identifying a region of motion in the second image based on two or more adjacent blocks in the filtered image having summed values that exceed a second threshold value.

[0175] Example 16 includes the method of example 15, wherein determining the first threshold value includes: assembling a data set corresponding to the difference image, the data set identifying the first intensity values and a number of pixels in the third difference image having each first intensity value; calculating a mean value of the data set and a standard deviation for the data set; and determining the first threshold value based on the mean value and the standard deviation.

[0176] Example 17 includes the method of one of examples 15 and 16, wherein the respective second intensity value of the second plurality of pixels in the filtered image is one of: zero; or the first intensity value of the corresponding pixel in the difference image based on the first intensity value exceeding the first threshold value.

[0177] Example 18 provides a security sensor comprising: an image capture device; at least one processor; and a data storage device storing instructions that, when executed by the at least one processor, cause the security sensor to: acquire, using the image capture device, a first image frame and a second image frame; determine a difference in pixel intensity between the first image and the second image; generate, based on the difference, a third image in which a first intensity value of each pixel in the third image corresponds to a magnitude of the difference in intensity between a corresponding pair of pixels in the first image and the second image; determine, based on the third image, a first threshold value; generate, based on the first threshold value, a fourth image in which each pixel in the fourth image has a respective second intensity value determined based on whether the first intensity value of the corresponding pixel in the third image exceeds the first threshold value; partition the fourth image into a plurality of blocks, each block comprising a respective subset of pixels of the fourth image; sum the second intensity values of the respective subset of pixels in each block to generate a corresponding plurality of summed values; and identify a region of motion in the second image based on two or more adjacent blocks in the third image having summed values that exceed a second threshold value.

[0178] Example 19 includes the security sensor of Example 18, wherein to identify the region of motion, the data storage device further stores instructions that, when executed by the at least one processor, cause the security sensor to: generate a bounding box corresponding to the two or more adjacent blocks; and superimpose at least one bounding box on the second image.

[0179] Example 20 includes the security sensor of Example 19, wherein to determine the first threshold value, the data storage device further stores instructions that, when executed by the at least one processor, cause the security sensor to: assemble a data set corresponding to the third image, the data set identifying the first intensity values and a number of pixels in the third image having each first intensity value; compute a mean value of the data set and a standard deviation for the data set; and determine the first threshold value based on the mean value and the standard deviation.

[0180] Example 21 includes the security sensor of Example 20, wherein the data storage device further stores instructions that, when executed by the at least one processor, cause the security sensor to: determine the first threshold value based on a sum of the mean value multiplied by a first constant and the standard deviation multiplied by a second constant, wherein the first constant and the second constant are empirically determined constants.

[0181] Example 22 includes the security sensor of any one of Examples 18-21, wherein the second intensity value of each pixel in the fourth image is one of: zero based on the first intensity value of the corresponding pixel in the third image being the first threshold value or below; or the first intensity value of the corresponding pixel in the third image based on the first intensity value of the corresponding pixel in the third image exceeding the first threshold value.

[0182] Example 23 includes the safety sensor of any one of examples 18-22, wherein the second threshold is higher than the first threshold.

[0183] Example 24 includes the safety sensor of any one of examples 18-23, further comprising a motion detector configured to detect a motion event in the scene.

[0184] Example 25 includes the safety sensor of example 24, wherein the motion detector is a passive infrared sensor.

[0185] Example 26 includes the safety sensor of one of examples 24 and 25, wherein the data storage device further stores instructions that, when executed by the at least one processor, cause the safety sensor to initiate the image capture device to acquire the first image and the second image based on detection of the motion event with the motion detector.

[0186] Example 27 includes the safety sensor of any one of examples 24-26, further comprising a battery coupled to the motion detector, the image capture device, the data storage device, and the at least one processor.

[0187] As should be appreciated in light of this disclosure, modifications are possible within the scope of the claims, and other implementations are possible.

Claims

1. A method comprising: producing a first image based on a plurality of previous images forming part of a sequence of images, the first image comprising pixels having intensity values approximating a difference in intensity values between a pair of pixels within the previous images and the pair of pixels being one pixel from each of a first previous image and a second previous image and present at a same location within their respective images; generating a second image by applying a threshold to the first image, the second image comprising one or more pixels having intensity values above the threshold, and the threshold being derived from pixel intensity values within the first image and a number of pixels in the first image having corresponding intensity values; and determining a region of the second image indicative of motion based on locations of the one or more pixels in the second image.

2. The method of claim 1, further comprising acquiring the plurality of previous images using a camera.

3. The method of claim 2, further comprising: detecting a motion event in a scene using a motion detector; and based on detecting the motion event, initiating the camera to acquire a plurality of images.

4. The method of any one of claims 1 to 3, further comprising determining the first threshold by: assembling a data set corresponding to the first image, the data set specifying the pixel intensity values within the first image and the number of pixels in the first image having the corresponding intensity values; computing a mean value of the data set and a standard deviation for the data set; and determining the first threshold based on the mean value and the standard deviation.

5. A method of motion detection comprising: acquiring first and second images of a scene using an image capture device; producing a third image based on the first and second images, wherein a first intensity value of each pixel in the third image corresponds to a magnitude of a difference in intensity between a corresponding pair of pixels in the first and second images; determining a first threshold based on the third image, the first threshold being derived from pixel intensity values within the first image and a number of pixels in the first image having corresponding intensity values; applying the first threshold to the third image to produce a fourth image, wherein each pixel in the fourth image has a corresponding second intensity value, and wherein the second intensity value is determined based on whether the first intensity value of the corresponding pixel in the third image exceeds the first threshold; and identifying a region of motion based on the second intensity values of the pixels in the fourth image.

6. The method of claim 5, wherein identifying the region of motion comprises: grouping pixels of the fourth image into a plurality of blocks, each block comprising a plurality of pixels of the fourth image; summing the second intensity values of the plurality of pixels in each block to produce a summed value for the corresponding block; and identifying the region of motion in the second image based on two or more adjacent blocks in the fourth image having summed values exceeding a second threshold.

7. The method of claim 6, wherein identifying the region of motion in the second image comprises: forming a connected region in the fourth image, the connected region comprising the two or more adjacent blocks; generating a bounding box based at least in part on an outline of the connected region; and superimposing at least one bounding box on the second image.

8. The method of any one of claims 5 to 7, wherein determining the first threshold comprises: assembling a data set corresponding to the third image, the data set identifying the first intensity values and a number of pixels in the third image having each first intensity value; computing a mean value of the data set and a standard deviation for the data set; and determining the first threshold based on the mean value and the standard deviation.

9. The method of claim 8, wherein determining the first threshold comprises determining the first threshold based on a sum of the mean value multiplied by a first constant and the standard deviation multiplied by a second constant, wherein the first constant and the second constant are empirically determined constants.

10. The method of any one of claims 5 to 9, wherein the second intensity value for each pixel in the fourth image is one of: zero, based on the first intensity value of the corresponding pixel in the third image being at or below the first threshold; or the first intensity value of the corresponding pixel in the third image, based on the first intensity value of the corresponding pixel in the third image exceeding the first threshold.

11. The method of any one of claims 5 to 10, further comprising: detecting a motion event in a scene using a motion detector; and based on detecting the motion event, initiating the image capture device to acquire the first image and the second image.

12. The method of any one of claims 5 to 11, further comprising: prior to generating the third image, converting the first image and the second image to a first grayscale image and a second grayscale image, respectively; wherein generating the third image comprises generating the third image based on the first grayscale image and the second grayscale image.

13. A security sensor, comprising: an image capture device; at least one processor; and a data storage device storing instructions that, when executed by the at least one processor, cause the security sensor to: acquire a first image frame and a second image frame using the image capture device, determine a difference in pixel intensity between the first image and the second image, based on the difference, generate a third image, wherein a first intensity value for each pixel in the third image corresponds to a magnitude of a difference in intensity between a respective corresponding pixel in the first image and the second image, determine a first threshold based on the third image, based on the first threshold, generate a fourth image, wherein each pixel in the fourth image has a respective second intensity value determined based on whether the first intensity value of the corresponding pixel in the third image exceeds the first threshold, and ​ ​ ​ ​ identify a motion event based on the second intensity values of the pixels in the fourth image.

14. The safety sensor of claim 13, wherein to identify the motion event, the data storage device further stores instructions that, when executed by the at least one processor, cause the safety sensor to: divide the fourth image into a plurality of blocks, each block comprising a respective subset of pixels of the fourth image, sum the second intensity values of the respective subset of pixels in each block to produce a corresponding plurality of sum values, and identify a motion region in the second image based on two or more adjacent blocks in the third image having sum values that exceed a second threshold value.

15. The safety sensor of claim 14, wherein the second threshold value is higher than the first threshold value.

16. The safety sensor of any one of claims 13 to 15, wherein to identify the motion region, the data storage device further stores instructions that, when executed by the at least one processor, cause the safety sensor to: generate a bounding box corresponding to the two or more adjacent blocks; and superimpose at least one bounding box on the second image.

17. The safety sensor of any one of claims 13 to 16, wherein to determine the first threshold value, the data storage device further stores instructions that, when executed by the at least one processor, cause the safety sensor to: assemble a data set corresponding to the third image, the data set identifying the first intensity values and the number of pixels in the third image having each first intensity value; compute a mean value of the data set and a standard deviation for the data set; and determine the first threshold value based on the mean value and the standard deviation.

18. The safety sensor of claim 17, wherein the data storage device further stores instructions that, when executed by the at least one processor, cause the safety sensor to: determine the first threshold value based on a sum of the mean value multiplied by a first constant and the standard deviation multiplied by a second constant, wherein the first constant and the second constant are empirically determined constants.

19. The safety sensor of any one of claims 13 to 18, wherein the second intensity value of each pixel in the fourth image is one of: zero based on the first intensity value of the corresponding pixel in the third image being at or below the first threshold value; or the first intensity value of the corresponding pixel in the third image based on the first intensity value of the corresponding pixel in the third image exceeding the first threshold value.

20. The safety sensor of any one of claims 13 to 19, further comprising: a motion detector configured to detect a motion event; wherein the data storage device further stores instructions that, when executed by the at least one processor, cause the safety sensor to initiate the image capture device to acquire the first image and the second image based on detection of the motion event with the motion detector.

21. The safety sensor of claim 20, further comprising: a battery coupled to the motion detector, the image capture device, the data storage device, and the at least one processor.

Citation Information

Patent Citations

  • Infrared image-based weak and small moving target detecting method

    CN102074022A