This application relates to Time-of-Flight (ToF) sensors, methods, and non-transitory computer-readable media with an error correcting code (ECC).
Time-of-flight (ToF) is a technique used in rebuilding three-dimensional (3D) images. The ToF technique includes calculating the distance between a light source and an object by measuring the time for light to travel from the light source to the object and return to a light-detection sensor, where the light source and the light-detection sensor are located in the same device.
Conventionally, an infrared light-emitting diode (LED) is used as the light source to ensure high immunity with respect to ambient light. The information obtained from the light that is reflected by the object may be used to calculate a distance between the object and the light-detection sensor, and the distance may be used to reconstruct the 3D images. The 3D images that are reconstructed may then be used in gesture and motion detection. Gesture and motion detection is being used in different applications including automotive, drone, and robotics, which require more accurate and faster acquisition of the information used to calculate the distance between the object and the light-detection source in order to decrease the amount of time necessary to reconstruct the 3D images.
Image sensing devices typically include an image sensor, an array of pixel circuits, signal processing circuitry and associated control circuitry. Within the image sensor itself, charge is collected in a photoelectric conversion device of the pixel circuit as a result of impinging light. Subsequently, the charge in a given pixel circuit is read out as an analog signal, and the analog signal is converted to digital form by an analog-to-digital converter (ADC).
However, there are many noise sources that affect an output of the ToF sensor. For example, some noise sources include shot noise in the photon, KTC noise in the circuit, system noise and fixed pattern noise from pixel and circuit design, and quantization noise in the ADC. All of these noise sources in the pixel data will contribute to depth noise.
Consider a Time-of-Flight (ToF) decoding method that includes a region decoder plus distance calculation after a region has been decoded. Low signal to noise ratio (e.g., for long distance measurement) causes an incorrect region code decision, which causes a very large error in decoded distance. Accordingly, there exists a need for a ToF sensor that do not suffer from these deficiencies.
As described in greater detail below, a ToF sensor incorporates additional pixel signals to generate an error correcting code (ECC) with the ToF pixel signals. The ECC significantly reduces the probability of a region code decision error, and consequently, significantly increases accuracy in a decoded distance.
Various aspects of the present disclosure relate to ToF sensors, methods, and non-transitory computer-readable media. In one aspect of the present disclosure, a ToF sensor includes an array of pixels and processing circuitry. The processing circuitry configured to generate a plurality of ToF exposure control signals that control at least one pixel of the array of pixels to generate a plurality of ToF pixel signals, generate a plurality of error correcting code (ECC) exposure control signals that control the at least one pixel to generate a plurality of ECC pixel signals, and determine a distance from an object based on the plurality of ToF pixel signals and the plurality of ECC pixel signals. To determine the distance from the object based on the plurality of ToF pixel signals and the plurality of ECC pixel signals, the processing circuitry is further configured to determine a region code from the plurality of ToF pixel signals and the plurality of ECC pixel signals, and calculate the distance based on the plurality of ToF pixel signals, the plurality of ECC pixel signals, and the region code.
Another aspect of the present disclosure is a method. The method includes generating, with processing circuitry, a plurality of ToF exposure control signals that control at least one pixel of an array of pixels to generate a plurality of ToF pixel signals. The method includes generating, with the processing circuitry, a plurality of error correcting code (ECC) exposure control signals that control the at least one pixel to generate a plurality of ECC pixel signals. The method also includes determining, with the processing circuitry, a distance from an object based on the plurality of ToF pixel signals and the plurality of ECC pixel signals by determining a region code from the plurality of ToF pixel signals and the plurality of ECC pixel signals, and calculating the distance based on the plurality of ToF pixel signals, the plurality of ECC pixel signals, and the region code.
In yet another aspect of the present disclosure, a non-transitory computer-readable medium comprises instructions that, when executed by an electronic processor, cause the electronic processor to perform a set of operations. The set of operations includes generating a plurality of ToF exposure control signals that control at least one pixel of an array of pixels to generate a plurality of ToF pixel signals. The set of operations includes generating a plurality of error correcting code (ECC) exposure control signals that control the at least one pixel to generate a plurality of ECC pixel signals. The set of operations also includes determining a distance from an object based on the plurality of ToF pixel signals and the plurality of ECC pixel signals by determining a region code from the plurality of ToF pixel signals and the plurality of ECC pixel signals, and calculating the distance based on the plurality of ToF pixel signals, the plurality of ECC pixel signals, and the region code.
This disclosure may be embodied in various forms, including hardware or circuits controlled by computer-implemented methods, computer program products, computer systems and networks, user interfaces, and application programming interfaces; as well as hardware-implemented methods, signal processing circuits, image sensor circuits, application specific integrated circuits, field programmable gate arrays, digital signal processors, and other suitable forms. The foregoing summary is intended solely to give a general idea of various aspects of the present disclosure, and does not limit the scope of the present disclosure.
These and other more detailed and specific features of various embodiments are more fully disclosed in the following description, reference being had to the accompanying drawings, in which:
In the following description, numerous details are set forth, such as flowcharts, equations, and circuit configurations. It will be readily apparent to one skilled in the art that these specific details are exemplary and do not to limit the scope of this application.
In this manner, the present disclosure provides improvements in the technical field of time-of-flight sensors, as well as in the related technical fields of image sensing and image processing.
The light generator 111 may be, for example, a light emitting diode (LED), a laser diode, or any other light generating device or combination of devices, and the light waveform may be controlled by the controller 113. The light generator may operate in the infrared range so as to reduce interference from the visible spectrum of light, although any wavelength range perceivable by the image sensor 112 may be utilized.
In some examples, the controller 113 includes an error correcting code (ECC) generator, a ToF signal generator, and an ToF/ECC decoder. The ECC generator generates ECC pixel exposure control signals. The ToF signal generator generates ToF pixel exposure control signals. The ToF/ECC decoder decodes a region code from ToF pixel signals based on the ToF pixel exposure control signals together with ECC pixel signals based on the ECC pixel exposure control signals. In a ToF system, even though an object may be at a distance within the maximum range dmax of the ToF design, the signal to noise ratio corresponding to objects near the high end of the maximum range may be too low so that the object distance cannot be reliably calculated from the signals received by the sensor. As a result, only a fraction of the maximum range dmax may be actually usable. The ECC pixel signals increase a probability that the region code decoded from the ToF pixel signals is a correct region code, which increases distance calculation accuracy and extends operating range of the ToF imaging system 101. The controller 113 is described in greater detail in
In Expression (1), x is equal to the region index from 0 to 11, dmax is equal to the maximum operating distance, and N is the number of regions between zero and dmax. In the above example, N is equal to 12.
As illustrated in
In Expression (2), smax is equal to the maximum signal strength, dmax is equal to the maximum operating distance, and N is the total number of regions between zero and dmax. In the above example, N is equal to 12.
However, the signal is also subject to noise. At any distance d, the noise is equal to Expression (3) below.
σtotal(d)=√{square root over (σKTC2+σSN2(d))} (3)
The KTC noise is sampling noise that does not depend on distance. The shot noise (SN) is signal noise that depends on the signal level, and consequently, depends on the distance because the signal level depends on the distance.
A bit error in the region code occurs when the magnitude of the noise sample is higher than s(d)/2.
However, the region code is a four-bit code and not a single bit code. A correct region code requires all bits to be correct. Therefore, the overall probability that the region code is incorrect is the probability that includes at least one-bit error, which is much greater than the probability of the single bit error 500.
For example, each bit in region 8 has a 25% chance of a bit error. Therefore, the region code of region 8 has a much higher cumulative chance of a bit error than just 25%, for example, greater than 50%. Consequently, the region code of region 8 may be assumed to have a high probability of error due to the higher cumulative chance of a bit error. In other words, the maximum operating distance to have an acceptable probability of error is not actually dmax, but a much shorter distance than dmax because of the high likelihood that the region code will have a bit error at or above the fifth region.
However, regions 0-11 may correspond to different region codes than the region codes illustrated in
Additionally, as illustrated in
With respect to incorrect regions, a region code will have an incorrect bit that changes the correct region code to a region code that is different from the correct region code. For example, when region 1 has an incorrect bit at bit b0, then the resulting region code 1011 is “incorrect” because 1011 corresponds to region 10. The same error applies to regions 9 and 11 and incorrect bits at bits b2 and b3, respectively.
Lastly, a single region may be interpreted four different ways because the single region includes four different bits that may be incorrect. For example, when region 3 (with region code 0110) has an incorrect bit at bit b0, then the resulting region code 1110 is “invalid” because 1110 is not present in the look-up table 602. Alternatively, when region 3 has an incorrect bit at bits b1, b2, or b3, then the resulting region codes 0010, 0100, and 0111 are “incorrect” because these region codes correspond to regions 0, 4, and 2, respectively, instead of the correct region, i.e., region 3.
The process 700 includes a decoder of the controller (e.g., the ECC/ToF decoder of the controller 113) receiving the ToF pixel signals p0, p1, p2, and p3 and the ECC pixel signals u0, u1, u2, and u3 and makes a region decision from the pixel signals p0, p1, p2, and p3 and the ECC pixel signals u0, u1, u2, and u3 by outputting a four bit region code b0, b1, b2, and b3. The process 700 also includes the decoder performing a distance calculation of an object (e.g., the object 102) based on the ToF pixel signals p0, p1, p2, and p3, the ECC pixel signals u0, u1, u2, and u3, and the four bit region code b0, b1, b2, and b3.
Hamming (7,3) has the capability of correcting one incorrect bit. Hamming (8,4) has the capability of correcting one incorrect bit and detecting two incorrect bits. tBCH (15,7,2) has the capability of correcting two incorrect bits. tBCH (15,5,3) has the capability of correcting three incorrect bits.
All four ECCs are easy to encode an easy to decide on whether an error exists with a particular bit. However, tBCH (15,7,2) and tBCH (15,5,3) are complex to determine which bits are incorrect, whereas Hamming (7,3) and Hamming (8,4) are easier than tBCH (15,7,2) and tBCH (15,5,3) to determine the incorrect bit.
The present disclosure is not limited to these four ECCs and any ECC may be used. Of the four ECCs, tBCH (15,5,3) has the best performance. However, tBCH (15,5,3) also requires fifteen signals, which results in a big frame delay, and a complex decoder. Therefore, Hamming (8,4) is selected for discussion with respect to
Further, as illustrated in
Additionally, as illustrated in
Lastly, as illustrated in
Further, as illustrated in
Additionally, as illustrated in
Lastly, as illustrated in
As illustrated in
Additionally, as illustrated in
The light signal 1200 is a light emitted by a light generator (e.g. the light generator 111). The light signal 1200 is high during the first 1/12 of the period T. The light signal 1200 when divided into twelve durations over period T may be represented by a bit pattern corresponding to 100000000000.
The exposure control signal 1202 is a first exposure control signal for the given pixel. The exposure control signal 1202 is high during the second half of the period T. The exposure control signal 1202 when divided into twelve durations over period T corresponds to 000000111111.
The exposure control signal 1204 is a second exposure control signal for the given pixel. The exposure control signal 1204 is high during the middle of the period T. The exposure control signal 1204 when divided into twelve durations over period T corresponds to 000111111000.
The exposure control signal 1206 is a third exposure control signal for the given pixel. The exposure control signal 1206 is high during two distinct portions of the period T. The exposure control signal 1206 when divided into twelve durations over period T corresponds to 011100001110.
The exposure control signal 1208 is a fourth exposure control signal for the given pixel. The exposure control signal 1208 as shown is high during three distinct portions of the period T. Since the signals are periodic and repeats with the same pattern after the initial period, it can be observed that the third high period in 1208 in one cycle will join with the first high period of 1208 in the following cycle. Hence, the signal 1208 is high during two distinct portions of the period T. The exposure control signal 1208 when divided into twelve durations over period T corresponds to 110001100011.
The exposure control signal 1210 is a fifth exposure control signal for the given pixel. The exposure control signal 1210 is high during four distinct portions of the period T. The exposure control signal 1210 when divided into twelve durations over period T corresponds to 110110100100.
The exposure control signal 1212 is a sixth exposure control signal for the given pixel. The exposure control signal 1212 is high during five distinct portions of the period T. The exposure control signal 1212 when divided into twelve durations over period T corresponds to 101101010010.
The exposure control signal 1214 is a seventh exposure control signal for the given pixel. The exposure control signal 1214 as shown is high during six distinct portions of the period T. Since the signals are periodic and repeats with the same pattern after the initial period, it can be observed that the sixth high period in 1214 in one cycle will join with the first high period of 1214 in the following cycle. Hence, the signal 1214 is high during five distinct portions of the period T. The exposure control signal 1214 when divided into twelve durations over period T corresponds to 101010010101.
Lastly, the exposure control signal 1216 is an eighth exposure control signal for the given pixel. The exposure control signal 1216 is high during four distinct portions of the period T. The exposure control signal 1216 when divided into twelve durations over period T corresponds to 011011001001.
The light signal 1300 is a light emitted by a light generator (e.g. the light generator 111). The light signal 1300 is high during the first 1/12 of the period T. The light signal 1300 when divided into twelve durations over period T may be represented by a bit pattern corresponding to 100000000000.
The exposure control signal 1302 is a first exposure control signal for the given pixel. The exposure control signal 1302 is high during the second half of the period T. The exposure control signal 1302 when divided into twelve durations over period T corresponds to 000000111111.
The exposure control signal 1304 is a second exposure control signal for the given pixel. The exposure control signal 1304 is high during a portion of the period T. The exposure control signal 1304 when divided into twelve durations over period T corresponds to 001111110000.
The exposure control signal 1306 is a third exposure control signal for the given pixel. The exposure control signal 1306 as shown is high during two distinct portions of the period T. Since the signals are periodic and repeats with the same pattern after the initial period, it can be observed that the second high period in 1306 in one cycle will join with the first high period of 1306 in the following cycle. Hence, the signal 1306 is high during one distinct portion of the period T. The exposure control signal 1306 when divided into twelve durations over period T corresponds to 111100000011.
The exposure control signal 1308 is a fourth exposure control signal for the given pixel. The exposure control signal 1308 is high during three distinct portions of the period T. The exposure control signal 1308 when divided into twelve durations over period T corresponds to 011001100110.
The exposure control signal 1310 is a fifth exposure control signal for the given pixel. The exposure control signal 1310 is high during five distinct portions of the period T. The exposure control signal 1310 when divided into twelve durations over period T corresponds to 010110101001.
The exposure control signal 1312 is a sixth exposure control signal for the given pixel. The exposure control signal 1312 is high during five distinct portions of the period T. The exposure control signal 1312 when divided into twelve durations over period T corresponds to 100101011010.
The exposure control signal 1314 is a seventh exposure control signal for the given pixel. The exposure control signal 1314 as shown is high during six distinct portions of the period T. Since the signals are periodic and repeats with the same pattern after the initial period, it can be observed that the sixth high period in 1314 in one cycle will join with the first high period of 1314 in the following cycle. Hence, the signal 1314 is high during five distinct portions of the period T. The exposure control signal 1314 when divided into twelve durations over period T corresponds to 101010010101.
Lastly, the exposure control signal 1316 is an eighth exposure control signal for the given pixel. The exposure control signal 1316 is high during three distinct portions of the period T. The exposure control signal 1316 when divided into twelve durations over period T corresponds to 110011001100.
There are several different ways to generate a region code. One way is to determine a region code directly from the eight pixel signals p0, p1, p2, p3, u0, u1, u2, and u3 with a metric μ and expression (8):
That is, the region n is found from the regions Rj (j=0,1, . . . ,11) to be the one which has the closest distance based on the metric to be closest to the set of pixel signals. As a result, Rn is the region code.
Another way of generating a region code is to use a thresholding method with an ECC decoder. The process 1400 also includes the processing circuitry (e.g., the controller 113) receiving the eight pixel signals p0, p1, p2, p3, u0, u1, u2, and u3 (at arrow 1404) and thresholding the eight pixel signals p0, p1, p2, p3, u0, u1, u2, and u3 to generate eight threshold bits q0, q1, q2, q3, v0, v1, v2, and v3 (at arrow 1406).
The ECC bits v0, v1, v2, and v3 are threshold bits that are output by the processing circuitry and correspond to the second set of exposure control signals 1210-1216 described in
The ECC bits v0, v1, v2, and v3 are threshold bits that are output by the processing circuitry and correspond to the second set of exposure control signals 1310-1316 described in
The calculations in Expression (4) are performed on bits with a modulo 2 calculation. Consequently, the addition operations are equivalent to exclusive-OR operations. From Expression (4), s0=0 * q0+1 * q1+1 * q2+1 * q3+0 * v0+0 * v1+1 * v2+0 * v3 (modulo 2)=q1 XOR q2 XOR q3 XOR v2.
When the error bits are less than three bits, the process 1700 includes the processing circuitry determining whether s0, s1, s2, and s3 of the syndrome S are all zero (at block 1704). When determining that s0, s1, s2, and s3 of the syndrome S are all zero, the processing circuitry determines that the region code (i.e., threshold bits q0, q1, q2, and q3) is correct.
When the error bits are less than three bits, the process 1700 includes the processing circuitry determining whether s0, s1, s2, and s3 of the syndrome S are equal to a column in the matrix 1708 shown in
Lastly, the process 1700 includes the processing circuitry determining whether there is an error in two or more bits (at block 1710). When the syndrome S is not zero and not equal to any column in the matrix 1708 shown in
The region column 1802 includes five different examples of region 0. The code column 1805 includes five different examples where the true region is region 0 (which is 0001 in Ham4). The error column 1806 includes five different examples of an error status of the region code for the region 0: 1) no bit error, 2) b0 is wrong, 3) b1 is wrong, 4) b2 is wrong, and 5) b3 is wrong.
The code error column 1808 includes five different examples of the region code in the code column 1804 with respect to the error column 1806: 1) region code is 0001 because there is no bit error, 2) region code is 1001 because b0 is wrong, 3) region code is 0101 because b1 is wrong, 4) region code is 0011 because b2 is wrong, 5) region code is 0000 because b3 is wrong.
The decoded region column 1810 includes five different examples of a decoded region from the region code in the code error column 1808: 1) region 0, 2) region 11, 3) region 5, 4) region 1, and 5) invalid.
Lastly, the approximate decoding error column 1812 includes five different examples of an approximate decoding error with respect to the decoded region column 1810: 1) 0.024*dmax, 2) 0.917* dmax, 3) 0.417* dmax, 4) 0.083* dmax, and 5) invalid. As illustrated in
While ECC is one way to correct an incorrect region, another way to reduce the likelihood of an incorrect region is to double the exposure time.
At region 1, the ToF sensor signal level drops to 100 for the 1X exposure 1902 and 200 for the 2X exposure 1904. At region 2, the ToF sensor signal level drops to 50 for the 1x exposure 1902 and 100 for the 2X exposure 1904. At region 3, the ToF sensor signal level drops to 25 for the 1x exposure 1902 and 50 for the 2X exposure 1904. At regions 4-11, the ToF sensor signal continues to drop from one region to another for the 1x exposure 1902 and 50 for the 2X exposure 1904.
As illustrated in
Further, as illustrated in
Additionally, as illustrated in
Lastly, as illustrated in
As illustrated in
Further, as illustrated in
Additionally, as illustrated in
Lastly, as illustrated in
As illustrated in
Further, as illustrated in
Additionally, as illustrated in
Lastly, as illustrated in
As illustrated in
Further, as illustrated in
Additionally, as illustrated in
Lastly, as illustrated in
As illustrated in
For example, similar to the controller 113 of
Further, similar to the controller 113, the controller 2500 with the ToF/ECC decoder generates a 4-bit region code (b0, b1, b2, and b3) using both the threshold TOF bits q0, q1, q2, and q3 and the threshold ECC bits v0, v1, v2, and v3.
However, unlike the controller 113, the controller 2500 includes a step to determine an upper half or a lower half of a half shifted region using the 4-bit region code (b0, b1, b2, and b3) from the ECC decoder, as well as either the raw form of the pixel signals p0, p1, p2, and p3 and the ECC pixel signals u0, u1, u2, and u3, or the threshold bits q0, q1, q2, q3, v0, v1,v2, v3.
Further, unlike the controller 113, the controller 2500 performs a distance calculation using the upper half or the lower half of the half shifted region that is determined (e.g., a single bit indicating upper half or lower half), the raw form of the pixel signals p0, p1, p2, and p3 and the ECC pixel signals u0, u1, u2, and u3, and the 4-bit region code. The distance calculation by the controller 2500 is an improvement over the distance calculation by the controller 113 because the distance calculation may be performed when the decoded signal level is lower than 0.7% of full scale, which is not possible with the controller 113. For example, the controller 2500 may perform the distance calculation when the decoded signal level is at 0.3% of full scale.
In some examples, the distance calculation may also include or be after averaging the raw form of the pixel signals p0, p1, p2, and p3 and selected ECC pixel signals u0, u1, u2, and u3 according to the lower half or the upper half of the region code to generate averaged pixel signals p0′, p1′, p2′, and p3′ as discussed in greater detail below. The averaged pixel signals p0′, p1′, p2′, and p3′ may then be used for the distance calculation.
With respect to lower half, as illustrated in
The half shifted region column 2802 includes a row for each of the twelve half shifted regions 0-11 of
The complementary signals w0, w1, w2, and w3 are based on the ECC pixel signals. The complementary signal w0 is equal to the difference between 1 and u0, the complementary signal w1 is equal to the difference between 1 and u1, the complementary signal w2 is equal to the difference between 1 and u2, and the complementary signal w3 is equal to the difference between 1 and u3.
The preferred equivalent pixel signals column 2810 includes an indication of the preferred equivalent signals between the pixel signals p0, p1, p2, and p3, the ECC pixel signals u0, u1, u2, and u3, and the complementary signals w0, w1, w2, and w3 for a lower half of the respective half shifted regions 0-11. The preferred equivalent signals are preferred because these transitions are less sharply or more gently near the region. Stated differently, the preferred equivalent signals are preferred because the preferred equivalent signals do not change from a downward slope to an upward slope, or from an upward slope to a downward slope. Instead, the preferred equivalent signals only changes, for example, from a downward slope to a flat slope, from a flat slope to an upward slope, etc.
A sharper transition in the current region is indicative of a high frequency transition, and high frequency transitions will not be as “sharp” as the ideal case due to sensor bandwidth limitations. Transitions that deviate from the ideal will introduce more signal distortion. Therefore, a gentler transition in the current region is indicative of a lower frequency transition relative to the high frequency transitions, and the lower frequency transition will be less impacted by the sensor bandwidth limitations. The lower frequency transition will introduce less distortion.
For the lower half of half shifted region 0, the all pixel equivalent pixel signals column 2808 is p0=u0=w1=w3 and the preferred pixel signals column 2810 is p0=w3. For the lower half of half shifted region 1, the all pixel equivalent pixel signals column 2808 is p3=u0=w1=w2 and the preferred pixel signals column 2810 is p3=w2. For the lower half of half shifted region 2, the all pixel equivalent pixel signals column 2808 is p1=w0=u2=w3 and the preferred pixel signals column 2810 is p1=w3. For the lower half of half shifted region 3, the all pixel equivalent pixel signals column 2808 is p3=w0=w1=u2 and the preferred pixel signals column 2810 is p3=w1. For the lower half of half shifted region 4, the all pixel equivalent pixel signals column 2808 is p2=u1=w2=w3 and the preferred pixel signals column 2810 is p2=w3. For the lower half of half shifted region 5, the all pixel equivalent pixel signals column 2808 is p3=w0=u1=w2 and the preferred pixel signals column 2810 is p3=w0. For the lower half of half shifted region 6, the all pixel equivalent pixel signals column 2808 is p0=u0=w1=w3 and the preferred pixel signals column 2810 is p0=w3. For the lower half of half shifted region 7, the all pixel equivalent pixel signals column 2808 is p3=u0=w1=w2 and the preferred pixel signals column 2810 is p3=w2. For the lower half of half shifted region 8, the all pixel equivalent pixel signals column 2808 is p1=w0=u2=w3 and the preferred pixel signals column 2810 is p1=w3. For the lower half of half shifted region 9, the all pixel equivalent pixel signals column 2808 is p3=w0=w1=u2 and the preferred pixel signals column 2810 is p3=w1. For the lower half of half shifted region 10, the all pixel equivalent pixel signals column 2808 is p2=u1=w2=w3 and the preferred pixel signals column 2810 is p2=w3. For the lower half of half shifted region 11, the all pixel equivalent pixel signals column 2808 is p3=w0=u1=w2 and the preferred pixel signals column 2810 is p3=w0.
The upper half column 2806 also includes two sub-columns: all equivalent pixel signals column 2812 and preferred equivalent pixel signals column 2814. The all pixel equivalent pixel signals column 2812 includes an indication of equivalent signals between the ToF pixel signals p0, p1, p2, and p3, the ECC pixel signals u0, u1, u2, and u3, and the complementary signals w0, w1, w2, and w3 for an upper half of the respective half shifted regions 0-11.
The preferred equivalent pixel signals column 2814 includes an indication of the preferred equivalent signals between the pixel signals p0, p1, p2, and p3, the ECC pixel signals u0, u1, u2, and u3, and the complementary signals w0, w1, w2, and w3 for an upper half of the respective half shifted regions 0-11. The preferred equivalent signals are preferred because these transitions are less sharply near the region.
For the upper half of half shifted region 0, the all pixel equivalent pixel signals column 2812 is p3=u0=w1=w2 and the preferred pixel signals column 2814 is p3=w2. For the upper half of half shifted region 1, the all pixel equivalent pixel signals column 2812 is p1=w0=u2=w3 and the preferred pixel signals column 2814 is p1=w3. For the upper half of half shifted region 2, the all pixel equivalent pixel signals column 2812 is p3=w0=w1=u2 and the preferred pixel signals column 2814 is p3=w1. For the upper half of half shifted region 3, the all pixel equivalent pixel signals column 2812 is p2=u1=w2=w3 and the preferred pixel signals column 2814 is p2=w3. For the upper half of half shifted region 4, the all pixel equivalent pixel signals column 2812 is p3=w0=u1=w2 and the preferred pixel signals column 2814 is p3=w0. For the upper half of half shifted region 5, the all pixel equivalent pixel signals column 2812 is p0=u0=w1=w3 and the preferred pixel signals column 2814 is p0=w3. For the upper half of half shifted region 6, the all pixel equivalent pixel signals column 2812 is p3=u0=w1=w2 and the preferred pixel signals column 2814 is p3=w2. For the upper half of half shifted region 7, the all pixel equivalent pixel signals column 2812 is p1=w0=u2=w3 and the preferred pixel signals column 2814 is p1=w3. For the upper half of half shifted region 8, the all pixel equivalent pixel signals column 2812 is p3=w0=w1=u2 and the preferred pixel signals column 2814 is p3=w1. For the upper half of half shifted region 9, the all pixel equivalent pixel signals column 2812 is p2=u1=w2=w3 and the preferred pixel signals column 2814 is p2=w3. For the upper half of half shifted region 10, the all pixel equivalent pixel signals column 2812 is p3=w0=u1=w2 and the preferred pixel signals column 2814 is p3=w0. For the upper half of half shifted region 11, the all pixel equivalent pixel signals column 2812 is p0=u0=w1=w3 and the preferred pixel signals column 2814 is p0=w3.
Each of the highlighted sections 2902 and 2904 also include a “transition,” where a pixel signal transitions from 0 to 1 or 1 to 0 while crossing over an edge of the highlighted section. For example, the highlighted section 2902 includes two transitions 2906 and 2908. The transition 2906 is an increasing transition (0 to 1) of the pixel signal p3 that occurs in the lower half of half shifted region 5. The transition 2908 is an increasing transition (0 to 1) of the pixel p0 that occurs in the upper half of the half shifted region 5.
The highlighted section 2904 includes six transitions 2910-2920 of the ECC pixel signals. The transition 2910 is a decreasing transition (1 to 0) of the pixel signal u0 that occurs in the lower half of the half shifted region 5. The transition 2912 is an increasing transition (0 to 1) of the pixel signal u1 that occurs in the lower half of the half shifted region 5. The transition 2914 is a decreasing transition (1 to 0) of the pixel signal u2 that occurs in the lower half of the half shifted region 5. The transition 2916 is an increasing transition (0 to 1) of the pixel signal u0 that occurs in the upper half of the half shifted region 5. The transition 2918 is a decreasing transition (1 to 0) of pixel signal u1 that occurs in the upper half of the half shifted region 5. The transition 2920 is a decreasing transition (1 to 0) of pixel signal u3 that occurs in the upper half of the half shifted region 5.
The example process 3000 includes the controller 2500 normalizes the ToF pixel signals p0, p1, p2, and p3 and the ECC pixel signals u0, u1, u2, and u3 (at block 3002). For example, the controller 2500 applies a threshold to normalize the ToF pixel signals p0, p1, p2, and p3 and the ECC pixel signals u0, u1, u2, and u3 to values in the range between 0 and 1.
The example process 3000 includes the controller 2500 determining a region specified by four bits b0, b1, b2, and b3 (at block 3004). For example, the controller 2500 determines a half shifted region n and the four bits may be bn0, bn1, bn2, and bn3.
The example process 3000 includes the controller 2500 determining whether a pixel signal corresponds to a lower half or an upper half of the region that is determined (at block 3006). For example, the controller 2500 performs one or more of the techniques described below with respect to
The example process 3000 includes the controller 2500 averaging ToF pixel signals p0, p1, p2, and p3 with the ECC pixel signals u0, u1, u2, and u3 to generate one or more averaged pixel signals p0′, p1′, p2′, and p3′ based on the lower half or the upper half of the region that is determined (at block 3008). The ToF pixel signals p0, p1, p2, and p3 and the ECC pixel signals u0, u1, u2, and u3 are noisy signals and the noise in each pixel signal is independent of the other pixel signals. Therefore, averaging of the pixel signals may reduce noise.
There are two approaches for averaging equivalent signals. In a first approach, the preferred equivalent signals may be averaged to reduce noise. In an example of the first approach, where the pixel signal corresponds to the lower half of half shifted region 5, then the preferred equivalent signal relationship is p3=w0=1−u0 from the table of
From the ECC decoder, the controller 2500 determines whether there is any error in p3 and u0. Therefore, averaging may be done in one of the following ways depending on the ECC decoding result: when ECC decoder indicates no error in p3 and u0, then p3′=(p3+1−u0)/2, when ECC decoder indicates no error in p3, but there is an error in u0, then p3′=p3, and when ECC decoder indicates an error in p3, and no error in u0, then p3′=1−u0. Furthermore, when the controller 2500 knows from the pixel signal plots that in the lower half of region 5, p0=p2=0 and p1=1, then the controller 2500 may set these values for p0, p1, p2 to further reduce noise. Consequently, the averaged pixel signals p0′, p1′, and p2′ is equal to 0, 1, 0, whereas p3′ is the averaged value as calculated before.
The above gives a first example of averaging using the lower half of region 5. The process of averaging using the ECC decoder results, ToF pixel signals, and ECC pixel signals for the upper half of region 5 and for regions other than region 5 may be performed similarly using the equivalent signal relationship as shown in
In a second approach, all of the equivalent signals may be averaged to reduce noise. Where the signal corresponds to the lower half of half shifted region 5, then the preferred equivalent signal relationship is p3=w0=u1=w2 or equivalently p3=1−u0=u1=1−u2 from the table of
Similarly, the controller 2500 knows from the pixel signal plots that in the lower half of region 5, p0=p2=0 and p1=1. Therefore, the controller 2500 may set these values for p0, p1, and p2 to further reduce noise. Consequently, the averaged pixel signals p0′, p1′, and p2′ is equal to 0, 1, 0, whereas p3′ is the averaged value as calculated before.
The above gives a second example of averaging using the lower half of region 5. The process of averaging using the ECC decoder results, ToF pixel signals, and ECC pixel signals for the upper half of region 5 and for regions other than region 5 may be performed similarly.
Comparing the second approach to the first approach, the second approach may provide better noise performance because averaging more signal components further reduces noise. However, the second approach may require higher bandwidth in the sensor circuit so that bandwidth related distortion is lower.
Referring back to
f(k)=((bk0==1)?p0′:r0′))+((bk1==1)?p1′:r1′))+
((bk0==1)?p2′:r2′))+((bk0==1)?p2′:r2′)) (5)
In the above expression, r0′=1-p0′, r1′=1-p1′,r2′=1-p2′, r3′=1-p3′, and (a==b)?c:d means when a equals b, then c otherwise d.
The example process 3000 also includes calculating the distance based on the region signal that is calculated (at block 3012). For example, the distance d may be calculated using Expression (6):
d=d
max*(ratio−2+(n−1)mod12)/12 (6)
In the above expression, the ratio may be defined as Expression (7):
ratio=6*f(n+1)/(f(n+1)+f(n−1)) (7)
The highlighted section 3102 is with respect to region 4 and ToF pixel signals p2 and p3 are changing in the highlighted section 3102. The highlighted section 3104 is with respect to region 7 and ToF pixel signals p1 and p3 are changing in the highlighted section 3104.
The signal column 3204 includes a signal calculation to determine an upper half or a lower half of a particular region. The signal calculation for half shifted region 0 is −p0+p3. The signal calculation for half shifted region 1 is −p0+p1−p2+p3. The signal calculation for half shifted region 2 is p1−p3. The signal calculation for half shifted region 3 is p0+p1−p2−p3. The signal calculation for half shifted region 4 is −p2+p3. The signal calculation for half shifted region 5 is p0−p1−p2+p3. The signal calculation for half shifted region 6 is p0−p3. The signal calculation for half shifted region 7 is p0−p1+p2−p3. The signal calculation for half shifted region 8 is −p1+p3. The signal calculation for half shifted region 9 is −p0−p l+p2+p3. The signal calculation for half shifted region 10 is p2−p3. The signal calculation for half shifted region 11 is −p0+p1+p2−p3.
The upper half column 3206 indicates that any signal calculation from the signal column that returns a value greater than 0 is a set of pixel signals that corresponds to an upper half of the half shifted region. The lower half column 3208 indicates that any signal calculation from the signal column that returns a value less than 0 is a set of pixel signals that corresponds to a lower half of the half shifted region. In other words, after a half shifted region is determined by the region code, the calculation in the corresponding row in table 3200 determines whether the set of pixel signals corresponds to upper or lower half of the half shifted region.
As illustrated in
As illustrated in
The second example calculations 3500 differ from the first example calculation 3200 because the second example calculations 3500 include some of the ECC pixel signals in the method 2 signal column 3510.
The method 2 signal column 3510 includes a signal calculation to determine an upper half or a lower half of a particular half shifted region. The signal calculation for half shifted region 0 is −p0+p3−u2+u3. The signal calculation for half shifted region 1 is p1+p3−u1−u3. The signal calculation for half shifted region 2 is p1−p3+u1−u3. The signal calculation for half shifted region 3 is −p2−p3+u0+u3. The signal calculation for half shifted region 4 is −p2+p3−u0+u3. The signal calculation for half shifted region 5 is p0+p3−u2−u3. The signal calculation for half shifted region 6 is p0−p3+u2−u3. The signal calculation for half shifted region 7 is −p1−p3+u1+u3. The signal calculation for half shifted region 8 is −p1+p3-u1+u3. The signal calculation for half shifted region 9 is p2+p3−u0−u3. The signal calculation for half shifted region 10 is p2−p3+u0−u3. The signal calculation for half shifted region 11 is −p0−p3+u2+u3.
In the example of
As illustrated in
For comparison purposes, consider as a reference point that the signal, the noise, and the signal-to-noise ratio in the combined pixel signal 3600 is 1x. However, as illustrated in the half shifted region 1 area in the highlighted section 3604 in
Combining the signal comparison and the noise comparison gives the signal-to-noise ratio in the combined pixel signal 3602 (or equivalently 3510) to be either 2X (i.e., 2X/1X) or the square root of 2X (i.e., 2X/2X) higher than the signal-to-noise ratio in the combined pixel signal 3600 (or equivalently 3504) depending on the half shifted region. In other words, the second example calculations 3510 provides more accurate result in the determination of the lower half or the upper half of the half shifted region relative to the first example calculations 3504 due to higher signal-to-noise ratio.
Considering the gray4 ToF method as an example. As illustrated in
The red lines show the path of the ideal values (no noise) of the ToF pixels p0, p1, p2, and p3 in the ToF system. Each of the vertices (corners) of the hypercube corresponds to the value of a region code for the half shifted regions. Each red lined edge corresponds to a non-half shifted region.
As an example, consider a set of pixel values p0, p1, p2, and p3 which is represented by a point S in
When the distance SL is smaller than the distance SU, then the controller 2500 determines the pixel values to correspond to the lower half. When the distance SU is smaller than the distance SL, then the controller 2500 determine the pixel values to correspond to the upper half. When the controller 2500 determines the distance SL and the distance SU are the same, then the controller 2500 may choose either the lower half or the upper half. In this determination, the controller 2500 may use any metric, e.g. L1 norm, L2 norm, etc.
The full ECC ToF decoding method (with performance 3802) uses both the ToF pixel signals p0, p1, p2, and p3 and the ECC pixel signals u0, u1, u2, and u3 with ECC results to determine an object distance as described above (e.g.,
In the example of
In the example of
In the example of
Considering the entirety of signal levels as a whole in view of
With regard to the processes, systems, methods, heuristics, etc. described herein, it should be understood that, although the steps of such processes, etc. have been described as occurring according to a certain ordered sequence, such processes could be practiced with the described steps performed in an order other than the order described herein. It further should be understood that certain steps could be performed simultaneously, that other steps could be added, or that certain steps described herein could be omitted. In other words, the descriptions of processes herein are provided for the purpose of illustrating certain examples, and should in no way be construed so as to limit the claims.
Accordingly, it is to be understood that the above description is intended to be illustrative and not restrictive. Many examples and applications other than the examples provided would be apparent upon reading the above description. The scope should be determined, not with reference to the above description, but should instead be determined with reference to the appended claims, along with the full scope of equivalents to which the claims are entitled. It is anticipated and intended that future developments will occur in the technologies discussed herein, and that the disclosed systems and methods will be incorporated into such future embodiments. In sum, it should be understood that the application is capable of modification and variation.
All terms used in the claims are intended to be given their broadest reasonable constructions and their ordinary meanings as understood by those knowledgeable in the technologies described herein unless an explicit indication to the contrary is made herein. In particular, use of the singular articles such as “a,” “the,” “said,” etc. should be read to recite one or more of the indicated elements unless a claim recites an explicit limitation to the contrary.
The Abstract of the Disclosure is provided to allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it may be seen that various features are grouped together in various embodiments for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separately claimed subject matter.
This application is a continuation-in-part application that claims priority to, and the benefit of, U.S. patent application Ser. No. 17/534,974, filed on Nov. 24, 2021, the entire contents of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 17534974 | Nov 2021 | US |
Child | 17885863 | US |