The present invention relates to a ranging device and a ranging method.
One of the several known methods for detecting objects is the time of flight (TOF) method, which uses the time it takes light to travel to and from a target object to be measured.
Patent Literature (PTL) 1 discloses a conventional technique in which signal accumulation is performed by transferring electric charges to two different signal storage means at different phases in synchronization with the intermittent operation of light from the light source, the distance to the target object is calculated from the distribution ratio of the accumulated signals, and background light removal is further performed to eliminate the influence of the background light by accumulating only background light in a third signal storage means.
PTL 2 discloses a conventional technique in which signals are accumulated by transferring charges to three different signal storage means at different phases in synchronization with the intermittent operation of light from the light source, the signal storage means in which only background light is accumulated is identified according to the determination result of the magnitude of the accumulated signal amount, and background light removal is performed to eliminate the influence of background light.
However, with the conventional technique disclosed in PTL 1, the third signal storage means is dedicated to background light, so the ranging range (limit) D depends on the pulse width (To) of the light source, and if light speed (299,792,458 m/s) is c, D is expressed as follows.
D=c×To/2
As the pulse width (To) of the light source increases, the ranging range D increases and the distance resolution decreases, so the ranging accuracy is inversely proportional to the pulse width (To) of the light source. Stated differently, if the pulse width (To) of the light source is increased to extend the ranging range (limit) D, the ranging accuracy conversely decreases.
It is therefore difficult to achieve both an increase in ranging range and an improvement in ranging accuracy. With the conventional technique disclosed in PTL 2, it is necessary to increase the number of signal storage means in order to extend the ranging range while maintaining the ranging accuracy. It is therefore difficult to achieve both an increase in ranging range and an improvement in ranging accuracy.
In view of the above problems, the present disclosure has an object to provide a ranging device and a ranging method that achieve a high ranging accuracy and a wide ranging range.
In order to overcome the problems described above, a ranging device according to one aspect of the present disclosure includes: a pulse generator that generates an emission pulse instructing emission timing and an exposure pulse instructing exposure timing for receiving reflected light; a controller that controls the pulse generator according to n (n is an integer greater than or equal to 4) types of packet generation codes indicating whether or not to expose or emit light in each of unit segments corresponding to distance segments into which a ranging range is divided; a light source that emits light according to the emission pulse; a solid-state image capturer that captures an image according to the exposure pulse; and a distance calculator that calculates a distance based on n types of signal values obtained from the solid-state image capturer, the n types of signal values being per unit segment.
A ranging method according to the present disclosure is used in a ranging device including: a pulse generator that generates an emission pulse instructing emission timing and an exposure pulse instructing exposure timing for receiving reflected light; a controller that controls the pulse generator; a light source that emits light according to the emission pulse; a solid-state image capturer that captures an image according to the exposure pulse; and a distance calculator that calculates a distance based on signal values obtained from the solid-state image capturer. The ranging method includes: generating, by the pulse generator, an exposure pulse and an emission pulse according to n (n is an integer greater than or equal to 4) types of packet generation codes indicating whether or not to expose or emit light in each of unit segments corresponding to distance segments into which a ranging range is divided; obtaining n types of signal values obtained from the solid-state image capturer, the n types of signal values being per unit segment; binarizing the n types of signal values into an n-bit binary number; determining the binarized n-bit binary number as an exposure code; generating n-bit binary numbers as independent codes, each n-bit binary number being n bits included in the n types of packet generation codes per unit segment; and comparing the exposure code with the independent codes and calculating a distance corresponding to the unit segment that matches. Each of the n types of packet generation codes instructs a plurality of exposure pulses for one emission pulse or a plurality of emission pulses for one exposure pulse.
With the ranging device according to the present disclosure, it is possible to achieve a high ranging accuracy and a wide ranging range.
Embodiments 7 through 10.
In
Hereinafter, a ranging device according to embodiments of the present disclosure will be described with reference to the drawings. Each of the following embodiments shows a specific example of the present disclosure. The numerical values, shapes, materials, elements, the arrangement and connection of the elements, etc., indicated in the following embodiments are mere examples, and therefore do not intend to limit the present disclosure.
It is difficult to achieve both an increase in ranging range and an improvement in ranging accuracy with the ranging device described in the Background Art section. In view of this, the present disclosure provides a ranging device and a ranging method that achieve a high ranging accuracy and a wide ranging range.
A ranging device according to one aspect of the present disclosure thus includes: a pulse generator that generates an emission pulse instructing emission timing and an exposure pulse instructing exposure timing for receiving reflected light; a controller that controls the pulse generator according to n (n is an integer greater than or equal to 4) types of packet generation codes indicating whether or not to expose or emit light in each of unit segments corresponding to distance segments into which a ranging range is divided; a light source that emits light according to the emission pulse; a solid-state image capturer that captures an image according to the exposure pulse; and a distance calculator that calculates a distance based on n types of signal values obtained from the solid-state image capturer, the n types of signal values being per unit segment.
This makes it possible to achieve a high ranging accuracy and a wide ranging range.
A ranging method according to the present disclosure is used in a ranging device including: a pulse generator that generates an emission pulse instructing emission timing and an exposure pulse instructing exposure timing for receiving reflected light; a controller that controls the pulse generator; a light source that emits light according to the emission pulse; a solid-state image capturer that captures an image according to the exposure pulse; and a distance calculator that calculates a distance based on signal values obtained from the solid-state image capturer. The ranging method includes: generating, by the pulse generator, an exposure pulse and an emission pulse according to n (n is an integer greater than or equal to 4) types of packet generation codes indicating whether or not to expose or emit light in each of unit segments corresponding to distance segments into which a ranging range is divided; obtaining n types of signal values obtained from the solid-state image capturer, the n types of signal values being per unit segment; binarizing the n types of signal values into an n-bit binary number; determining the binarized n-bit binary number as an exposure code; generating n-bit binary numbers as independent codes, each n-bit binary number being n bits included in the n types of packet generation codes per unit segment; and comparing the exposure code with the independent codes and calculating a distance corresponding to the unit segment that matches. Each of the n types of packet generation codes instructs a plurality of exposure pulses for one emission pulse or a plurality of emission pulses for one exposure pulse.
This makes it possible to achieve a high ranging accuracy and a wide ranging range.
Hereinafter, in Embodiments 1 to 6, a ranging device premised on the above-described n types of packet generation codes that indicate whether or not to expose in each of unit segments will be described. In Embodiments 7 to 11, a ranging device premised on the above-described n types of packet generation codes that indicate whether or not to emit light in each of unit segments will be described.
In
Light source 10102 emits pulsed light according to emission pulse 10120 from pulse generator 10107. Emission pulse 10120 is a signal that instructs light source 10102 to emit pulsed light. Light source 10102 emits infrared light, for example. Light source 10102 may be an LED or a laser element.
Optical lens 10103 and optical filter 10104 are optical systems that guide the reflected light from target object 10101 to solid-state image capturer 10105. Optical filter 10104 is, for example, an infrared transmission filter.
Controller 10106 controls pulse generator 10107 according to n (n is an integer greater than or equal to 4) types of packet generation codes that indicate whether or not to expose in each of unit segments corresponding to distance segments into which the ranging range is divided. Here, a packet is a signal charge generated and accumulated by solid-state image capturer 10105 through plural exposures made according to the packet generation codes. n types of packets (signal charges) are generated from the n types of packet generation codes. In the following, n=6 is used as specific example.
Pulse generator 10107 generates emission pulse 10120 that instructs the emission timing of light source 10102 and exposure pulses that instruct the exposure timing of solid-state image capturer 10105. Pulse generator 10107 generates six signals as the n types of exposure pulses, namely packet 1 exposure pulse 10121 to packet 6 exposure pulse 10126.
Solid-state image capturer 10105 captures images according to emission pulse 10120 and the n types of exposure pulses. As used herein, capturing an image refers to obtaining a distance image whose pixels each indicate a distance by receiving reflected light, mainly for ranging.
Distance calculator 10108 calculates distance based on n types of signal values per unit segment, which are obtained from solid-state image capturer 10105.
As illustrated in
The emission timing of light source 10102 and the exposure timing of solid-state image capturer 10105 are controlled by emission pulse 10120, exposure pulses 10121 to 10126 of packets 1 to 6, and discharge drive pulse 10127 from pulse generator 10107, which are controlled from controller 10106 via a control bus. Light source 10102 emits emission light 10110 when emission pulse 10120 is high level, and does not emit emission light 10110 when emission pulse 10120 is low level. For each pixel, solid-state image capturer 10105 outputs solid-state image capturer output signal 10130, which is six types of signal values corresponding to exposure pulses 10121 to 10126 of packets 1 to 6, to distance calculator 10108. Distance calculator 10108 uses solid-state image capturer output signal 10130 and control information from controller 10106 to output, for each pixel, segment number signal 10131 corresponding to the distance to target object 10101.
Light source 10102, optical lens 10103, optical filter 10104, solid-state image capturer 10105, controller 10106, pulse generator 10107, and distance calculator 10108 constitute the ranging device. Regarding the configuration, light source 10102 includes a drive circuit and light emitting elements, and emits light in response to application of voltage from the drive circuit. Laser diodes or other light emitting elements may be used as the light emitting elements. For example, controller 10106, pulse generator 10107, and distance calculator 10108 are realized by a combination of a central processing unit (CPU), a field programmable gate array (FPGA), a digital signal processor (DSP), and an analog front end (AFE) and the like.
As illustrated in
Photoelectric conversion pixel 10201 is configured of a photodiode (PD) that receives reflected light 10111 and performs photoelectric conversion.
Drains 10210 discharge the signal charge that is photoelectrically converted in photoelectric conversion pixel 10201.
Each of FDAs 10211 to 10216 stores the signal charge photoelectrically converted by photoelectric conversion pixel 10201.
Source follower circuit 10221 outputs a voltage corresponding to the amount of signal charge in FDA (signal charge accumulator) 10211. The same applies to the source follower circuits 10222 to 10226.
Output selection transistor 10231 outputs the output voltage of source follower circuit 10221 as pixel output signal 10241 when the output enable signal is high level. The same applies to output selection transistors 10232 through 10236.
Next, operations of pixel 10200 will be described. When packet 1 exposure pulse 10121 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10211. When packet 2 exposure pulse 10122 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10212. When packet 3 exposure pulse 10123 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10213. When packet 4 exposure pulse 10124 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10214. When packet 5 exposure pulse 10125 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10215. When packet 6 exposure pulse 10126 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10216.
When discharge drive pulse 10127 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is discharged to drains 10210. Accordingly, six types of imaging corresponding to exposure pulses 10121 to 10126 of packets 1 to 6 are performed per pixel by: discharging the signal charge photoelectrically converted in photoelectric conversion pixel 10201 to drains 10210 when all exposure pulses 10121 to 10126 of packets 1 to 6 are low level by setting discharge drive pulse 10127 to high level when all exposure pulses 10121 to 10126 of packets 1 to 6 are low level; and accumulating the signal charge from photoelectric conversion pixel 10201 in FDAs 10211 to 10216 corresponding to exposure pulses 10121 to 10126 of packets 1 to 6 only when one of the six exposure pulses 10121 to 10126 of packets 1 to 6 is high level by, when one of the six exposure pulses 10121 to 10126 of packets 1 to 6 is high level, setting the remaining five to low level and setting discharge drive pulse 10127 to low level. FDAs 10211 through 10216 accumulate signal charge, resulting in a voltage corresponding to the amount of signal charge, and generate a packet 1 voltage value corresponding to the amount of signal charge in FDA 10211, a packet 2 voltage value corresponding to the amount of signal charge in FDA 10212, a packet 3 voltage value corresponding to the amount of signal charge in FDA 10213, a packet 4 voltage value corresponding to the amount of signal charge in FDA 10214, a packet 5 voltage value corresponding to the amount of signal charge in FDA 10215, and a packet 6 voltage value corresponding to the amount of signal charge in FDA 10216. By setting output enable signal 10240 to high level, simultaneously, the packet 1 voltage value is output to pixel output signal 10241 through source follower circuit 10221 and output selection transistor 10231, the packet 2 voltage value is output to pixel output signal 10242 through source follower circuit 10222 and output selection transistor 10232, the packet 3 voltage value is output to pixel output signal 10243 through source follower circuit 10223 and output selection transistor 10233, the packet 4 voltage value is output to pixel output signal 10244 through source follower circuit 10224 and output selection transistor 10234, the packet 5 voltage value is output to pixel output signal 10245 through source follower circuit 10225 and output selection transistor 10235, and the packet 6 voltage value is output to pixel output signal 10246 through source follower circuit 10226 and output selection transistor 10236.
Next, readout operations of solid-state image capturer 10105 will be described. The readout operation is the same as that of a typical CMOS image sensor with six times the number of horizontal pixels. By setting row select signal 10300 to high level, row select signal 10301 to low level, row select signal 10302 to low level, and row select signal 10303 to low level, pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address 11 are output to vertical pixel signals 10311 to 10316, pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address 12 are output to vertical pixel signals 10321 to 10326, and pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address 1X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to high level, row select signal 10302 to low level, and row select signal 10303 to low level, pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address 21 are output to vertical pixel signals 10311 to 10316, pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address 22 are output to vertical pixel signals 10321 to 10326, and pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address 2X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to low level, row select signal 10302 to high level, and row select signal 10303 to low level, pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address 31 are output to vertical pixel signals 10311 to 10316, pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address 32 are output to vertical pixel signals 10321 to 10326, and pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address 3X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to low level, row select signal 10302 to low level, and row select signal 10303 to high level, pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address Y1 are output to vertical pixel signals 10311 to 10316, pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address Y2 are output to vertical pixel signals 10321 to 10326, and pixel output signals 10241 to 10246 of packets 1 to 6 of pixel 10200 at pixel address YX are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. Column AD 10370 AD-converts the input pixel output signals 10241 to 10246 of packets 1 to 6 for the X number of pixels into 12-bit signal values, generates a packet 1 signal value resulting from AD-converting packet 1 voltage value, a packet 2 signal value resulting from AD-converting packet 2 voltage value, a packet 3 signal value resulting from AD-converting packet 3 voltage value, a packet 4 signal value resulting from AD-converting packet 4 voltage value, a packet 5 signal value resulting from AD-converting packet 5 voltage value, and a packet 6 signal value resulting from AD-converting packet 6 voltage value for the X number of pixels, and outputs the generated signal values to shift register 10371. Shift register 10371 shifts the input signal values of packets 1 to 6 for the X number of pixels one by one, and outputs the shifted signal values to solid-state image capturer output signal 10130.
As illustrated in
Unit drive patterns 10431 to 10436 for packets 1 to 6 are repeated 300 times in drive patterns 10421 to 10426 for packets 1 to 6, respectively, and drive patterns 10421 to 10426 for packets 1 to 6 are repeated 12 times via the frame unit drive patterns. Stated differently, each of unit drive patterns 10431 to 10436 for packets 1 to 6 are repeated 3600 (=300×12) times. By repeating each pattern 3600 times, even though the amount of emission light 10110 emitted each time is small, it is possible to ensure a sufficient amount of light. On the other hand, by dividing frame drive pattern 10400 into 12 frame unit drive patterns 10410, the amount of time required for each frame unit drive pattern 10410 can be shortened and the apparent imaging timing of packets 1 to 6 can be synchronized. By repeating the frame unit drive pattern 10410 12 times, blur caused by target object 10101 moving occurs evenly in packets 1 to 6, making it possible to inhibit side effects such as data corruption during distance calculation caused by target object 10101 moving.
Segment numbers 10500 and generation codes 10501 to 10506 of packets 1 to 6 are transmitted to pulse generator 10107 through the control bus, and pulse generator 10107 generates unit drive patterns 10431 to 10436 for packets 1 to 6 from segment numbers 10500 and generation codes 10501 to 10506 of packets 1 to 6. The generation codes of packets 1 to 6 illustrated in
The following describes a method of controlling emission pulse 10120, exposure pulses 10121 to 10126 of packets 1 to 6, and discharge drive pulse 10127 for segment numbers 0 to 31 included in segment numbers 10500.
Discharge drive pulse 10127 is generated as low level when packet 2 generation code 10502 corresponding to segment number 10500 is “1” and high level when packet 2 generation code 10502 corresponding to segment number 10500 is “0”, which results in a pulse whose logic is inverted from that of packet 2 exposure pulse 10122.
Discharge drive pulse 10127 is generated as low level when packet 5 generation code 10505 corresponding to segment number 10500 is “1” and high level when packet 5 generation code 10505 corresponding to segment number 10500 is “0”, which results in a pulse whose logic is inverted from that of packet 5 exposure pulse 10125.
Regarding the notations in
“P1(11)v” to “P6(11)v” indicate the voltage values of packets 1 to 6 of pixel 10200 at pixel address 11, which correspond to pixel output signals 10241 through 10246 and vertical pixel signals 10311 through 10316, in the following description. Similarly, notation P6(YX)v indicates the packet 6 voltage value of the pixel at pixel address YX, which corresponds to pixel output signal 10246 and vertical pixel signal 10336.
For example, notations “P1(11)Sig” to “P6(11)Sig” indicate the signal values of packets 1 to 6 of pixel 10200 at pixel address 11 in the following description. More specifically, P1(11)Sig in
Row select signals 10300 to 10303, column AD 10370, and shift register 10371 are controlled to output the signal values of packets 1 to 6 of all pixels 10200 illustrated in
As illustrated in
Distance calculator 10108 illustrated in
Threshold register 10800 stores, as the threshold value, the boundary value between the black level, which is the signal level when there is no reflected light, and the signal level when there is reflected light.
Comparator 10802 compares solid-state image capturer output signal 10130 with the threshold value and binarizes solid-state image capturer output signal 10130, i.e., outputs a binary signal indicating the presence or absence of reflected light.
Synchronizer 10803 synchronizes packets 1 to 6 of the same pixel address. Stated differently, binarized packets 1 to 6 of the same pixel address are output in parallel. The 6-bit data corresponding to the binary packets 1 to 6 of the same pixel address is called the exposure code.
Memory (LUT) 10801 is a look-up table (LUT) for converting the exposure code to a segment number. The LUT, for example, receives an input of the exposure code as an address and outputs the segment number as read data.
Next, the operation of distance calculator 10108 will be described. Distance calculator 10108 compares solid-state image capturer output signal 10130 and the value of threshold register 10800 in comparator 10802, and outputs packet code 10810 of “0” when solid-state image capturer output signal 10130 threshold register 10800, and outputs packet code 10810 of “1” when solid-state image capturer output signal 10130 >threshold register 10800. Packet codes 10810 corresponding to the signal values of packets 1 to 6 for each pixel address are synchronized in synchronizer 10803, and the six synchronized packet codes 10810 are regarded as a 6-bit binary number to generate exposure code 10820. By setting threshold register 10800 to the sum of the black level and a value that takes into account offset for inhibiting variations caused by dark current in, for example, photoelectric conversion pixels 10201 and FDA 10211 to 10216 and the like, it is possible to achieve a configuration where the result of comparator 10802 for the signal values of packets 1 to 6 that include reflected light 10111 is “1”, and the result of comparator 10802 for the signal values of packets 1 to 6 that do not include reflected light 10111 is “0”, whereby exposure code 10820 thus indicates packets that include reflected light 10111. Exposure code 10820 is then used as a read address to access memory (LUT) 10801, and the read data of memory (LUT) 10801 is output as segment number signal 10131. The initial values of memory (LUT) 10801 are set from controller 10106 via the control bus. The method of generating the initial values to be set in memory (LUT) 10801 will be explained with reference to
Each independent code 10900 in the upper part of
Each adjacent code 10901 is a code obtained by applying a bitwise logical OR operation between two independent codes corresponding to two adjacent unit segments. Each adjacent code 10901 is generated, for example, by applying a bitwise logical OR operation between two independent codes corresponding to two adjacent unit segments by controller 10106. If the above exposure code matches any of the adjacent codes, the intermediate distance between the two unit segments corresponding to the matching adjacent code is the distance value of the pixel.
As illustrated in
Controller 10106 generates each independent code 10900 as a 6-bit binary number, where packet 1 generation code 10501 is bit 0, packet 2 generation code 10502 is bit 1, packet 3 generation code 10503 is bit 2, packet 4 generation code 10504 is bit 3, packet 5 generation code 10505 is bit 4, and packet 6 generation code 10506 is bit 5. For example, independent code 10920 of segment number 10500 of 7, which is labeled 10921, is a 6-bit binary number where packet 1 generation code 10501 of “0” at segment number 10500 of 7 is bit 0, packet 2 generation code 10502 of “0” at segment number 10500 of 7 is bit 1, packet 3 generation code 10503 of “0” at segment number 10500 of 7 is bit 2, packet 4 generation code 10504 of “0” at segment number 10500 of 7 is bit 3, packet 5 generation code 10505 of “1” at segment number 10500 of 7 is bit 4, and packet 6 generation code 10506 of “0” at segment number 10500 of 7 is bit 5, which converts to 10 in hexadecimal notation. Controller 10106 generates each adjacent code 10901 by applying a bitwise logical OR operation between independent codes 10900 of two adjacent segments. For example, adjacent code 10923 corresponding to the adjacent segment numbers 10500 of 24 and 25, which are labeled 10924, is a 6-bit binary number where the result of the logical OR operation of the value “1” of bit 0 of the independent code at segment number 10500 of 24 and the value “0” of bit 0 of the independent code at segment number 10500 of 25 is “1” as bit 0, the result of the logical OR operation of the value “1” of bit 1 of the independent code at segment number 10500 of 24 and the value “1” of bit 1 of the independent code at segment number 10500 of 25 is “1” as bit 1, the result of the logical OR operation of the value “0” of bit 2 of the independent code at segment number 10500 of 24 and the value “0” of bit 2 of the independent code at segment number 10500 of 25 is “0” as bit 2, the result of the logical OR operation of the value “0” of bit 3 of the independent code at segment number 10500 of 24 and the value “0” of bit 3 of the independent code at segment number 10500 of 25 is “0” as bit 3, the result of the logical OR operation of the value “0” of bit 4 of the independent code at segment number 10500 of 24 and the value “1” of bit 4 of the independent code at segment number 10500 of 25 is “1” as bit 4, and the result of the logical OR operation of the value “1” of bit 5 of the independent code at segment number 10500 of 24 and the value “1” of bit 5 of the independent code at segment number 10500 of 25 is “1” as bit 5, which converts to 33 in hexadecimal notation. In this example, in independent codes 10900, the signal values of packets 1 to 6 that include reflected light 10111 are “1” and the signal values of packets 1 to 6 that do not include reflected light 10111 are “0” when reflected light 10111 returns to only one segment number 10500, and in adjacent codes 10901, the signal values of packets 1 to 6 that include reflected light 10111 are “1” and the signal values of packets 1 to 6 that do not include reflected light 10111 are “0” when reflected light 10111 returns across two adjacent segment numbers 10500, and exposure code 10820 is estimated for each segment number 10500 based on generation codes 10501 to 10506 of packets 1 to 6. For this reason, memory (LUT) 10801 is initialized with independent codes 10900 and adjacent codes 10901 as addresses and segment numbers 10500 corresponding to independent codes 10900 and adjacent codes 10901 as data, and memory (LUT) 10801 is accessed and read with exposure code 10820 as an address, making it is possible to convert exposure code 10820 to the segment number corresponding to the distance. Table 10910 is a data set for initializing memory (LUT) 10801. Since the hexadecimal notation of independent code 10920 is “10”, the data corresponding to the hexadecimal address of “10” in table 10910 is 7, which is segment number 10921 of independent code 10920. Since the hexadecimal notation of adjacent code 10923 is “33”, the data corresponding to the hexadecimal address of “33” in table 10910 is 24.5, the average of 24 and 25, which are segment numbers 10924 of adjacent code 10923. This is because segment numbers 10924 of adjacent code 10923 indicate that reflected light 10111 returned across segment numbers 24 and 25, but the specific timing of the return of reflected light 10111 is not known, so it is assumed that the reflected light 10111 returned in the middle of two adjacent segments, and so the average of the two adjacent segment numbers is used to reduce the maximum error to half of the segment.
Next, the method of generating generation codes 10501 to 10506 of packets 1 to 6 to be applied to controller 10106 will be described. In order to calculate the segment numbers using exposure codes 10820 generated from the signal values of packets 1 to 6 described above, there must be a one-to-one correspondence between exposure codes 10820 and the segment numbers. Therefore, generation codes 10501 to 10506 of packets 1 to 6 are determined so that the values of independent codes 10900 and adjacent codes 10901 do not overlap, and exposure codes 10820 and the segment numbers are associated one-to-one. Moreover, generation codes 10501 to 10506 of packets 1 to 6 are determined such that independent codes 10900 and adjacent codes 10901 do not take a value of “00” in hexadecimal notation. When reflected light 10111 is returned at a timing when the value of independent code 10900 or adjacent code 10901 is “00”, exposure pulses 10121 to 10126 of packets 1 to 6 are low level, and as such, the signal values of packets 1 to 6 do not include the reflected light 10111 component. Even if target object 10101 does not exist within the ranging range of segment numbers 0 to 31, the signal values of packets 1 to 6 do not include the reflected light 10111 component. Accordingly, since it is not possible to determine whether these two conditions are satisfied from the signal values of packets 1 to 6, generation codes 10501 to 10506 of packets 1 to 6 are generated such that independent codes 10900 and adjacent codes 10901 do not take a value of “00” in hexadecimal notation. In case exposure code 10820 matches “00”, which does not exist in independent codes 10900 or adjacent codes 10901, it is possible to determine that the segment number is not calculated correctly by setting the segment number to a negative value of −1.
Notations in
“P6(11)bin” indicate the codes of packets 1 to 6 of pixel 10200 at pixel address 11 in the following description, and correspond to exposure code 10820 of pixel 10200 at pixel address 11.
As illustrated in
The method used to calculate distance by distance calculator 10108 of a single pixel is explained in detail below.
The signal values of packets 1 to 6 are determined according to the signal charge from the photoelectric conversion of the reflected light 10111 by photoelectric conversion pixel 10201, the dark current noise of photoelectric conversion pixel 10201 and FDAs 10211 to 10216, and so on. In a typical image sensor, components such as dark current noise are somewhat small, so the signal values of packets 1 to 6 which do not include reflected light 10111 are near black level. In the control sequence of light source 10102 and solid-state image capturer 10105 illustrated in
Comparator 10802 sequentially compares the signal values of packets 1 to 6 sequentially input from solid-state image capturer 10105 with the value in threshold register 10800, and generates the codes of packets 1 to 6.
The packet 1 code is set to “0” because the packet 1 signal value “value near black level” the threshold register value “value near black level”. The packet 2 code is set to “1” because the packet 2 signal value “greater than black level”>the threshold register value “value near black level”. The packet 3 code is set to “0” because the packet 3 signal value “value near black level” the threshold register value “value near black level”. The packet 4 code is set to “0” because the packet 4 signal value “value near black level” the threshold register value “value near black level”. The packet 5 code is set to “0” because the packet 5 signal value “value near black level” the threshold register value “value near black level”. The packet 6 code is set to “0” because the packet 6 signal value “value near black level” the threshold register value “value near black level”.
The codes of packets 1 to 6 are synchronized in synchronizer 10803, and exposure code 10820 is generated as a 6-bit binary number, where packet 1 code is bit 0, packet 2 code is bit 1, packet 3 code is bit 2, packet 4 code is bit 3, packet 5 code is bit 4, and packet 6 code is bit 5, which converts to “02” in hexadecimal notation. When this exposure code 10820 is accessed and read as the address of memory (LUT) 10801, the data at address 02 of table 10910 is 1, which means reflected light 10111 has returned with a segment number of 1, and this segment number of 1 is output as the distance.
The actual distance to target object 10101 can be calculated from the time difference between the generation of emission light 10110 and the return of reflected light 10111. The time difference between the generation of emission light 10110 and the return of reflected light 10111 can be calculated by multiplying the time of one segment by the segment number, and since emission light 10110 was reflected by target object 10101 and returned to solid-state image capturer 10105 as reflected light 10111, emission light 10110 and reflected light 10111 traveled twice the distance to target object 10101.
In other words, the reflected wave from the unit segment (distance segment) with a segment number of 0 indicates that a target object is present at a distance of 0 to 1.5 meters, the reflected wave from the unit segment (distance segment) with a segment number of 1 indicates that a target object is present at a distance of 1.5 to 3 meters, the reflected wave from the unit segment (distance segment) with a segment number of 2 indicates that a target object is present at a distance of 3 to 4.5 meters, and so on for the remaining segment numbers.
The unit segment may be based on the pulse width of the exposure pulse. The unit segment may be the same as the pulse width of the exposure pulse or it may be different. The pulse width of the exposure pulse may be the same as the pulse width of the emission pulse, or it may be different. For ease of understanding, the present embodiment assumes that the pulse width of the exposure pulse, the pulse width of the emission pulse, and the unit segment are the same.
Comparator 10802 sequentially compares the signal values of packets 1 to 6 sequentially input from the solid-state image capturer with the value in threshold register 10800, and generates the codes of packets 1 to 6.
The packet 1 code is set to “1” because the packet 1 signal value “greater than black level”>the threshold register value “value near black level”. The packet 2 code is set to “0” because the packet 2 signal value “value near black level” the threshold register value “value near black level”. The packet 3 code is set to “1” because the packet 3 signal value “greater than black level”>the threshold register value “value near black level”. The packet 4 code is set to “1” because the packet 4 signal value “greater than black level”>the threshold register value “value near black level”. The packet 5 code is set to “0” because the packet 5 signal value “value near black level” the threshold register value “value near black level”. The packet 6 code is set to “1” because the packet 6 signal value “greater than black level”>the threshold register value “value near black level”.
The codes of packets 1 to 6 are synchronized in synchronizer 10803, and exposure code 10820 is generated as a 6-bit binary number, where packet 1 code is bit 0, packet 2 code is bit 1, packet 3 code is bit 2, packet 4 code is bit 3, packet 5 code is bit 4, and packet 6 code is bit 5, which converts to “2D” in hexadecimal notation. When this exposure code 10820 is accessed and read as the address of memory (LUT) 10801, the data at address 2D of table 10910 is 30, which means reflected light 10111 has returned with a segment number of 30, and this segment number of 30 is output as the distance.
Comparator 10802 sequentially compares the signal values of packets 1 to 6 sequentially input from the solid-state image capturer with the value in threshold register 10800, and generates the codes of packets 1 to 6.
The packet 1 code is set to “0” because the packet 1 signal value “value near black level” the threshold register value “value near black level”. The packet 2 code is set to “1” because the packet 2 signal value “greater than black level”>the threshold register value “value near black level”. The packet 3 code is set to “1” because the packet 3 signal value “greater than black level”>the threshold register value “value near black level”. The packet 4 code is set to “0” because the packet 4 signal value “value near black level” the threshold register value “value near black level”. The packet 5 code is set to “0” because the packet 5 signal value “value near black level” the threshold register value “value near black level”. The packet 6 code is set to “0” because the packet 6 signal value “value near black level” the threshold register value “value near black level”.
The codes of packets 1 to 6 are synchronized in synchronizer 10803, and exposure code 10820 is generated as a 6-bit binary number, where packet 1 code is bit 0, packet 2 code is bit 1, packet 3 code is bit 2, packet 4 code is bit 3, packet 5 code is bit 4, and packet 6 code is bit 5, which converts to “06” in hexadecimal notation. When this exposure code 10820 is accessed and read as the address of memory (LUT) 10801, the data at address 06 of table 10910 is 1.5, which means reflected light 10111 has returned with a segment number between 1 and 2, and this segment number of 1.5 is output as the distance.
Comparator 10802 sequentially compares the signal values of packets 1 to 6 sequentially input from the solid-state image capturer with the value in threshold register 10800, and generates the codes of packets 1 to 6. The packet 1 code is set to “1” because the packet 1 signal value “greater than black level”>the threshold register value “value near black level”. The packet 2 code is set to “0” because the packet 2 signal value “value near black level” the threshold register value “value near black level”. The packet 3 code is set to “1” because the packet 3 signal value “greater than black level”>the threshold register value “value near black level”. The packet 4 code is set to “1” because the packet 4 signal value “greater than black level”>the threshold register value “value near black level”. The packet 5 code is set to “1” because the packet 5 signal value “greater than black level”>the threshold register value “value near black level”. The packet 6 code is set to “1” because the packet 6 signal value “greater than black level”>the threshold register value “value near black level”.
The codes of packets 1 to 6 are synchronized in synchronizer 10803, and exposure code 10820 is generated as a 6-bit binary number, where packet 1 code is bit 0, packet 2 code is bit 1, packet 3 code is bit 2, packet 4 code is bit 3, packet 5 code is bit 4, and packet 6 code is bit 5, which converts to “3D” in hexadecimal notation.
When this exposure code 10820 is accessed and read as the address of memory (LUT) 10801, the data at address 3D of table 10910 is 29.5, which means reflected light 10111 has returned with a segment number between 29 and 30, and this segment number of 29.5 is output as the distance.
From the above operation, the time required for 12 repetitions of frame unit drive pattern 10410, which corresponds to the imaging exposure time, is 17.28 ms, and the time required for image data readout 10411, which corresponds to the imaging readout time, is 16.053 ms. Therefore, the time required for one frame is 33.3 ms, and the frame rate of this ranging device is 30 fps. Compared to the conventional technique, this technique can significantly expand the range over which distance can be measured with a smaller number of packets, so by using this technique, the ranging range can be significantly expanded while maintaining the frame rate.
As described above, the ranging device according to Embodiment 1 includes: a pulse generator that generates an emission pulse instructing emission timing and an exposure pulse instructing exposure timing for receiving reflected light; a controller that controls the pulse generator according to n (n is an integer greater than or equal to 4) types of packet generation codes indicating whether or not to expose in each of unit segments corresponding to distance segments into which a ranging range is divided; a light source that emits light according to the emission pulse; a solid-state image capturer that captures an image according to the exposure pulse; and a distance calculator that calculates a distance based on n types of signal values obtained from the solid-state image capturer, the n types of signal values being per unit segment.
This makes it possible to achieve a high ranging accuracy and a wide ranging range. This is because the distance to the target object is determined by identifying the unit segment (i.e., the distance segment) where the n-bit data of the n types of signal values matches the n-bit data per unit segment (per distance segment) among the n types of packet generation codes. Since the n-bit data per unit segment (per distance segment) can be used for 2 to the nth power unit segments, the number of unit segments can be easily increased, thus achieving a high ranging accuracy and a wide ranging range.
Here, the controller may generate n-bit binary numbers as independent codes, each n-bit binary number being n bits included in the n types of packet generation codes per unit segment, and the distance calculator may: binarize the n types of signal values into an n-bit binary number and determine the binarized n-bit binary number as an exposure code; and compare the exposure code with the independent codes and calculate a distance corresponding to the matching unit segment.
With this, the distance to the target object can be calculated by identifying the distance segment where the exposure code and the independent code match. Since the maximum number of unit segments, i.e., independent codes is 2 to the nth power, the number of unit segments can be easily increased, thus achieving a high ranging accuracy and a wide ranging range.
Here, the controller may generate n-bit adjacent codes by applying a bitwise logical OR operation between two independent codes corresponding to two adjacent unit segments, and the distance calculator may further compare the exposure code with the adjacent codes, and when there is a match, calculates an intermediate distance between the two unit segments corresponding to the matching adjacent code.
With this, when the exposure code matches an adjacent code, it is possible to identify the two corresponding distance segments, and calculate the distance to the target object as an intermediate distance between the two identified distance segments. The total of the number of independent codes and the number of adjacent codes can be set up to a maximum of 2 to the nth power. For example, since a maximum of 2 to the (n−1)th power of independent codes and a maximum of 2 to the (n−1)th power of adjacent codes can be set, a higher ranging accuracy and a wider ranging range can be achieved.
Here, each of the adjacent codes may be different from any other adjacent code.
With this, when the exposure code matches an adjacent code, the distance to the target object can be easily identified as a range spanning across the boundary of the two corresponding distance segments and a range less than or equal to the distance segment.
Here, each of the independent codes may be different from any other independent code.
With this, when the exposure code matches an independent code, the distance to the target object can be easily identified via the corresponding distance segment.
Here, the solid-state image capturer may include: a photoelectric conversion pixel; n signal charge accumulators that each accumulate a signal charge generated by the photoelectric conversion pixel, the n signal charge accumulators corresponding to the n types of packet generation codes; and a signal outputter that outputs the n types of signal values corresponding to the signal charges accumulated in the n signal charge accumulators.
This makes it possible to accumulate n types of signal values in the solid-state image capturer. Since the readout operation of the signal values from the solid-state image capturer can be performed after accumulating n types of signal values, i.e., after successive exposures made according to the n types of packet generation codes, the imaging operation can be sped up. Stated differently, it is easy to increase the frame rate.
A ranging method according to Embodiment 1 is used in a ranging device including: a pulse generator that generates an emission pulse instructing emission timing and an exposure pulse instructing exposure timing for receiving reflected light; a controller that controls the pulse generator according to n (n is an integer greater than or equal to 4) types of packet generation codes indicating whether or not to expose in each of unit segments corresponding to distance segments into which a ranging range is divided; a light source that emits light according to the emission pulse; a solid-state image capturer that captures an image according to the exposure pulse; and a distance calculator that calculates a distance based on n types of signal values per unit segment obtained from the solid-state image capturer. The ranging method includes: generating, by the pulse generator, an exposure pulse and an emission pulse according to n types of packet generation codes indicating whether or not to expose in each of unit segments corresponding to distance segments into which a ranging range is divided, n being an integer greater than or equal to 4; obtaining n types of signal values obtained from the solid-state image capturer, the n types of signal values being per unit segment; binarizing the n types of signal values into an n-bit binary number; determining the binarized n-bit binary number as an exposure code; generating n-bit binary numbers as independent codes, each n-bit binary number being n bits included in the n types of packet generation codes per unit segment; and comparing the exposure code with the independent codes and calculating a distance corresponding to the unit segment that matches. Each of the n types of packet generation codes instructs a plurality of exposure pulses for one emission pulse.
With this, the distance to the target object can be calculated by identifying the distance segment where the exposure code and the independent code match. Since the maximum number of unit segments, i.e., independent codes is 2 to the nth power, the number of unit segments can be easily increased, thus achieving a high ranging accuracy and a wide ranging range.
Here, n-bit adjacent codes may be generated by applying a bitwise logical OR operation between two independent codes corresponding to two adjacent unit segments, and the adjacent codes may be compared with the independent codes, and when there is a match, an intermediate distance between the two corresponding unit segments may be calculated.
With this, when the exposure code matches an adjacent code, it is possible to identify the two corresponding distance segments, and calculate the distance to the target object as an intermediate distance between the two identified distance segments. The total of the number of independent codes and the number of adjacent codes can be set up to a maximum of 2 to the nth power. For example, since a maximum of 2 to the (n−1)th power of independent codes and a maximum of 2 to the (n−1)th power of adjacent codes can be set, a higher ranging accuracy and a wider ranging range can be achieved.
Embodiment 1 described use in an environment where there is no background light including a 940 nm wavelength component. However, when considering outdoor use, etc., there will be a high-energy background light including a 940 nm wavelength component from, for example, sunlight, which has a significant negative impact on the accuracy of the ranging device. Embodiment 2 describes a method to mitigate adverse effects even in the presence of high-energy background light including a 940 nm wavelength component.
Embodiment 2 in an environment including background light. As illustrated in
Light source 10102, optical lens 10103, optical filter 10104, solid-state image capturer 10105, controller 10106, pulse generator 10107, and distance calculator 21508 constitute the ranging device. Regarding the configuration, light source 10102 includes a drive circuit and light emitting elements, and emits light in response to application of voltage from the drive circuit. Laser diodes and other light emitting elements may be used as the light emitting elements.
For example, controller 10106, pulse generator 10107, and distance calculator 21508 are realized by a combination of a central processing unit (CPU), a field programmable gate array (FPGA), a digital signal processor (DSP), and an analog front end (AFE) and the like.
Next, operations of pixel 10200 will be described. When packet 1 exposure pulse 10121 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10211, when packet 2 exposure pulse 10122 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10212, when packet 3 exposure pulse 10123 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10213, when packet 4 exposure pulse 10124 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10214, when packet 5 exposure pulse 10125 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10215, when packet 6 exposure pulse 10126 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10216, and when discharge drive pulse 10127 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is discharged to drains 10210. Accordingly, six types of imaging corresponding to exposure pulses 10121 to 10126 of packets 1 to 6 are performed per pixel by: discharging the signal charge photoelectrically converted in photoelectric conversion pixel 10201 to drains 10210 when all exposure pulses 10121 to 10126 of packets 1 to 6 are low level by setting discharge drive pulse 10127 to high level when all exposure pulses 10121 to 10126 of packets 1 to 6 are low level; and accumulating the signal charge from photoelectric conversion pixel 10201 in FDAs 10211 to 10216 corresponding to exposure pulses 10121 to 10126 of packets 1 to 6 only when one of the six exposure pulses 10121 to 10126 of packets 1 to 6 is high level by, when one of the six exposure pulses 10121 to 10126 of packets 1 to 6 is high level, setting the remaining five to low level and setting discharge drive pulse 10127 to low level. FDAs 10211 through 10216 accumulate signal charge, resulting in a voltage corresponding to the amount of signal charge, and generate a packet 1 voltage value corresponding to the amount of signal charge in FDA 10211, a packet 2 voltage value corresponding to the amount of signal charge in FDA 10212, a packet 3 voltage value corresponding to the amount of signal charge in FDA 10213, a packet 4 voltage value corresponding to the amount of signal charge in FDA 10214, a packet 5 voltage value corresponding to the amount of signal charge in FDA 10215, and a packet 6 voltage value corresponding to the amount of signal charge in FDA 10216. By setting output enable signal 10240 to high level, simultaneously, the packet 1 voltage value is output to pixel output signal 10241 through source follower circuit 10221 and output selection transistor 10231, the packet 2 voltage value is output to pixel output signal 10242 through source follower circuit 10222 and output selection transistor 10232, the packet 3 voltage value is output to pixel output signal 10243 through source follower circuit 10223 and output selection transistor 10233, the packet 4 voltage value is output to pixel output signal 10244 through source follower circuit 10224 and output selection transistor 10234, the packet 5 voltage value is output to pixel output signal 10245 through source follower circuit 10225 and output selection transistor 10235, and the packet 6 voltage value is output to pixel output signal 10246 through source follower circuit 10226 and output selection transistor 10236.
Embodiments 1 through 4. The stated number of pixels is merely one non-limiting example. Output enable signals 10240 of pixels 10200 at pixel address 11, pixel address 12, and pixel address 1X arranged in the horizontal direction in the first row are connected to row select signal 10300, output enable signals 10240 of pixels 10200 at pixel address 21, pixel address 22, and pixel address 2X arranged in the horizontal direction in the second row are connected to row select signal 10301, output enable signals 10240 of pixels 10200 at pixel address 31, pixel address 32, and pixel address 3X arranged in the horizontal direction in the third row are connected to row select signal 10302, and output enable signals 10240 of pixels 10200 at pixel address Y1, pixel address Y2, and pixel address YX arranged in the horizontal direction in the Yth row are connected to row select signal 10303. Pixel output signals 10241 to 10246 of pixels 10200 at pixel address 11, pixel address 21, pixel address 31, and pixel address Y1 arranged in the vertical direction in the first column are connected to vertical pixel signals 10311 to 10316, pixel output signals 10241 to 10246 of pixels 10200 at pixel address 12, pixel address 22, pixel address 32, and pixel address Y2 arranged in the vertical direction in the second column are connected to vertical pixel signals 10321 to 10326, and pixel output signals 10241 to 10246 of pixels 10200 at pixel address 1X, pixel address 2X, pixel address 3X, and pixel address YX arranged in the vertical direction in the Xth column are connected to vertical pixel signals 10331 to 10336. Vertical pixel signals 10311 to 10316, 10321 to 10326, and 10331 to 10336 are connected to column AD 10370, the output signals of column AD 10370 are connected to shift register 10371, and shift register 10371 outputs solid-state image capturer output signal 10130.
Next, readout operations of solid-state image capturer 10105 will be described. The readout operation is the same as that of a typical CMOS image sensor with six times the number of horizontal pixels. By setting row select signal 10300 to high level, row select signal 10301 to low level, row select signal 10302 to low level, and row select signal 10303 to low level, voltage values of packets 1 to 6 of pixel 10200 at pixel address 11 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address 12 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address 1X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to high level, row select signal 10302 to low level, and row select signal 10303 to low level, voltage values of packets 1 to 6 of pixel 10200 at pixel address 21 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address 22 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address 2X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to low level, row select signal 10302 to high level, and row select signal 10303 to low level, voltage values of packets 1 to 6 of pixel 10200 at pixel address 31 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address 32 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address 3X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to low level, row select signal 10302 to low level, and row select signal 10303 to high level, voltage values of packets 1 to 6 of pixel 10200 at pixel address Y1 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address Y2 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address YX are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. Column AD 10370 AD-converts the input voltage values of packets 1 to 6 for the X number of pixels into 12-bit signal values, generates a packet 1 signal value resulting from AD-converting packet 1 voltage value, a packet 2 signal value resulting from AD-converting packet 2 voltage value, a packet 3 signal value resulting from AD-converting packet 3 voltage value, a packet 4 signal value resulting from AD-converting packet 4 voltage value, a packet 5 signal value resulting from AD-converting packet 5 voltage value, and a packet 6 signal value resulting from AD-converting packet 6 voltage value for the X number of pixels, and outputs the generated signal values to shift register 10371. Shift register 10371 shifts the input signal values of packets 1 to 6 for the X number of pixels one by one, and outputs the shifted signal values to solid-state image capturer output signal 10130.
As illustrated in
Unit drive patterns 21631 to 21636 for packets 1 to 6 are repeated 300 times in drive patterns 10421 to 10426 for packets 1 to 6, respectively, and drive patterns 10421 to 10426 for packets 1 to 6 are repeated 12 times via the frame unit drive patterns. Stated differently, each of unit drive patterns 21631 to 21636 for packets 1 to 6 are repeated 3600 (=300×12) times. By repeating each pattern 3600 times, even though the amount of emission light 10110 emitted each time is small, it is possible to ensure a sufficient amount of light. On the other hand, by dividing frame drive pattern 10400 into 12 frame unit drive patterns 10410, the amount of time required for each frame unit drive pattern 10410 can be shortened and the apparent imaging timing of packets 1 to 6 can be synchronized. By repeating the frame unit drive pattern 10410 12 times, blur caused by target object 10101 moving occurs evenly in packets 1 to 6, making it possible to inhibit side effects such as data corruption during distance calculation caused by target object 10101 moving.
Embodiment 2. As illustrated in
The following describes a method of controlling emission pulse 10120, exposure pulses 10121 to 10126 of packets 1 to 6, and discharge drive pulse 10127 for segment numbers 0 to 30 included in segment numbers 21700.
Discharge drive pulse 10127 is generated as low level when packet 3 generation code 21703 corresponding to segment number 21700 is “1” and high level when packet 3 generation code 21703 corresponding to segment number 21700 is “0”, which results in a pulse whose logic is inverted from that of packet 3 exposure pulse 10123.
Discharge drive pulse 10127 is generated as low level when packet 6 generation code 21706 corresponding to segment number 21700 is “1” and high level when packet 6 generation code 21706 corresponding to segment number 21700 is “0”, which results in a pulse whose logic is inverted from that of packet 6 exposure pulse 10126.
As illustrated in
memory (LUT) 10801 controlled by controller 10106 via the control bus; selector circuit 21907 that selects exposure counts 21901 to 21906 of packets 1 to 6; divider 21908 that performs division of solid-state image capturer output signal 10130 and the output signal from selector circuit 21907; synchronizer (B) 21909 that synchronizes the output signal of divider 21908 for each pixel address; MIN detector 21911 that detects a minimum value from among synchronizer (B) output signals 21921 to 21926; multiplier 21912 that multiplies MIN detector output signal 21927 and exposure counts 21901 to 21906 of packets 1 to 6; synchronizer (A) 21910 that synchronizes solid-state image capturer output signal 10130 for each pixel address; subtractor 21913 that performs subtraction of synchronizer (A) output signals 21941 to 21946 and multiplier output signals 21931 to 21936; MAX-MIN detector 21914 that detects a maximum value and a minimum value from among subtraction signals 21951 to 21956; AVG calculator 21915 that calculates an average value of maximum value signal 21957 and minimum value signal 21958 output from the MAX-MIN detector to generate threshold signal 21960; and comparator 10802 that compares subtraction signals 21951 to 21956 with threshold signal 21960. Next, the operation of distance calculator 21508 will be described. Note that the explanation will be based on the assumption that the signal values of packets 1 to 6 of solid-state image capturer output signal 10130 include at least one packet that does not include reflected light 10111 and at least one packet that does include reflected light 10111. How to realize this constraint will be explained with reference to
Solid-state image capturer output signal 10130 is synchronized in synchronizer (A) 21910 with the signal values of packets 1 to 6 for each pixel address, which generates synchronizer (A) output signals 21941 to 21946. Since the number of times that exposure pulses 10121 to 10126 of packets 1 to 6 become high level is different for each signal value of packets 1 to 6 in solid-state image capturer output signal 10130, in order to equalize the amount of reflected background light 21511 included in the signal values of packets 1 to 6, for each signal value of packets 1 to 6, exposure counts 21901 to 21906 of packets 1 to 6 are selected by selector circuit 21907, divided by divider 21908, and input to synchronizer (B) 21909. The method of generating exposure counts 21901 to 21906 of packets 1 to 6 will be explained later with reference to
First, the method of calculating exposure counts 21901 to 21906 of packets 1 to 6 will be explained. The amount of reflected background light 21511 included in the signal values of packets 1 to 6 is proportional to the number of times exposure pulses 10121 to 10126 of packets 1 to 6 are set to high level (the exposure count). Accordingly, controller 10106 generates exposure counts 21901 to 21906 for packets 1 to 6 by calculating, for each generation code of packets 1 to 6, the number of segments among all segment numbers 21700 in which the generation code of the packet is “1”.
Next, the method of generating the initial values for memory (LUT) 10801 will be explained. Controller 10106 generates each independent code 22000 as a 6-bit binary number, where packet 1 generation code 21701 is bit 0, packet 2 generation code 21702 is bit 1, packet 3 generation code 21703 is bit 2, packet 4 generation code 21704 is bit 3, packet 5 generation code 21705 is bit 4, and packet 6 generation code 21706 is bit 5. For example, independent code 22020 of segment number 21700 of 7, which is labeled 22021, is a 6-bit binary number where packet 1 generation code 21701 of “0” at segment number 21700 of 7 is bit 0, packet 2 generation code 21702 of “0” at segment number 21700 of 7 is bit 1, packet 3 generation code 21703 of “0” at segment number 21700 of 7 is bit 2, packet 4 generation code 21704 of “0” at segment number 21700 of 7 is bit 3, packet 5 generation code 21705 of “1” at segment number 21700 of 7 is bit 4, and packet 6 generation code 21706 of “0” at segment number 21700 of 7 is bit 5, which converts to 10 in hexadecimal notation. Controller 10106 generates each adjacent code 22001 by applying a bitwise logical OR operation between independent codes 22000 of two adjacent segments. For example, adjacent code 22023 corresponding to the adjacent segment numbers 21700 of 24 and 25, which are labeled 22024, is a 6-bit binary number where the result of the logical OR operation of the value “1” of bit 0 of the independent code at segment number 21700 of 24 and the value “0” of bit 0 of the independent code at segment number 21700 of 25 is “1” as bit 0, the result of the logical OR operation of the value “1” of bit 1 of the independent code at segment number 21700 of 24 and the value “1” of bit 1 of the independent code at segment number 21700 of 25 is “1” as bit 1, the result of the logical OR operation of the value “0” of bit 2 of the independent code at segment number 21700 of 24 and the value “0” of bit 2 of the independent code at segment number 21700 of 25 is “0” as bit 2, the result of the logical OR operation of the value “0” of bit 3 of the independent code at segment number 21700 of 24 and the value “0” of bit 3 of the independent code at segment number 21700 of 25 is “0” as bit 3, the result of the logical OR operation of the value “0” of bit 4 of the independent code at segment number 21700 of 24 and the value “1” of bit 4 of the independent code at segment number 21700 of 25 is “1” as bit 4, and the result of the logical OR operation of the value “1” of bit 5 of the independent code at segment number 21700 of 24 and the value “1” of bit 5 of the independent code at segment number 21700 of 25 is “1” as bit 5, which converts to 33 in hexadecimal notation. In this example, in independent codes 22000, the signal values of packets 1 to 6 that include reflected light 10111 are “1” and the signal values of packets 1 to 6 that do not include reflected light 10111 are “0” when reflected light 10111 returns to only one segment number 21700, and in adjacent codes 22001, the signal values of packets 1 to 6 that include reflected light 10111 are “1” and the signal values of packets 1 to 6 that do not include reflected light 10111 are “0” when reflected light 10111 returns across two adjacent segment numbers 21700, and exposure code 10820 is estimated for each segment number 21700 based on generation codes 21701 to 21706 of packets 1 to 6. For this reason, memory (LUT) 10801 is initialized with independent codes 22000 and adjacent codes 22001 as addresses and segment numbers 21700 corresponding to independent codes 22000 and adjacent codes 22001 as data, and memory (LUT) 10801 is accessed and read with exposure code 10820 as an address, making it is possible to convert exposure code 10820 to the segment number corresponding to the distance. Table 22010 is a data set for initializing memory (LUT) 10801. Since the hexadecimal notation of independent code 22020 is “10”, the data corresponding to the hexadecimal address of “10” in table 22010 is 7, which is segment number 22021 of independent code 22020. Since the hexadecimal notation of adjacent code 22023 is “33”, the data corresponding to the hexadecimal address of “33” in table 22010 is 24.5, the average of 24 and 25, which are segment numbers 22024 of adjacent code 22023. This is because segment numbers 22024 of adjacent code 22023 indicate that reflected light 10111 returned across segment numbers 24 and 25, but the specific timing of the return of reflected light 10111 is not known, so it is assumed that the reflected light 10111 returned in the middle of two adjacent segments, and so the average of the two adjacent segment numbers is used to reduce the maximum error to half of the segment.
Next, the method of generating generation codes 21701 to 21706 of packets 1 to 6 to be applied to controller 10106 will be described. In order to calculate the segment numbers using exposure codes 10820 generated from the signal values of packets 1 to 6 described above, there must be a one-to-one correspondence between exposure codes 10820 and the segment numbers. Therefore, generation codes 21701 to 21706 of packets 1 to 6 are determined so that the values of independent codes 22000 and adjacent codes 22001 do not overlap, and exposure codes 10820 and the segment numbers are associated one-to-one. Moreover, generation codes 21701 to 21706 of packets 1 to 6 are determined such that independent codes 22000 and adjacent codes 22001 do not take a value of “00” or “3F” in hexadecimal notation. When reflected light 10111 is returned at a timing when the value of independent code 22000 or adjacent code 22001 is “00”, exposure pulses 10121 to 10126 of packets 1 to 6 are low level, and as such, the signal values of packets 1 to 6 do not include the reflected light 10111 component. Even if target object 10101 does not exist within the ranging range of segment numbers 0 to 31, the signal values of packets 1 to 6 do not include the reflected light 10111 component. Accordingly, since it is not possible to determine whether these two conditions are satisfied from the signal values of packets 1 to 6, generation codes 21701 to 21706 of packets 1 to 6 are generated such that independent codes 22000 and adjacent codes 22001 do not take a value of “00” in hexadecimal notation. By making sure that independent codes 22000 and adjacent codes 22001 do not take a value of “00” in hexadecimal notation, it is possible to make sure that there is at least one packet that includes reflected light 10111 among the signal values of packets 1 to 6 of solid-state image capturer output signal 10130. However, by generating generation codes 21701 to 21706 of packets 1 to 6 in such a manner that independent codes 22000 and adjacent codes 22001 do not take a value of “3F” in hexadecimal notation, it is possible to make sure that there is at least one packet that does not include reflected light 10111 among the signal values of packets 1 to 6 of solid-state image capturer output signal 10130. In case exposure code 10820 matches “00”, “1B”, or “3F”, which do not exist in independent codes 22000 or adjacent codes 22001, it is possible to determine that the segment number is not calculated correctly by setting the segment number to a negative value of —1.
Notations in
The notation “P1(11)Sig/CT1” indicates (packet 1 signal value of solid-state image capturer output signal 10130)/(packet 1 exposure count) of pixel 10200 at pixel address 11, which corresponds to packet 1 synchronization B signal 21921.
The notation “Min(11)” indicates the minimum value among packet 1 synchronization B signal 21921 to packet 1 synchronization
B signal 21926 of pixel 10200 at pixel address 11, which corresponds to synchronization B minimum signal 21927.
The notation “Min(11)×CT1” indicates (synchronization B minimum signal 21927)×(packet 1 exposure count) of pixel 10200 at pixel address 11, which corresponds to packet 1 multiplication signal 21931.
The notation “P1(11)Sig—mul” indicates (packet 1 synchronization A signal 21941)—(packet 1 multiplication signal 21931) of pixel 10200 at pixel address 11, which corresponds to packet 1 subtraction signal 21951.
The notation “mx(11)” indicates the maximum value among packet 1 subtraction signal 21951 to packet 6 subtraction signal 21956 of pixel 10200 at pixel address 11, which corresponds to maximum value signal 21957.
The notation “mn(11)” indicates the minimum value among packet 1 subtraction signal 21951 to packet 6 subtraction signal 21956 of pixel 10200 at pixel address 11, which corresponds to minimum value signal 21958.
The notation “th(11)” indicates (mx(11)+mn(11))/2, i.e., the average of maximum value signal 21957 and minimum value signal 21958 of pixel 10200 at pixel address 11, which corresponds to threshold signal 21960.
The notation “Nd(11)” corresponds to segment number 10131 of pixel 10200 at pixel address 11. Here, “Nd(11)” etc., are represented by integers.
As illustrated in
From the above operation, the time required for 12 repetitions of frame unit drive pattern 10410, which corresponds to the imaging exposure time, is 17.28 ms, and the time required for image data readout 10411, which corresponds to the imaging readout time, is 16.053 ms. Therefore, the time required for one frame is 33.3 ms, and the frame rate of this ranging device is 30 fps. Compared to the conventional technique, this technique can significantly expand the range over which distance can be measured with a smaller number of packets, so by using this technique, the ranging range can be significantly expanded while maintaining the frame rate, even under conditions with background light.
Here, generation codes 10501 to 10506 of packets 1 to 6 are determined such that independent codes 10900 and adjacent codes 10901 in
With the above operation, it is possible to achieve the same ranging range regardless of the presence or absence of background light by using this technique. Compared to the conventional technique, this technique can significantly expand the range over which distance can be measured with a smaller number of packets, so by using this technique, the ranging range can be significantly expanded while maintaining the frame rate.
As described above, in the ranging device according to
Embodiment 2, the independent code corresponding to the unit segment where the timing of the emission pulse may be the same as the timing of the exposure pulse is the same as any one of all of the independent codes and the adjacent codes corresponding to the remaining unit segments. In the example in
With this, even if the independent code corresponding to the timing of the emission pulse overlaps with another independent code, the distance segment can be identified.
Here, each of the independent codes may include at least one bit of 0, and each of the adjacent codes may include at least one bit of 0.
With this, the background light component can be obtained even when the exposure code corresponds to any of the independent codes and the adjacent codes, and thus ranging accuracy can be improved.
Embodiments 1 and 2 describe a ranging method based on unit segments. However, in order to achieve a high ranging accuracy, the unit segments need to be shortened, but a lot of cost is required to achieve a light source characterized by short pulse emission and a solid-state image capturer characterized by a short exposure. Embodiment 3 therefore describes a method to achieve a high ranging accuracy without using means for short pulse emission or short exposure.
Light source 10102, optical lens 10103, optical filter 10104, solid-state image capturer 10105, controller 10106, pulse generator 10107, and distance calculator 32608 constitute the ranging device. Regarding the configuration, light source 10102 includes a drive circuit and light emitting elements, and emits light in response to application of voltage from the drive circuit. Laser diodes and other light emitting elements may be used as the light emitting elements. For example, controller 10106, pulse generator 10107, and distance calculator 32608 are realized by a combination of a central processing unit (CPU), a field programmable gate array (FPGA), a digital signal processor (DSP), and an analog front end (AFE) and the like.
Next, operations of pixel 10200 will be described. When packet 1 exposure pulse 10121 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10211, when packet 2 exposure pulse 10122 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10212, when packet 3 exposure pulse 10123 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10213, when packet 4 exposure pulse 10124 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in
FDA 10214, when packet 5 exposure pulse 10125 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10215, when packet 6 exposure pulse 10126 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10216, and when discharge drive pulse 10127 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is discharged to drains 10210. Accordingly, six types of imaging corresponding to exposure pulses 10121 to 10126 of packets 1 to 6 are performed per pixel by:
discharging the signal charge photoelectrically converted in photoelectric conversion pixel 10201 to drains 10210 when all exposure pulses 10121 to 10126 of packets 1 to 6 are low level by setting discharge drive pulse 10127 to high level when all exposure pulses 10121 to 10126 of packets 1 to 6 are low level; and accumulating the signal charge from photoelectric conversion pixel 10201 in FDAs 10211 to 10216 corresponding to exposure pulses 10121 to 10126 of packets 1 to 6 only when one of the six exposure pulses 10121 to 10126 of packets 1 to 6 is high level by, when one of the six exposure pulses 10121 to 10126 of packets 1 to 6 is high level, setting the remaining five to low level and setting discharge drive pulse 10127 to low level. FDAs 10211 through 10216 accumulate signal charge, resulting in a voltage corresponding to the amount of signal charge, and generate a packet 1 voltage value corresponding to the amount of signal charge in FDA 10211, a packet 2 voltage value corresponding to the amount of signal charge in FDA 10212, a packet 3 voltage value corresponding to the amount of signal charge in FDA 10213, a packet 4 voltage value corresponding to the amount of signal charge in FDA 10214, a packet 5 voltage value corresponding to the amount of signal charge in FDA 10215, and a packet 6 voltage value corresponding to the amount of signal charge in FDA 10216. By setting output enable signal 10240 to high level, simultaneously, the packet 1 voltage value is output to pixel output signal 10241 through source follower circuit 10221 and output selection transistor 10231, the packet 2 voltage value is output to pixel output signal 10242 through source follower circuit 10222 and output selection transistor 10232, the packet 3 voltage value is output to pixel output signal 10243 through source follower circuit 10223 and output selection transistor 10233, the packet 4 voltage value is output to pixel output signal 10244 through source follower circuit 10224 and output selection transistor 10234, the packet 5 voltage value is output to pixel output signal 10245 through source follower circuit 10225 and output selection transistor 10235, and the packet 6 voltage value is output to pixel output signal 10246 through source follower circuit 10226 and output selection transistor 10236.
Next, readout operations of solid-state image capturer 10105 will be described. The readout operation is the same as that of a typical CMOS image sensor with six times the number of horizontal pixels. By setting row select signal 10300 to high level, row select signal 10301 to low level, row select signal 10302 to low level, and row select signal 10303 to low level, voltage values of packets 1 to 6 of pixel 10200 at pixel address 11 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address 12 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address 1X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to high level, row select signal 10302 to low level, and row select signal 10303 to low level, voltage values of packets 1 to 6 of pixel 10200 at pixel address 21 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address 22 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address 2X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to low level, row select signal 10302 to high level, and row select signal 10303 to low level, voltage values of packets 1 to 6 of pixel 10200 at pixel address 31 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address 32 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address 3X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to low level, row select signal 10302 to low level, and row select signal 10303 to high level, voltage values of packets 1 to 6 of pixel 10200 at pixel address Y1 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address Y2 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address YX are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. Column AD 10370 AD-converts the input voltage values of packets 1 to 6 for the X number of pixels into 12-bit signal values, generates a packet 1 signal value resulting from AD-converting packet 1 voltage value, a packet 2 signal value resulting from AD-converting packet 2 voltage value, a packet 3 signal value resulting from AD-converting packet 3 voltage value, a packet 4 signal value resulting from AD-converting packet 4 voltage value, a packet 5 signal value resulting from AD-converting packet 5 voltage value, and a packet 6 signal value resulting from AD-converting packet 6 voltage value for the X number of pixels, and outputs the generated signal values to shift register 10371. Shift register 10371 shifts the input signal values of packets 1 to 6 for the X number of pixels one by one, and outputs the shifted signal values to solid-state image capturer output signal 10130.
In the control sequence illustrated in
As illustrated in
Unit drive patterns 21631 to 21636 for packets 1 to 6 are repeated 300 times in drive patterns 10421 to 10426 for packets 1 to 6, respectively, and drive patterns 10421 to 10426 for packets 1 to 6 are repeated 12 times via the frame unit drive patterns. Stated differently, each of unit drive patterns 21631 to 21636 for packets 1 to 6 are repeated 3600 (=300×12) times. By repeating each pattern 3600 times, even though the amount of emission light 10110 emitted each time is small, it is possible to ensure a sufficient amount of light. On the other hand, by dividing frame drive pattern 10400 into 12 frame unit drive patterns 10410, the amount of time required for each frame unit drive pattern 10410 can be shortened and the apparent imaging timing of packets 1 to 6 can be synchronized. By repeating the frame unit drive pattern 10410 12 times, blur caused by target object 10101 moving occurs evenly in packets 1 to 6, making it possible to inhibit side effects such as data corruption during distance calculation caused by target object 10101 moving.
The following describes a method of controlling emission pulse 10120, exposure pulses 10121 to 10126 of packets 1 to 6, and discharge drive pulse 10127 for segment numbers 0 to 30 included in segment numbers 21700.
As illustrated in
AD 10370, and AD conversion to 12-bit signal values is performed in the same manner as described above. By performing this operation for all rows, the signal values of all pixels 10200 are output from solid-state image capturer output signal 10130. Although six FDAs 10211 to 10216 are exemplified in
First, the method of calculating segment number (integer part) 32715 will be explained. Solid-state image capturer output signal 10130 is synchronized in synchronizer (A) 21910 with the signal values of packets 1 to 6 for each pixel address, which generates synchronizer (A) output signals 21941 to 21946. Since the number of times that exposure pulses 10121 to 10126 of packets 1 to 6 become high level is different for each signal value of packets 1 to 6 in solid-state image capturer output signal 10130, in order to equalize the amount of reflected background light 21511 included in the signal values of packets 1 to 6, for each signal value of packets 1 to 6, exposure counts 21901 to 21906 of packets 1 to 6 are selected by selector circuit 21907, divided by divider 21908, and input to synchronizer (B) 21909. The method of generating exposure counts 21901 to 21906 of packets 1 to 6 will be explained later with reference to
MIN detector output signal 21927 is multiplied by exposure counts 21901 to 21906 of packets 1 to 6 in multiplier 21912, thereby generating multiplier output signals 21931 to 21936, which are the signal values corresponding to the amount of reflected background light 21511 included in each signal value of packets 1 to 6.
Subtractor 21913 performs subtraction of synchronizer (A) output signals 21941 to 21946 and multiplier output signals 21931 to 21936 to generate subtraction signals 21951 to 21956 removed of the reflected background light 21511 component that is included in the signal values of packets 1 to 6. MAX-MIN detector 21914 generates maximum value signal 21957 and minimum value signal 21958 of subtraction signals 21951 to 21956. Here, since the signal values of packets 1 to 6 of solid-state image capturer output signal 10130 include at least one packet that does not include reflected light 10111 and at least one packet that does include reflected light 10111, maximum value signal 21957 is a signal value corresponding to the amount of reflected light 10111 and minimum value signal 21958 is black level value. AVG calculator 21915 generates an average value of maximum value signal 21957 and minimum value signal 21958 to generate threshold signal 21960, which is a threshold for detecting packets that include reflected light 10111 and packets that do not include reflected light 10111. Comparator 10802 compares threshold signal 21960, which is the average value of maximum value signal 21957 and minimum value signal 21958, with subtraction signals 21951 to 21956 to reduce variations caused by the dark current of photoelectric conversion pixel 10201 and FDAs 10211 to 10216 and reduce shot noise, which makes it possible to yield a comparison result of “1” by comparator 10802 for subtraction signals 21951 to 21956 that include reflected light 10111 and a comparison result of “0” by comparator 10802 for subtraction signals 21951 to 21956 that do not include reflected light 10111. Therefore, exposure code 10820, which is the bitwise concatenation of comparator output signals 21961 to 21966, indicates packets that include reflected light 10111. Exposure code 10820 is then used as a read address to access memory (LUT) 10801, and the read data of memory (LUT) 10801 becomes segment number (integer part) 32715. The initial values of memory (LUT) 10801 are set from controller 10106 via the control bus. The method of generating the initial values to be set in memory (LUT) 10801 will be explained with reference to
Next, the method of calculating segment number (decimal part) 32714 will be explained. In Embodiment 2, when reflected light 10111 returned across two adjacent segment numbers 21700, the specific timing of the return of reflected light 10111 is not known, so it is assumed that the reflected light 10111 returned in the middle of two adjacent segments, and so the average of the two adjacent segment numbers is used to reduce the maximum error to half of the segment, but ranging accuracy is improved by calculating segment number (decimal part) 32714 obtained by further dividing the unit segment, using the ratio between (i) two-unit-segment reflected light 32712 corresponding to the amount of light of reflected light 10111 that returned to the two adjacent unit segments and (ii) one-unit-segment reflected light 32711 corresponding to the amount of reflected light 10111 that returned to the farther (far end) one of the two adjacent unit segments from emission pulse 10120 (i.e., by using one-unit-segment reflected light 32711 ÷ two-unit-segment reflected light 32712). For example, if reflected light 10111 begins to return 2.5 ns after the beginning of a given unit segment, reflected light 10111 will occupy 7.5 ns of the closer (near end) one of the two adjacent unit segments to emission pulse 10120 and 2.5 ns of the farther (far end) one of two adjacent unit segments from emission pulse 10120. Here, theoretically, a proportional relationship can be established in which one-unit-segment reflected light 32711 is “0.25” if two-unit-segment reflected light 32712 is “1”, and thus it is possible to calculate the delay time from the start of the unit segment time until the reflected light 10111 starts to return as 10 ns (=unit segment length)×0.25=2.5 ns. This ranging device outputs the segment number corresponding to the distance. The time difference between the generation of emission light 10110 and the return of reflected light 10111 can be calculated by multiplying the segment number where reflected light 10111 returned by the length of the unit segment. Accordingly by using the quotient of one-unit-segment reflected light 32711 ±two-unit-segment reflected light 32712 as segment number (decimal part) 32714, it is possible to improve ranging accuracy. One-unit-segment reflected light 32711 and two-unit-segment reflected light 32712 are generated in data selection 32710 using subtraction signals 21951 to 21956, and divided in ratio calculation divider 32713 to generate segment number (decimal part) 32714. Data selection 32710 will be described in greater detail later with reference to
Finally, segment number (integer part) 32715 and segment number (decimal part) 32714 are bitwise concatenated to generate segment number signal 10131.
First, the method of calculating exposure counts 21901 to 21906 of packets 1 to 6 will be explained. The amount of reflected background light 21511 included in the signal values of packets 1 to 6 is proportional to the number of times exposure pulses 10121 to 10126 of packets 1 to 6 are set to high level (the exposure count). Accordingly, controller 10106 generates exposure counts 21901 to 21906 for packets 1 to 6 by calculating, for each generation code of packets 1 to 6, the number of segments among all segment numbers 21700 in which the generation code of the packet is “1”.
Next, the method of generating the initial values for memory (LUT) 10801 will be explained. Controller 10106 generates each independent code 22000 as a 6-bit binary number, where packet 1 generation code 21701 is bit 0, packet 2 generation code 21702 is bit 1, packet 3 generation code 21703 is bit 2, packet 4 generation code 21704 is bit 3, packet 5 generation code 21705 is bit 4, and packet 6 generation code 21706 is bit 5. For example, independent code 22020 of segment number 21700 of 7, which is labeled 22021, is a 6-bit binary number where packet 1 generation code 21701 of “0” at segment number 21700 of 7 is bit 0, packet 2 generation code 21702 of “0” at segment number 21700 of 7 is bit 1, packet 3 generation code 21703 of “0” at segment number 21700 of 7 is bit 2, packet 4 generation code 21704 of “0” at segment number 21700 of 7 is bit 3, packet 5 generation code 21705 of “1” at segment number 21700 of 7 is bit 4, and packet 6 generation code 21706 of “0” at segment number 21700 of 7 is bit 5, which converts to 10 in hexadecimal notation. Controller 10106 generates each adjacent code 22001 by applying a bitwise logical OR operation between independent codes 22000 of two adjacent segments. For example, adjacent code 32823 corresponding to the adjacent segment numbers 21700 of 24 and 25, which are labeled 32824, is a 6-bit binary number where the result of the logical OR operation of the value “1” of bit 0 of the independent code at segment number 21700 of 24 and the value “0” of bit 0 of the independent code at segment number 21700 of 25 is “1” as bit 0, the result of the logical OR operation of the value “1” of bit 1 of the independent code at segment number 21700 of 24 and the value “1” of bit 1 of the independent code at segment number 21700 of 25 is “1” as bit 1, the result of the logical OR operation of the value “0” of bit 2 of the independent code at segment number 21700 of 24 and the value “0” of bit 2 of the independent code at segment number 21700 of 25 is “0” as bit 2, the result of the logical OR operation of the value “0” of bit 3 of the independent code at segment number 21700 of 24 and the value “0” of bit 3 of the independent code at segment number 21700 of 25 is “0” as bit 3, the result of the logical OR operation of the value “0” of bit 4 of the independent code at segment number 21700 of 24 and the value “1” of bit 4 of the independent code at segment number 21700 of 25 is “1” as bit 4, and the result of the logical OR operation of the value “1” of bit 5 of the independent code at segment number 21700 of 24 and the value “1” of bit 5 of the independent code at segment number 21700 of 25 is “1” as bit 5, which converts to 33 in hexadecimal notation. In this example, in independent codes 22000, the signal values of packets 1 to 6 that include reflected light 10111 are “1” and the signal values of packets 1 to 6 that do not include reflected light 10111 are “0” when reflected light 10111 returns to only one segment number 21700, and in adjacent codes 22001, the signal values of packets 1 to 6 that include reflected light 10111 are “1” and the signal values of packets 1 to 6 that do not include reflected light 10111 are “0” when reflected light 10111 returns across two adjacent segment numbers 21700, and exposure code 10820 is estimated for each segment number 21700 based on generation codes 21701 to 21706 of packets 1 to 6. For this reason, memory (LUT) 10801 is initialized with independent codes 22000 and adjacent codes 22001 as addresses and segment numbers 21700 corresponding to independent codes 22000 and adjacent codes 22001 as data, and memory (LUT) 10801 is accessed and read with exposure code 10820 as an address, making it is possible to convert exposure code 10820 to the segment number corresponding to the distance. Table 22010 is a data set for initializing memory (LUT) 10801. Since the hexadecimal notation of independent code 22020 is “10”, the data corresponding to the hexadecimal address of “10” in table 22010 is 7, which is segment number 22021 of independent code 22020. Since the hexadecimal notation of adjacent code 32823 is “33”, the data corresponding to the hexadecimal address of “33” in table 22010 is 24, which is the smaller of segment numbers 32824 of adjacent code 32823. This is because, with respect to segment numbers 32824 of adjacent code 32823, when reflected light 10111 returns across segment numbers 21700 of 24 and 25, the specific timing at which reflected light 10111 returned is calculated separately using the ratio of two-unit-segment reflected light 32712 which corresponds to the amount of reflected light 10111 that returned across segment numbers 21700 of 24 and 25 and one-unit-segment reflected light 32711 which corresponds to the amount of reflected light 10111 that returned to segment number 21700 of 25.
Next, the method of generating generation codes 21701 to 21706 of packets 1 to 6 to be applied to controller 10106 will be described. In order to calculate the segment numbers using exposure codes 10820 generated from the signal values of packets 1 to 6 described above, there must be a one-to-one correspondence between exposure codes 10820 and the segment numbers. Therefore, generation codes 21701 to 21706 of packets 1 to 6 are determined so that the values of independent codes 22000 and adjacent codes 22001 do not overlap, and exposure codes 10820 and the segment numbers are associated one-to-one. Moreover, generation codes 21701 to 21706 of packets 1 to 6 are determined such that independent codes 22000 and adjacent codes 22001 do not take a value of “00” or “3F” in hexadecimal notation. When reflected light 10111 is returned at a timing when the value of independent code 22000 or adjacent code 22001 is “00”, exposure pulses 10121 to 10126 of packets 1 to 6 are low level, and as such, the signal values of packets 1 to 6 do not include the reflected light 10111 component. Even if target object 10101 does not exist within the ranging range of segment numbers 0 to 31, the signal values of packets 1 to 6 do not include the reflected light 10111 component. Accordingly, since it is not possible to determine whether these two conditions are satisfied from the signal values of packets 1 to 6, generation codes 21701 to 21706 of packets 1 to 6 are generated such that independent codes 22000 and adjacent codes 22001 do not take a value of “00” in hexadecimal notation. By making sure that independent codes 22000 and adjacent codes 22001 do not take a value of “00” in hexadecimal notation, it is possible to make sure that there is at least one packet that includes reflected light 10111 among the signal values of packets 1 to 6 of solid-state image capturer output signal 10130. However, by generating generation codes 21701 to 21706 of packets 1 to 6 in such a manner that independent codes 22000 and adjacent codes 22001 do not take a value of “3F” in hexadecimal notation, it is possible to make sure that there is at least one packet that does not include reflected light 10111 among the signal values of packets 1 to 6 of solid-state image capturer output signal 10130.
In case exposure code 10820 matches “00”, “1B”, or “3F”, which do not exist in independent codes 22000 or adjacent codes 22001, it is possible to determine that the segment number is not calculated correctly by setting the segment number to a negative value of —1.
More specifically, distance calculator 32608 classifies n types of signal values based on the bitwise combination of two independent codes corresponding to an adjacent code. Stated differently, when one bit of these two independent codes is 0and the other bit of these two independent codes is 0, distance calculator 32608 classifies the n types of signal values as classification A. Distance calculator 32608 classifies the n types of signal values as classification B when one bit is 1 and the other bit is 0, classification C when one bit is 0 an the other bit is 1, and classification D when one bit is 1 and the other bit is 1.
Classification A corresponds to when the packet generation code closer to emission pulse 10120 is “0” and the packet generation code father from emission pulse 10120 is “0”.
Classification B corresponds to when the packet generation code closer to emission pulse 10120 is “1” and the packet generation code father from emission pulse 10120 is “0”.
Classification C corresponds to when the packet generation code closer to emission pulse 10120 is “0” and the packet generation code father from emission pulse 10120 is “1”.
Classification D corresponds to when the packet generation code closer to emission pulse 10120 is “1” and the packet generation code father from emission pulse 10120 is “1”.
In this way, distance calculator 32608 classifies n types of signal values based on the bitwise combination of two independent codes corresponding to an adjacent code. Here, two-unit-segment reflected light 32712 corresponding to the amount of reflected light 10111 that returned to two adjacent unit segments can be generated using subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification D or subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B+subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C.
Accordingly, for each exposure code 10820, when there are subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification D, subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification D are used to generate two-unit-segment reflected light 32712, and when there are no subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification D, subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B+subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C are used to generate two-unit-segment reflected light 32712.
One-unit-segment reflected light 32711 corresponding to the amount of reflected light 10111 that returned to the farther (far end) one of the two adjacent unit segments from emission pulse 10120 can be generated using subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C.
Generation codes 21701 to 21706 of packets 1 to 6 are generated such that the generation code closer to emission pulse 10120 is “0” and the generation code farther from emission pulse 10120 is “1” so that subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C are present in all adjacent codes 22001. Accordingly, for each exposure code 10820, subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C are used to generate one-unit-segment reflected light 32711.
If there are multiple subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B, C, or D, one of them is selected to generate two-unit-segment reflected light 32712 and one-unit-segment reflected light 32711.
Here, if exposure code 10820 is “OB”, classification B is packet 2 subtraction signal 21952, classification C is packet 1 subtraction signal 21951, and classification D is packet 4 subtraction signal 21954.
Two-unit-segment reflected light 32712 is packet 4 subtraction signal 21954 since packet 4 subtraction signal 21954 classified as classification D is present, and one-unit-segment reflected light 32711 is packet 1 subtraction signal 21951 since packet 1 subtraction signal 21951 classified as classification C.
If exposure code 10820 is “OC”, classification B is packet 3 subtraction signal 21953, classification C is packet 4 subtraction signal 21954, and classification D is not present. Accordingly, since subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification D are not present, two-unit-segment reflected light 32712 is packet 3 subtraction signal 21953 classified as classification B+packet 4 subtraction signal 21954 classified as classification C, and since packet 4 subtraction signal 21954 classified as classification C is present, one-unit-segment reflected light 32711 is packet 4 subtraction signal 21954.
When reflected light 10111 returns to only one segment number 21700, ranging accuracy can be ensured without calculating the ratio of one-unit-segment reflected light 32711 to two-unit-segment reflected light 32712 because emission light 10110 and exposure pulses 10121 to 10126 of packets 1 to 6 have the same pulse width (10 ns). Accordingly, when exposure code 10820 and independent code 22000 are the same, two-unit-segment reflected light 32712 is fixed to “1” and one-unit-segment reflected light 32711 is fixed to “0” so that the calculation result of ratio calculation divider 32713 is “0”. If there are multiple subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B, C, or D, the S/N can be improved by improving the light utilization ratio relative to reflected light 10111 by using multiple subtraction signals 21951 to 21956 of packets 1 to 6. This will be described with reference to
Notations in
The notation “S1(11)” corresponds to one-unit-segment reflected light 32711 of pixel 10200 at pixel address 11.
The notation “S0(11)” corresponds to two-unit-segment reflected light 32712 of pixel 10200 at pixel address 11.
The notation “de(11)” indicates S1(11)/S0(11), i.e., (one-unit-segment reflected light 32711)/(two-unit-segment reflected light 32712) of pixel 10200 at pixel address 11, and corresponds to the decimal part of segment number 10131.
The notation “Nd(11)” does not include a decimal part in FIG.
21, but does include a decimal part in
As illustrated in
In
When reflected light 10111 returns across two adjacent segment numbers 21700, subtraction signals 21951 to 21956 of packets 1 to 6 can be classified into the following four types according to the combination of each of generation codes 21701 to 21706 of packets 1 to 6 of the two segments that compose the adjacent code.
Classification A corresponds to when the generation code closer to emission pulse 10120 is “0” and the generation code father from emission pulse 10120 is “0”.
Classification B corresponds to when the generation code closer to emission pulse 10120 is “1” and the generation code father from emission pulse 10120 is “0”.
Classification C corresponds to when the generation code closer to emission pulse 10120 is “0” and the generation code father from emission pulse 10120 is “1”.
Classification D corresponds to when the generation code closer to emission pulse 10120 is “1” and the generation code father from emission pulse 10120 is “1”.
Two-unit-segment reflected light 32712 and one-unit-segment reflected light 32711 can be calculated using the following four types of calculation methods depending on the presence or absence of subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B, C, or D. When subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B, C, and D are present, two-unit-segment reflected light 32712 is calculated as subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification D +subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B+subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C, and one-unit-segment reflected light 32711 is calculated as subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification D — subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B+subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C. When subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B and C are present and subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification D are not present, two-unit-segment reflected light 32712 is calculated as subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B +subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C, and one-unit-segment reflected light 32711 is calculated as subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C. When subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C and D are present and subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B are not present, two-unit-segment reflected light 32712 is calculated as subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification D, and one-unit-segment reflected light 32711 is calculated as subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C. When subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B and D are present and subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C are not present, two-unit-segment reflected light 32712 is calculated as subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification D, and one-unit-segment reflected light 32711 is calculated as subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification D — subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B. If there are multiple subtraction signals 21951 to 21956 of packets 1 to 6 classified as classifications B, C, and D, use the average value of the multiple subtraction signals 21951 to 21956 of packets 1 to 6 is used. Compared with the method of
From the above operation, the time required for 12 repetitions of frame unit drive pattern 10410, which corresponds to the imaging exposure time, is 17.28 ms, and the time required for image data readout 10411, which corresponds to the imaging readout time, is 16.053 ms. Therefore, the time required for one frame is 33.3 ms, and the frame rate of this ranging device is 30 fps. Compared to the conventional technique, this technique can significantly expand the range over which distance can be measured with a smaller number of packets, so by using this technique, the ranging range can be significantly expanded while maintaining the frame rate, even under conditions with background light, and ranging accuracy in which the unit segment is further divided can be achieved without using means for short pulse emission or short exposure.
Distance calculator 32608 may calculate the distance by further dividing the distance segments using signal values classified as at least two of classification B, classification C, and classification D.
As described above, in the ranging device according to Embodiment 3, the distance calculator: when there is a match between the exposure code and the adjacent codes, classifies the n types of signal values from the signal outputter based on a bitwise combination of the two independent codes corresponding to the matching adjacent code; and using the classified signal values, calculates a distance within the corresponding two adjacent unit segments.
With this, when the exposure code matches an adjacent code, the distance to the target object can be estimated, from among a range spanning across the boundary of the two corresponding distance segments and a range less than or equal to the distance segment, to a more precise position, thereby improving ranging accuracy.
Here, the distance calculator may classify the n types of signal values from the signal outputter based on the bitwise combination of the two independent codes corresponding to the adjacent code into any one of the following four classifications: classification A when the bit of the independent code closer to the emission pulse is 0 and the bit of the independent code farther from the emission pulse is 0;
classification B when the bit of the independent code closer to the emission pulse is 1 and the bit of the independent code farther from the emission pulse is 0; classification C when the bit of the independent code closer to the emission pulse is 0 and the bit of the independent code farther from the emission pulse is 1; and classification D when the bit of the independent code closer to the emission pulse is 1 and the bit of the independent code farther from the emission pulse is 1. The distance calculator may calculate a distance using signal values classified as at least two classifications from among classification B, classification C, and classification D.
With this, when the exposure code matches an adjacent code, the distance to the target object can be estimated, from among a range spanning across the boundary of the two corresponding distance segments and a range less than or equal to the distance segment, to a more precise position, thereby improving ranging accuracy.
Here, the distance calculator may calculate a distance by using signal values classified as classification A to remove a background light component included in each of signal values classified as classification B, classification C, and classification D.
With this, regarding the distance to the target object, when the exposure code matches an adjacent code, the effect of background light can be reduced to further improve the ranging accuracy.
In Embodiments 1, 2, and 3, it was explained that the technique according to the present disclosure can significantly expand the ranging range. However, since the amount of reflected light attenuates in inverse proportion to the square of the distance, if the image is captured so that the near end is not saturated, the amount of exposure at the far end is extremely low, making it difficult to measure the far end. In addition, if the light intensity is increased to enable ranging at the far end, the near end will become saturated, making ranging impossible. In order to overcome this problem, we will explain how to change the exposure counts for each distance to reduce the difference in the amount of exposure between the near end and the far end and make it possible to measure the entire ranging range from the near end to the far end.
Light source 10102, optical lens 10103, optical filter 10104, solid-state image capturer 10105, controller 43206, pulse generator 43207, and distance calculator 43208 constitute the ranging device. Regarding the configuration, light source 10102 includes a drive circuit and light emitting elements, and emits light in response to application of voltage from the drive circuit. Laser diodes and other light emitting elements may be used as the light emitting elements.
For example, controller 43206, pulse generator 43207, and distance calculator 43208 are realized by a combination of a central processing unit (CPU), a field programmable gate array (FPGA), a digital signal processor (DSP), and an analog front end (AFE) and the like.
Next, operations of pixel 10200 will be described. When packet 1 exposure pulse 10121 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10211, when packet 2 exposure pulse 10122 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10212, when packet 3 exposure pulse 10123 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10213, when packet 4 exposure pulse 10124 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10214, when packet 5 exposure pulse 10125 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10215, when packet 6 exposure pulse 10126 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is accumulated in FDA 10216, and when discharge drive pulse 10127 is set to high level, the signal charge photoelectrically converted in photoelectric conversion pixel 10201 is discharged to drains 10210. Accordingly, six types of imaging corresponding to exposure pulses 10121 to 10126 of packets 1 to 6 are performed per pixel by: discharging the signal charge photoelectrically converted in photoelectric conversion pixel 10201 to drains 10210 when all exposure pulses 10121 to 10126 of packets 1 to 6 are low level by setting discharge drive pulse 10127 to high level when all exposure pulses 10121 to 10126 of packets 1 to 6 are low level; and accumulating the signal charge from photoelectric conversion pixel 10201 in FDAs 10211 to 10216 corresponding to exposure pulses 10121 to 10126 of packets 1 to 6 only when one of the six exposure pulses 10121 to 10126 of packets 1 to 6 is high level by, when one of the six exposure pulses 10121 to 10126 of packets 1 to 6 is high level, setting the remaining five to low level and setting discharge drive pulse 10127 to low level. FDAs 10211 through 10216 accumulate signal charge, resulting in a voltage corresponding to the amount of signal charge, and generate a packet 1 voltage value corresponding to the amount of signal charge in FDA 10211, a packet 2 voltage value corresponding to the amount of signal charge in FDA 10212, a packet 3 voltage value corresponding to the amount of signal charge in FDA 10213, a packet 4 voltage value corresponding to the amount of signal charge in FDA 10214, a packet 5 voltage value corresponding to the amount of signal charge in FDA 10215, and a packet 6 voltage value corresponding to the amount of signal charge in FDA 10216. By setting output enable signal 10240 to high level, simultaneously, the packet 1 voltage value is output to pixel output signal 10241 through source follower circuit 10221 and output selection transistor 10231, the packet 2 voltage value is output to pixel output signal 10242 through source follower circuit 10222 and output selection transistor 10232, the packet 3 voltage value is output to pixel output signal 10243 through source follower circuit 10223 and output selection transistor 10233, the packet 4 voltage value is output to pixel output signal 10244 through source follower circuit 10224 and output selection transistor 10234, the packet 5 voltage value is output to pixel output signal 10245 through source follower circuit 10225 and output selection transistor 10235, and the packet 6 voltage value is output to pixel output signal 10246 through source follower circuit 10226 and output selection transistor 10236.
Next, readout operations of solid-state image capturer 10105 will be described. The readout operation is the same as that of a typical CMOS image sensor with six times the number of horizontal pixels. By setting row select signal 10300 to high level, row select signal 10301 to low level, row select signal 10302 to low level, and row select signal 10303 to low level, voltage values of packets 1 to 6 of pixel 10200 at pixel address 11 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address 12 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address 1X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to high level, row select signal 10302 to low level, and row select signal 10303 to low level, voltage values of packets 1 to 6 of pixel 10200 at pixel address 21 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address 22 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address 2X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to low level, row select signal 10302 to high level, and row select signal 10303 to low level, voltage values of packets 1 to 6 of pixel 10200 at pixel address 31 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address 32 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address 3X are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. By setting row select signal 10300 to low level, row select signal 10301 to low level, row select signal 10302 to low level, and row select signal 10303 to high level, voltage values of packets 1 to 6 of pixel 10200 at pixel address Y1 are output to vertical pixel signals 10311 to 10316, voltage values of packets 1 to 6 of pixel 10200 at pixel address Y2 are output to vertical pixel signals 10321 to 10326, and voltage values of packets 1 to 6 of pixel 10200 at pixel address YX are output to vertical pixel signals 10331 to 10336, and input to column AD 10370. Column AD 10370 AD-converts the input voltage values of packets 1 to 6 for the X number of pixels into 12-bit signal values, generates a packet 1 signal value resulting from AD-converting packet 1 voltage value, a packet 2 signal value resulting from AD-converting packet 2 voltage value, a packet 3 signal value resulting from AD-converting packet 3 voltage value, a packet 4 signal value resulting from AD-converting packet 4 voltage value, a packet 5 signal value resulting from AD-converting packet 5 voltage value, and a packet 6 signal value resulting from AD-converting packet 6 voltage value for the X number of pixels, and outputs the generated signal values to shift register 10371. Shift register 10371 shifts the input signal values of packets 1 to 6 for the X number of pixels one by one, and outputs the shifted signal values to solid-state image capturer output signal 10130.
As illustrated in
Packet 1 drive pattern 10421 switches between packet 1 unit drive patterns A to Z per iteration, and consists of a total of 300 iterations of packet 1 unit drive patterns A to Z. Packet 2 drive pattern 10422 switches between packet 2 unit drive patterns A to Z per iteration, and consists of a total of 300 iterations of packet 2 unit drive patterns A to Z. Packet 3 drive pattern 10423 switches between packet 3 unit drive patterns A to Z per iteration, and consists of a total of 300 iterations of packet 3 unit drive patterns A to Z. Packet 4 drive pattern 10424 switches between packet 4 unit drive patterns A to Z per iteration, and consists of a total of 300 iterations of packet 4 unit drive patterns A to Z. Packet 5 drive pattern 10425 switches between packet 5 unit drive patterns A to Z per iteration, and consists of a total of 300 iterations of packet 5 unit drive patterns A to Z. Packet 6 drive pattern 10426 switches between packet 6 unit drive patterns A to Z per iteration, and consists of a total of 300 iterations of packet 6 unit drive patterns A to Z. Unit drive patterns A to Z for packets 1 to 6 drive emission pulse 10120, exposure pulses 10121 to 10126 of packets 1 to 6, and discharge drive pulse 10127. The method of generating and the method of switching the unit drive patterns A to Z for packets 1 to 6 will be described later with reference to
Unit drive patterns A to Z for packets 1 to 6 are iterated a total of 300 times in drive patterns 10421 to 10426 for packets 1 to 6, and drive patterns 10421 to 10426 for packets 1 to 6 are repeated 12 times via the frame unit drive patterns. Stated differently, the unit drive patterns A to Z for packets 1 to 6 are iterated a total of 300×12=3600 times. By iterating process 3600 times, even though the amount of emission light 10110 emitted each time is small, it is possible to ensure a sufficient amount of light. On the other hand, by dividing frame drive pattern 10400 into 12 frame unit drive patterns 10410, the amount of time required for each frame unit drive pattern 10410 can be shortened and the apparent imaging timing of packets 1 to 6 can be synchronized. By repeating the frame unit drive pattern 10410 12 times, blur caused by target object 10101 moving occurs evenly in packets 1 to 6, making it possible to inhibit side effects such as data corruption during distance calculation caused by target object 10101 moving.
As illustrated in
Unit drive pattern numbers 43401 of A to Z are assigned for each segment exposure count 43400. For example, segments labeled with segment numbers 21700 of 0 to 5, the corresponding segment exposure count 43400 of which is 9, have a unit drive pattern number 43401 of A, segment labeled with segment number 21700 of 6, the corresponding segment exposure count 43400 of which is 12, has a unit drive pattern number 43401 of B, and segment labeled with segment number 21700 of 7, the corresponding segment exposure count 43400 of which is 17, has a unit drive pattern number 43401 of C. When unit drive pattern number 43401 is A, unit drive pattern iteration count 43402 is 9, which is the same as segment exposure count 43400 corresponding to segments labeled with segment numbers 21700 of 0 to 5, when unit drive pattern number 43401 is B, unit drive pattern iteration count 43402 is 12−9=3, where 12 is segment exposure count 43400 corresponding to the segment labeled with segment number 21700 of 6 and 9 is segment exposure count 43400 of segments labeled with segment numbers 21700 of 0 to 5, and when unit drive pattern number 43401 is C, unit drive pattern iteration count 43402 is 17−12=5, where 17 is segment exposure count 43400 corresponding to the segment labeled with segment number 21700 of 7 and 12 is segment exposure count 43400 of the segment labeled with segment number 21700 of 6. With this, unit drive pattern A for packets 1 to 6 is iterated 9 times, unit drive pattern
B for packets 1 to 6 is iterated 3 times, and unit drive pattern C for packets 1 to 6 is iterated 5 times, whereby unit drive patterns A to Z are iterated a total of 300 times for each packet. Segment number 21700, generation codes 21701 to 21706 of packets 1 to 6, segment exposure count 43400, unit drive pattern number 43401, and unit drive pattern iteration count 43402 are sent to pulse generator 43207 via the control bus, and pulse generator 43207 generates unit drive patterns A to Z for packets 1 to 6 from segment number 21700, generation codes 21701 to 21706 of packets 1 to 6, unit drive pattern number 43401, and unit drive pattern iteration count 43402. Note that unit drive pattern A for packets 1 to 6 will be described with reference to
As illustrated in
Discharge drive pulse 10127 is generated as low level when packet 3 generation code 21703 corresponding to segment number 21700 is “1” and high level when packet 3 generation code 21703 corresponding to segment number 21700 is “0”, which results in a pulse whose logic is inverted from that of packet 3 exposure pulse 10123.
C43334. Emission pulse 10120 is generated as high level when segment number 21700 is 0, and low level when segment number 21700 is the remaining 1 to 30. When segment number 21700 is 0 to 6 corresponding to segment exposure counts 43400 of 9 and 12, which is smaller than segment exposure count 43400 of 17 corresponding to unit drive pattern number 43401 of C, packet 4 exposure pulse 10124 is generated as low level, and when segment number 21700 is 7 to 30 corresponding to segment exposure count 43400 of 17 and up, packet 4 exposure pulse 10124 is generated as high level when packet 4 generation code 21704 corresponding to segment number 21700 is “1” and low level when packet 4 generation code 21704 corresponding to segment number 21700 is “0”. Packet 1 exposure pulse 10121, packet 2 exposure pulse 10122, packet 3 exposure pulse 10123, packet 5 exposure pulse 10125, and packet 6 exposure pulse 10126 are generated as low level in all segments, i.e., when segment number 10600 is 0 to 30. When segment number 21700 is 0 to 6 corresponding to segment exposure counts 43400 of 9 and 12, which is smaller than segment exposure count 43400 of 17 corresponding to unit drive pattern number 43401 of C, discharge drive pulse 10127 is generated as high level, and when segment number 21700 is 7 to 30 corresponding to segment exposure count 43400 of 17 and up, discharge drive pulse 10127 is generated as low level when packet 4 generation code 21704 corresponding to segment number 21700 is “1” and generated as high level when packet 4 generation code 21704 corresponding to segment number 21700 is “0”, which results in a pulse whose logic is inverted from that of packet 4 exposure pulse 10124.
As illustrated in
Y240+vertical blanking interval 23), by the output clock frequency of solid-state image capturer output signal 10130. If the output clock frequency is 39.319 MHz, the time required for image data readout 10411, which corresponds to the imaging readout time, is 16.053 ms.
First, the method of calculating segment number (integer part) 32715 will be explained. Solid-state image capturer output signal 10130 is synchronized in synchronizer (A) 21910 with the signal values of packets 1 to 6 for each pixel address, which generates synchronizer (A) output signals 21941 to 21946. Since the number of times that exposure pulses 10121 to 10126 of packets 1 to 6 become high level is different for each signal value of packets 1 to 6 in solid-state image capturer output signal 10130, in order to equalize the amount of reflected background light 21511 included in the signal values of packets 1 to 6, for each signal value of packets 1 to 6, exposure counts 43801 to 43806 of packets 1 to 6 are selected by selector circuit 21907, divided by divider 21908, and input to synchronizer (B) 21909. The method of generating exposure counts 43801 to 43806 of packets 1 to 6 will be explained later with reference to
Next, the method of calculating segment number (decimal part) 32714 will be explained. In Embodiment 2, when reflected light 10111 returned across two adjacent segment numbers 21700, the specific timing of the return of reflected light 10111 is not known, so it is assumed that the reflected light 10111 returned in the middle of two adjacent segments, and so the average of the two adjacent segment numbers is used to reduce the maximum error to half of the segment, but ranging accuracy is improved by calculating segment number (decimal part) 32714 obtained by further dividing the unit segment, using the ratio between (i) two-unit-segment reflected light 32712 corresponding to the amount of light of reflected light 10111 that returned to the two adjacent unit segments and (ii) one-unit-segment reflected light 32711 corresponding to the amount of reflected light 10111 that returned to the farther (far end) one of the two adjacent unit segments from emission pulse 10120 (i.e., by using one-unit-segment reflected light 32711 ±two-unit-segment reflected light 32712). For example, if reflected light 10111 begins to return 2.5 ns after the beginning of a given unit segment, reflected light 10111 will occupy 7.5 ns of the closer (near end) one of the two adjacent segments to emission pulse 10120 and 2.5 ns of the farther (far end) one of two adjacent unit segments from emission pulse 10120. Here, theoretically, a proportional relationship can be established in which one-unit-segment reflected light 32711 is “0.25” if two-unit-segment reflected light 32712 is “1”, and thus it is possible to calculate the delay time from the start of the unit segment time until the reflected light 10111 starts to return as 10 ns (=unit segment length)×0.25=2.5 ns. This ranging device outputs the segment number corresponding to the distance. The time difference between the generation of emission light 10110 and the return of reflected light 10111 can be calculated by multiplying the segment number where reflected light 10111 returned by the length of the unit segment. Accordingly by using the quotient of one-unit-segment reflected light 32711 ÷ two-unit-segment reflected light 32712 as segment number (decimal part) 32714, it is possible to improve ranging accuracy. One-unit-segment reflected light 32711 and two-unit-segment reflected light 32712 are generated in data selection 43810 using subtraction signals 21951 to 21956, and divided in ratio calculation divider 32713 to generate segment number (decimal part) 32714. Data selection 43810 will be described in greater detail later with reference to
Finally, segment number (integer part) 32715 and segment number (decimal part) 32714 are bitwise concatenated to generate segment number signal 10131.
First, the method of calculating exposure counts 43801 to 43806 of packets 1 to 6 will be explained. The amount of reflected background light 21511 included in the signal values of packets 1 to 6 is proportional to the number of times exposure pulses 10121 to 10126 of packets 1 to 6 are set to high level (the exposure count). Accordingly, controller 43206 generates segment exposure counts 43901 to 43906 for packets 1 to 6 by calculating, for each generation code of packets 1 to 6, segment exposure count 43400 of segments among all segment numbers 21700 in which the generation code of the packet is “1”. Note that segment exposure counts 43901 to 43906 of packets 1 to 6 of segments in which the generation code of packets 1 to 6 is “0” are “0”. For each packet, exposure counts 43801 to 43806 of packets 1 to 6 are generated by calculating the sum of segment exposure counts 43901 to 43906 of packets 1 to 6.
Next, the method of generating the initial values for memory (LUT) 10801 will be explained. Controller 43206 generates each independent code 22000 as a 6-bit binary number, where packet 1 generation code 21701 is bit 0, packet 2 generation code 21702 is bit 1, packet 3 generation code 21703 is bit 2, packet 4 generation code 21704 is bit 3, packet 5 generation code 21705 is bit 4, and packet 6 generation code 21706 is bit 5. For example, independent code 22020 of segment number 21700 of 7, which is labeled 22021, is a 6-bit binary number where packet 1 generation code 21701 of “0” at segment number 21700 of 7 is bit 0, packet 2 generation code 21702 of “0” at segment number 21700 of 7 is bit 1, packet 3 generation code 21703 of “0” at segment number 21700 of 7 is bit 2, packet 4 generation code 21704 of “0” at segment number 21700 of 7 is bit 3, packet 5 generation code 21705 of “1” at segment number 21700 of 7 is bit 4, and packet 6 generation code 21706 of “0” at segment number 21700 of 7 is bit 5, which converts to 10 in hexadecimal notation. Controller 43206 generates each adjacent code 22001 by applying a bitwise logical OR operation between independent codes 22000 of two adjacent segments. For example, adjacent code 32823 corresponding to the adjacent segment numbers 21700 of 24 and 25, which are labeled 32824, is a 6-bit binary number where the result of the logical OR operation of the value “1” of bit 0 of the independent code at segment number 21700 of 24 and the value “0” of bit 0 of the independent code at segment number 21700 of 25 is “1” as bit 0, the result of the logical OR operation of the value “1” of bit 1 of the independent code at segment number 21700 of 24 and the value “1” of bit 1 of the independent code at segment number 21700 of 25 is “1” as bit 1, the result of the logical OR operation of the value “0” of bit 2 of the independent code at segment number 21700 of 24 and the value “0” of bit 2 of the independent code at segment number 21700 of 25 is “0” as bit 2, the result of the logical OR operation of the value “0” of bit 3 of the independent code at segment number 21700 of 24 and the value “0” of bit 3 of the independent code at segment number 21700 of 25 is “0” as bit 3, the result of the logical OR operation of the value “0” of bit 4 of the independent code at segment number 21700 of 24 and the value “1” of bit 4 of the independent code at segment number 21700 of 25 is “1” as bit 4, and the result of the logical OR operation of the value “1” of bit 5 of the independent code at segment number 21700 of 24 and the value “1” of bit 5 of the independent code at segment number 21700 of 25 is “1” as bit 5, which converts to 33 in hexadecimal notation. In this example, in independent codes 22000, the signal values of packets 1 to 6 that include reflected light 10111 are “1” and the signal values of packets 1 to 6 that do not include reflected light 10111 are “0” when reflected light 10111 returns to only one segment number 21700, and in adjacent codes 22001, the signal values of packets 1 to 6 that include reflected light 10111 are “1” and the signal values of packets 1 to 6 that do not include reflected light 10111 are “0” when reflected light 10111 returns across two adjacent segment numbers 21700, and exposure code 10820 is estimated for each segment number 21700 based on generation codes 21701 to 21706 of packets 1 to 6. For this reason, memory (LUT) 10801 is initialized with independent codes 22000 and adjacent codes 22001 as addresses and segment numbers 21700 corresponding to independent codes 22000 and adjacent codes 22001 as data, and memory (LUT) 10801 is accessed and read with exposure code 10820 as an address, making it is possible to convert exposure code 10820 to the segment number corresponding to the distance. Table 22010 is a data set for initializing memory (LUT) 10801. Since the hexadecimal notation of independent code 22020 is “10”, the data corresponding to the hexadecimal address of “10” in table 22010 is 7, which is segment number 22021 of independent code 22020. Since the hexadecimal notation of adjacent code 32823 is “33”, the data corresponding to the hexadecimal address of “33” in table 22010 is 24, which is the smaller of segment numbers 32824 of adjacent code 32823. This is because, with respect to segment numbers 32824 of adjacent code 32823, when reflected light 10111 returns across segment numbers 21700 of 24 and 25, the specific timing at which reflected light 10111 returned is calculated separately using the ratio of two-unit-segment reflected light 32712 which corresponds to the amount of reflected light 10111 that returned across segment numbers 21700 of 24 and 25 and one-unit-segment reflected light 32711 which corresponds to the amount of reflected light 10111 that returned to segment number 21700 of 25.
Next, the method of generating generation codes 21701 to 21706 of packets 1 to 6 to be applied to controller 43206 will be described. In order to calculate the segment numbers using exposure codes 10820 generated from the signal values of packets 1 to 6 described above, there must be a one-to-one correspondence between exposure codes 10820 and the segment numbers. Therefore, generation codes 21701 to 21706 of packets 1 to 6 are determined so that the values of independent codes 22000 and adjacent codes 22001 do not overlap, and exposure codes 10820 and the segment numbers are associated one-to-one. Moreover, generation codes 21701 to 21706 of packets 1 to 6 are determined such that independent codes 22000 and adjacent codes 22001 do not take a value of “00” or “3F” in hexadecimal notation. When reflected light 10111 is returned at a timing when the value of independent code 22000 or adjacent code 22001 is “00”, exposure pulses 10121 to 10126 of packets 1 to 6 are low level, and as such, the signal values of packets 1 to 6 do not include the reflected light 10111 component. Even if target object 10101 does not exist within the ranging range of segment numbers 0 to 31, the signal values of packets 1 to 6 do not include the reflected light 10111 component. Accordingly, since it is not possible to determine whether these two conditions are satisfied from the signal values of packets 1 to 6, generation codes 21701 to 21706 of packets 1 to 6 are generated such that independent codes 22000 and adjacent codes 22001 do not take a value of “00” in hexadecimal notation. By making sure that independent codes 22000 and adjacent codes 22001 do not take a value of “00” in hexadecimal notation, it is possible to make sure that there is at least one packet that includes reflected light 10111 among the signal values of packets 1 to 6 of solid-state image capturer output signal 10130. However, by generating generation codes 21701 to 21706 of packets 1 to 6 in such a manner that independent codes 22000 and adjacent codes 22001 do not take a value of “3F” in hexadecimal notation, it is possible to make sure that there is at least one packet that does not include reflected light 10111 among the signal values of packets 1 to 6 of solid-state image capturer output signal 10130. In case exposure code 10820 matches “00”, “1B”, or “3F”, which do not exist in independent codes 22000 or adjacent codes 22001, it is possible to determine that the segment number is not calculated correctly by setting the segment number to a negative value of —1.
When reflected light 10111 returns across two adjacent segment numbers 21700, subtraction signals 21951 to 21956 of packets 1 to 6 can be classified into the following four types according to the combination of each of generation codes 21701 to 21706 of packets 1 to 6 of the two segments that compose the adjacent code.
Classification A corresponds to when the packet generation code closer to emission pulse 10120 is “0” and the packet generation code father from emission pulse 10120 is “0”, classification B corresponds to when the packet generation code closer to emission pulse 10120 is “1” and the packet generation code father from emission pulse 10120 is “0”, classification C corresponds to when the packet generation code closer to emission pulse 10120 is “0” and the packet generation code father from emission pulse 10120 is “1”, and classification D corresponds to when the packet generation code closer to emission pulse 10120 is “1” and the packet generation code father from emission pulse 10120 is “1”. Here, for each exposure code 10820, two-unit-segment reflected light 32712 corresponding the amount of reflected light 10111 that returned to two adjacent unit segments is generated using subtraction signals 21951 to 21956 of packets 1 to 6 and segment exposure counts 43901 to 43906 of packets 1 to 6 which are classified as classification B, as well as subtraction signals 21951 to 21956 of packets 1 to 6 and segment exposure counts 43901 to 43906 of packets 1 to 6 which are classified as classification C. For each exposure code 10820, one-unit-segment reflected light 32711 corresponding to the amount of reflected light 10111 that returned to the farther (far end) one of the two adjacent unit segments from emission pulse 10120 is generated using subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification C and segment exposure counts 43901 to 43906 of packets 1 to 6 classified as classification B. Generation codes 21701 to 21706 of packets 1 to 6 are generated so that subtraction signals 21951 to 21956 of packets 1 to 6 classified as classifications B and C are present in all adjacent codes 22001. If there are multiple subtraction signals 21951 to 21956 of packets 1 to 6 classified as classification B or C, one of them is selected to generate two-unit-segment reflected light 32712 and one-unit-segment reflected light 32711.
Here, if exposure code 10820 is “OB”, classification B is packet 2 subtraction signal 21952 and packet 2 segment exposure count 43902, and classification C is packet 1 subtraction signal 21951 and packet 1 segment exposure count 43901. The exposure count of packet 2 subtraction signal 21952 is “9”, which is packet 2 segment exposure count 43902 corresponding to segment number 21700 of 5, and the exposure count of packet 1 subtraction signal 21951 is “12”, which is packet 1 segment exposure count 43901 corresponding to segment number 21700 of 6. Since packet 2 subtraction signal 21952 classified as classification B and packet 1 subtraction signal 21951 classified as classification C have different exposure counts, using packet 2 subtraction signal 21952×the packet 1 exposure count corresponding to the segment number of 6 and packet 1 subtraction signal 21951 x the packet 2 exposure count corresponding to the segment number of 5, which are corrected exposure counts corrected for the difference, two-unit-segment reflected light 32712 is generated by packet 2 subtraction signal 21952 x the packet 1 exposure count corresponding to the segment number of 6 + packet 1 subtraction signal 21951×the packet 2 exposure count corresponding to the segment number of 5, and one-unit-segment reflected light 32711 is generated by packet 1 subtraction signal 21951 x the packet 2 exposure count corresponding to the segment number of 5.
When reflected light 10111 returns to only one segment number 21700, ranging accuracy can be ensured without calculating the ratio of one-unit-segment reflected light 32711 to two-unit-segment reflected light 32712 because emission light 10110 and exposure pulses 10121 to 10126 of packets 1 to 6 have the same pulse width (10 ns). Accordingly, when exposure code 10820 and independent code 22000 are the same, two-unit-segment reflected light 32712 is fixed to “1” and one-unit-segment reflected light 32711 is fixed to “0” so that the calculation result of ratio calculation divider 32713 is “0”.
As illustrated in
From the above operation, the time required for 12 repetitions of frame unit drive pattern 10410, which corresponds to the imaging exposure time, is 17.28 ms, and the time required for image data readout 10411, which corresponds to the imaging readout time, is 16.053 ms. Therefore, the time required for one frame is 33.3 ms, and the frame rate of this ranging device is 30 fps. Compared to the conventional technique, this technique can significantly expand the range over which distance can be measured with a smaller number of packets since the ranging range can be significantly expanded while maintaining the frame rate, even under conditions with background light, and ranging accuracy in which the unit segment is further divided can be achieve, so by using this technique, the difference in the amount of exposure between the near end and the far end can be reduced, and the entire ranging range from the near end to the far end can be measured.
In the ranging device according to Embodiment 4 as described above, the controller repeats control of the pulse generator according to the n types of packet generation codes a plurality of times, and the pulse generator includes a function for setting whether or not to mask a packet generation code to prevent generation of the exposure pulse or the emission pulse per unit segment.
This makes it possible to inhibit signal charge saturation by reducing the exposure count with a mask, for example, in the unit segment on the near end where intense reflected light can be received. In addition, the difference in exposure amount between the unit segment on the near end and the unit segment on the far end can be made smaller. This makes it possible to maintain or increase the ranging accuracy from the near end to the far end with reduced effects caused by saturation.
Next, a variation of the embodiments will be described. In Embodiments 1 through 4, as illustrated in
Pixel 10200 in
FDA (signal charge accumulator) 10211 corresponds to each of packets 1 through 6. FDA (signal charge accumulator) 10211 cannot accumulate packets 1 to 6 simultaneously. Therefore, the accumulating operation and the readout operation of each packet are performed alternately.
Solid-state image capturer 10105 in
Each pixel 10200 outputs pixel output signal 10241 from one vertical signal line 10331. The signal charges from packet 1 to packet 6 are output to vertical signal line 10331 in a time-division manner as pixel output signal 10241.
The control sequence illustrated in
In
In
Even when one FDA (signal charge accumulator) 10211 is provided per photoelectric conversion pixel 10201, such as in the variation illustrated in
As described above, in the ranging device according to the variation, the solid-state image capturer includes: a photoelectric conversion pixel; a signal charge accumulator that accumulates a signal charge generated by the photoelectric conversion pixel; and a signal outputter that outputs a signal value corresponding to the signal charge accumulated in the signal charge accumulator.
This makes it possible to accumulate one type of signal value in the solid-state image capturer. The readout operation of signal values from the solid-state image capturer is performed every time one type of signal value is accumulated, i.e., every time an exposure made according to one type of packet generation code is continuously performed. This makes it possible to achieve a high ranging accuracy and a wide ranging range.
In Embodiments 1 through 4, each adjacent code is defined as a code obtained by applying a bitwise logical OR operation between two independent codes corresponding to two adjacent unit segments. Instead of this adjacent code, Embodiment 5 describes an example of using a second adjacent code defined as a code obtained by applying a bitwise logical AND operation—rather than a bitwise logical OR operation—between the two independent codes.
In the following, an adjacent code defined as a code obtain by a logical OR operation will be referred to as an “OR adjacent code” or a “first adjacent code”. Moreover, when the unspecified term “adjacent code” is used, this shall refer to an OR adjacent code or a first adjacent code. The “adjacent code” in Embodiments 1 through 4 is an OR adjacent code or a first adjacent code.
An adjacent code defined as a code obtained by a logical AND operation will be referred to as an “AND adjacent code” or a “second adjacent code”. In Embodiment 5, a ranging device that uses AND adjacent codes instead of OR adjacent codes will be described.
The configuration of the ranging device according to the present embodiment is approximately the same as the configurations illustrated in
Each AND adjacent code, i.e., second adjacent code is a code obtained by applying a bitwise logical AND operation between two independent codes corresponding to two adjacent unit segments. Stated differently, a bit of “1” in the AND adjacent code indicates an exposure in each of the two adjacent unit segments. For example, when the duration of the emission pulse is the same as the duration of the unit segment, a bit of “1” in the AND adjacent code means that the entire duration of the reflected light pulse (i.e., 100% of the duration of the reflected light pulse) is exposed. This means that if reflected light is present, the entire reflected light pulse is exposed, not just part of the reflected light pulse. In contrast, a bit of “1” in the OR adjacent code means that part or all of the reflected light pulse (i.e., a few % to 100% of the duration of the reflected light pulse) is exposed.
Each AND adjacent code is generated, for example, by applying a bitwise logical AND operation between two independent codes corresponding to two adjacent unit segments by controller 10106. If the above second exposure code matches any of the AND adjacent codes, the intermediate distance between the two unit segments corresponding to the matching AND adjacent code is the distance value of the pixel.
The second exposure code is data that is binarized using a different threshold than the exposure codes of Embodiments 1 through 4. Hereinafter, the exposure codes of Embodiments 1 through 4 may be referred to as first exposure codes. The first exposure code is used to determine whether there is a matching independent code and whether there is a matching OR adjacent code. In contrast, in the present embodiment, the first exposure code is used only to determine whether there is a matching independent code, and the second exposure code is used to determine whether there is a matching AND adjacent code.
For example, the first exposure code and the second exposure code are generated using threshold register 10800 and comparator 10802 illustrated in
Threshold register 10800 holds a first threshold value and a second threshold value, and outputs the first threshold value and the second threshold value to comparator 10802. The second threshold value is greater than the first threshold value. Note that the threshold used to obtain the first exposure code is referred to as the first threshold value, and the threshold used to obtain the second exposure code is referred to as the second threshold value.
Comparator 10802 compares solid-state image capturer output signal 10130 with the first threshold value and binarizes solid-state image capturer output signal 10130. Comparator 10802 further compares solid-state image capturer output signal 10130 with the second threshold value and binarizes solid-state image capturer output signal 10130.
Synchronizer 10803 outputs binarized packets 1 to 6 of the same pixel address in parallel. In other words, synchronizer 10803 outputs, as the first exposure code, 6-bit data corresponding to packets 1 to 6 binarized using the first threshold value, and outputs, as the second exposure code, 6-bit data corresponding to packets 1 to 6 binarized using the second threshold value.
In
Next, an example of the assignment of independent codes and second adjacent codes will be described.
Next, an example of an operation that uses AND adjacent codes will be described.
The first exposure code binarized using the first threshold value in the middle right of
The second exposure code binarized using the second threshold value in the bottom right of
In this way, even with a ranging device that uses AND adjacent codes instead of OR adjacent codes, it is possible to achieve the same advantageous results as in Embodiments 1 through 4. Moreover, since there is a high exposure count and a large amount of exposure signals, the sensitivity and signal-to-noise ratio can be improved.
Next, an example of setting the first and second threshold values will be given.
First threshold value=Min+((Max−Min)/4)
Second threshold value=Max+((Max−Min)/4)
In this example, the minimum value Min is regarded as a value approximately corresponding to the background light component included in the exposure signal value, and the term ((Max−Min)/4) is regarded as the approximate maximum error of the background light component. The first and second threshold values are set dynamically for each unit segment, for example.
As described above, in the ranging device according to Embodiment 5, controller 10106 generates n-bit second adjacent codes by applying a bitwise logical AND operation between two independent codes corresponding to two adjacent unit segments, and distance calculator 10108: binarizes the n types of signal values into an n-bit binary number using a second threshold value and determines the binarized n-bit binary number as a second exposure code; and compares the second exposure code with the second adjacent codes, and when there is a match, calculates an intermediate distance between the two unit segments that correspond to the matching second adjacent code.
This makes it possible to achieve both frame rate and measurement accuracy (number of measurement segments and measurement time) without increasing memory capacity and computational resources, thus realizing a high-speed and high-accuracy ranging device at a low cost.
Here, each of the second adjacent codes may be different from any other independent code. Here, each of the second adjacent codes may be different from any other second adjacent code.
In the present embodiment, a ranging device that uses both the first adjacent codes, i.e., the OR adjacent codes of Embodiments 1 through 4 and the second adjacent codes, i.e., the AND adjacent codes of Embodiment 5 will be described.
The configuration of the ranging device according to the present embodiment is approximately the same as the configurations illustrated in
Next, an example of the assignment of independent codes, first adjacent codes, and second adjacent codes will be described.
The assigning of bits is carried out such that more bits of “1” are assigned to the six types of packet generation codes in
The independent codes, the first adjacent codes, and the second adjacent codes are assigned exclusively. That is, each independent code, first adjacent code, and second adjacent code is assigned differently from any other independent code, first adjacent code, and second adjacent code, respectively.
Next, an example of an operation that uses both of first and second adjacent codes will be given.
The first exposure code binarized using the first threshold value in the middle right of
The second exposure code binarized using the second threshold value in the bottom right of
Thus, the result of identifying the segment number based on the OR adjacent codes is the same as the result of identifying the segment number based on the AND adjacent codes, and by using both the OR adjacent codes and the AND adjacent codes, errors in determining the distance segment can be inhibited and the reliability of ranging results can be improved.
Next, the binarization using the first threshold value and the binarization using the second threshold value will be described.
Since the intensity of the reflected light is inversely proportional to the square of the distance from the target object, the first and second threshold values are set to appropriate values for each unit segment. The first and second threshold values may be set in advance according to an anticipated ranging environment, or may be set dynamically according to the intensity of the background light in the actual ranging environment. Next, a binarization error that can occur when the first and second threshold values are set dynamically will be described.
The right side of
The right side of
Next, the influence of background light when the first and second threshold values are set dynamically will be described.
The upper and lower limits of the background light in the unit segment of interest are shown relative to each exposure amount in packets 1 to 4 on the right side of
In
In this way, compared to the binarization process that uses the first threshold value in
In addition, the combined use of OR adjacent codes and AND adjacent codes can inhibit errors in determining the distance segment, which can further improve the reliability of ranging results.
As described above, in the ranging device according to Embodiment 6, controller 10106 generates n-bit first adjacent codes by applying a bitwise logical OR operation between the two independent codes corresponding to two adjacent unit segments, and further generates n-bit second adjacent codes by applying a bitwise logical AND operation between the two independent codes corresponding to two adjacent unit segments.
Distance calculator 10108 further binarizes the n types of signal values into an n-bit binary number using a second threshold value and determines the binarized n-bit binary number as a second exposure code, compares the second exposure code with the second adjacent codes, and when there is a match, calculates an intermediate distance between the two unit segments that correspond to the matching second adjacent code.
Here, the first threshold value may be lower than the second threshold value. This makes it possible to inhibit binarization errors caused by large amounts of background light.
Here, one independent code may be the same as any one of all of the independent codes and second adjacent codes of the other unit segments.
Here, when there is a match between the second exposure code and the second adjacent codes, the distance calculator classifies the n types of signal values based on a bitwise combination of the two independent codes corresponding to the matching second adjacent code, and using the classified signal values, calculates a distance within the corresponding two adjacent unit segments.
Here, the distance calculator classifies the n types of signal values based on the bitwise combination of the two independent codes into any one of the following four classifications: classification A when one bit of the two independent codes is 0 and an other bit of the two independent codes is 0; classification B when the one bit is 1 and the other bit is 0; classification C when the one bit is 0 and the other bit is 1; and classification D when the one bit is 1 and the other bit is 1.
The distance calculator calculates a distance by further dividing the distance segments using signal values classified as at least two classifications from among classification B, classification C, and classification D.
As illustrated in
Light source 102 emits emission light 110 toward target object 101 in measurement space 100.
Optical lens 103 focuses reflected light 111 reflected by target object 101.
Of the light focused by optical lens 103, optical filter 104 transmits only light in the near-infrared wavelength region around 940 nm.
Solid-state image capturer 105 detects the light transmitted through optical filter 104 and outputs the detection result as subframe image 130.
Distance image generator 106 generates distance information for each pixel of the distance image based on first to nth (n≥4) subframe images. The distance information indicates a measurement segment, among first to mth (m≥n) measurement segments into which the ranging range is divided, that corresponds to the reflected light. For example, when n=6 and m=31, distance image generator 106 receives an input of six subframe images 130, divides the distance to target object 101 into first to thirty-first measurement segments for each pixel, calculates the distances, and outputs them out of the ranging device 1 as distance image 131. The term “measurement segment” is synonymous with the term “distance segment” used in Embodiments 1 through 6.
Pulse generator 107 outputs emission pulse 120 to light source 102 and outputs photodetection permission pulse 121, photodetection reset pulse 122, and count reset pulse 123 to solid-state image capturer 105. For example, pulse generator 107 generates one or more emission pulses according to an emission pattern prior to one instance of the output of the photodetection permission pulse. Here, the emission patterns are sequentially selected from a plurality of emission patterns that differ from each other in at least one of the number of times of output or the output timing of the emission pulses.
The plurality of emission patterns include first to nth emission patterns corresponding to the first to nth subframe images. Each of the first to nth emission patterns indicates a plurality of emission pulses. The term “photodetection permission pulse” is synonymous with the term “exposure pulse” used in Embodiments 1 through 6.
Controller 108 controls distance image generator 106 and pulse generator 107.
If a sufficient amount of light can be obtained by light source 102, optical lens 103 may be omitted by using a pinhole as a substitute, and if no light source other than light source 102 is present in measurement space 100, optical filter 104 may be omitted. A coating that exhibits similar transmission characteristics as optical filter 104 may be applied to optical lens 103 instead of optical filter 104. Hereinafter the internal configuration of each element will be described.
Row select signals 301, which can be controlled per row, are connected to pixels 300, and by setting row select signal 301 to high, pixel output signal 302 is read out from pixels 300 of the corresponding row, converted to a digital signal by column ADC 303, and then sequentially output one pixel at a time as information for one row of subframe image 130 via shift register 304. By repeating the same operation for all rows, all pixels of subframe image 130 can be output.
Next, the configuration of pixel 300 will be described.
Analog counter 404 holds a voltage corresponding to the photodetection count (this voltage is hereinafter referred to as detection count voltage 408), and updates detection count voltage 408 during the period when the input voltage is lower than reference voltage Vth and the count permission pulse is high. When count reset pulse 123 is high, detection count voltage 408 is reset to 0 V (corresponding to a photodetection count of 0).
Hereinafter, the photodetection operation of pixel 300 will be described.
Next, at timing T1, reset transistors 401 are turned ON and APD 400 and photodetection capacitor 403 are reset to the power supply voltage by setting photodetection reset pulse 122 to high, and then reset transistors 401 are turned OFF by turning photodetection reset pulse 122 to low.
At this time, by setting the power supply voltage so that the voltage applied to APD 400 is at least the breakdown voltage, APD 400 enters Geiger mode (i.e., a state in which Geiger discharge occurs when a single photon is incident).
Next, at timing T2, transfer transistor 402 is turned ON by setting photodetection permission pulse 121 to high, but the voltage of APD 400 and photodetection capacitor 403 does not change because reflected light 111 is not incident (i.e., “no photodetection” is indicated).
At timing T3, photodetection permission pulse 121 is set low, and count permission pulse 407 is delayed from photodetection permission pulse 121 by delay circuit 406 and set to high, but detection count voltage 408 does not change because the voltage of photodetection capacitor 403 is higher than reference voltage Vth (i.e., a photodetection count of 0 is indicated).
Then, at timing T4, APD 400 and photodetection capacitor 403 are reset to the power supply voltage by setting photodetection reset pulse 122 to high again.
Next, at timing T5, the voltage of APD 400 drops rapidly due to Geiger discharge caused by reflected light 111 being incident on APD 400, but since photodetection permission pulse 121 is low and transfer transistor 402 is OFF, the voltage of photodetection capacitor 403 does not change (i.e. “no photodetection” is indicated).
At timing T6, transfer transistor 402 is turned ON by setting photodetection permission pulse 121 to high, but the voltage of APD 400 is below the breakdown voltage, so even if reflected light 111 is incident at this point, Geiger discharge does not occur and the voltage of photodetection capacitor 403 does not change (i.e., “no photodetection” is indicated).
Therefore, at timing T7, detection count voltage 408 does not change, just like at timing T3 (i.e., a photodetection count of 0 is indicated).
Then, at timing T8, APD 400 and photodetection capacitor 403 are reset to the power supply voltage as in timing T4.
Then, at timing T9, transfer transistor 402 is turned ON by setting photodetection permission pulse 121 to high, and by reflected light 111 being incident on APD 400, the voltage of APD 400 drops rapidly due to Geiger discharge, and the voltage of photodetection capacitor 403 also drops (i.e. “photodetection” is indicated).
At timing T10, count permission pulse 407 is high, and the voltage of photodetection capacitor 403 is lower than reference voltage Vth, so detection count voltage 408 changes (i.e., a photodetection count of 1 is indicated).
Then, at timing T11, APD 400 and photodetection capacitor 403 are reset to the power supply voltage as in timing T4.
Like timings T9 through T11, reflected light 111 is also detected at timings T12 through T14, and detection count voltage 408 changes (i.e., a photodetection count of 2 is indicated).
By repeating the above operations, it is possible to count the number of times reflected light 111 is incident during the period when photodetection permission pulse 121 is high.
However, if reflected light 111 is incident before the period when photodetection permission pulse 121 is high, as in timing T5, it is not counted.
Then, at timing T15, the final detection count voltage 408, Vc, is output as pixel output signal 302 by setting row select signal 301 to high, and at timing T16, the output of pixel output signal 302 is completed by setting row select signal 301 to low.
Finally, at timing T17, detection count voltage 408 is reset again by setting count reset pulse 123 to high (i.e., a photodetection count of 0 is indicated).
Distance image generator 106, pulse generator 107, and controller 108 are equipped with table memory 601 for storing the first to sixth emission tables, code register 602 for storing the independent codes and the adjacent codes, an image memory for temporarily storing the first to sixth subframe images 603, and table register 604 that temporarily stores any one of the first to sixth emission tables, as illustrated in
Distance image generator 106, pulse generator 107, and controller 108 are realized by combining, for example, a central processing unit (CPU), a field programmable gate array (FPGA), a digital signal processor (DSP), and an image signal processor (ISP), etc.
An operation sequence of the ranging device according to the present embodiment is described below.
First, an example of the data used for the initial settings will be given.
In initial setting period 700, at timing 720, controller 108 generates the emission codes shown in (b) in
As illustrated in (a) in
The thirty-first measurement segment is the farthest and the first measurement segment is the closest.
For example, the value of the nineteenth measurement segment in first emission table is 76, which indicates that in first subframe period 711, light emitting element 200 emits light 76 times to detect reflected light 111 from the nineteenth measurement segment.
Similarly, the value of the eighth measurement segment in sixth emission table is 32, which indicates that in sixth subframe period 716, light emitting element 200 emits light 32 times to detect reflected light 111 from the eighth measurement segment.
Although the emission count is set to increase from the first measurement segment to the thirty-first measurement segment taking the attenuation of emission light 110 over distance into consideration, this example is not limiting. For example, the emission count may be set to increase near a measurement segment prioritized based on the situation.
As illustrated in (b) in
Next, the independent codes and the adjacent codes will be explained.
Each independent code is the n-bit data included in the first to nth emission codes per measurement segment. In (c) in
Distance image generator 106 determines photodetection codes by regarding the first to nth subframe images as an n-bit binary numbers pixel by pixel. The term “photodetection code” is synonymous with the term “exposure code” described in Embodiments 1 through 4 and the term “first exposure code” in Embodiments 5 and 6. Even after Embodiment 7, the notations “photodetection code” and “exposure code” shall refer to the “first exposure code” instead of the “second exposure code”.
Distance image generator 106 further compares the photodetection code with the independent codes. If the photodetection code matches any of the independent codes, it means that a target object was present in the measurement segment corresponding to the independent code. This makes it possible to generate distance information that indicates the measurement segment where the target object is located.
Each adjacent code is a code obtained by applying a bitwise logical OR operation between two independent codes corresponding to two adjacent measurement segments. Each adjacent code is generated, for example, by applying a bitwise logical OR operation between two independent codes corresponding to two adjacent measurement segments by controller 108.
If the photodetection code above matches any one of the adjacent codes, it means that the target object was present within the range of the two measurement segments corresponding to the matching adjacent code. This makes it possible to generate distance information that indicates the measurement segment where the target object is located.
For example, as shown in (c) in
Note that the first to sixth emission tables should be designed so that none of the independent and adjacent codes to be generated overlap, and in addition, the independent and adjacent codes should be designed to include at least one bit of 0.
Returning to
Here,
The emission pulses in first subframe period 711 in
Similarly, the second to sixth subframe periods 712 to 716 represent the second through sixth emission patterns, respectively.
The first to sixth subframe periods 711 to 716 in
In
As illustrated in
Furthermore, the plurality of first emission patterns included in first subframe period 711, i.e., the first emission pattern repeated 100 times, into which the output pattern of emission pulse 120 is divided for the first to one-hundredth drives in first subframe period 711, are as illustrated in
The above operations illustrated in
In
[1.10 Operations: Subframe Image Output]Returning to
If the photodetection code is 17, it matches the independent code of the nineteenth measurement segment from (c) in
Next, another example of the independent codes and the adjacent codes will be given.
In
The first measurement segment corresponds to the nearest distance. For example, the independent code of 1 of the first measurement segment in (a) in
By performing the same operation as described above for first frame period 701 on second frame period 702 and subsequent frame periods, distance image 131 can be sequentially output out of the ranging device as a moving image. In the present embodiment, the number of subframe images required to divide the distance to target object 101 into the first to thirty-first measurement segments and output the distance is 6, which is reduced to ⅕ or less compared to 31 (the same number as the number of measurement segments) in the conventional techniques disclosed in PTL 1. This makes it possible to increase the measurement time per subframe (i.e., the measurement accuracy) by a factor of five or more while maintaining the frame rate and the number of measurement segments. Moreover, the memory capacity for holding subframe images is ⅕ or less of that of conventional methods, and the required processing speed (i.e., computational resources) is also ⅕ or less. Alternatively, it is possible to increase the number of measurement segments by a factor of five or more while maintaining the frame rate and measurement time per subframe. In this case, too, the memory capacity for holding subframe images and the required processing speed are the same as that of conventional methods.
Accordingly, the present embodiment can be said to be a very reasonable method for achieving both frame rate and measurement accuracy (number of measurement segments and measurement time) without increasing memory capacity and computational resources, thus realizing a high-speed and high-accuracy ranging device at a low cost.
As described above, the ranging device according to Embodiment 1 includes: light source 102 that emits light toward a measurement space; solid-state image capturer 105 that generates first to nth (n≥4) subframe images in one frame period based on reflected light from a target object in the measurement space; pulse generator 107 that generates an emission pulse that instructs light source 102 to emit light and a photodetection permission pulse that instructs solid-state image capturer 105 to detect light; distance image generator 106 that generates distance information for each pixel of a distance image based on the first to nth subframe images, the distance information indicating a measurement segment, among first to mth (m≥n) measurement segments into which the ranging range is divided, that corresponds to the reflected light; and controller 108 that controls pulse generator 107 and distance image generator 106. Pulse generator 107 generates one or more emission pulses according to an emission pattern prior to one instance of the output of the photodetection permission pulse. The emission patterns are sequentially selected from a plurality of emission patterns that differ from each other in at least one of the number of times of output or the output timing of the emission pulses.
With this, since it is possible reduce the number of subframe images required per measurement segment, the frame rate can be improved while maintaining distance measurement accuracy, distance measurement accuracy can be improved while maintaining the frame rate, or as a moderate setting, both distance measurement accuracy and the frame rate can be improved. In addition, the system can be configured inexpensively because the memory capacity and computational resources required for distance image generation can be reduced.
Here, the emission patterns may include first to nth emission patterns corresponding to the first to nth subframe images, and each of the first to nth emission patterns may indicate a plurality of emission pulses.
This makes it possible to measure the distances of m measurement segments, which is much more than n, from n subframe images. This is because the first to nth emission patterns (and also the first to nth subframe images) are capable of measuring the reflected waves of approximately 2 to the (n−1)th power of measurement segments. Stated differently, the number of measurement segments, m, is a multiple of n, and can be approximately 2 to the (n−1)th power.
Here, light source 102 may include one or more light emitting elements, controller 108 may include first to nth emission tables corresponding to the first to nth subframe images, the first to nth emission tables may store, for each of the first to mth measurement segments, a total emission count of the one or more light emitting elements, and controller 108 may determine the first to nth emission patterns based on the first to nth emission tables.
This makes it possible to easily determine the first to nth emission patterns by preparing n emission tables in advance.
Here, controller 108 may: generate first to nth emission codes as the n types of packet generation codes by binarizing the first to nth emission tables; generate independent codes, each independent code being an n-bit binary number of n bits included in the first to nth emission codes per first to mth measurement segment; and generate adjacent codes by applying a logical OR operation between the independent codes corresponding to two adjacent measurement segments. Distance image generator 106 may determine a photodetection code, the photodetection code being an n-bit binary number of n bits of the first to nth subframe images per pixel, and generate the distance information by comparing the photodetection code with the independent codes and the adjacent codes.
With this, if the photodetection code matches any of the independent codes, it means that a target object was present in the measurement segment corresponding to the independent code. If the photodetection code above matches any one of the adjacent codes, it means that the target object was present within the range of the two measurement segments corresponding to the matching adjacent code. This makes it possible to generate distance information that indicates the measurement segment where the target object is located.
Here, each of the adjacent codes may be different from any other adjacent code.
This makes it possible to uniquely identify the measurement segment where there was reflected light.
Here, each of the independent codes may be different from any other independent code.
Here, the independent code corresponding to the nearest distance among the first to mth measurement segments may be the same as any of the independent codes or adjacent codes corresponding to a distance other than the nearest distance.
This makes it possible, for example, to expand the ranging range by adding one more measurement segment when no target object can exist in the nearest measurement segment in the environment where the ranging device is used.
Here, each of the independent codes and the adjacent codes may include at least one bit of 0.
This makes it possible to obtain the background light component from the pixel value corresponding to “0” in the subframe image, and to improve the ranging accuracy by taking the background light component into account.
Here, the one frame period may include first to nth subframe periods for generating the first to nth subframe images, and in an ith (i is an integer from 1 to n) subframe period, pulse generator 107 may repeat, M times, a set of: an output of the emission pulse according to an ith emission pattern; and one instance of an output of the photodetection permission pulse.
This makes it possible to improve the measurement accuracy through repeated measurements even when the amount of emission light is small.
Here, in each of the first to nth subframe periods, the shorter the distance of a measurement segment among the first to mth measurement segments is, the more controller 108 may decimate, to a number less than M, the number of repetitions of the emission pulse corresponding to the measurement segment.
This makes it possible to increase the amount of emission light as the measurement segment distance increases to ensure measurement accuracy.
Here, the amount of emission light may be increased in two or more steps, for example.
The ranging method according to Embodiment 7 is used in a ranging device including: light source 102 that emits light toward a measurement space; solid-state image capturer 105 that generates first to nth (n≥4) subframe images in one frame period based on reflected light from a target object in the measurement space; pulse generator 107 that generates an emission pulse instructing light source 102 to emit light and a photodetection permission pulse that instructs solid-state image capturer 105 to detect light; distance image generator 106 that generates distance information for each pixel of a distance image based on the first to nth subframe images, the distance information indicating a measurement segment, among first to mth (m n) measurement segments into which the ranging range is divided, that corresponds to the reflected light; and controller 108 that controls pulse generator 107 and distance image generator 106. The ranging method includes: sequentially selecting an emission pattern from among emission patterns that differ from each other in at least one of the number of times of output or the output timing of the emission pulse; generating one or more emission pulses according to the selected emission pattern, and after the generation of the one or more emission pulse according to the selected emission pattern, performing one instance of the output of the photodetection permission pulse.
With this, since it is possible reduce the number of subframe images required per measurement segment, the frame rate can be improved while maintaining distance measurement accuracy, distance measurement accuracy can be improved while maintaining the frame rate, or as a moderate setting, both distance measurement accuracy and the frame rate can be improved. In addition, the system can be configured inexpensively because the memory capacity and computational resources required for distance image generation can be reduced.
The present embodiment describes a case in which the light source includes a plurality of light emitting elements.
Hereinafter, just like in Embodiment 7, an operation sequence of the ranging device according to the present embodiment will be described with reference to
In initial setting period 700, at timing 720, controller 108 generates the emission codes shown in (b) in
As illustrated in
Returning to
Here,
Furthermore, the first emission pattern repeated 100 times, into which the output patterns of the first to fourth emission pulses 1420 are divided for the first to one-hundredth drives in first subframe period 711, are as illustrated in
69, photodetection permission pulses 121 in the first to the one-hundredth drives are shown as a single line for simplicity).
The first subpattern of the first emission pattern has the same high output period as the first emission pattern of the first to fourth emission pulses 1420 in first subframe period 711 of
Moreover, the first to forty-fifth drives of the second subpattern of the first emission pattern are the same as the seventy-fourth through one-hundredth first subpatterns, but the number of high outputs in phase 13 from
Moreover, the first to forty-sixth drives of the third subpattern of the first emission pattern are the same as the ninety-fifth through one-hundredth second subpatterns, but the number of high outputs in phase 19 from
Moreover, the first to twenty-second drives of the fourth subpattern of the first emission pattern are the same as the forty-seventh through one-hundredth third subpatterns, but the number of high outputs in phase 23 from
The above operations illustrated in
Returning to
By performing the same operation as described above for first frame period 701 for second frame period 702 and subsequent frame periods, distance image 131 can be sequentially output out of the ranging device as a moving image. In the present embodiment, the number of subframe images required to divide the distance to target object 101 into the first to thirty-first measurement segments and output the distance is 6, which is reduced to ⅕ or less compared to 31 (the same number as the number of measurement segments) in the conventional techniques disclosed in PTL 1. This makes it possible to increase the measurement time per subframe (i.e., the measurement accuracy) by a factor of five or more while maintaining the frame rate and the number of measurement segments. Moreover, the memory capacity for holding subframe images is ⅕ or less of that of conventional methods, and the required processing speed (i.e., computational resources) is also ⅕ or less. Alternatively, it is possible to increase the number of measurement segments (i.e., measurement accuracy) by a factor of five or more while maintaining the frame rate and measurement time per subframe. In this case, too, the memory capacity for holding subframe images and the required processing speed are the same as that of conventional methods.
In addition, including the first to fourth light emitting elements 1400 provides four times the degree of freedom in controlling the emission count compared to Embodiment 7. As illustrated in (a) in
Therefore, the present embodiment can achieve both frame rate and measurement accuracy (number of measurement segments and measurement time) without increasing memory capacity and computational resources, and is a very reasonable method for realizing a high speed and high accuracy ranging device from short to long distances at a low cost.
As described above, in the ranging device according to Embodiment 8, for the first to mth measurement segments, light source 102 increases the amount of emission light to a greater degree the greater the distance of the measurement segment is.
This makes it possible to control the amount of light according to the distances of the measurement segments. For example, it is easy to both avoid saturation of pixel values corresponding to close measurement segments and avoid blacking out of pixel values corresponding to far measurement segments.
Here, the amount of emission light may be increased in two or more steps, for example.
The present embodiment describes an example of using an emission pattern that emits one instance of light prior to one instance of the output of the photodetection permission pulse.
Stated differently, Embodiment 9 generates first to nth emission pattern groups corresponding to the first to nth subframe images as emission patterns, and each of the first to nth emission pattern groups includes emission patterns indicating one instance of an emission pulse with mutually different output timings. Pulse generator 107 selects one of the first to nth emission pattern groups and outputs one instance of the photodetection permission pulse for each emission pattern included in the selected emission pattern group.
Note that the first emission pattern group is a set of emission patterns that can be created by dividing the first emission pattern in
Embodiment 7 into emission patterns indicating a single emission pulse with mutually different output timings. The same applies to the second to nth emission patterns.
The time of flight (TOF) ranging device and surrounding object according to the present embodiment are the same as described in
Embodiment 7 and illustrated in
Hereinafter, just like in Embodiment 7, an operation sequence of the ranging device according to the present embodiment will be described with reference to
In initial setting period 700, at timing 720, controller 108 generates the light emission codes shown in (b) in
As illustrated in
Therefore, since light emitting element 200 can emit light only once in each of the first to one-hundredth drives, the first to sixth emission tables are designed so that the total emission count of each of the first to sixth emission tables is 100, as illustrated in
Returning to
Here,
Phases 1 to 31 correspond to the first to thirty-first measurement segments, respectively. For example, when emission pulse 120 is high output in phase 31 and emission light 110 is emitted from light source 102, reflected light 111 is detected by solid-state image capturer 105 only when target object 101 is in the thirty-first measurement segment. When emission pulse 120 is high output in phase 27 in addition to phase 31, reflected light 111 is detected by solid-state image capturer 105 when target object 101 is in the thirty-first measurement segment and the twenty-seventh measurement segment. Note that the numbers below each pulse in
Furthermore, the first emission pattern group of emission pulse 120 in first subframe period 711 can be divided for each of the first to one-hundredth drives as illustrated in
The above operations illustrated in
[3.7 Operations: Subframe Image Output, distance image Output]
Returning to
By performing the same operation as described above for first frame period 701 for second frame period 702 and subsequent frame periods, distance image 131 can be sequentially output out of the ranging device as a moving image. In the present embodiment, since a light emitting element with a constraint on the minimum emission interval is used, as illustrated in
As described above, in the ranging device according to Embodiment 9, the plurality of emission patterns include first to nth emission pattern groups corresponding to the first to nth subframe images, each of the first to nth emission pattern groups includes emission patterns indicating one instance of an emission pulse with mutually different output timings, and pulse generator 107 selects one of the first to nth emission pattern groups and outputs one instance of the photodetection permission pulse for each emission pattern included in the selected emission pattern group.
This makes it possible to measure the distances of m measurement segments, which is greater than n, from n subframe images. This is because the first to nth emission pattern groups (and also the first to nth subframe images) are can be used to accommodate approximately 2 to the (n−1)th power of measurement segments. Stated differently, the number of measurement segments, m, is greater than n, and can be approximately 2 to the (n−1)th power or less.
Here, light source 102 may include one or more light emitting elements, controller 108 may include first to nth emission tables corresponding to the first to nth subframe images, the first to nth emission tables may store, for each of the first to mth measurement segments, a total emission count of the one or more light emitting elements, and controller 108 may determine the emission patterns to be included in the first to nth emission pattern groups based on the first to nth emission tables.
This makes it possible to easily determine the first to nth emission pattern groups and the plurality of emission patterns in each of the first to nth emission pattern groups by preparing n emission tables in advance.
The time of flight (TOF) ranging device and surrounding object according to the present embodiment are the same as described in Embodiment 1 and illustrated in
Hereinafter, just like in Embodiment 7, an operation sequence of the ranging device according to the present embodiment will be described with reference to
In initial setting period 700, just like in Embodiment 7, at timing 720, controller 108 generates the emission codes shown in (b) in
Next, in the first to sixth subframe periods 711 to 716, just like in Embodiment 7, the emission table is selected at timing 721, detection count voltage 408 is reset at timing 722, and solid-state image capturer 105 sequentially performs the first to one-hundredth drives at timing 723. In the first to one-hundredth drives, pulse generator 107 determines an emission pattern based on the emission tables held in table register 604. Note that the emission pattern is as illustrated in
After completing the first to one-hundredth drives, at timing 724, detection count voltage 408 of each pixel is read out row by row as pixel output signal 302 from solid-state image capturer 105, and A/D conversion is performed to output it as subframe image 130. Distance image generator 106 holds subframe image 130 in image memory 603 as one of the first to sixth subframe images (the first subframe image for the first subframe period, the second subframe image for the second subframe period, and so on). After repeating the above operations and completing up to sixth subframe period 716, at timing 725, distance image generator 106 generates and outputs distance image 131 based on the first to sixth subframe images and the independent and adjacent codes held in code register 602.
Next, in step 2401, the accumulation of p[i] is performed on SA when the combination (e[i, R1], e[i, R2]) is (0, 0), on SB when the combination is (1, 0), on SC when the combination is (0, 1), and on SD when the combination is (1, 1). Also, 1 is accumulated for NA, NB, NC, and ND under the same conditions. By repeating step 2401 for i=1 to 6, the pixel values of the first to sixth subframe images are assigned to signals SA, SB, SC, and SD.
As in Embodiment 7, since the emission table is designed so that at least one bit of the adjacent code is 0, at least one of i=1 to 6 will be (e[i, R1], e[i, R2])=(0, 0), so NA>0 without fail.
Next, distance R′ between measurement segments R1 and R2 is calculated using different formulas in steps 2402 to 2405 depending on the values of NB, NC, and ND.
Since R′ is proportional to the amount of reflected light 111 detected at R2/(the amount of reflected light 111 detected at R1 and R2), when NC, ND>0, as illustrated in step 2405, MC=SC/NC—MA is used in the numerator and MD=SD/ND—MA is used in the denominator. The division by NC and ND is for normalization, and the subtraction of MA=SA/NA is to remove the background light.
The reason why the numerator is multiplied by a factor of 16 is to make sure that the result of the division takes a value from 0 to 15 when it is converted to an integer.
Similarly, MC=SC/NC—MA is used in the numerator in steps 2402 and 2403 as well, and MD=SD/ND—MA is used in the denominator in step 2404 as well.
On the other hand, if either NC or ND is zero, MD—MB is used in the numerator as illustrated in step 2404, or MB+MC is used in the denominator as illustrated in step 2403 (however, MB=SB/NB—SA/NA).
When NB, NC, ND>0, the denominator is MB+MC+MD as illustrated in step 2402 to improve S/N by increasing the amount of signal, but it is possible to use only MD as well. In the former case, the denominator is twice as large as in steps 2403 to 2405, so the coefficient in numerator should be 32. As in Embodiment 7, the emission table is designed so that there is no overlap between independent and adjacent codes, which means that neither NC nor ND is ever set to 0.
Finally, in step 2406, the value obtained by adding R′ to R1 multiplied by 16 is output as the distance.
As illustrated in the following example, if the first to sixth subframe images p[i=1 to 6] at a given pixel are [10, 1, 9, 9, 9, 8, 1], the photodetection code binarized with an average value of 6 (rounded down to the nearest bit) is [1, 0, 1, 1, 1, 0], which is 29 if the tail is taken as the most significant bit, which coincides with the adjacent code spanning across measurement segments 12 and 13 in (c) in
By performing the above processes illustrated in
By performing the same operation as described above for first frame period 701 for second frame period 702 and subsequent frame periods, distance image 131 can be sequentially output out of the ranging device as a moving image. In the present embodiment, the number of subframe images required to divide the distance to target object 101 into the first to thirty-first measurement segments and output the distance is 6, which is reduced to ⅕ or less compared to 31 (the same number as the number of measurement segments) in the conventional techniques. This makes it possible to increase the measurement time per subframe (i.e., the measurement accuracy) by a factor of five or more while maintaining the frame rate and the number of measurement segments. Moreover, the memory capacity for holding subframe images is ⅕ or less of that of conventional methods, and the required processing speed (i.e., computational resources) is also ⅕ or less. Alternatively, it is possible to increase the number of measurement segments by a factor of five or more while maintaining the frame rate and measurement time per subframe. In this case, too, the memory capacity for holding subframe images and the required processing speed are the same as that of conventional methods.
Furthermore, when the photodetection code matches an adjacent code, since the distance between the two measurement segments is divided into 16 parts and calculated based on the pixel values of the subframe image, it is possible to improve ranging accuracy by a factor of 16 compared to the normal mode in Embodiment 7.
Accordingly, the present embodiment can be said to be a very reasonable method for achieving both frame rate and measurement accuracy (number of measurement segments and measurement time) without increasing memory capacity and computational resources, thus realizing a high-speed and high-accuracy ranging device at a low cost.
As described above, in the ranging device according to Embodiment 10, when the photodetection code matches an adjacent code, distance image generator 106 classifies each pixel value of the first to nth subframe images into one of cases A to D based on the combination of each bit value of the independent codes for the two measurement segments R1 and R2 corresponding to the matching adjacent code, and calculates distance information for the subdivided region from measurement segment R1 to measurement segment R2, using the ratio of the signals in cases A to D. Here, case A corresponds to the case where there is no reflected light in measurement segment R1 and no reflected light in measurement segment R2, case B corresponds to the case where there is reflected light in measurement segment R1 and no reflected light in measurement segment R2, case C corresponds to the case where there is no reflected light in measurement segment R1 and is reflected light in measurement segment R2, and case D corresponds to the case where there is reflected light in measurement segment R1 and is reflected light in measurement segment R2.
With this, when the photodetection code matches an adjacent code, since the range of distance of the two measurement segments is further divided based on pixel values of the subframe image, it is possible to improve ranging accuracy.
Here, distance image generator 106 may consider the signal of case A as a background light component and subtract it from the signals of case B, case C, and case D before calculating the distance information.
This improves the accuracy of the distance information by removing the background light.
Adjacent codes in Embodiments 1 through 4 and 7 through 10 are defined as the bitwise logical OR of two independent codes corresponding to two adjacent unit segments, and the OR adjacent codes, i.e., first adjacent codes described in Embodiments 5 and 6 have the same definition. In contrast, Embodiment 11 describes AND adjacent codes, i.e., second adjacent codes defined as a bitwise logical AND of these two independent codes rather than these two adjacent code. The second adjacent codes, i.e., AND adjacent codes are described in Embodiments 5 and 6.
The configuration of the ranging device in the present embodiment is approximately the same as that of
First, an example of the assignment of independent codes and second adjacent codes will be described.
Thus, assigning a large number of bits of “1” to the packet generation codes will firstly increase the total reflected wave signal amount. In other words, this makes it possible to improve sensitivity and the signal-to-noise ratio. Secondly, it will increase the number of bits of “1” in the AND adjacent codes. In other words, this is suited for the AND adjacent codes.
The ranging device according to the present embodiment mainly differs from Embodiment 5 in that exposure and emission are swapped. For example, “exposure” may be replaced with “emission” and “emission” may be replaced with “exposure” according to the packet generation codes.
Embodiment 12 describes an example of the configuration of a ranging device that uses both OR adjacent codes and AND adjacent codes with respect to Embodiment 11.
The bits are assigned to the example of the first to sixth packet generation codes in
The ranging device according to the present embodiment mainly differs from Embodiment 6 in that exposure and emission are swapped. For example, “exposure” may be replaced with “emission” and “emission” may be replaced with “exposure” according to the packet generation codes. As described above, in the ranging device according to Embodiment 12, the controller: generates first to nth emission codes as the n types of packet generation codes by binarizing the first to nth emission tables; generates independent codes, each independent code being an n-bit binary number of n bits included in the first to nth emission codes per unit segment; and generates first adjacent codes by applying a logical OR operation between the independent codes corresponding to two adjacent unit segments. The distance calculator determines a first exposure code, the first exposure code being an n-bit binary number of n bits of the first to nth subframe images per pixel, and generates the distance information by comparing the first exposure code with the independent codes and the first adjacent codes.
Here, the controller may: generate first to nth emission codes as the n types of packet generation codes by binarizing the first to nth emission tables; generate independent codes, each independent code being an n-bit binary number of n bits included in the first to nth emission codes per unit segment; and generate second adjacent codes by applying a logical AND operation between the independent codes corresponding to two adjacent unit segments. The distance calculator may determine a second exposure code, the second exposure code being an n-bit binary number of n bits of the first to nth subframe images per pixel, and generate the distance information by comparing the second exposure code with the independent codes and the second adjacent codes.
Although one or more aspects of the ranging device have been described based on embodiments, the present disclosure is not limited to these embodiments. Various modifications of the above embodiments that may be conceived by those skilled in the art, as well as embodiments resulting from combinations of elements from different embodiments that do not depart from the essence of the present disclosure may be included in one or more aspects of the present disclosure.
The ranging device according to the present disclosure is useful for three-dimensional measurement of a person or a building or the like, because it can achieve three-dimensional measurement of a distant target object to be measured without being dependent on the surrounding environment.
Number | Date | Country | Kind |
---|---|---|---|
2019-200085 | Nov 2019 | JP | national |
2019-209169 | Nov 2019 | JP | national |
This application is the U.S. National Phase under 35 U.S.C. § 371 of International Patent Application No. PCT/JP2020/040870, filed on Oct. 30, 2020, which in turn claims the benefit of Japanese Patent Application No. 2019-200085, filed on Nov. 1, 2019, and Japanese Patent Application No. 2019-209169, filed on Nov. 19, 2019, the entire disclosures of which Applications are incorporated by reference herein.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/JP2020/040870 | 10/30/2020 | WO |