Systems, methods, and non-transitory machine-readable storage media
By using software filters to monitor and filter out noise interference in the inspection camera system, the problem of false triggering caused by noise interference was solved, improving the reliability and accuracy of the inspection.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2025-11-03
- Publication Date
- 2026-04-14
AI Technical Summary
In inspection camera systems, noise interference can cause cameras to be falsely triggered to capture images, affecting the reliability and accuracy of the inspection.
A software filter is used to monitor the pulse width on the input line, filtering out pulses that are smaller than the expected pulse width minus a threshold, ensuring that only valid pulses trigger the camera to capture images.
It reduces false triggering caused by noise interference, and improves the performance of the inspection camera system and the reliability of image capture.
Smart Images

Figure CN121865478A_ABST
Abstract
Description
Technical Field
[0001] This application generally relates to the inspection of camera assemblies. More specifically, this application relates to an illumination controller with noise and signal isolation functions for inspecting camera assemblies. Background Technology
[0002] Inspection cameras are used in industrial products to assist in the detection of defects in finished products. For example, if a manufacturer is producing metal castings, one or more inspection cameras can be placed on the manufacturing and / or assembly line to inspect the produced metal castings or portions thereof to detect any quality control issues. Inspection camera assemblies may include cameras mounted on or near multiple independently controlled light sources. These light sources can be activated in a coordinated sequence controlled by a lighting controller to illuminate the finished product from different angles and at different times. Summary of the Invention
[0003] On the one hand, this application provides a system comprising: Lighting equipment that includes multiple independently controllable light sources; camera; One or more sensors; and A controller, coupled to a camera, a lighting device, and one or more sensors, includes: Image acquisition control components; and The software filter is configured as follows: Monitor the input lines from the one or more sensors; Measure the pulse width of any pulse detected on the input line; Filter out any pulses whose pulse width is less than the specified expected pulse width minus a threshold amount; The controller sends any unfiltered pulses to the image acquisition control component; and The image acquisition control component is configured to generate a trigger on the camera based on one or more pulses received from the software filter, so that the camera can capture an image.
[0004] Alternatively, in one specific embodiment, the controller further includes a memory storing a specified expected pulse width.
[0005] Alternatively, in one specific embodiment, the memory also stores a threshold amount.
[0006] Alternatively, in one specific implementation, the threshold amount is expressed as a percentage of a specified expected pulse width.
[0007] Alternatively, in one specific implementation, the monitoring input line includes periodically checking each input line for a signal, with the period interval being less than a specified expected pulse width.
[0008] Alternatively, in one specific embodiment, the controller is further configured to send one or more triggers to the lighting device to control a plurality of independently controllable light sources.
[0009] Alternatively, in one specific implementation, one or more triggers sent to the lighting device are sent as part of a series of triggers.
[0010] On the other hand, this application provides a method comprising, at the controller: Monitor input lines from one or more sensors; Measure the pulse width of any pulse detected on the input line; Filter out any pulses whose pulse width is less than the specified expected pulse width minus a threshold; and Any unfiltered pulses are sent to the image acquisition control component, which is configured to trigger the camera to capture images based on the unfiltered pulses.
[0011] Alternatively, in another specific embodiment, the controller further includes a memory storing a specified expected pulse width.
[0012] Alternatively, in another specific implementation, the memory also stores a threshold amount.
[0013] Alternatively, in another specific implementation, the threshold amount is expressed as a percentage of the specified expected pulse width.
[0014] Alternatively, in another specific implementation, the monitoring input line includes periodically checking each input line for a signal, with the period interval being less than a specified expected pulse width.
[0015] Alternatively, in another specific embodiment, the controller is further configured to send one or more triggers to the lighting device to control multiple independently controllable light sources.
[0016] Alternatively, in another specific implementation, one or more triggers sent to the lighting device are sent as part of a series of triggers.
[0017] Thirdly, this application provides a non-transitory machine-readable storage medium having instructions embodied thereon that are executable by one or more machines to perform operations on a controller, the operations including: Monitor input lines from one or more sensors; Measure the pulse width of any pulse detected on the input line; Filter out any pulses whose pulse width is less than the specified expected pulse width minus a threshold; and Any unfiltered pulses are sent to the image acquisition control component, which is configured to generate a trigger to the camera based on one or more pulses received from the software filter, so that the camera can capture an image.
[0018] Alternatively, in one specific embodiment of the third aspect, the controller further includes a memory storing a specified expected pulse width.
[0019] Alternatively, in one specific implementation of the third aspect, the threshold amount is expressed as a percentage of the specified expected pulse width.
[0020] Alternatively, in one specific embodiment of the third aspect, the monitoring input line includes periodically checking whether each input line has a signal, with the period interval being less than a specified expected pulse width.
[0021] Alternatively, in one specific embodiment of the third aspect, the controller is further configured to send one or more triggers to the lighting device to control a plurality of independently controllable light sources.
[0022] Alternatively, in one specific embodiment of the third aspect, one or more triggers sent to the lighting device are sent as part of a series of triggers.
[0023] As can be seen from the technical solution provided in this application above, the improved lighting controller includes software for filtering the input lines. Such software filters can be used to filter noise onto the controller input lines, thereby improving the performance of the lighting controller in the inspection camera system. This improves the reliability of the predictions made by the inspection camera by reducing the number of images captured based on false alarm pulses from noise in the input lines. Attached Figure Description
[0024] Figure 1 A block diagram of an inspection system based on some examples is shown.
[0025] Figure 2 This is a flowchart illustrating a method for operating a controller according to an example embodiment.
[0026] Figure 3 This is a block diagram of a mobile device illustrated according to an example embodiment.
[0027] Figure 4It is a block diagram of a machine in the form of a computer system example, within which executable instructions cause the machine to perform any or more of the methods discussed herein. Detailed Implementation
[0028] In inspection environments, particularly in industrial or quality control settings, fly-scanning refers to a technique used to detect and measure defects, flaws, or problems on the surface of an object without it moving in front of the camera. In other words, the object can be moving during the inspection, such as on a conveyor belt.
[0029] High-resolution imaging helps identify surface defects such as scratches, dents, or unevenness that may not be easily seen using standard inspection methods. It provides high-resolution analysis of the surface.
[0030] This technology is useful in environments requiring high-speed inspection. It can quickly capture and analyze data from fast-moving objects or processes, making it suitable for automated inspection systems.
[0031] Photogrammetry typically uses advanced imaging or scanning techniques to provide precise measurements and detailed images of surfaces. This high level of detail helps identify small or subtle defects that may affect product quality or performance.
[0032] One potential problem with the lighting controller in a system performing aerial photography is that noise can be introduced into one or more input lines of the lighting controller. More specifically, sensors may be used throughout the inspection camera system to detect, for example, when a part moving on a conveyor belt passes a specific location. There may be many such sensors in the inspection camera system, each with its own input line to the lighting controller. When the corresponding sensor senses a part at the corresponding location, a pulse is generated on such an input line.
[0033] When this pulse is detected at the controller, particularly by the software (such as firmware) on the controller, the software knows to trigger the camera to capture an image. However, noise can be introduced into one or more of these input lines. For example, if the wire between the sensor and the controller runs near a motor, the electromagnetic field generated by the motor can produce noise in the wire. This noise can be mistaken for a pulse from the sensor, causing the controller to unintentionally trigger the camera to capture an image even when the sensor has not actually detected anything or generated a pulse.
[0034] In one example embodiment, an improved lighting controller is introduced, designed to reduce the effects of electromagnetic interference. The improved lighting controller includes software for filtering the input lines to ignore noise when processing legitimate pulses from sensors.
[0035] It should be noted that while legitimate pulses on the input lines are described in this disclosure as being generated by the sensor, in some example embodiments this may include pulses generated by intermediate components. For example, a sensor may generate a pulse when a component is detected at a particular location, but an intermediate component may receive that pulse and generate a separate pulse to the controller to inform it of the sensor's positive reading. In this sense, a pulse detected on the input lines may not originate directly from the sensor. However, unless expressly waived, the claims should be interpreted broadly to cover such intermediate pulse generation.
[0036] In one example embodiment, a software filter in the controller examines each input line and detects when a pulse is present on the line. The pulse width of each detected pulse is measured and then compared to a expected pulse width. If the actual pulse width of the detected pulse is greater than the expected pulse width or falls within a certain threshold percentage below the expected pulse width, the software filter treats the pulse as a valid pulse and allows it to be passed to the rest of the controller / software for processing as a positive signal from the sensor. However, if the actual pulse width of the detected pulse is less than a threshold percentage below the expected pulse width, the pulse is ignored and treated as noise rather than a valid pulse.
[0037] Software filters can inspect input lines at high frequencies, such as once every 50 microseconds. The expected pulse width is typically expected to be several orders of magnitude larger than the time interval between two inspections, such as at least 250 microseconds, but more commonly 1 millisecond or greater. This allows for a sufficiently high inspection frequency to detect pulse widths that are less than a threshold percentage below the expected pulse width.
[0038] As a result, such software filters can be used to filter noise onto the controller input lines, improving the performance of the illumination controller in the inspection camera system. This, in turn, increases the reliability of the predictions made by the inspection camera by reducing the number of images captured based on false alarm pulses from noise on the input lines.
[0039] Figure 1 A block diagram of an inspection system 100 according to some examples is shown. The inspection system 100 includes an optical dome 102, a camera 108, a controller 106, an industrial computer 112, and a factory computer 116. The factory computer 116 communicates with the controller 106 and the computer 112 via a wired or wireless factory network 124.
[0040] The light dome 102 in use illuminates a target object 104, such as a metal casting or other product. The light dome 102 includes a housing containing multiple light sources, as will be described in more detail below. In some examples, the light sources include multiple LEDs or displays arranged to provide flexibility in illuminating the target object 104. The light sources are selectively activated by a controller 106 via a power line 110. The light sources are illumination units that can be individually addressed by the controller 106 to illuminate the target object 104. Thus, a single light source may include a single LED or multiple LEDs that can be addressed as a group. The light source may also include a subset of light-emitting units, such as a group of pixels or pixel blocks in a flexible display. Preferably, the light dome 102 includes at least ten individually addressable light sources arranged within the light dome 102 to provide illumination flexibility. Camera 108 can be mounted on light dome 102 via bracket 114, and captures images of the illuminated target object 104 through a hole at the top of light dome 102. Camera 108 is triggered by controller 106 via trigger line 118, and is synchronized with the activation of the light source in light dome 102.
[0041] Controller 106 controls the operation of camera 108 and the illumination of target object 104 by light dome 102. Controller 106 receives instructions from computer 112 via control line 122. Controller 106 may be implemented by a hardware processor disposed in camera 108. Controller 106 may also include hardware components, which may include a central processing unit (“CPU”), bus, volatile and non-volatile storage devices, storage cells, non-transitory computer-readable media, data processor, processing device, control device, transmitter, receiver, antenna, transceiver, input device, output device, network interface device, and other types of components well known to those skilled in the art. These hardware components within the user equipment can be used independently of other devices disclosed herein to perform the various applications, methods, or algorithms disclosed herein. The controller 106 illuminates the target object according to one or more optimal lighting configurations. The lighting configuration can be defined as a matrix, where each value of the lighting configuration matrix represents the operating state of each individual controllable light source, such as one or more LEDs and / or pixel groups on a flexible display screen. The matrix may also include brightness or color values for a specific configuration. The lighting configurations can also be arranged into a sequence specifying the order in which the lighting configurations to be executed for a particular target object 104, allowing the camera 108 to capture multiple images under different lighting conditions.
[0042] Computer 112 runs software that provides a user interface for specifying lighting configurations and sequences, which can be loaded into controller 106. Computer 112 also instructs controller 106 to operate via control line 122 and receives images captured by camera 108 via data line 120.
[0043] Factory computer 116 provides overall factory control and can receive operational data and captured images from controller 106 and computer 112 via factory network 124. Factory computer 116 can also provide instructions to control or initiate the operation of inspection system 100 based on, for example, other factory operations such as the movement of target object 104 through light dome 102.
[0044] An object can be placed on conveyor belt 126, and conveyor belt 126 can be moved such that the object is at least partially below camera 108 when one or more light sources on light dome 120 are illuminated. As previously described, this can be performed under fly-shot conditions, where conveyor belt 126 is not stopped, so the object does not stop below camera 108. Instead, multiple images of the object are captured from different angles and under different lighting conditions, but camera 108 does not move around the object to capture these different angles; instead, the object moves while camera 108 remains stationary.
[0045] As previously described, one or more input lines of one or more sensors for monitoring components moving on conveyor belt 126 may be connected to controller 106. Here, for simplicity, a single sensor 130 and a single input line 132 are depicted; however, it is foreseeable that any number of different sensors / input lines may exist in the embodiments, and in fact, aerial photography techniques typically rely on multiple images taken from multiple angles as a component moves on conveyor belt 126, so in many embodiments multiple sensors (e.g., ten sensors) may be placed near different locations on the conveyor belt.
[0046] The controller 106 may include a software filter 134 for filtering pulses detected on the input line 132. More specifically, the controller 106 maintains a memory 136 that stores various settings associated with the controller 106. These settings include a user-configurable expected pulse width and a threshold. The user can specify the expected pulse width based on their own use of the inspection system 100, more specifically based on the sensors used in the inspection system 100 (such as sensor 130) and environmental factors.
[0047] In situations where there may be a range of expected pulse widths from a sensor, setting the expected pulse width to the minimum is likely preferable. There could be several reasons for this range. One reason is if different types or brands of sensors are used, as each type or brand can be expected to have different standard pulse widths in its respective pulses. Another reason is simply due to the inaccuracy of signal generation. Electronic devices like sensors cannot be expected to always produce pulses with exactly the same pulse width. Therefore, to cover any of these situations, setting the shortest expected pulse width is preferable. For example, if the user expects the pulse width from the sensor in the system to be between 1 millisecond and 1.5 milliseconds, then the expected pulse width should be set to 1 millisecond to ensure that a valid pulse width of 1 microsecond is recognized as valid and not incorrectly filtered out.
[0048] In some cases, it may be desirable to set the expected pulse width below the lower limit of the expected pulse width value range. This may result in noise not being filtered out in some situations, and invalid pulses from noise being incorrectly interpreted as valid sensor pulses. However, in other cases, this may still be part of an ideal configuration, such as when the impact of a false negative (a valid pulse being interpreted as invalid) is far worse than that of a false positive (an invalid pulse being interpreted as valid). It can be seen, however, that when a threshold is used, this risk can be accounted for.
[0049] This threshold can be defined as a percentage. For example, the threshold could be set to 20%. This might indicate the use of a filtering tolerance such that as long as the pulse width is within 20% of the expected pulse width, the pulse will be considered valid and will not be filtered out (this threshold does not apply to pulses with a pulse width greater than the expected pulse width, because such pulses are considered valid regardless of how much wider they are than the expected pulse width).
[0050] It should be noted that the threshold can be defined in ways other than a strict percentage. For example, an actual pulse width value can be specified to be subtracted from the expected pulse width. For instance, instead of specifying the threshold as 20% of the pulse width value, it is better to specify it as being within 200 milliseconds of the expected pulse width value.
[0051] Therefore, software filter 134 monitors input line 132 and filters out any pulses that are not within a threshold percentage range below the expected pulse width specified in memory 136. Any unfiltered pulses are then sent to image acquisition control component 138. Image acquisition control component 138 uses the pulse information to trigger camera 108 to capture an image, which can then be used, along with other images of the same component, to identify defects in the component using various image processing techniques.
[0052] Figure 2 This is a flowchart illustrating a method 200 for operating a controller, according to an example embodiment. For example, the operations in method 200 can be performed by a software filter. In operation 202, the controller monitors input lines from one or more sensors. This can be done by periodically checking the input lines (e.g., checking whenever a time period has elapsed). The input lines are inherently digital lines, meaning that either an electrical signal is present on the line or it is not. Any electrical signal on the line is considered part of a pulse, but it may be unclear whether the pulse is a valid pulse from the sensor or noise. Therefore, in operation 204, the pulse width of any pulse detected on the input lines is measured. In operation 206, any pulses with a pulse width less than a specified expected pulse width minus a threshold amount are filtered out. Then, in operation 208, any unfiltered pulses are sent to an image acquisition control component. The image acquisition control component is configured to generate a signal to trigger the camera based on one or more pulses received from the software filter, causing the camera to capture an image.
[0053] It should be noted that although operation 204 describes detecting multiple potential pulses on multiple input lines, and operation 208 describes sending these pulses (if not filtered) to the image acquisition control component, this should not be interpreted as requiring all pulses to be measured (and compared according to operation 206) before any pulse is sent to the image acquisition control component. Operations 204-208 can be performed on one pulse at a time, such that the pulse width of the pulse detected on the first line is compared with the expected pulse width, and if the pulse is not filtered before (or simultaneously with) detecting the pulse width of the pulse on the second line, it is sent to the image acquisition control component.
[0054] Figure 3 This is a block diagram 300 illustrating software architecture 302, which can be installed on any one or more of the aforementioned devices. Figure 3 This is merely a non-limiting example of a software architecture, and it is understood that many other architectures can be implemented to facilitate the functionality described herein. In various embodiments, software architecture 302 consists of, for example, machine 400 ( Figure 4 The hardware implementation of the machine includes a processor 410, memory 430, and input / output (I / O) components 450. In this example architecture, the software architecture 302 can be conceptualized as a stack of layers, each providing specific functionality. For example, the software architecture 302 includes layers such as an operating system 304, libraries 303, frameworks 308, and applications 310. Operationally, application 310 invokes application programming interface (API) calls 312 through the software stack and receives messages 314 in response to API calls 312, consistent with some embodiments. In various implementations, the operating system 304 manages hardware resources and provides general services. The operating system 304 includes, for example, a kernel 320, services 322, and drivers 324. According to some embodiments, the kernel 320 acts as an abstraction layer between the hardware and other software layers. For example, the kernel 320 provides functions such as memory management, processor management (e.g., scheduling), component management, network and security settings. Services 322 can provide other general services to other software layers. Drivers 324 are responsible for controlling or interfacing with the underlying hardware. For example, drivers 324 may include display drivers, camera drivers, Bluetooth or Bluetooth Low Energy drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi drivers, audio drivers, power management drivers, and so on.
[0055] In some embodiments, library 306 provides the low-level general-purpose infrastructure used by application 310. Library 306 may include system libraries 330 (e.g., the C standard library) that provide functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. Furthermore, library 306 may include API libraries 332, such as media libraries (e.g., libraries for supporting the rendering and manipulation of various media formats such as MPEG-4 (Moving Picture Experts Group-4), H.264 (Advanced Video Coding) or AVC, MP3 (Moving Picture Experts Group Layer 3), AAC (Advanced Audio Coding), Adaptive Multi-Rate (AMR) audio codecs, JPEG (Joint Picture Experts Group) or JPG, PNG (Portable Web Graphics), etc.), graphics libraries (e.g., the OpenGL framework for two-dimensional (2D) and three-dimensional (3D) rendering in a graphics context on a display), databases (e.g., SQLite for providing various relational database functions), network libraries (e.g., WebKit for providing web browsing functionality), and so on. Library 306 may also include a variety of other libraries 334 to provide many other APIs to application 310.
[0056] Framework 308 provides advanced general-purpose infrastructure that application 310 can use. For example, framework 308 provides various graphical user interface functions, advanced resource management, advanced location services, and so on. Framework 308 can provide a wide range of other APIs that application 310 can use, some of which may be specific to a particular operating system 304 or platform. In an example embodiment, application 310 includes a home application 350, a contacts application 352, a browser application 354, a book reader application 356, a location application 358, a media application 360, a messaging application 362, a game application 364, and a wide variety of other applications, such as third-party applications 366. Application 310 is a program that performs the functions defined in the program. One or more applications 310 can be created using various programming languages and in various ways, such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language). In a specific example, third-party application 366 (e.g., an application developed by an entity other than a platform-specific vendor using the Android™ or iOS™ Software Development Kit (SDK)) can be mobile software running on mobile operating systems such as iOS™, Android™, Windows® Phone, or other mobile operating systems.
[0057] Figure 4 A schematic representation of a machine 400 in the form of a computer system is shown, within which a set of instructions can be executed to cause the machine 400 to perform any or more methods discussed herein. Specifically, Figure 4 A schematic representation of machine 400 is shown as an example of a computer system, wherein instructions 416 (e.g., software, program, application, applet, application program, or other executable code) cause machine 400 to perform any or more of the methods discussed herein. For example, instruction 416 may cause machine 400 to execute... Figure 2 Method 200. Alternatively, instruction 416 can be used to implement... Figure 1- 2, etc. Instruction 416 transforms a general, unprogrammed machine 400 into a specific machine 400 programmed to perform the described and illustrated functions in the described manner. In alternative embodiments, machine 400 operates as a standalone device or may be coupled (e.g., networked) to other machines. In a network deployment, machine 400 may operate as a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. Machine 400 may include, but is not limited to, server computers, client computers, personal computers (PCs), tablets, laptops, netbooks, set-top boxes (STBs), personal digital assistants (PDAs), entertainment media systems, cellular phones, smartphones, mobile devices, wearable devices (e.g., smartwatches), smart home devices (e.g., smart appliances), other smart devices, network devices, network routers, network switches, bridges, or any machine capable of sequentially or otherwise executing instructions 416 that specify the actions to be taken by machine 400. Furthermore, although only a single machine 400 is shown, the term "machine" should also be understood to include a collection of machines 400 that individually or collectively execute instructions 416 to perform any or more of the methods discussed herein.
[0058] Machine 400 may include processor 410, memory 430, and I / O components 450, which may be configured to communicate with each other, for example, via bus 402. In an example embodiment, processor 410 (e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a radio frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, processors 412 and 414, which can execute instructions 416. The term "processor" is intended to include multi-core processors, which may include two or more independent processors (sometimes referred to as "cores") that can execute instructions 416 simultaneously. Although Figure 4 Multiple processors 410 are shown, but machine 400 may include a single processor 412 with a single core, a single processor 412 with multiple cores (e.g., a multi-core processor 412), multiple processors 412, 414 with single cores, multiple processors 412, 414 with multiple cores, or any combination thereof.
[0059] Memory 430 may include main memory 432, static memory 434, and memory cell 436, which processor 410 may access, for example, via bus 402. Main memory 432, static memory 434, and memory cell 436 store instructions 416 embodying any one or more methods or functions described herein. During execution of instructions 416 by machine 400, instructions 416 may also reside wholly or partially in main memory 432, static memory 434, memory cell 436, at least one processor 410 (e.g., in the processor's cache memory), or any suitable combination thereof.
[0060] I / O component 450 may include a wide variety of components for receiving input, providing output, generating output, transmitting information, exchanging information, capturing measurements, and so on. The specific I / O component 450 included in a particular machine will depend on the type of machine. For example, a portable machine such as a mobile phone may include a touch input device or other such input mechanism, while a headless server machine may not include such a touch input device. It is understood that I / O component 450 may include many components not listed in the original document. Figure 4 Other components are shown in the diagram. The I / O components 450 are grouped by function only for simplicity in the following discussion, and this grouping is by no means limiting. In various example embodiments, the I / O components 450 may include output components 452 and input components 454. Output components 452 may include visual components (e.g., displays such as plasma display panels (PDPs), light-emitting diode (LED) displays, liquid crystal displays (LCDs), projectors, or cathode ray tube (CRTs), acoustic components (e.g., speakers), haptic components (e.g., vibration motors, resistive mechanisms), other signal generators, and so on. Input components 454 may include alphanumeric input components (e.g., keyboards, touchscreens configured to receive alphanumeric input, photoelectric keyboards, or other alphanumeric input components), point-based input components (e.g., mice, touchpads, trackballs, joysticks, motion sensors, or other pointing tools), haptic input components (e.g., physical buttons, touchscreens providing the position and / or force of touch or touch gestures, or other haptic input components), audio input components (e.g., microphones), and so on.
[0061] In a further example embodiment, I / O component 450 may include biometric component 456, motion component 458, environmental component 460 or position component 462, and numerous other components. For example, biometric component 456 may include components for detecting facial expressions (e.g., hand expressions, facial expressions, voice expressions, body posture, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), identifying a person (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or EEG-based recognition), and so on. Motion component 458 may include accelerometer components (e.g., accelerometers), gravity sensor components, rotation sensor components (e.g., gyroscopes), and so on. Environmental component 460 may include, for example, a light sensor component (e.g., a photometer), a temperature sensor component (e.g., one or more thermometers for detecting ambient temperature), a humidity sensor component, a pressure sensor component (e.g., a barometer), an acoustic sensor component (e.g., one or more microphones for detecting background noise), a proximity sensor component (e.g., an infrared sensor for detecting nearby objects), a gas sensor (e.g., a gas detection sensor for safely detecting the concentration of harmful gases or measuring pollutants in the atmosphere), or other components that can provide indications, measurements, or signals corresponding to the surrounding physical environment. Location component 462 may include a location sensor component (e.g., a Global Positioning System (GPS) receiver component), an altitude sensor component (e.g., an altimeter or barometer from which altitude can be derived from detected air pressure), a direction sensor component (e.g., a magnetometer), and so on.
[0062] Communication can be implemented using a wide variety of technologies. I / O component 450 may include communication component 464, operable to couple machine 400 to network 480 or device 470 via coupling 482 and coupling 472, respectively. For example, communication component 464 may include a network interface component or other suitable device that interfaces with network 480. In further examples, communication component 464 may include wired communication components, wireless communication components, cellular communication components, near field communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and other communication components for providing communication in other ways. Device 470 may be another machine or any of a wide variety of peripheral devices (e.g., coupled via Universal Serial Bus (USB)).
[0063] Furthermore, the communication component 464 can detect identifiers or include components operable to detect identifiers. For example, the communication component 464 may include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting one-dimensional barcodes (such as Universal Product Code (UPC) barcodes), multi-dimensional barcodes (such as QR codes, Aztec codes, data matrix codes, data graphs, maximum codes, PDF417, super codes, UCC RSS-2D barcodes, and other optical codes), or an acoustic detection component (e.g., a microphone for identifying tagged audio signals). Additionally, various types of information can be derived via the communication component 464, such as location geolocation via Internet Protocol (IP), location triangulation via Wi-Fi® signals, location by detecting NFC beacon signals that may indicate a specific location, and so on. Various memories (i.e., the memories of 430, 432, 434 and / or the memory of processor 410) and / or storage units 436 may store one or more sets of instructions 416 and data structures (e.g., software) embodying or utilized by any one or more methods or functions described herein. When executed by processor 410, these instructions (e.g., instructions 416) cause various operations to be performed to implement the disclosed embodiments.
[0064] As used herein, the terms “machine storage medium,” “device storage medium,” and “computer storage medium” have the same meaning and are used interchangeably. These terms refer to one or more storage devices and / or media (e.g., centralized or distributed databases, and / or associated caches and servers) that store executable instructions and / or data. Therefore, these terms should be understood to include, but are not limited to, solid-state memory, as well as optical and magnetic media, including memory internal or external to a processor. Specific examples of machine storage media, computer storage media, and / or device storage media include non-volatile memory, such as semiconductor storage devices like erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), field-programmable gate arrays (FPGAs), and flash memory devices; disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms “machine storage medium,” “computer storage medium,” and “device storage medium” specifically exclude carrier waves, modulated data signals, and other such media, at least some of which fall within the scope of the term “signal media” discussed below.
[0065] In various example embodiments, one or more portions of network 480 may be an ad hoc network, intranet, extranet, virtual private network (VPN), local area network (LAN), wireless local area network (WLAN), wide area network (WAN), wireless wide area network (WWAN), metropolitan area network (MAN), the Internet, a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a Common Old-Style Telephone Service (POTS) network, a cellular telephone network, a wireless network, a Wi-Fi® network, another type of network, or a combination of two or more such networks. For example, network 480 or a portion of network 480 may include a wireless or cellular network, and coupling 482 may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile Communications (GSM) connection, or another type of cellular or wireless coupling. In this example, Coupler 482 can implement any of a variety of data transmission technologies, such as Single Carrier Radio Transmission (1xRTT), Evolved Data Optimization (EVDO), General Packet Radio Service (GPRS), GSM Evolution Enhanced Data Rate (EDGE), 3rd Generation Partnership Project (3GPP) including 8G, 4th Generation Wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High-Speed Packet Access (HSPA), Global Microwave Access Interoperability (WiMAX), Long Term Evolution (LTE) standards, other standards defined by various standards-setting organizations, other remote protocols, or other data transmission technologies.
[0066] Instruction 416 can be transmitted or received on network 480 via a transmission medium using a network interface device (e.g., a network interface component included in communication component 464) and utilizing any of a variety of well-known transmission protocols (e.g., Hypertext Transfer Protocol (HTTP)). Similarly, instruction 416 can be transmitted or received at device 470 via a transmission medium via coupling 472 (e.g., peer-to-peer coupling). The terms “transmission medium” and “signal medium” have the same meaning and are used interchangeably in this disclosure. The terms “transmission medium” and “signal medium” should be understood to include any intangible medium capable of storing, encoding, or carrying instructions 416 for execution by machine 400, and to include digital or analog communication signals or other intangible media to facilitate communication of such software. Therefore, the terms “transmission medium” and “signal medium” should be understood to include any form of modulated data signal, carrier wave, etc. The term “modulated data signal” refers to a signal in which one or more characteristics are set or altered in such a way that information is encoded.
[0067] The terms “machine-readable medium,” “computer-readable medium,” and “device-readable medium” have the same meaning and are used interchangeably in this disclosure. These terms are defined to include both machine storage media and transmission media. Therefore, these terms include storage devices / media as well as carrier / modulated data signals.
Claims
1. A system comprising: Lighting equipment that includes multiple independently controllable light sources; camera; One or more sensors; as well as A controller, coupled to a camera, a lighting device, and one or more sensors, includes: Image acquisition control components; and The software filter is configured as follows: Monitor the input lines from the one or more sensors; Measure the pulse width of any pulse detected on the input line; Filter out any pulses whose pulse width is less than the specified expected pulse width minus a threshold amount; The controller sends any unfiltered pulses to the image acquisition control component; and The image acquisition control component is configured to generate a trigger on the camera based on one or more pulses received from the software filter, so that the camera can capture an image.
2. The system according to claim 1, characterized in that, The controller also includes a memory that stores a specified expected pulse width.
3. The system according to claim 2, characterized in that, The memory also stores threshold values.
4. The system according to claim 1, characterized in that, The threshold value is expressed as a percentage of the specified expected pulse width.
5. The system according to claim 1, characterized in that, The monitoring input lines include periodically checking whether each input line has a signal, with the period interval being less than the specified expected pulse width.
6. The system according to claim 1, characterized in that, The controller is also configured to send one or more triggers to the lighting device to control multiple independently controllable light sources.
7. The system according to claim 6, characterized in that, One or more triggers sent to the lighting equipment are sent as part of a series of triggers.
8. A method comprising, at a controller: Monitor input lines from one or more sensors; Measure the pulse width of any pulse detected on the input line; Filter out any pulses whose pulse width is less than the specified expected pulse width minus a threshold amount; and Any unfiltered pulses are sent to the image acquisition control component, which is configured to trigger the camera to capture images based on the unfiltered pulses.
9. The method according to claim 8, characterized in that, The controller also includes a memory that stores a specified expected pulse width.
10. The method according to claim 9, characterized in that, The memory also stores threshold values.
11. The method according to claim 8, characterized in that, The threshold value is expressed as a percentage of the specified expected pulse width.
12. The method according to claim 8, characterized in that, The monitoring input lines include periodically checking whether each input line has a signal, with the period interval being less than the specified expected pulse width.
13. The method according to claim 8, characterized in that, The controller is also configured to send one or more triggers to the lighting device to control multiple independently controllable light sources.
14. The method according to claim 13, characterized in that, One or more triggers sent to the lighting device are sent as part of a series of triggers.
15. A non-transitory machine-readable storage medium having instructions embodied thereon that are executable by one or more machines to perform operations on a controller, the operations including: Monitor input lines from one or more sensors; Measure the pulse width of any pulse detected on the input line; Filter out any pulses whose pulse width is less than the specified expected pulse width minus a threshold amount; and Any unfiltered pulses are sent to the image acquisition control component, which is configured to generate a trigger to the camera based on one or more pulses received from the software filter, so that the camera can capture an image.
16. The non-transitory machine-readable storage medium according to claim 15, characterized in that, The controller also includes a memory that stores a specified expected pulse width.
17. The non-transitory machine-readable storage medium according to claim 15, characterized in that, The threshold value is expressed as a percentage of the specified expected pulse width.
18. The non-transitory machine-readable storage medium according to claim 15, characterized in that, The monitoring input lines include periodically checking whether each input line has a signal, with the period interval being less than the specified expected pulse width.
19. The non-transitory machine-readable storage medium according to claim 15, characterized in that, The controller is also configured to send one or more triggers to the lighting device to control multiple independently controllable light sources.
20. The non-transitory machine-readable storage medium according to claim 15, characterized in that, One or more triggers sent to the lighting device are sent as part of a series of triggers.