Method and system for determining a propagation time of a light pulse
By using the technique of finding frequent items in the data stream in the LIDAR system, the high storage requirement problem of the histogram-binning technique is solved, and a more efficient light pulse propagation time estimation is achieved, which reduces storage requirements and improves processing speed and accuracy.
Patent Information
- Application Number
- CN202010106086.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-04-09
- Filing Date
- 2020-02-20
- Publication Date
- 2025-10-17
- Estimated Expiration
- 2040-02-20
AI Technical Summary
In existing LIDAR systems, the histogram-binning technique requires a large amount of memory to record the timestamps of photon detection events, resulting in high storage requirements and processing complexity, especially in large-scale and high-resolution situations.
The method adopts a technology based on finding frequent items in data streams, generates and processes multiple timestamp values, determines the most frequent timestamp value to estimate the propagation time of the optical pulse, and reduces the dependence on memory.
Memory requirements are reduced, data throughput and processing speed are increased, while maintaining the accuracy of propagation time estimates, reducing noise and enhancing robustness.
Smart Images

Figure CN111596301B_ABST
Abstract
Description
[0001] This patent application claims priority to U.S. Provisional Patent Application No. 62 / 808,280, filed February 20, 2019, and U.S. Patent Application No. 16 / 379,782, filed April 9, 2019, the disclosures of which are incorporated herein by reference in their entirety. TECHNICAL FIELD
[0002] The subject matter disclosed herein relates generally to direct time-of-flight (TOF) sensors, and more particularly, to techniques for determining a propagation time of a light pulse. BACKGROUND
[0003] In a light detection and ranging (LIDAR) based three-dimensional (3D) imaging system, thousands of photon detection events can be recorded on a single frame in response to a series of laser pulses that have been emitted from a light pulse source. Typically, a photon detection event at a pixel generates a time stamp that forms a time histogram of photon detection events at the pixel. Subsequently, a propagation time of a laser pulse is determined based on a peak of the histogram, which is used to provide an estimated distance to an object that has reflected the laser pulse.
[0004] One drawback associated with conventional histogram-binning techniques is the need for a size of memory that provides a sufficient number of bins for each pixel that accounts for a depth resolution of the system over an entire range of the system. For example, a LIDAR camera system that measures a maximum distance of 40 meters with a depth resolution of 15 cm requires 280 bins for one pixel. If a light sensor array includes 128 x 144 pixels, the total number of bins required will be greater than five million. If the LIDAR camera system is to operate at 30 frames per second (fps) with 20 laser pulses illuminating the entire scene per frame, each pixel will output 20 time stamp values per frame, or 600 time stamp values per second. If the time stamp for each photon detection event is 12 bits, greater than 132 MB of data per frame will need to be stored in more than five million bins per frame. As the system range and / or the depth resolution increases for a LIDAR system, and as the size of the sensor array increases, the size of the amount of data processed per frame changes accordingly. Additionally, the time stamps received from a pixel during a frame will typically be concentrated in only some of the bins, while the remaining bins associated with the pixel are not used. SUMMARY
[0005] An example embodiment provides a method of determining a propagation time of a light pulse between a light pulse source and a pixel of an array of light sensors, the method comprising: generating a plurality of timestamp values of a plurality of light pulses propagating between the light pulse source and the pixel, each timestamp value comprising a time of flight of a respective light pulse propagating between the light pulse source and the pixel; and determining the propagation time of the light pulse between the light pulse source and the pixel as a most frequent timestamp value of the plurality of timestamp values. In one embodiment, the step of determining the propagation time between the light pulse source and the pixel comprises: initializing a value of each element of a set of elements to be equal to zero, the set of elements comprising a predetermined number of elements; initializing a value of a counter associated with each element of the set of elements; processing the plurality of timestamp values by determining whether each timestamp value is equal to a value of an element of the set of elements; if the value of the element of the set of elements is equal to zero, replacing the value of the element with the timestamp value and incrementing the value of the counter associated with the replaced element; if the timestamp value is equal to the value of an element of the set of elements, incrementing the value of the counter associated with the element having a value equal to the timestamp value; if the timestamp value is not equal to the value of an element of the set of elements, decrementing the value of all of the counters associated with elements of the set of elements; after all of the timestamp values of the plurality of timestamp values have been processed, initializing a value of each counter corresponding to an element of the set of elements; determining whether each timestamp value of the plurality of timestamp values is equal to a value of an element of the set of elements; if a timestamp value is equal to a value of an element of the set of elements, incrementing the value of the counter associated with the element having a value equal to the timestamp value; and determining an element of the set of elements associated with a greatest counter value as the timestamp value representing the propagation time of the light pulse between the light pulse source and the pixel. In another example embodiment, the step of determining the propagation time between the light pulse source and the pixel comprises: initializing a value of each element of a set of elements to be equal to zero, the set of elements comprising a predetermined number of elements; initializing a value of a counter associated with each element of the set of elements; processing the plurality of timestamp values by: determining whether each timestamp value is equal to a value of an element of the set of elements; if the value of the element of the set of elements is equal to zero, replacing the value of the element with the timestamp value and incrementing the value of the counter associated with the replaced element; if the timestamp value is equal to the value of an element of the set of elements, incrementing the value of the counter associated with the element having a value equal to the timestamp value; if the timestamp value is not equal to the value of an element of the set of elements, replacing the value of an element associated with a smallest counter value with the timestamp value and incrementing the value of the counter associated with the replaced element by one; and after all of the timestamp values of the plurality of timestamp values have been processed, determining an element of the set of elements having a greatest counter value as the timestamp value representing the propagation time of the light pulse between the light pulse source and the pixel.
[0006] Another example embodiment provides a system for determining a propagation time of a light pulse between a light pulse source and a pixel of an array of light sensors, wherein the system can include: a plurality of registers; a plurality of counters, wherein each counter can be associated with a respective register; and a timestamp evaluator configured to determine whether each of a plurality of timestamp values is equal to a value stored in one of the plurality of registers. If the value stored in the register is equal to zero, the timestamp evaluator replaces the value of the register with the timestamp value and increments the value of the counter associated with the register. If the timestamp value is equal to the value stored in the register, the timestamp evaluator increments the value of the counter associated with the register storing the value equal to the timestamp value. If the timestamp value is not equal to the value stored in the register, the timestamp evaluator decrements the value of all of the plurality of counters associated with all of the plurality of registers. After all of the plurality of timestamp values have been evaluated, the timestamp evaluator can be further configured to: initialize the value of each counter, determine whether each of the plurality of timestamp values is equal to a value stored in a register, increment the value of the counter associated with the register storing the value equal to the timestamp value if the timestamp value is equal to the value stored in the register, and determine the timestamp value stored in the register associated with the value of the largest counter as the timestamp value representing the propagation time of the light pulse between the light pulse source and the pixel.
[0007] Still another example embodiment provides a system for determining a propagation time of a light pulse between a light pulse source and a pixel of an array of light sensors, wherein the system can include: a plurality of registers; a plurality of counters, wherein each counter can be associated with a respective register; and a timestamp evaluator configured to determine whether each of a plurality of timestamp values is equal to a value stored in one of the plurality of registers. If the value stored in the register is equal to zero, the timestamp evaluator replaces the value of the register with the timestamp value and increments the value of the counter associated with the register. If the timestamp value is equal to the value stored in the register, the timestamp evaluator increments the value of the counter associated with the register storing the value equal to the timestamp value. If the timestamp value is not equal to the value stored in the register, the timestamp evaluator replaces the value of the register with the timestamp value associated with at least one count and increments the value of the counter associated with the register having the replaced value by one. After all of the plurality of timestamp values have been evaluated, the timestamp evaluator can be further configured to determine the timestamp value stored in the register having the largest counter value as the timestamp value representing the propagation time of the light pulse between the light pulse source and the pixel. BRIEF DESCRIPTION OF DRAWINGS
[0008] Aspects of the subject matter disclosed herein will now be described with reference to the example embodiments illustrated in the drawings, in which:
[0009] Figure 1 is a functional block diagram of an example embodiment of a timestamp processing system according to the subject matter disclosed herein;
[0010] Figure 2 is a flowchart of a first example embodiment of a method for determining an estimated propagation time of a light pulse between a light pulse source and a pixel of a light sensor array according to the subject matter disclosed herein;
[0011] Figure 3 is a flowchart of a second example embodiment of a method for determining an estimated propagation time of a light pulse between a light pulse source and a pixel of a light sensor array according to the subject matter disclosed herein;
[0012] Figures 4A to 4D is an example range image and example intensity image results of a conventional histogram-binning technique compared to the techniques disclosed herein. DETAILED DESCRIPTION
[0013] In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the disclosure. However, it will be understood by those skilled in the art that the various aspects of the disclosure can be practiced without these specific details. In other instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the subject matter disclosed herein.
[0014] Reference throughout this specification to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one embodiment of the disclosure. Thus, the appearance of the phrases "in one embodiment" or "in an embodiment" or "according to one embodiment" (or other phrases having similar meanings) at various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics can be combined in any suitable manner in one or more embodiments. In this regard, the term "exemplary" as used herein means "serving as an example, instance, or illustration." Any embodiment described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments. Furthermore, with respect to the use of singular terms, such as "a," "an," "the," etc., these terms are intended to mean one or more, unless the context clearly indicates otherwise. Also, note that the various drawings illustrated and discussed herein are for illustration only and are not drawn to scale. Similarly, the various waveforms and timing charts illustrated herein are for illustration only and are not drawn to scale. For example, the size of some of the elements can be exaggerated relative to other elements for clarity. Further, if deemed appropriate, reference numerals can be repeated among the figures to indicate like elements.
[0015] The terms used herein are for the purpose of describing specific exemplary embodiments only and are not intended to limit the claimed subject matter. As used herein, unless the context clearly indicates otherwise, the singular is intended to include the plural. It will also be understood that the terms "comprise" and / or "include," when used in this specification, specify the presence of the described features, wholes, steps, operations, elements, components, and / or groups thereof, but do not exclude the presence or addition of one or more other features, wholes, steps, operations, elements, components, and / or groups thereof. As used herein, the terms "first," "second," etc. are used as labels for the nouns following them and, unless explicitly defined as such, do not imply any type of ordering (e.g., spatial, temporal, logical, etc.). In addition, the same reference numerals may be used in two or more figures to represent parts, components, blocks, circuits, units, or modules having the same or similar functions. However, such use is for simplicity of description and ease of discussion only; it does not indicate that the structure or construction details of such components or units are the same in all embodiments, or that such commonly referenced components / modules are the only way to implement the teachings of the specific embodiments disclosed herein.
[0016] Unless otherwise defined, all terms used herein (including technical and scientific terms) have the same meaning as commonly understood by one of ordinary skill in the art to which this subject matter belongs. It will also be understood that, unless expressly defined as such herein, terms (such as those defined in commonly used dictionaries) should be interpreted as having a meaning consistent with their meaning in the context of the relevant art and will not be interpreted in an idealized or overly formal sense.
[0017] As used herein, the term "module" refers to any combination of software, firmware, and / or hardware configured to provide the functionality described herein in conjunction with the module. Software may be implemented as a software package, code, and / or instruction set or instructions, and the term "hardware," as used in any implementation described herein, may include, for example, individually or in any combination, hard-wired circuitry, programmable circuitry, state machine circuitry, and / or firmware that stores instructions executed by programmable circuitry. Modules may be implemented collectively or individually as circuits that form part of a larger system, such as, but not limited to, an integrated circuit (IC), an application specific integrated circuit (ASIC), a system on a chip (SOC), etc.
[0018] The subject matter disclosed herein provides an estimated propagation time of a light pulse between a light pulse source and a pixel of a light sensor array of a direct TOF (time of flight) system, such as a LIDAR (light detection and ranging) based camera system. Instead of conventionally using a histogram-binning technique that utilizes a sufficient number of bins covering the range and depth resolution of the system to detect peaks, the subject matter disclosed herein determines the estimated propagation time of a laser pulse based on a "find frequent items in a data stream" technique. In one embodiment, raw timestamp data output from a pixel as a data stream can be temporarily stored, processed twice, and then discarded to provide an accurate determination of the propagation time estimate of a light pulse between a light pulse source and the pixel. In another embodiment, raw timestamp data obtained as a data stream can also be processed once and discarded to provide an approximate determination of the propagation time estimate of a light pulse between a light pulse source and the pixel. The propagation time estimate can be updated during processing, and when the processing of the data stream is complete, the most frequently occurring timestamp can be obtained. There is no need to keep the raw data in memory, thereby reducing the memory requirements associated with determining the propagation time of a light pulse as compared to conventional histogram-binning techniques.
[0019] The accuracy of the propagation time estimate of a light pulse provided by the techniques disclosed herein is comparable to the accuracy of the propagation time estimate provided by conventional histogram-binning techniques. In addition, the techniques disclosed herein provide a direct TOF system with increased data throughput and processing speed, while having reduced memory requirements and power consumption.
[0020] In one embodiment, multiple values adjacent timestamp values can be inserted into the data stream that is also processed using the raw timestamp data stream, such that the distance estimate becomes more robust and less noisy.
[0021] Figure 1 is a functional block diagram of an example embodiment of a timestamp processing system 100 in accordance with the subject matter disclosed herein. The system 100 processes a stream of timestamp data of a pixel (also not shown) in a sensor array (also not shown). The system 100 can include a controller 101 and a plurality of register / counter pairs 102a-102e. Each register / counter pair 102a-102e includes a register (REG) 103a-103e and an associated counter 104a-104e. The number of register / counter pairs 102a-102e can vary depending on the design. As Figure 1As depicted, the system 100 includes five register / counter pairs 102a-102e. In one embodiment, a buffer 105 can be used to receive the timestamp data. An estimated propagation time of the light pulse can be obtained as the output of one of the registers 103a-103e as determined by the associated counter containing the largest counter value (although not indicated). The output from one of the registers 103a-103e can be made available directly from the registers 103a-103e, or the output from one of the registers 103a-103e can be output from the system 100 by the controller 101 externally transferring the timestamp value to a destination location or device.
[0022] The timestamp data 106 output from the pixels coupled to the system 100 has been input as a stream of timestamp data. As the timestamp data 106 is received, each timestamp value can be evaluated by the controller 101 based on one of two "finding frequent items in a data stream" techniques as described below and placed in one of the registers 103a-103e of the register / counter pairs 102a-102e. In an optional embodiment, the timestamp data 106 is temporarily stored in the buffer 105 so that the timestamp data 106 can be processed twice to produce a more accurate distance estimate. When the timestamp data for a frame has been processed, the timestamp data is discarded. In a system 100 that does not include the buffer 105, each timestamp value is discarded after being processed; whereas, in a system 100 that includes the buffer 105, the timestamp values for a frame are discarded after the frame has been processed.
[0023] In one embodiment, the system 100 can be implemented as a module, which can be any combination of software, firmware, and / or hardware configured to provide the functionality described herein in connection with the module. The software can be implemented as software packages, code, and / or instruction sets or instructions, and the term "hardware" as used herein, for example, in any implementation described herein, can include, singly or in any combination, hardwired circuitry, programmable circuitry, state machine circuitry, and / or firmware that stores instructions executed by the programmable circuitry. The module can be collectively or individually implemented as circuitry forming part of a larger system, such as, but not limited to, an integrated circuit (IC), an application specific integrated circuit (ASIC), a system on a chip (SoC), and the like.
[0024] In one embodiment, the register / counter pairs 102a-102e are implemented as hardware components. In another embodiment, the registers 103a-103e and the counters 104a-104e of the register / counter pairs 102a-102e are implemented in random access memory (RAM), in which case the functionality provided by the system 100 can be provided by software / firmware executed by the controller 101. Such an embodiment can be suitable for processing multiple streams of time stamp data output from a sensor array having many pixels, whereas the size of the sensor array can be limited if the register / counter pairs 102a-102e are implemented as hardware components.
[0025] In addition, the time stamp values in the data stream 106 can be non-quantized, such that the propagation time estimates provided by the systems and methods disclosed herein are high-precision depth measurements. In conventional histogram-based methods, the time stamp values are typically quantized into coarse numbers (i.e., into integers), which are then used as indices for histogram binning. Due to the quantization, the estimated depth values lose accuracy, with an additional depth error = bin_size / sqrt(12), where bin_size represents the bin size. For example, if the bin size (i.e., the resolution of the quantization) is 1 ns, then the depth error will be 1 / sqrt(12) ~ 0.2887 ns (or 4.33 mm in converted to distance). This quantization error can approach 0 only in the case where the bin size becomes infinitely small. Although quantization of the time stamp values can be optional for the systems and techniques disclosed herein, the time stamp values can be kept as high-precision floating point numbers representing non-quantized, which will provide high-precision depth measurements.
[0026] Figure 2 is a flowchart of a first example embodiment of a method 200 for determining an estimated propagation time of a light pulse between a light pulse source and a pixel of a light sensor array in accordance with the subject matter disclosed herein. The method 200 is based on a frequent(k) (Frequent(k)) technique for finding frequent items in a data stream, and the method 200 uses two passes to process a predetermined number of time stamp values output from the pixel.
[0027] At 201, the element values of a small set of elements are initialized. In addition, a counter associated with each element is initialized. In one embodiment, the number of elements selected to be in the small set is equal to 5, and each element and each counter is initialized to be equal to 0. The value stored in the counter cannot become less than 0. In another embodiment, the number of elements in the small set can be different from 5, and / or the initialization value of the elements can be different from 0 (such as "null"). For example, the elements can be initialized with an identifiable value that is different from any of the expected time stamp values.
[0028] At 202, a predetermined number of timestamps are received as a stream of timestamp values output from pixels. Each pixel of a sensor array outputs a stream of timestamp values. In one embodiment, the predetermined number of timestamps received as the stream of data is equal to the number of timestamps generated in one frame. The timestamps can be received as a stream of timestamp data and can be processed by subsequent operations of method 200. For method 200, the received timestamps can be temporarily stored in a buffer, such as buffer 105 in FIG. 1. Figure 1
[0029] At 203, all of the timestamps in a first pass through all of the timestamps are sequentially processed. At 204, for a current timestamp value being processed, it is determined whether any of the element values (EV) is equal to an initialized element value (e.g., 0). If any of the element values (EV) is equal to the initialized element value, then flow continues to 205, where the current timestamp value replaces the element value equal to the initialized element value and a counter associated with that element is incremented by 1. At the beginning of the first pass through the timestamp values, it is expected that method 200 will pass through operation 205 with that pass until all elements have been replaced by timestamp values. Flow continues from 205 to 211, where it is determined whether all of the timestamps (TS) have been processed in the first pass. If not all of the timestamps (TS) have been processed in the first pass, then flow continues to 212, where a next timestamp value is selected and then returns to 204.
[0030] At 204, if it is determined that all of the element values are not equal to the initialized element value (e.g., 0), then flow continues to 206, where it is determined whether the current timestamp value (TSV) is equal to any of the element values (EV). If the current timestamp value (TSV) is equal to any of the element values (EV), then flow continues to 207, where a counter associated with the element containing the value equal to the current timestamp value is incremented by 1. Flow continues from 207 to 211, where it is determined whether all of the timestamps (TS) have been processed. If not all of the timestamps (TS) have been processed, then flow continues to 212, where a next timestamp value is selected and then returns to 204.
[0031] At 206, if it is determined that the current timestamp value (TSV) is not equal to any of the element values (EVs), then flow continues to 208, where all of the counters are decremented by 1. Each counter can be decremented to 0, but if a counter value reaches zero by decrementing, the counter value remains at 0 and is not further decremented. After the initial values of all of the elements have been replaced by timestamp values, decrementing the counters at 208 can cause one or more of the counters to become 0. At 209, it is determined whether any of the counter values (CVs) is equal to 0. At 209, if a counter value is equal to 0, then flow continues to 210, where the value of the element associated with the counter that is equal to 0 is replaced by the current timestamp value, and the associated counter is incremented. If more than one counter value is equal to 0, then one of the elements associated with the counters that are equal to 0 is replaced by the current timestamp value.
[0032] Flow continues to 211, where it is determined whether all of the timestamps have been processed. If not all of the timestamps have been processed, then flow continues to 212, where the next timestamp value is selected, and then returns to 204.
[0033] At 211, if all of the timestamp values have been processed in the first pass, then the contents of the elements of the small set represent the most frequently occurring timestamp values. Flow continues to 213, where all of the counters are reinitialized to 0. At 214, the timestamps are processed for a second pass through all of the timestamps.
[0034] At 215, it is determined whether the current timestamp value (TSV) is equal to one of the element values (EVs). If the current timestamp value (TSV) is equal to one of the element values (EVs), then flow continues to 216, where the counter associated with the element having a value equal to the current timestamp value is incremented.
[0035] Flow continues to 217, where it is determined whether all of the timestamps (TSs) have been processed in the second pass. If not all of the timestamps (TSs) have been processed in the second pass, then flow continues to 218, where the next timestamp value is selected, and then returns to 215. At 217, if all of the timestamp values have been processed in the second pass, then flow continues to 219, where the timestamp value in the element associated with the counter having the greatest counter value represents the estimated propagation time of the optical pulses between the optical pulse source and the pixel. If more than one counter has the same greatest counter value, then any one of the elements associated with the counters having the greatest counter value can be selected. Alternatively, the element associated with the "first" counter in a predetermined selection order from the counters 104a to 104e can be selected as the value of the estimated propagation time.
[0036] Table 1 sets forth an example of the data structure 100 for Figure 2Example pseudocode for method 200, where c i represents the value of the ith counter.
[0037] Table 1
[0038]
[0039] As mentioned, in one embodiment, the predetermined number of timestamp values of the stream received as timestamp values can be the timestamp values generated by the pixels during a frame. The entire predetermined number of timestamp values are processed through each channel of the timestamp values. In another embodiment, the predetermined number of timestamp values can be divided into two groups, where the first group can be processed by a first channel and the second group can be processed by a second channel. Because the timestamp values can be processed as they are received by the system 100, this particular embodiment of dividing the timestamp values into two groups can not require the use of the buffer 105. Another embodiment can divide the predetermined number of timestamp values into two groups, where the second group of a frame can be processed during a first channel and the first group of a subsequent frame can be processed during a second channel. These two embodiments that do not require the use of the buffer 105 provide the advantage of taking up less space and using less power compared to the embodiment that uses the buffer 105.
[0040] In one embodiment, a number of values adjacent timestamp values can be inserted into the data stream that is also processed using the original timestamp data stream, such that the distance estimates become more robust and less noisy. In one embodiment, depending on how large a neighborhood is desired to be considered, adjacent timestamps are generated based on the current timestamp value ±k, ±(k+1), ±(k+2), …, …, where k is an integer. That is, the value of each pair of adjacent timestamp values brackets the current value in integer units of a predetermined number of the resolution of the timestamp values. For example, if the resolution of the timestamp values is 1 ns, k can be chosen to be 1 ns. If k is chosen to be 1 ns, and the size of the neighborhood is chosen to be five timestamp values (the current timestamp plus two neighborhoods on either side of the current timestamp), then for each current timestamp, four adjacent timestamps will be injected into the data stream. The injected adjacent values are processed as if they were original timestamp values, and they tend to smooth out noisy timestamp values that can be received from the pixels. As would be expected, the additional adjacent values increase the total number of timestamp values that are processed in a frame.
[0041] Figure 3 is a flowchart of a second example embodiment of a method 300 for determining an estimated propagation time of a light pulse between a light pulse source and a pixel of an array of light sensors in accordance with the subject matter disclosed herein. As with the first example embodiment of the method 300, the method 300 of the second example embodiment is performed by the system 100. Figure 2In contrast to the first example embodiment shown in FIG. 2, the method 300 provides an approximate estimate of the propagation time of the light pulse, while the method 200 provides a more accurate estimate of the propagation time of the light pulse. The method 300 is based on the SpaceSaving(k) technique for finding frequent items in a data stream, and the method 300 can use a single channel of multiple timestamp values output from the pixels. The error in the estimated propagation time provided by the method 300 can be O(∈N).
[0042] At 301, the element values of a small set of elements are initialized. Additionally, counters associated with each element are initialized. In one embodiment, the number of elements selected to be in the small set is equal to 5, and each element and each counter is initialized to be equal to 0. The values stored in the counters cannot become less than 0. In another embodiment, the number of elements in the small set can be different than 5, and / or the initialization values of the elements can be different than 0. For example, the elements can be initialized with an identifiable value that is different than any of the expected timestamp values.
[0043] At 302, a predetermined number of timestamps are received as a stream of timestamp values output from the pixels. Each pixel of the sensor array outputs a stream of timestamp values. In one embodiment, the predetermined number of timestamps received as the stream of data is equal to the number of timestamps generated in one frame. The timestamps can be received as a stream of timestamp data, and can be processed by the subsequent operations of the method 300.
[0044] All of the timestamps in the single channel are processed sequentially. At 303, for the current timestamp value being processed, it is determined whether any of the element values (EV) is equal to the initialized element value (e.g., 0). If any of the element values (EV) is equal to the initialized element value, then flow continues to 304, where the current timestamp value replaces the element value equal to the initialized element value, and the counter associated with that element is incremented by 1. At the beginning of a pass through the channel of timestamp values, the method 300 is expected to replace all of the elements with timestamp values through operation 304 until all of the elements have been replaced. Flow continues from 304 to 308, where it is determined whether all of the timestamps (TS) have been processed. If not all of the timestamps (TS) have been processed, then flow continues to 309, where the next timestamp value is selected, and then returns to 303.
[0045] At 303, if it is determined that all element values are not equal to the initialized element value (e.g., 0), flow continues to 305, where it is determined whether the current timestamp value (TSV) is equal to any of the element values (EV). If the current timestamp value (TSV) is equal to any of the element values (EV), flow continues to 306, where the counter associated with the element containing the value equal to the current timestamp value is incremented by 1. Flow continues from 306 to 308, where it is determined whether all timestamps (TS) have been processed. If not all timestamps (TS) have been processed, flow continues to 309, where the next timestamp value is selected and then returns to 303.
[0046] At 305, if it is determined that the current timestamp value (TSV) is not equal to any of the element values (EV), flow continues to 307, where the element associated with the minimum count is selected and replaced with the current timestamp value. The counter associated with the replaced element is incremented by 1. Flow continues to 308, where it is determined whether all timestamps (TS) have been processed. If not all timestamps (TS) have been processed, flow continues to 309, where the next timestamp value is selected and then returns to 303.
[0047] At 308, if all timestamp values have been processed, flow continues to 310, where the timestamp value in the element associated with the counter having the maximum counter value represents the estimated propagation time of the optical pulse between the optical pulse source and the pixel. If more than one counter has the same maximum counter value, any of the elements associated with the counters having the maximum counter value can be selected. Alternatively, the element associated with the "first" counter in a predetermined selection order of the counters 104a-104e can be selected as the value of the estimated propagation time.
[0048] Table 2 sets forth example pseudo code for the method 300 of Figure 3 .
[0049] Table 2
[0050]
[0051] Figures 4A to 4D are example range image and example intensity image results for a conventional histogram-binning technique compared to the techniques disclosed herein. The images of Figures 4A to 4D were generated with a setup of N = 20 pulses per frame, a number of elements equal to 5, a binning width of 2 ns, and a range of the system of 0-15 m.
[0052] Figure 4A The upper image of Figure 2 depicts example range image results, and the lower image of Figure 2 depicts example intensity image results.Figure 4A The lower image of FIG. 1 depicts an example intensity image result of the conventional histogram-binning technique.
[0053] Figure 4B The upper image of FIG. 2 depicts an example range image result, and Figure 4B The lower image of FIG. 2 depicts an example intensity image result of the method 200 Figure 2 ) in which half of the timestamps in the frame are used for the first processing channel and the other half are used for the second processing channel.
[0054] Figure 4C The upper image of FIG. 3 depicts an example range image result, and Figure 4C The lower image of FIG. 3 depicts an example intensity image result of the method 200 Figure 2 ) in which, in a frame-to-frame-interlacing manner, all of the timestamps in a first frame are used for the first processing channel and all of the timestamps in a second, subsequent frame are used for the second processing channel. Note that processing the timestamps in a frame-to-frame-interlacing manner effectively doubles the number of timestamps processed for each frame.
[0055] Figure 4D The upper image of FIG. 4 depicts an example range image result, and Figure 4D The lower image of FIG. 4 depicts an example intensity image result of the method 300 Figure 3 ) in which, in a frame-to-frame-interlacing manner, all of the timestamps in a first frame are used for the first processing channel and all of the timestamps in a second, subsequent frame are used for the second processing channel. Note that processing the timestamps in a frame-to-frame-interlacing manner effectively doubles the number of timestamps processed for each frame.
[0056] As can be seen from Figures 4A to 4D The techniques disclosed herein provide an estimated propagation time of the light pulse that is comparable to the estimated propagation time provided by the conventional histogram-binning technique.
[0057] As will be recognized by those skilled in the art, the innovative concepts described herein can be modified and varied widely. Accordingly, the scope of the claimed subject matter is not to be limited to any particular exemplary teachings discussed above, but is instead to be defined by the following claims.
Claims
1. A method for determining the propagation time of a light pulse, the method comprising: generating a plurality of time stamp values for a plurality of light pulses propagating between a light pulse source and a pixel of a light sensor array, each time stamp value comprising a time of flight of a corresponding light pulse propagating between the light pulse source and the pixel; and determining a propagation time of a light pulse between a light pulse source and the pixel as a most frequent time stamp value of the plurality of time stamp values, wherein the method further comprises: for each of the plurality of timestamp values, adding at least one pair of adjacent values to the plurality of timestamp values, each pair of adjacent values surrounding the corresponding timestamp value by a predetermined number of integer units of a resolution of the plurality of timestamp values; The step of determining the propagation time between the light pulse source and the pixel comprises: Initializing a value of each element in a set of elements to be equal to zero, the set of elements including a predetermined number of elements; Initializes the value of a counter associated with each element in the element collection; processing the plurality of timestamp values by determining whether each timestamp value is equal to a value of an element in the set of elements; After all timestamp values in the plurality of timestamp values have been processed, Initializes the value of each counter corresponding to an element in the elements collection, determining whether each timestamp value in the plurality of timestamp values is equal to a value of an element in the set of elements, For any timestamp value, if the timestamp value is equal to the value of an element in the set of elements, increment the value of a counter associated with the element having a value equal to the timestamp value, and The value of the element in the set of elements associated with the largest counter value is determined as a timestamp value representing a propagation time of a light pulse between the light pulse source and the pixel.
2. The method according to claim 1, wherein The plurality of timestamp values include timestamp values in a frame.
3. The method according to claim 1, wherein The plurality of timestamp values comprises a stream of timestamp value data.
4. The method according to claim 1, wherein Timestamp values include unquantized values.
5. The method according to claim 1, wherein The step of determining the propagation time between the light pulse source and the pixel further comprises: For any timestamp value, If the value of an element in the set of elements is equal to zero, replacing the value of the element with the timestamp value and incrementing the value of a counter associated with the replaced element, If the timestamp value is equal to a value of an element in the set of elements, incrementing a value of a counter associated with the element having a value equal to the timestamp value, If the timestamp value is not equal to the value of the element in the set of elements, then decrementing the values of all counters associated with the elements in the set of elements.
6. The method according to claim 5, wherein: The plurality of timestamp values include a first set of timestamp values and a second set of timestamp values, The step of processing the plurality of timestamp values comprises: using a first set of timestamp values, and Wherein, after all of the multiple timestamp values have been processed, the step of processing the multiple timestamp values comprises: using a second set of timestamp values.
7. The method according to claim 6, wherein: The first set of timestamp values includes timestamp values from a first frame, and the second set of timestamp values includes timestamp values from a second frame subsequent to the first frame.
8. The method according to claim 7, wherein: The first set of timestamp values and the second set of timestamp values together comprise the timestamp values in a frame.
9. The method according to claim 1, wherein: The step of determining the propagation time between the light pulse source and the pixel further comprises: For any timestamp value, If the value of an element in the set of elements is equal to zero, replacing the value of the element with the timestamp value and incrementing the value of a counter associated with the replaced element, If the timestamp value is equal to a value of an element in the set of elements, incrementing a value of a counter associated with the element having a value equal to the timestamp value, If the timestamp value is not equal to the value of an element in the set of elements, replacing the value of the element associated with the minimum counter value with the timestamp value and incrementing the value of the counter associated with the replaced element by one; and After all timestamp values in the plurality of timestamp values have been processed, The value of the element with the largest counter value in the set of elements is determined as a timestamp value representing a propagation time of a light pulse between the light pulse source and the pixel.
10. A system for determining the propagation time of a light pulse, the system comprising: Multiple registers; a plurality of counters, each counter being associated with a corresponding register; and a timestamp evaluator configured to determine whether each timestamp value of a plurality of timestamp values is equal to a value stored in one of the plurality of registers, For any timestamp value, If the value stored in the register is equal to zero, the timestamp evaluator replaces the value of the register with the timestamp value and increments the value of a counter associated with the register, If the timestamp value is equal to the value stored in the register, the timestamp evaluator increments the value of a counter associated with the register, and If the timestamp value is not equal to the value stored in the register, a timestamp evaluator decrements the values of all counters associated with all registers in the plurality of registers, and After all timestamp values in the plurality of timestamp values have been evaluated, the timestamp evaluator is further configured to: Initialize the value of each counter, determining whether each of the plurality of timestamp values is equal to a value stored in a register, For any timestamp value, if the timestamp value is equal to the value stored in the register, increment the value of the counter associated with the register storing the value equal to the timestamp value, and The timestamp value of the register associated with the largest counter value is determined as the timestamp value representing the propagation time of the light pulse between the light pulse source and the pixel of the light sensor array.
11. The system according to claim 10, wherein: The plurality of timestamp values include timestamp values in a frame.
12. The system according to claim 10, wherein: Timestamp values include unquantized values.
13. The system according to claim 10, wherein: The plurality of timestamp values include a first set of timestamp values and a second set of timestamp values, wherein the step of processing the plurality of timestamp values by the timestamp evaluator comprises using a first set of timestamp values, and The timestamp evaluator is also configured as: determining whether each timestamp value of the first set of timestamp values is equal to a value stored in one of the plurality of registers, For any timestamp value, If the value stored in the register is equal to zero, replacing the value of the register with the timestamp value and incrementing the value of a counter associated with the register, If the timestamp value is equal to the value stored in the register, incrementing the value of a counter associated with the register, and If the timestamp value is not equal to the value stored in the register, decrementing the values of all counters associated with all registers in the plurality of registers, and Wherein, after all timestamp values in the first set of timestamp values have been evaluated, the timestamp evaluator is further configured to: Initialize the value of each counter, determining whether each timestamp value in the second set of timestamp values is equal to the value stored in the register, For any timestamp value, if the timestamp value is equal to the value stored in the register, increment the value of the counter associated with the register storing the value equal to the timestamp value, and The timestamp value of the register associated with the largest counter value is determined as the timestamp value representing the propagation time of the light pulse between the light pulse source and the pixel.
14. The system according to claim 13, wherein: The first set of timestamp values includes timestamp values from a first frame, and the second set of timestamp values includes timestamp values from a second frame subsequent to the first frame.
15. The system according to claim 10, wherein: The plurality of timestamp values comprises a stream of timestamp value data.
16. The system according to claim 10, wherein: For each timestamp value in the plurality of timestamp values, at least one pair of adjacent values is added to the plurality of timestamp values, each pair of adjacent values surrounding the corresponding timestamp value by a predetermined number of integer units of a resolution of the plurality of timestamp values.
17. A system for determining the propagation time of a light pulse, the system comprising: Multiple registers; a plurality of counters, each counter being associated with a corresponding register; and a timestamp evaluator configured to determine whether each timestamp value of a plurality of timestamp values is equal to a value stored in a register; For any timestamp value, If the value stored in the register is equal to zero, a timestamp evaluator replaces the value of the register with the timestamp value and increments a counter associated with the register, If the timestamp value is equal to a value stored in a register, a timestamp evaluator increments a counter associated with the register storing a value equal to the timestamp value, If the timestamp value is not equal to the value stored in the register, a timestamp evaluator replaces the value of the register with the timestamp value associated with at least one counter and increments by one the value of the counter associated with the register having the replaced value; and After all of the plurality of timestamp values have been evaluated, the timestamp evaluator is further configured to determine the timestamp value stored in the register having the largest counter value as the timestamp value representing the propagation time of the light pulse between the light pulse source and the pixel of the light sensor array.
18. The system according to claim 17, wherein: The plurality of timestamp values include timestamp values in a frame.
19. The system according to claim 17, wherein: For each timestamp value in the plurality of timestamp values, at least one pair of adjacent values is added to the plurality of timestamp values, each pair of adjacent values surrounding the corresponding timestamp value by a predetermined number of integer units of a resolution of the plurality of timestamp values.
20. The system of claim 17, wherein: Timestamp values include unquantized values.
Citation Information
Patent Citations
Method and device for measuring a distance to a target in a multi-user environment using at least two wavelengths
WO2018082762A1