Detecting scintillation bands using multi-exposure sensor
By using multi-exposure sensor technology to capture images with partially overlapping exposures in time and then performing subtraction processing, the problem of difficult extraction of scintillation bands is solved, enabling accurate extraction of scintillation bands and determination of light source frequency, thus improving image quality.
Patent Information
- Application Number
- CN202210238406.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-03-12
- Filing Date
- 2022-03-11
- Publication Date
- 2025-12-19
- Estimated Expiration
- 2042-03-11
AI Technical Summary
Existing technologies struggle to effectively extract flicker bands caused by light sources whose intensity changes over time when capturing images, especially when scene content changes or frame rate matching, as flicker bands may cancel out or be difficult to detect.
By employing multi-exposure sensor technology, images are captured through exposures that overlap at least partially in time, and the images are subtracted from each other to eliminate scene content while preserving the flicker band. Flicker band data is extracted using different exposure times that share a common start time.
Effective extraction of the flicker band can more accurately determine the oscillation frequency of the light source, reduce or eliminate the influence of the flicker band, and improve image quality.
Smart Images

Figure CN115082279B_ABST
Abstract
Description
BACKGROUND
[0001] Rolling shutter sensors can be used to capture images of light by scanning (vertically or horizontally) across a scene to expose different rows of the sensor to light over time. When the scene includes a light source whose intensity changes over time of capturing light (e.g., a 50 (hertz) Hz or 60 Hz alternating current (AC) light source), some rows can be exposed to different light intensities than other rows. This inconsistency in light intensity can result in a flicker band, where the image includes alternating bands of brighter and darker regions, or other visual artifacts. The flicker band can be compensated for by extracting the flicker band from the image, determining an oscillation frequency of the light source (e.g., 50 or 60 Hz AC) from the extracted flicker band, and setting a sensor exposure time to a multiple of half the oscillation frequency.
[0002] Conventional methods of extracting the flicker band include subtracting two consecutive frames from each other. If the scene content does not change between the two frames, the content will cancel out, while leaving the flicker band resulting from subtracting the flicker band of each frame, which typically appears at different locations in the two frames. However, if the scene changes between the two frames, the result of the subtraction will include content mixed with the flicker band, making flicker band detection difficult. Additionally, if the two frames are captured at a particular frame rate, the flicker bands from the two frames will be in phase, such that they cancel out, and the result of the subtraction does not include any indication that the individual frames included a flicker band. Thus, the flicker band can go undetected and simultaneously exist in the image produced by the sensor. SUMMARY
[0003] Embodiments of the present disclosure relate to flicker band extraction for multi-exposure sensors. Systems and methods are disclosed that provide for extracting data from an image that captures a flicker band, which is less likely to include residual content from the scene, and can be more easily used to derive an oscillation frequency of one or more light sources that caused the flicker band.
[0004] In contrast to conventional methods for flicker band extraction, images for extracting a flicker band can be captured using exposures that are at least partially overlapping in time. When the images are subtracted from each other, the scene content is substantially eliminated, leaving the flicker band. In at least one embodiment, the images can be for the same frame captured by at least one sensor. For example, the images can include multiple exposures captured by at least one sensor in a frame. In one or more embodiments, the images for extracting a flicker band can be captured using different exposure times that share a common start time (e.g., using a multi-exposure sensor, where light values are read out at different times during light integration). Two or more of these images can be used for flicker band extraction, such as the image that includes the flicker band with the greatest phase difference. BRIEF DESCRIPTION OF DRAWINGS
[0005] The present systems and methods for personalized calibration of user gaze detection in autonomous driving applications are described in detail below with reference to the accompanying drawings, wherein:
[0006] Figure 1 is a data flow diagram showing an example of a system performing a process for compensating for a flicker band in an image, in accordance with some embodiments of the disclosure;
[0007] Figure 2 includes an example diagram showing how a flicker band can be produced by an oscillating light source, in accordance with some embodiments of the disclosure;
[0008] Figure 3A is an example plot of waveforms of a flicker band, in accordance with some embodiments of the disclosure;
[0009] Figure 3B is an example plot of waveforms of a flicker band and a flicker band produced by subtracting the flicker band from each other, in accordance with some embodiments of the disclosure;
[0010] Figure 4 is an example of camera locations and fields of view of an example autonomous vehicle, in accordance with some embodiments of the disclosure;
[0011] Figure 5 is a flow diagram showing a method for compensating for a flicker band using images captured within a shared time period, in accordance with some embodiments of the disclosure;
[0012] Figure 6 is a flow diagram showing a method for compensating for a flicker band using images captured over partially overlapping time periods, in accordance with some embodiments of the disclosure;
[0013] Figure 7 is a flow diagram showing a method for compensating for a flicker band using images captured over different amounts of time, in accordance with some embodiments of the disclosure;
[0014] Figure 8 is a block diagram of an example computing device suitable for implementing some embodiments of the disclosure; and
[0015] Figure 9 is a block diagram of an example data center suitable for implementing some embodiments of the disclosure. DETAILED DESCRIPTION
[0016] Embodiments of the present disclosure relate to flicker band extraction for multi-exposure sensors. Systems and methods are disclosed that provide for extracting data from an image that captures a flicker band that is less likely to include residual content from a scene and can be more easily used to derive an oscillation frequency of one or more light sources that caused the flicker band.
[0017] While the present disclosure can be described with respect to the example autonomous vehicle 400 (alternatively referred to herein as“vehicle 400” or“itself vehicle 400,” an example of which is described herein with respect to Figure 4 the example autonomous vehicle 400), this is not intended to be limiting. For example, the systems and methods described herein can be used in non-autonomous vehicles, semi-autonomous vehicles (e.g., in adaptive driver assistance systems (ADAS)), vehicles combined with a trailer, manned and unmanned robots or robotic platforms, warehouse vehicles, off-road vehicles, airships, boats, buses, emergency response vehicles, motorcycles, electric or motorized bicycles, airplanes, engineering vehicles, underwater vehicles, drones, and / or other vehicle types. Further, while the present disclosure can be described with respect to autonomous driving, this is not intended to be limiting. For example, the systems and methods described herein can be used in robots, consumer electronics (e.g., cameras of mobile phones), aerial systems, shipping systems, and / or other technical fields that can utilize one or more cameras susceptible to flicker band effects.
[0018] In contrast to conventional methods for flicker band extraction, images for extracting a flicker band can be captured using exposures that are at least partially overlapping in time. As a result, the scene content captured by each image is more likely to be similar, resulting in a flicker band that is more easily distinguished from other image content. For example, when subtracting images from one another, the scene content substantially cancels out, leaving the flicker band. In at least one embodiment, the images can be for the same frame captured by at least one sensor. For example, the images can include multiple exposures captured by at least one sensor in a frame. In contrast to conventional methods for flicker band extraction, images for extracting a flicker band can be captured using exposures that occur over different amounts of time. As a result, the flicker band of each image is more likely to be out of phase, even in the case where the images are captured over at least partially overlapping time periods.
[0019] In one or more embodiments, images for extracting a flicker band can be captured using different exposure times that share a common start time (e.g., using a multi-exposure sensor, where light values are read out at different times during the integration of light). For example, light values can be read out from a multi-exposure sensor to generate a low exposure image of a frame, followed by a read out to generate a medium exposure image of the frame, followed by an even later read out to generate a high exposure image of the frame. Two or more of these images can be used for flicker band extraction, such as the image that includes the flicker band with the greatest phase difference.
[0020] Referring to Figure 1 , Figure 1is a dataflow diagram illustrating an example of a system 100 performing a process for compensating for a flare band in an image in accordance with some embodiments of the present disclosure. It should be understood that this and other arrangements described herein are set forth only as examples. Other arrangements and elements (e.g., machines, interfaces, functions, orders, groupings of functions, etc.) can be used in addition to or instead of those shown, and some elements can be omitted altogether. Further, many of the elements described herein are functional entities that can be implemented as discrete or distributed components or in conjunction with other components, and in any suitable combination and location of hardware and software. Different functions described herein as being performed by an entity can be performed by hardware, firmware, and / or software. For instance, different functions can be performed by a processor executing instructions stored in memory.
[0021] Among other components, system 100 can include one or more image sensors 102, an image capture manager 104, an image analyzer 106, and a configuration determiner 108. As an overview, image sensor(s) 102 can include one or more image sensors capable of capturing images that include a flare band produced by one or more light sources. Image capture manager 104 can be configured to manage or control one or more image sensors 102 and / or other components (e.g., camera components) that affect the capture of images, such as by controlling camera parameters that affect exposure time, frame rate, brightness, aperture, focal length, ISO speed, and the like. Examples of images include images 110A, 110B, and 110C (also referred to as “images 110”). Image analyzer 106 can be configured to analyze images captured using one or more image sensors 102, such as to select one or more of the images for extracting flare band data and / or for extracting flare band data from the one or more images. For example, image analyzer 106 can extract flare band data representing or otherwise corresponding to flare band 112 from two or more of images 110.
[0022] Configuration determiner 108 can be configured to determine a configuration of at least one sensor (such as one or more of image sensors 102) based on flare band 112. The configuration can be determined to reduce or eliminate flare bands from future images, or otherwise compensate for one or more light sources that can produce flare bands. For example, the configuration can be used to capture one or more images using the at least one sensor. In the illustrated example, image capture manager 104 (and / or an image capture manager associated with one or more other sensors) can use the configuration to capture the one or more images (e.g., using one or more image sensors 102 or one or more different sensors).
[0023] As described herein, the image capture manager 104 can be configured to manage or control one or more image sensors 102 and / or other components that affect the capture of images (e.g., camera components). Image data for an image (e.g., images 110A, 110B, or 110C) can represent a set of values for pixels for a given exposure of the image sensor 102 or a set of total values from multiple exposures. The values can correspond to or indicate luminance or intensity in a scene and can or can not correspond to or indicate color information. Further, the image data for an image can correspond to full or partial data (e.g., one or more rows and / or portions thereof) read out from the image sensor 102 and can be in raw, pre-processed, or processed format.
[0024] By way of example, and not limitation, the image capture manager 104 can be implemented by hardware and / or software (e.g., firmware) of one or more camera devices that include one or more image sensors 102. The image sensor 102 can include one or more rolling shutter sensors, such as a rolling shutter complementary metal-oxide-semiconductor (CMOS) sensor. A rolling shutter sensor can refer to an image sensor that is capable of capturing one or more images using rolling shutter capture. Rolling shutter capture can capture light for one or more images by scanning vertically or horizontally across a scene to expose different rows of the sensor to light over time. This is in contrast to global shutter capture, in which all rows are exposed simultaneously.
[0025] For a single frame, the image capture manager 104 can capture any number of images using one or more image sensors, such as a single image or multiple images. For multiple images, one or more of the images can be combined, aggregated, selected from, and / or otherwise made available by the image capture manager 104 to produce a frame. In one or more embodiments, the image sensor 102 can function as a single-exposure sensor. A single-exposure sensor can be exposed to light for a period of time, and light values for pixels can be read out and used by the image capture manager 104 to produce an image (e.g., images 110A, 110B, or 110C) for a frame. However, in one or more embodiments, the image sensor 102 can function as a multiple-exposure sensor. A multiple-exposure sensor can be exposed to light for multiple periods of time, and light values for pixels can be read out multiple times and used by the image capture manager 104 to produce an image for each period of time used to produce a frame. For example, image 110A can correspond to a first period of time, image 110B can correspond to a second period of time, and image 110C can correspond to a third period of time.
[0026] In one or more embodiments, for a multi-exposure sensor, light integration can continue across these time segments. For example, light integration can not reset with each readout for each image 110. As such, image 110A can include a low-exposure image, image 110B can include a medium-exposure image, and image 110C can include a high-exposure image. While three images 110 are shown, images 110 can include more or fewer images. In this regard, the exposure to produce image 110B can overlap with the exposure to produce image 110A, and the exposure to produce image 110C can overlap with other exposures. The multi-exposure sensor can be a high dynamic range (HDR) sensor, and the images can be used to generate an HDR frame.
[0027] When a scene captured by one or more image sensors 102 includes a light source that changes in intensity over time of capturing light (e.g., a 50 (hertz) Hz or 60 Hz alternating current (AC) light source), some rows can be exposed to different light intensities than other rows. This inconsistency in light intensity can result in a flicker band (where an image includes alternating bands of brighter and darker areas) or other visual artifacts. Referring now to Figure 2 , Figure 2 An example graph 200 is included that illustrates how a flicker band can be produced by an oscillating light source, in accordance with some embodiments of the present disclosure.
[0028] In graph 200, axis 210A can represent time, and axis 210B can represent light brightness or intensity. Waveform 212 can correspond to an alternating current (AC) powered light source. Row intensity 214A can represent the degree of integration of light for an individual row of image sensor 102 over a time period in which image sensor 102 is exposed to one or more light sources. Row intensity 214B can represent the degree of integration of light for a different individual row of image sensor 102 over a time period in which image sensor 102 is exposed to one or more light sources. As can be seen, due to the nature of waveform 212, different rows are exposed to the light source for different times, and thus the degree of integration is different for different rows. This can manifest as a flicker band in an image captured using image sensor 102, as Figure 3A shown.
[0029] Referring now to Figure 3A , Figure 3Ais an example graph 300 of waveforms 310A, 310B, and 310C of scintillation bands according to some embodiments of the present disclosure. In graph 300, axis 312A can represent time, and axis 312B can represent light brightness or intensity. Waveform 310A can correspond to a scintillation band of image 110A (e.g., a low-exposure image), waveform 310B can correspond to a scintillation band of image 110B (e.g., a mid-exposure image), and waveform 310C can correspond to a scintillation band of image 110C (e.g., a high-exposure image).
[0030] Image analyzer 106 can be configured to analyze images captured using one or more image sensors 102, e.g., in order to select one or more of the images for extracting scintillation band data and / or for extracting scintillation band data from the one or more images. For example, image analyzer 106 can extract data representing or otherwise corresponding to scintillation band 112 from two or more of images 110. Scintillation band 112 can be derived from at least a portion of a scintillation band corresponding to waveforms 310A, 310B, and / or 310C. For example, scintillation band 112 can include a collection of scintillation bands from one or more images 110, as by using Figure 3B are described by way of example.
[0031] Referring now to Figure 3B , Figure 3B is an example graph 350 of waveforms 322 and 324 of scintillation bands and waveform 320 of a scintillation band resulting from subtracting the scintillation bands from each other according to some embodiments of the present disclosure. In graph 350, Figure 3B waveform 320 can include a collection of waveforms 322 and 324. Waveform 320 can result from aggregating, subtracting, and / or otherwise combining at least some of the scintillation bands corresponding to waveforms 322 and 324. In at least one implementation, the amplitudes of one or more of the waveforms can be scaled prior to aggregating waveforms 322 and 324 to produce Figure 3B what is shown in graph 350 (e.g., so that the waveforms have the same or substantially the same amplitude).
[0032] A scintillation band of an image can be mathematically expressed as sin(x + p), where p can be a phase reflecting an actual position of the scintillation band in a capture plane, and x can be a frequency of the scintillation band. The subtraction of scintillation bands of two images can then be expressed using equation (1):
[0033]
[0034] where p=a for the flicker band of one image and p=b for the flicker band of another image. The flicker bands indicated by waveforms 310A, 310B, and 310C can have different phases and / or amplitudes relative to one another for different images 110. However, equation (1) indicates that subtraction of the flicker bands from one another can result in a flicker band (e.g., flicker band 112) having the same frequency x as the other flicker bands but different amplitudes and phases. As such, the frequency x of the waveform 320 can correspond to the oscillation frequency of the one or more light sources, and can be used by the configuration determiner 108 to determine a configuration that compensates for the oscillation properties of the one or more light sources. For example, the light intensity of a fluorescent lamp can be a sine wave, but with a frequency that is twice the current frequency. As such, for a 50 Hz power generator, the light can oscillate at 100 Hz, and for a 60 Hz generator, the light can oscillate at 120 Hz.
[0035] The image analyzer 106 can use any appropriate method to extract the flicker band data from the one or more images. As an example and not by way of limitation, the image data including the flicker band 112 can be generated from at least portions of the images (in some examples, after down-sampling or otherwise scaling the images) subtracted from one another. For example, the image analyzer 106 can subtract channel information from two selected stored images (and / or portions thereof) pixel by pixel to generate a difference image. After subtracting the two images from one another, the image analyzer 106 can perform an operation on each row of pixels in the difference image (in some examples, after down-sampling or otherwise scaling the difference image). For example, if the difference image (e.g., after down-sampling) is 64 rows by 64 pixels, the image analyzer 106 can compute the sum of the 64 pixels in each row, resulting in 64 values, where each value is the sum of the pixel data for one of the 64 rows. As another example, the image analyzer 106 can scale each of the row sums to a smaller value, e.g., by scaling 16-bit sums to 12-bit values, resulting in 64 values, where each value is the scaled sum of the pixel data for one of the 64 rows. As another example, the image analyzer 106 can compute the average pixel value over the 64 pixels in each row, resulting in 64 values, where each value is the average pixel value for one of the 64 rows. Note that computing the average pixel value over the 64 pixels in each row can be considered a special case of computing the scaled sum of the 64 pixels in each row. As a further example, the image analyzer 106 can first perform a sum, scale sum, or average function on the down-sampled images, resulting in a 1 x 64 array for each stored image frame. As a further example, the image analyzer 106 can then subtract the 1 x 64 arrays corresponding to the selected image frames.
[0036] The image analyzer 106 can then generate a one-dimensional (ID) discrete cosine transform (DCT) of the difference. The DCT can have any suitable number of bins, such as 32 or 64 bins, where the first bin represents a direct current (DC) component of the difference, and each successive bin represents energy at a frequency that is a successive power of two. For example, the first bin can represent the DC component, the second bin can represent energy at 2 Hz, the third bin can represent energy at 4 Hz, the fourth bin can represent energy at 8 Hz, and so on. The image analyzer 106 can then calculate the flicker band frequency of the flicker band 112 from the DCT data, which can have been pre-processed.
[0037] As described herein, the images used by the image analyzer 106 to extract the flicker band (e.g., any two of the images 110) can be captured using exposures that at least partially overlap in time. As a result, the scene content captured by each image is more likely to be similar, resulting in the flicker band 112 being more easily distinguishable from other image content. For example, when any two of the images 110 (or one or more images derived therefrom) are subtracted from each other, the scene content substantially cancels out, leaving the flicker band 112, such that they can be more easily extracted by the image analyzer 106.
[0038] As described herein, in one or more embodiments, the image analyzer 106 can generally use at least two images that capture at least some of the same or similar content (e.g., one or more same real-world locations) and that are captured using the same or different image sensors. In embodiments where the images include some different content, the image analyzer 106 can exclude and / or ignore corresponding regions of the images. Additionally, in some embodiments, the image analyzer 106 can compensate for differences in real-world perspective and / or location of the one or more image sensors used to capture the images. Using these approaches can be suitable for embodiments where the images are captured using different image sensors and / or cameras. However, in different embodiments, the images can be captured using the same image sensor and camera. For example, the images can be portions of the same frame captured by at least one sensor. In embodiments, the images (e.g., the images 110) can include multiple exposures captured by at least one sensor in a frame.
[0039] In contrast to traditional methods for flicker band extraction, the images used to extract the flicker bands can be captured using exposures that occur over different amounts of time. As a result, the flicker bands of each image are more likely to be out of phase, even if the images are captured over at least partially overlapping time periods. For example, under a rolling shutter scheme, the pixels in the same row can be exposed at the same time, and the pixels in different rows can be exposed at different times as the shutter rolls over the rows. If the width of the rolling shutter window is E, and the i-th row of the image is exposed between times t and t + E, then the cumulative light integrated by that row F(t) can be expressed using equation (2):
[0040]
[0041] where l(T) is the intensity of the oscillating light source. The intensity l(T) is proportional to the power P, which in turn is proportional to the square of the current. From this, equation (2) can be rewritten as equation (3):
[0042]
[0043] This shows that the integrated light is a sinusoidal wave with the same frequency as the light itself (twice the AC frequency), such that the flicker bands appear as alternating dark and light horizontal bands. Furthermore, the term cos(4 + 2nfE) indicates that the phase of the image can be made different by using a different exposure time E for each image.
[0044] From the above equations, it can be seen that using exposure times, the images can be adjusted such that the flicker bands can be extracted from the images without cancellation. Thus, in embodiments in which the images are captured at different times (e.g., as part of different frames), by using different exposure times for the images, the image analyzer 106 can extract flicker band data from them even though the capture times would otherwise cause the flicker bands to cancel. Additionally, in embodiments in which the images are captured at least partially overlapping times, using different times to capture the images allows flicker band data to be extracted therefrom. In one or more embodiments, the image capture manager 104 can be configured such that the exposure times used to capture the images used to determine the flicker bands can be configured to avoid exposure times in which the flicker bands would cancel. For example, if the image capture manager 104 uses auto exposure, the auto exposure can be configured to avoid exposure times in which the flicker bands would cancel.
[0045] Furthermore, as the time t changes, the time-dependent term in equation (3) oscillates between -1 and 1. This causes the integrated light to oscillate between points at and Thus, the visibility V(E) of the flicker bands is directly proportional to the difference between these two points, as shown in equation (4):
[0046]
[0047] This shows that flicker correction can be performed by setting the exposure time to 1 / 2f or any positive integer multiple of 1 / 2f, since for any positive integer n, sin(nπ) = 0.
[0048] It also follows from the above equation that certain images can produce flicker band data that more clearly captures the flicker bands when compared to each other. For example, given images 110A, 110B, and 110C, images 110A and 110B can be used to more clearly extract the flicker bands because the flicker bands between those images are more out of phase than the flicker bands between images 110A and 110C. In at least one embodiment, given multiple images, image analyzer 106 can be configured to select images that include flicker bands that are most out of phase with each other, or that will otherwise produce the most visible flicker bands. As such, image analyzer 106 can use images 110A and 110B to extract the flicker bands, based at least on the fact that those images have flicker bands that are more out of phase with each other than images 110A and 110C. For example, image analyzer 106 can calculate or otherwise determine the phase difference for the selection of images, or can be otherwise configured to select images with the most out of phase flicker bands for flicker band extraction.
[0049] As described herein, configuration determiner 108 can be configured to determine one or more configurations of at least one sensor, such as one or more of image sensors 102, based on flicker bands 112. For example, based on the oscillation frequency of one or more light sources as calculated or otherwise indicated by flicker band data, configuration determiner 108 can determine a configuration that reduces, eliminates, or otherwise compensates for the oscillation frequency. In one or more embodiments, the configuration can be defined by camera parameters such as those that affect exposure time, frame rate, brightness, aperture, focal length, ISO speed, and the like. In at least one embodiment, the configuration adjusts the exposure time of a frame and / or one or more sub-images of a frame (e.g., low exposure images, high exposure images, medium exposure images, etc.) to reduce or eliminate flicker bands associated with one or more AC components of the identification of one or more light sources. Other camera parameters, such as frame rate, can be maintained constant.
[0050] The image capture manager 104 (and / or a different image capture manager 104) can capture one or more images using one or more configurations determined using the configuration determiner 108. For example, one or more image sensors 102 that capture images for glint band extraction can be used to capture subsequent images using the configurations determined using the configuration determiner 108, and / or one or more other image sensors can be used to capture subsequent images. As an example, the one or more image sensors 102 can include multi-exposure sensors, while the one or more image sensors using the configurations determined using the configuration determiner 108 can be single-exposure sensors that are not capable of multi-exposure, which are typically less expensive than multi-exposure sensors. Additionally or alternatively, one or more other multi-exposure sensors can use the configurations determined using the configuration determiner 108.
[0051] For example, Figure 4 is an example of camera locations and fields of view of an example autonomous vehicle 400 according to some embodiments of the disclosure. The autonomous vehicle 400 can include any number of cameras, such as one or more stereo cameras 468, one or more wide field of view cameras 470 (e.g., fisheye cameras), one or more infrared cameras 472, one or more surround cameras 474 (e.g., 360 degree cameras), one or more long and / or mid-range cameras 498, and / or other camera types. Any combination of cameras can be used to control autonomous driving and / or advanced driver assistance system (ADAS) functionality. Images as described herein (e.g., images for glint band extraction or generated based on glint band extraction) can be generated using any combination of cameras of the autonomous vehicle 400 using the disclosed methods. For example, one or more cameras used for glint band extraction can include one or more multi-exposure sensors to take advantage of embodiments that use a single frame of an image in extracting glint bands. Then, any combination of cameras can benefit from glint band extraction, even if the cameras do not support multi-exposure, or even if the cameras are configured in a way that is not as well suited for glint band extraction. While an autonomous vehicle 400 is shown, similar methods can be used for other types of machines (e.g., robots) or environments that include multiple cameras.
[0052] Each block of each method described herein comprises a computational process that can be performed using any combination of hardware, firmware, and / or software. For instance, portions of each method can be performed by a processor executing instructions stored in memory. The methods can also be embodied as computer-usable instructions stored on computer storage media. As an example only, the methods can be provided as a plug-in to a standalone application, a service, or a hosted service (alone or in combination with another hosted service), or another product. Moreover, as an example only, with regard to Figure 1The systems 100 describe methods. However, these methods can additionally or alternatively be performed by any one system or any combination of systems, including but not limited to those described herein.
[0053] Referring now to Figure 5 , Figure 5 is a flow diagram illustrating a method 500 for compensating for a flicker band using images captured over a shared time period, in accordance with some embodiments of the present disclosure. At block B502, the method 500 includes receiving at least a portion of a first image that includes a first flicker band and is captured over a first time period. For example, the image analyzer 106 can receive first image data from the image sensor 102 exposed to one or more light sources over a first time period. The first image data can represent at least some of the image 110A of the frame, where the image 110A includes a flicker band corresponding to the waveform 310A.
[0054] At block B504, the method 500 includes receiving at least a portion of a second image that includes a second flicker band and is captured over at least the first time period and a second time period. For example, the image analyzer 106 can receive second image data from the image sensor 102 exposed to one or more light sources over at least the first time period and a second time period. The second image data can represent at least some of the image 110B (or the image 110C in other examples) of the frame, where the image 110B includes a flicker band corresponding to the waveform 310B.
[0055] At block B506, the method 500 includes determining a configuration of at least one camera parameter based at least on a difference between the first flicker band and the second flicker band. For example, the image analyzer 106 can use the first image data and the second image data to calculate a difference between the first flicker band and the second flicker band. The configuration determiner 108 can determine a configuration of at least one camera parameter based at least on the difference. The at least one camera parameter can be applied to the image sensor 102 and / or one or more other image sensors to capture one or more images.
[0056] Referring now to Figure 6 , Figure 6 is a flow diagram illustrating a method 600 for compensating for a flicker band using images captured over partially overlapping time periods, in accordance with some embodiments of the present disclosure. At block B602, the method 600 includes receiving at least some of a first image that includes a first flicker band and is captured over a first time period. For example, the image analyzer 106 can receive first image data representing at least some of the image 110A captured using a first exposure to one or more light sources over a first time period. The image 110A includes a flicker band corresponding to a waveform 310A produced by the one or more light sources.
[0057] At block B604, the method 600 includes receiving at least a portion of a second image that includes a second flicker band and is captured over at least a first time period that partially overlaps with the first time period. For example, the image analyzer 106 can receive second image data from the image sensor 102 exposed to the one or more light sources over a second time period that at least partially overlaps with the first time period. The second image data can represent at least some of the image 110B (or image 110C in other examples), where the image 110B includes a flicker band corresponding to the waveform 310B.
[0058] At block B606, the method 600 includes determining an oscillation frequency of the one or more light sources based at least on the first flicker band and the second flicker band. For example, the image analyzer 106 can determine an oscillation frequency of the one or more light sources (e.g., the waveform 320) based at least on the first flicker band and the second flicker band using the first image data and the second image data. The image analyzer 106 can further emit data representing the oscillation frequency to the configuration determiner 108 for configuring the at least one sensor (e.g., the image sensor 102) based at least on the oscillation frequency. For example, data representing the oscillation frequency can be provided to the configuration determiner 108 for configuring the at least one sensor (e.g., the image sensor 102).
[0059] Referring now to Figure 7 , Figure 7 is a flow diagram illustrating a method 700 for compensating for a flicker band using images captured over different amounts of time, in accordance with some embodiments of the present disclosure. At block B702, the method 700 includes capturing a first image that includes a first flicker band over a first amount of time. For example, the image capture manager 104 can capture the image 110A using the image sensor 102 using a first exposure to the one or more light sources for a first amount of time. The image 110A can include a flicker band produced by the one or more light sources and corresponding to the waveform 310A.
[0060] At block B704, the method 700 includes capturing a second image that includes a second flicker band over a second amount of time that is different from the first amount of time. For example, the image capture manager 104 can capture the image 110B (or 110C) using the image sensor 102 using a second exposure to the one or more light sources for a second amount of time that is different from the first amount of time. The image 110B can include a flicker band produced by the one or more light sources and corresponding to the waveform 310B.
[0061] At block B706, the method 700 includes configuring at least one camera parameter based at least on the oscillation frequency of the one or more light sources, the oscillation frequency of the one or more light sources determined based at least on the first flicker band and the second flicker band. For example, the image capture manager 104 (or a different image capture manager) can configure at least one camera parameter based at least on the oscillation frequency of the one or more light sources, the oscillation frequency determined based at least on the flicker band of the image 110A and the flicker band of the image 110B.
[0062] Example computing device
[0063] Figure 8 is a block diagram of an example computing device 800 suitable for implementing some embodiments of the present disclosure. The computing device 800 can include an interconnection system 802 coupling the following components: a memory 804, one or more central processing units (CPUs) 806, one or more graphics processing units (GPUs) 808, a communication interface 810, input / output (I / O) ports 812, input / output components 814, a power supply 816, one or more presentation components 818 (e.g., display(s)), and one or more logic units 820. In at least one embodiment, the computing device 800(s) can include one or more virtual machines (VMs), and / or any component thereof can include a virtual component (e.g., a virtual hardware component). For a non-limiting example, one or more of the GPUs 808 can include one or more vGPUs, one or more of the CPUs 806 can include one or more vCPUs, and / or one or more of the logic units 820 can include one or more virtual logic units. As such, the computing device 800(s) can include discrete components (e.g., a full GPU dedicated to the computing device 800), virtual components (e.g., a portion of a GPU dedicated to the computing device 800), or a combination thereof.
[0064] Although Figure 8 The various blocks shown in the diagram of FIG. 8A can be connected via the interconnection system 802, which can comprise one or more buses (e.g., bus 806A and bus 806B). In some embodiments, the interconnection system 802 can comprise a system-on-a-chip (SoC) or a system-in-a-package (SiP). In some embodiments, the interconnection system 802 can comprise a multi-core interconnect, a point-to-point interconnect, a bus-based interconnect, or a combination thereof. In some embodiments, the interconnection system 802 can comprise a multi-layered interconnect, such as a three-layered interconnect (e.g., a core complex layer, a last-level cache (LLC) layer, and a memory layer). In some embodiments, the interconnection system 802 can comprise a cache coherent interconnect fabric, a cache coherent NUMA, or a combination thereof. Figure 8The computing device 800 is merely illustrative. Distinction is not made between "workstation" "server", "laptop", "desktop", "tablet", "client device", "mobile device", "hand-held device", "game console", "electronic control unit (ECU)", "virtual reality system", and / or other device or system types within the scope of what is Figure 8 The computing device 800 is merely illustrative. Distinction is not made between "workstation" "server", "laptop", "desktop", "tablet", "client device", "mobile device", "hand-held device", "game console", "electronic control unit (ECU)", "virtual reality system", and / or other device or system types within the scope of what is
[0065] The interconnection between elements and / or inter-chip communications can be through various means, such as a bus, point-to-point connections, or other mechanisms. The interconnection system 802 can represent one or more busses or links, such as an address bus, a data bus, a control bus, or a combination thereof. The interconnection system 802 can include one or more bus or link types, such as an Industry Standard Architecture (ISA) bus, an Extended Industry Standard Architecture (EISA) bus, a Video Electronics Standards Association (VESA) bus, a Peripheral Component Interconnect (PCI) bus, a Peripheral Component Interconnect Express (PCIe) bus, and / or another type of bus or link. In some embodiments, direct connections exist between components. As an example, the CPU 806 can be directly connected to the memory 804. Further, the CPU 806 can be directly connected to the GPU 808. Where direct or point-to-point connections exist between components, the interconnection system 802 can include a PCIe link to perform the connection. In these examples, a PCI bus need not be included in the computing device 800.
[0066] The memory 804 can include any of a wide variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computing device 800. By way of example, and not limitation, computer-readable media can comprise computer storage media and communication media.
[0067] Computer storage media can include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, and / or other data types. For example, the memory 804 can store computer readable instructions such as those representing programs and / or program elements, e.g., an operating system. Computer storage media can include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and that can be accessed by the computing device 800. Computer storage media, as used herein, excludes signals per se.
[0068] Computer storage media can include computer-readable instructions, data structures, program modules, and / or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term "modulated data signal" can refer to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, computer storage media can include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of the above should also be included within the scope of computer readable media.
[0069] The CPUs 806 can be configured to execute at least some of the computer- readable instructions in order to control one or more components of the computing device 800 to perform one or more of the methods and / or processes described herein. Each of the CPUs 806 can include one or more cores (e.g., one, two, four, eight, twenty-eight, seventy-two, etc.) capable of handling a large number of software threads concurrently. The CPUs 806 can include any type of processors and can include different types of processors depending on the type of computing device 800 being implemented (e.g., processors with fewer cores for mobile devices and processors with more cores for servers). For example, depending on the type of computing device 800, the processors can be Advanced RISC Machines (ARM) processors implemented using reduced instruction set computing (RISC) or x86 processors implemented using complex instruction set computing (CISC). The computing device 800 can include one or more CPUs 806 in addition to one or more microprocessors or supplemental co-processors such as math co-processors.
[0070] In addition to or in place of CPU 806, GPU 808 can be configured to execute at least some computer-readable instructions to control one or more components of computing device 800 to perform one or more of the methods and / or processes described herein. One or more of GPU 808 can be an integrated GPU (e.g., with one or more of CPU 806 and / or one or more of GPU 808 can be a discrete GPU). In embodiments, one or more of GPU 808 can be a co-processor of one or more of CPU 806. GPU 808 can be used by computing device 800 to render graphics (e.g., 3D graphics) or to perform general purpose computing. For example, GPU 808 can be used for general purpose computing on GPUs (GPGPU). GPU 808 can include hundreds or thousands of cores capable of processing hundreds or thousands of software threads concurrently. GPU 808 can generate pixel data for an output image in response to rendering commands (e.g., received from CPU 806 via a host interface). GPU 808 can include graphics memory, such as display memory, for storing pixel data or any other suitable data (such as GPGPU data). Display memory can be included as part of memory 804. GPU 808 can include two or more GPUs operating in parallel (e.g., via a link). The link can connect the GPUs directly (e.g., using NVLINK) or can connect the GPUs through a switch (e.g., using NVSwitch). When combined together, each GPU 808 can generate different portions of pixel data or GPGPU data for output or for different outputs (e.g., a first GPU for a first image and a second GPU for a second image). Each GPU can include its own memory or can share memory with other GPUs.
[0071] In addition to or in place of CPU(s) 806 and / or GPU(s) 808, logic unit(s) 820 can be configured to execute at least some of the computer-readable instructions to control one or more components of computing device 800 to perform one or more of the methods and / or processes described herein. In embodiments, CPU(s) 806, GPU(s) 808, and / or logic unit(s) 820 can execute any combination of methods, processes, and / or portions thereof discretely or jointly. One or more of logic units 820 can be one or more of CPU(s) 806 and / or GPU(s) 808 and / or integrated in one or more of CPU(s) 806 and / or GPU(s) 808, and / or one or more of logic units 820 can be discrete components or otherwise external to CPU(s) 806 and / or GPU(s) 808. In embodiments, one or more of logic units 820 can be a co-processor of one or more of CPU(s) 806 and / or GPU(s) 808.
[0072] Examples of logic units 820 include one or more processing cores and / or components thereof, such as tensor cores (TCs), tensor processing units (TPUs), pixel vision cores (PVCs), vision processing units (VPUs), graphics processing clusters (GPCs), texture processing clusters (TPCs), streaming multi-processors (SMs), tree traversal units (TTUs), artificial intelligence accelerators (AIAs), deep learning accelerators (DLAs), arithmetic logic units (ALUs), application-specific integrated circuits (ASICs), floating point units (FPUs), input / output (I / O) elements, peripheral component interconnect (PCI) or peripheral component interconnect express (PCIe) elements, and / or the like.
[0073] Communication interface 810 can include one or more receivers, transmitters, and / or transceivers that enable computing device 800 to communicate with other computing devices via electronic communication networks, including wired and / or wireless communication. Communication interface 810 can include components and functionality to enable communication over any of a number of different networks, such as wireless networks (e.g., Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee, etc.), wired networks (e.g., communication over Ethernet or InfiniBand), low power wide area networks (e.g., LoRaWAN, SigFox, etc.), and / or the Internet.
[0074] I / O ports 812 can enable the computing device 800 to logically couple to other devices including I / O components 814, presentation components 818, and / or other components, some of which can be built in to (e.g., integrated in) the computing device 800. Illustrative I / O components 814 include a microphone, mouse, keyboard, joystick, game pad, game controller, satellite dish, scanner, printer, wireless device, etc. The I / O components 814 can provide a natural user interface (NUI) that processes air gestures, voice, or other physiological inputs generated by a user. In some examples, inputs can be transmitted to an appropriate network element for further processing. A NUI can implement any combination of speech recognition, handwriting recognition, facial recognition, biometric recognition, gesture recognition both on screen and adjacent to the screen, air gestures, head and eye tracking, and touch recognition (as described in more detail below) associated with a display of the computing device 800. The computing device 800 can include depth cameras, infrared cameras, RGB cameras, touch screen technology, and combinations of these, such as a stereoscopic camera system to perform gesture detection and recognition. Additionally, the computing device 800 can include accelerometers or gyroscopes (e.g., as part of an inertial measurement unit, IMU) to enable detection of motion. In some examples, the output of the accelerometers or gyroscopes can be used by the computing device 800 to render immersive augmented reality or virtual reality.
[0075] A power supply 816 can include a hard-wired power supply, a battery power supply, or a combination thereof. The power supply 816 can supply power to the computing device 800 to enable the components of the computing device 800 to operate.
[0076] The presentation components 818 can include a display (e.g., a monitor, a touch screen, a television, a heads-up display (HUD), other display types, or combinations thereof), speakers, and / or other presentation components. The presentation components 818 can receive data from other components (e.g., the GPU 808, the CPU 806, etc.) and output the data (e.g., as a
[0077] Example data center
[0078] Figure 9 An example data center 900 that can be used in at least one embodiment of the present disclosure is shown. The data center 900 can include a data center infrastructure layer 910, a framework layer 920, a software layer 930, and / or an application layer 940.
[0079] In at least one embodiment, as Figure 9As shown, the data center infrastructure layer 910 can include a resource orchestrator 912, grouped computing resources 914, and node computing resources (“node C.R.”) 916(1)-916(N), where “N” represents any whole, positive integer. In at least one embodiment, the node C.R.s 916(1)-916(N) can include, but are not limited to, any number of central processing units (CPUs) or other processors (including accelerators, field programmable gate arrays (FPGAs), graphics processors or graphics processing units (GPUs), etc.), memory devices (such as dynamic read-only memory), storage devices (such as solid state or disk drives), network input / output (NW I / O) devices, network switches, virtual machines (VMs), power modules, and / or cooling modules, etc. In some embodiments, one or more of the node C.R.s 916(1)-916(N) can correspond to a server having one or more of the above-described computing resources. Further, in some embodiments, the node C.R.s 916(1)-916(N) can include one or more virtual components, such as a vGPU, a vCPU, etc., and / or one or more of the node C.R.s 916(1)-916(N) can correspond to a virtual machine (VM).
[0080] In at least one embodiment, the grouped computing resources 914 can include separate groupings of node C.R.s housed within one or more racks (not shown), or housed within a number of racks within various geographic locations (also not shown). The separate groupings of node C.R.s within the grouped computing resources 914 can include grouped computing, network, memory, or storage resources that can be configured or allocated to support one or more workloads. In at least one embodiment, several node C.R.s 916 including CPUs, GPUs, and / or other processors can be grouped within one or more racks to provide computing resources to support one or more workloads. The one or more racks can also include any number and combination of power modules, cooling modules, and network switches.
[0081] The resource orchestrator 922 can configure or otherwise control the one or more node C.R.s 916(1)-916(N) and / or the grouped computing resources 914. In at least one embodiment, the resource orchestrator 922 can include a software design infrastructure (“SDI”) management entity for the data center 900. The resource orchestrator can include hardware, software, or some combination thereof.
[0082] In at least one embodiment, as Figure 9As shown, framework layer 920 may include a job scheduler 932, a configuration manager 934, a resource manager 936, and a distributed file system 938. Framework layer 920 may include a framework of software 932 supporting software layer 930 and / or one or more applications 942 of application layer 940. Software 932 or application 942 may respectively include web-based service software or applications, such as services or applications provided by Amazon Web Services, Google Cloud, and Microsoft Azure. Framework layer 920 may be, but is not limited to, a free and open-source software web application framework, such as Apache Spark, which can utilize distributed file system 938 for large-scale data processing (e.g., "big data"). TM (Hereinafter referred to as "Spark"). In at least one embodiment, the job scheduler 932 may include a Spark driver to facilitate the scheduling of workloads supported by various layers of the data center 900. The configuration manager 934 may be able to configure different layers, such as the software layer 930 and the framework layer 920, which includes Spark and a distributed file system 938 for supporting large-scale data processing. The resource manager 936 is able to manage cluster or group computing resources mapped to or allocated to support the distributed file system 938 and the job scheduler 932. In at least one embodiment, the cluster or group computing resources may include grouped computing resources 914 on the data center infrastructure layer 910. The resource manager 936 may coordinate with the resource coordinator 912 to manage these mapped or allocated computing resources.
[0083] In at least one embodiment, the software 932 included in the software layer 930 may include software used by at least a portion of nodes CR916(1)-916(N), grouped computing resources 914, and / or the distributed file system 938 of the framework layer 920. One or more types of software may include, but are not limited to, Internet web page search software, email virus scanning software, database software, and streaming video content software.
[0084] In at least one embodiment, one or more application programs 942 included in application layer 940 can include one or more types of application programs used by at least portions of node C.R.s 916(1)-916(N), grouped computing resources 914, and / or distributed file system 938 of framework layer 920. One or more types of application programs can include, but are not limited to, any number of genomics applications, cognitive computing and machine learning applications including training or inferencing software, machine learning framework software (e.g., PyTorch, TensorFlow, Caffe, etc.), and or other machine learning applications used in conjunction with one or more embodiments.
[0085] In at least one embodiment, any of configuration manager 934, resource manager 936, and resource orchestrator 912 can implement any number and type of self-modification actions based on any amount and type of data acquired in any technically feasible manner. Self-modification actions can relieve data center 900’s data center operators of making possibly poor configuration decisions and can avoid underutilization and / or poor performance of portions of a data center.
[0086] Data center 900 can include tools, services, software, or other resources to train one or more machine learning models or use one or more machine learning models to predict or infer information in accordance with one or more embodiments described herein. For example, a machine learning model can be trained according to a neural network architecture by computing weight parameters using software and computing resources described above with respect to data center 900. In at least one embodiment, using resources described above with respect to data center 900, a trained or deployed machine learning model corresponding to one or more neural networks can be used to infer or predict information using weight parameters computed by one or more training techniques described herein, but not limited to.
[0087] In at least one embodiment, a data center can use CPUs, application specific integrated circuits (ASICs), GPUs, FPGAs, and or other hardware (or virtual computing resources corresponding thereto) to perform training and / or inference using resources described above. Moreover, one or more software and / or hardware resources described above can be configured as a service to allow users to train or perform information inference, such as image recognition, speech recognition, or other artificial intelligence services.
[0088] Example Network Environment
[0089] Network environments suitable for use in implementing embodiments of the present disclosure can include one or more client devices, servers, network-attached storage (NAS), other backend devices, and / or other device types. Client devices, servers, and / or other device types (e.g., each device) can be implemented on one or more instances of computing device(s) 800 — e.g., each device can include similar components, features, and / or functionality of computing device(s) 800. Further, where a backend device (e.g., a server, NAS, etc.) is implemented, the backend device can be included as part of a data center 900, an example of which is described in greater detail herein with respect to FIG. 9. Figure 8 Figure 9
[0090] Components of the network environment can communicate with each other via network(s), which can be wired, wireless, or both. The network(s) can include one or more of a plurality of networks or one of a plurality of networks. For example, the network(s) can include one or more wide area networks (WANs), one or more local area networks (LANs), one or more public networks such as the Internet, and / or one or more private networks such as the Public Switched Telephone Network (PSTN) and / or one or more private networks. Where the network(s) include a wireless telecommunication network, components such as base stations, communication towers, or even access points (among other components) can provide wireless connectivity.
[0091] Compatible network environments can include one or more peer-to-peer network environments (in which case servers can not be included in the network environment) and one or more client-server network environments (in which case one or more servers can be included in the network environment). In a peer-to-peer network environment, functionality described herein with respect to servers can be implemented on any number of client devices.
[0092] In at least one embodiment, a network environment can include one or more cloud-based network environments, distributed computing environments, combinations thereof, and the like. A cloud-based network environment can include a framework layer, a job scheduler, a resource manager, and a distributed file system implemented on one or more servers, which can include one or more core network servers and / or edge servers. The framework layer can include a framework that supports one or more applications of software and / or application layers. The software or applications can include network-based service software or applications, respectively. In embodiments, one or more client devices can use the network-based service software or applications (e.g., by accessing the service software and / or applications via one or more application programming interfaces (APIs)). The framework layer can be, but is not limited to, a type of free and open-source software web application framework, such as can use a distributed file system for large-scale data processing (e.g., “big data”).
[0093] A cloud-based network environment can provide cloud computing and / or cloud storage that performs any combination of the computing and / or data storage functions described herein (or one or more portions thereof). Any of these different functions can be distributed across multiple locations from central or core servers (e.g., one or more data centers that can be distributed across states, regions, countries, the globe, and the like). Core servers can designate at least a portion of a function to an edge server if a connection to a user (e.g., a client device) is relatively close to the edge server. A cloud-based network environment can be private (e.g., limited to a single organization), public (e.g., available to many organizations), and / or combinations thereof (e.g., a hybrid cloud environment).
[0094] A client device can include at least some of the components, features, and functionality of the example computing device(s) 800 described herein. Figure 8 By way of example and not limitation, a client device can be implemented as a personal computer (PC), a laptop computer, a mobile device, a smart phone, a tablet computer, a smart watch, a wearable computer, a personal digital assistant (PDA), an MP3 player, a virtual reality headset, a global positioning system (GPS) or device, a video player, a camera, a surveillance device or system, a vehicle, a ship, a spacecraft, a virtual machine, a drone, a robot, a handheld communication device, a hospital device, a gaming device or system, an entertainment system, a vehicle computer system, an embedded system controller, a remote control, an appliance, a consumer electronic device, a workstation, an edge device, any combination of these depicted devices, or any other suitable apparatus.
[0095] The subject disclosure can be described in the general context of computer code or machine-useable instructions, including computer-executable instructions such as program modules, being executed by a computer or other machine, such as a personal data assistant or other handheld device. Generally, program modules including routines, programs, objects, components, data structures, and the like, refer to code that performs particular tasks or implements particular abstract data types. The subject disclosure can be practiced in a variety of system configurations, including hand-held devices, consumer electronics, general- purpose computers, more specialty computing devices, and the like. The subject disclosure can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
[0096] As used herein, the recitation of "and / or" with respect to two or more elements should be interpreted to mean that one element or a combination of elements can be used. For example, "element A, element B, and / or element C" can include just element A, just element B, just element C, element A and element B, element A and element C, element B and element C, or element A, B, and C. Further, "at least one of element A or element B" can include at least one of element A, at least one of element B, or at least one of at least one of element A and element B. Further still, "at least one of element A and element B" can include at least one of element A, at least one of element B, or at least one of at least one of element A and element B.
[0097] The subject matter of the present disclosure is described with specificity herein to meet statutory requirements. However, the description itself is not intended to limit the scope of the disclosure. Rather, the inventors have contemplated that the claimed subject matter might also be embodied in other specific forms without departing from the spirit or essential characteristics of the disclosure. Furthermore, although the terms "step" and / or "block" can be used herein to connote different elements of methods employed, the terms should not be interpreted as implying any particular order among or between various steps herein disclosed unless and except when the order of individual steps is explicitly described.
Claims
1. A method comprising: receiving first image data from one or more high dynamic range (HDR) sensors exposed to one or more light sources for a first time period, the first image data representing at least some of a first image, the first image including a first flicker band produced by the one or more light sources; receiving second image data from the one or more HDR sensors exposed to the one or more light sources for at least the first time period and a second time period after the first time period, the second image data representing at least some of a second image, the second image including a second flicker band produced by the one or more light sources; and determining a configuration of at least one camera parameter using the first image data and the second image data based at least on a first phase difference between the first flicker band and the second flicker band being greater than a second phase difference between the first flicker band and a third flicker band of a third image captured using the one or more HDR sensors.
2. The method of claim 1, wherein, the at least one camera parameter includes an exposure time for capturing one or more images, and the exposure time is a multiple of one-half of an oscillation frequency corresponding to the one or more light sources.
3. The method of claim 1, wherein, the first image and the second image are captured using exposure times that share a common start time.
4. The method of claim 1, wherein the determining of the configuration comprises: the first image data and the second image data are used to compute a difference between the first flicker band and the second flicker band.
5. The method of claim 1, wherein the determining of the configuration comprises: an oscillation frequency of the one or more light sources is determined, and the at least one camera parameter is based at least on the oscillation frequency.
6. The method of claim 1, wherein, the at least one camera parameter is a camera parameter of the one or more HDR sensors.
7. The method of claim 1, wherein, the at least one camera parameter is a camera parameter of one or more single-exposure sensors.
8. The method of claim 1, wherein, the configuration is computed based at least on subtracting the first flicker band and the second flicker band from each other.
9. A system comprising: one or more processing units; one or more memory devices storing instructions that, when executed using the one or more processing units, cause the one or more processing units to perform operations comprising: receiving first image data representing at least some of a first image captured using a first exposure to one or more light sources for a first time period, the first image including a first flicker band produced by the one or more light sources; receiving second image data representing at least some of a second image captured using a second exposure to the one or more light sources for a second time period that partially overlaps the first time period, the second image including a second flicker band produced by the one or more light sources; determining an oscillation frequency of the one or more light sources using the first image data and the second image data based at least on a first phase difference between the first flicker band and the second flicker band being greater than a second phase difference between the first flicker band and a third flicker band of a third image, wherein the third flicker band is produced by the one or more light sources; and transmitting data causing a configuration of the at least one sensor based at least on the oscillation frequency.
10. The system of claim 9, wherein, The first image and the second image belong to a same frame captured by one or more multi-exposure sensors.
11. The system of claim 9, wherein, The first image is captured using a first sensor and the second image is captured using a second sensor.
12. The system of claim 9, wherein, The configuration is an exposure time used by the at least one sensor to capture one or more images.
13. The system of claim 9, wherein, The first image and the second image are captured using exposure times sharing a common start time.
14. The system of claim 9, wherein, The determination of the oscillation frequency includes a computation of a difference between the first flicker band and the second flicker band.
15. The system of claim 9, wherein, The system is included in at least one of: a control system for an autonomous or semi-autonomous machine; a perception system for an autonomous or semi-autonomous machine; a system for performing simulation operations; a system for performing deep learning operations; a system implemented using edge devices; a system implemented using robots; a system containing one or more virtual machines (VMs); a system implemented at least partially in a data center; or a system implemented at least partially using cloud computing resources.
16. A processor comprising: one or more circuits to capture a first image using a first exposure of a first amount of time to one or more light sources, the first image including a first flicker band produced by the one or more light sources, capture a second image using a second exposure of a second amount of time to the one or more light sources different from the first amount of time, the second image including a second flicker band produced by the one or more light sources, using the first image and the second image, compute a difference based at least on a first phase difference between the first flicker band and the second flicker band being greater than a second phase difference between the first flicker band and a third flicker band of a third image, and configure at least one camera parameter based at least on the difference.
17. The processor of claim 16, wherein, The first image and the second image belong to a same frame captured by one or more multi-exposure sensors of a camera device.
18. The processor of claim 16, wherein, The first image and the second image are captured using exposure times sharing a common start time.
19. The processor of claim 16, wherein, The first exposure is at a first time period, the first time period occurring within a second time period of the second exposure.
20. The processor of claim 16, wherein, The one or more circuits belong to a camera device.
Citation Information
Patent Citations
Light flicker mitigation in machine vision systems
US20190208106A1