Patent ID: 12190196

DETAILED DESCRIPTION

FIG.1Aillustrates an example of a barcode-reading device101that is configured for improving image quality in accordance with the present disclosure. The barcode-reading device101is a camera-based barcode-reading device. In other words, the barcode-reading device101includes a camera102, and as part of the process of reading barcodes the camera102captures images103. Once an image103of a barcode has been captured by the camera102, a decoder processes the image103and extracts the information contained in the barcode.

FIG.1Aalso shows an object104that is moving relative to the barcode-reading device101. A barcode105is positioned on the object104. The barcode-reading device101can be used to read the barcode105while the object104is moving relative to the barcode-reading device101.

As noted above, when the camera102is capturing an image103of the object104, any motion of the object104during the exposure time of the image sensor can result in image blur. If the image sensor is a rolling shutter-type image sensor, motion of the object104during the exposure time can also result in image distortion. The techniques disclosed herein can improve image quality by enabling the image sensor within the camera102to remain aimed at the object104while the camera102is capturing an image103of the object104, thereby reducing or eliminating image blur and potentially also reducing or eliminating image distortion.

In the depicted example, the image sensor in the camera102is a moveable image sensor106. The barcode-reading device101also includes an actuator107. The actuator107is configured to control the movement of the moveable image sensor106. Some non-limiting examples of actuators107that could be used include an array of voice coils, an electromagnetic motor, and a mechanical linkage between the moveable image sensor106and the object104.

The barcode-reading device101includes an image processing module108. The image processing module108is configured to process images103of the object104captured by the camera102to determine the relative velocity of the object104(i.e., the velocity of the object104relative to the camera102). The image processing module108is also configured to send control signals109to the actuator107based on the results of processing the images103. The control signals109cause the actuator107to move the moveable image sensor106in order to reduce the relative velocity between the object104and the moveable image sensor106.

In some embodiments, the actuator107causes the moveable image sensor106to move without moving the entire camera102. In other words, the actuator107causes the moveable image sensor106to move but does not cause at least some of the other components within the camera102to move.

In some embodiments, determining the relative velocity of the object104can include performing calculations with respect to two consecutive images103. More specifically, the image processing module108can be configured to compute the position of the object104in two consecutive images103. From those two positions, the image processing module108can determine the relative velocity of the object104and send control signals109to the actuator107, which moves the moveable image sensor106to reduce this relative velocity to zero (or as close to zero as realistically possible).

Alternatively, in some embodiments, determining the relative velocity of the object104can include performing calculations with respect to a single image103. More specifically, each captured image103can be analyzed to quantify direction and magnitude of the image blur apparent on the object104. The control signals109can be designed to cause the actuator107to move the moveable image sensor106in order to reduce the image blur to zero (or as close to zero as realistically possible).

FIG.1Billustrates additional components that can be included in the barcode-reading device101.

The barcode-reading device102includes a camera171that is configured to capture images103(which may alternatively be referred to as image frames). The camera171includes an optical assembly172including one or more lenses. As noted above, the camera171includes an image sensor106, which in the depicted embodiment is a moveable image sensor106. The image sensor106may alternatively be referred to as an imager, a photosensor array, etc. The image sensor106can be a solid-state device that is configured to detect and convey information used to make an image103. The image sensor106can include a relatively large number of light-sensitive image sensor pixels that are arranged in horizontal rows and vertical columns. The image sensor106can be a charge-coupled display (CCD) image sensor, a complementary metal-oxide-semiconductor (CMOS) image sensor, or another type of image sensor.

The lens(es) within the optical assembly172can be configured to receive light reflected from objects within the field of view of the camera171and focus this reflected light onto the image sensor106. The camera171can also include read-out circuitry173that is configured to electronically read the image sensor pixels within the image sensor106to provide an image103(i.e., a two-dimensional array of image sensor pixel data).

The barcode-reading device101can include a plurality of light sources174that can be activated to illuminate a barcode. The barcode-reading device101also includes an illumination controller175that controls the activation and deactivation of the light sources174.

The barcode-reading device101includes a processor110and memory111that is communicatively coupled to the processor110. Instructions112and data113are stored in the memory111. The instructions112are executable by the processor110to implement some or all of the methods, steps, operations, actions, or other functionality that is described herein in connection with the barcode-reading device101. Executing the instructions112can involve the use of the data113that is stored in the memory111.

The data113stored in the memory111include images103captured by the camera102. At least some of the captured images103can include images103of barcodes105(e.g., images103of objects104that include barcodes105).

In addition to the image processing module108described previously, the instructions112stored in the memory111also include one or more decoding modules114. The decoding module(s)114are executable by the processor110to implement one or more barcode decoding algorithms. Implementing the barcode decoding algorithm(s) involves processing the images103captured by the camera102and trying to find and decode barcodes105in those images103. Decoding barcodes105in the images103generates decoded data115.

The barcode-reading device101includes one or more communication interfaces176that facilitate communication between the barcode-reading device101and other devices.

FIG.2illustrates another example of a barcode-reading device201that is configured for improving image quality in accordance with the present disclosure. The barcode-reading device201is similar in some respects to the barcode-reading device101that was discussed above in connection withFIGS.1A and1B. For example, the barcode-reading device201includes a camera202that is configured to capture images203. The barcode-reading device201also includes an actuator207and an image processing module208. The barcode-reading device201can also include the additional components described above in connection withFIG.1B.FIG.2also shows an object204that is moving relative to the barcode-reading device201. A barcode205is positioned on the object204.

In the depicted example, instead of moving the image sensor216, the actuator207moves one or more optical components217in order to reduce the relative velocity between the object204and the image sensor216. More specifically, similar to the image processing module108in the barcode-reading device101discussed previously, the image processing module208in the barcode-reading device201processes images203of the object204captured by the camera202to determine the relative velocity of the object204. The image processing module208also sends control signals209to the actuator207based on the results of processing the images203. However, in contrast to the control signals109in the barcode-reading device101discussed previously, the control signals209in the barcode-reading device201cause the actuator207to move one or more optical components217(instead of moving a moveable image sensor106) in order to reduce the relative velocity between the object204and the image sensor216. Thus, in the embodiment shown inFIG.2, the image sensor216in the camera202is not necessarily a moveable image sensor (although it could be).

In some embodiments, the actuator207causes the optical component(s)217to move without moving the entire camera202. In other words, the actuator207causes the optical component(s)217to move but does not cause the image sensor216and/or at least some of the other components within the camera202to move.

Some non-limiting examples of actuators207that could be used include one or more voice coils and a piezoelectric actuator.

Various types of optical components217can be used. In some implementations, the optical component(s)217can include a mirror galvanometer (i.e., a high-speed, controllable mirror), and the actuator207can be configured to move the mirror galvanometer in order to reduce the relative velocity between the object204and the image sensor216. Alternatively, or in addition, the optical component(s)217can include an optical wedge that could be tilted or otherwise moved to reduce the relative velocity between the object204and the image sensor216.

Thus, the actuator107in the barcode-reading device101shown inFIGS.1A and1Band the actuator207in the barcode-reading device201shown inFIG.2are both configured to control movement of at least one camera component in order to reduce the relative velocity between an object and an image sensor. The actuator107in the barcode-reading device101shown inFIGS.1A and1Bcontrols movement of the moveable image sensor106in order to reduce the relative velocity between the object104and the moveable image sensor106. The actuator207in the barcode-reading device201shown inFIG.2controls movement of at least one optical component217of the camera202in order to reduce the relative velocity between the object204and the image sensor216.

In some embodiments, the actuator207can include an array of voice coils.

FIG.3illustrates an example of a system300that is configured for improving image quality in accordance with the present disclosure. The system300includes a barcode-reading device301that is similar in some respects to the barcode-reading devices101,201described previously. For example, the barcode-reading device301includes a camera302that is configured to capture images303. The barcode-reading device301also includes an image processing module308. The barcode-reading device301can also include the additional components described above in connection withFIG.1B.FIG.3also shows an object304that is moving relative to the barcode-reading device301. A barcode305is positioned on the object304.

The system also includes an actuator307. However, unlike the barcode-reading devices101,201described previously, in the depicted system300the actuator307is not included in the barcode-reading device301itself. Instead, the actuator307is external to the barcode-reading device301. Thus, instead of moving a component within the camera302of the barcode-reading device301(as in the embodiments described previously), the actuator307moves the barcode-reading device301itself in order to reduce the relative velocity between the object304and the image sensor (not shown) within the camera302.

More specifically, similar to the image processing modules108,208in the barcode-reading devices101,201described previously, the image processing module308in the barcode-reading device301processes images303of the object304captured by the camera302to determine the relative velocity of the object304. The image processing module308also sends control signals309to the actuator307based on the results of processing the images303. However, in contrast to the control signals109,209in the barcode-reading devices101,201described previously, the control signals309in the depicted barcode-reading device301cause the actuator307to move the barcode-reading device301itself (instead of moving a camera component, such as a moveable image sensor106or one or more optical components217) in order to reduce the relative velocity between the object304and the image sensor (not shown) within the camera302.

Various types of actuators307can be used. In some non-limiting implementations, the actuator307can include a servo pan/tilt motor.

FIGS.4A-4Gillustrate another example of a system400that is configured for improving image quality in accordance with the present disclosure. In the depicted system400, a barcode-reading device401reads barcodes affixed to objects that are traveling along a conveyor belt418. An actuator407(shown inFIG.4F) controls movement of the barcode-reading device401in such a way that the barcode-reading device401follows the objects as they travel along the conveyor belt418. This allows the camera402(also shown inFIG.4F) within the barcode-reading device401to remain aimed at the objects while the camera402is capturing images of the objects, even though the objects are in motion.

The conveyor belt418transports objects in a substantially straight line from a back end419of the conveyor belt418to a front end420of the conveyor belt418. This direction will be referred to as the forward direction. The opposite direction will be referred to as the backward direction.FIGS.4A-4Dshow the system400from the side of the conveyor belt418.

The actuator407causes the barcode-reading device401to move along a pre-defined path427(which is shown inFIG.4G). During part of the pre-defined path427, the velocity condition and the field of view condition (as those terms are defined above) are satisfied.FIG.4Gshows the pre-defined path427as including a first part427-1and a second part427-2. As will be described in greater detail below, the velocity condition and the field of view condition are satisfied during the first part427-1of the pre-defined path427. However, the velocity condition is not satisfied during the second part427-2of the pre-defined path427.

In the system400shown inFIGS.4A-4G, the pre-defined path427is a straight line. The barcode-reading device401is coupled to a track421that runs parallel to the length422of the conveyor belt418. The actuator407causes the barcode-reading device401to move back and forth in a straight line along this track. During the first part427-1of the pre-defined path427, the actuator407causes the barcode-reading device401to move in a forward direction from the back end419of the conveyor belt418to the front end420of the conveyor belt418. Conversely, during the second part427-2of the pre-defined path427, the actuator407causes the barcode-reading device401to move in a backward direction from the front end420of the conveyor belt418to the back end419of the conveyor belt418.

The actuator407causes the barcode-reading device401to alternate between the first part427-1and the second part427-2of the pre-defined path427. After the barcode-reading device401has moved in the forward direction along the first part427-1of the pre-defined path427and reached the front end420of the conveyor belt418, the actuator407causes the barcode-reading device401to change directions and start moving in the backward direction along the second part427-2of the pre-defined path427. Conversely, after the barcode-reading device401has moved in the backward direction along the second part427-2of the pre-defined path427and reached the back end419of the conveyor belt418, the actuator407causes the barcode-reading device401to change directions and start moving in the forward direction along the first part427-1of the pre-defined path427. This process continues as the actuator407causes the barcode-reading device401to move back and forth between the back end419of the conveyor belt418and the front end420of the conveyor belt418.

As noted above, the velocity condition and the field of view condition are satisfied during the first part427-1of the pre-defined path427. More specifically, the velocity condition is satisfied because during the first part427-1of the pre-defined path427, the actuator407causes the barcode-reading device401to move in the direction of motion of the conveyor belt418(namely, the forward direction) at a speed that is substantially similar to the speed of the conveyor belt418. Thus, during the first part427-1of the pre-defined path427, the barcode-reading device401moves in the same direction and at substantially the same speed as the objects on the conveyor belt418. The field of view condition is satisfied during the first part427-1of the pre-defined path427because the barcode-reading device401is positioned above the conveyor belt and oriented such that at least part of the conveyor belt418is located within the field of view of the camera402. Because the velocity condition and the field of view condition are satisfied during the first part427-1of the pre-defined path427, the camera402within the barcode-reading device401can follow and remain aimed at objects as they travel along the conveyor belt418while the barcode-reading device401moves along the first part427-1of the pre-defined path427.

A camera controller423(shown inFIG.4F) causes the camera402to capture images while the barcode-reading device401is moving along the first part427-1of the pre-defined path427. Because the velocity condition and the field of view condition are satisfied when the images are captured, the images should be substantially free of image blur and image distortion.

To more clearly illustrate how the actuator407causes the barcode-reading device401to move along the pre-defined path427,FIGS.4A-4Eshow “snapshots” of the system400at different points in time.

FIG.4Ashows the system400at a first point in time (t1). A first object404-1has been placed on the conveyor belt418. A barcode (not shown) is affixed to the first object404-1. The first object404-1is positioned near the back end419of the conveyor belt418. The first object404-1moves along the conveyor belt418in the forward direction. The barcode-reading device401is positioned above the first object404-1, such that the first object404-1is located within the field of view of the camera402within the barcode-reading device401. The actuator407causes the barcode-reading device401to move along the first part427-1of the pre-defined path427. In other words, the actuator407causes the barcode-reading device401to move in the forward direction at substantially the same speed as the conveyor belt418.

FIG.4Bshows the system400at a second point in time (t2), which occurs after t1. At t2, both the first object404-1and the barcode-reading device401are positioned between the back end419and the front end420of the conveyor belt418. The actuator407continues to cause the barcode-reading device401to move along the first part427-1of the pre-defined path427. In other words, the actuator407continues to cause the barcode-reading device401to move in the forward direction and at substantially the same speed as the conveyor belt418. Thus, the barcode-reading device401remains positioned above the first object404-1, and the first object404-1remains visible within the field of view of the camera402within the barcode-reading device401, as both the barcode-reading device401and the first object404-1move in the forward direction.

FIG.4Cshows the system400at a third point in time (t3), which occurs after t2. At t3, both the first object404-1and the barcode-reading device401have reached the front end420of the conveyor belt418. At this point, the actuator407causes the barcode-reading device401to change directions and begin moving along the second part427-2of the pre-defined path427. In other words, the actuator407causes the barcode-reading device401to begin moving in the backward direction, which is opposite the direction of the conveyor belt418.

FIG.4Dshows the system400at a fourth point in time (t4), which occurs after t3. At t4, the barcode-reading device401is positioned between the front end420and the back end419of the conveyor belt418. The actuator407continues to cause the barcode-reading device401to move along the second part427-2of the pre-defined path427in the backward direction.

FIG.4Eshows the system400at a fifth point in time (t5), which occurs after t4. At t5, the barcode-reading device401is positioned near the back end419of the conveyor belt418. A second object404-2has been placed on the conveyor belt418. The actuator407causes the barcode-reading device401to change directions once again in order to follow the second object404-2as the second object404-2moves along the conveyor belt418, in a similar manner to the way that the barcode-reading device401followed the first object404-1(as shown inFIGS.4A-4C).

In some implementations, the camera controller423causes the camera402to capture images only when the barcode-reading device401is moving along the first part427-1of the pre-defined path427. In other words, the camera controller423causes the camera402to capture images when the barcode-reading device401moves along the first part427-1of the pre-defined path427(in the forward direction) but not when the barcode-reading device401moves along the second part427-2of the pre-defined path427(in the backward direction). In such implementations, the camera controller423can receive a signal from the actuator407(or from another device, such as a device that controls the actuator407) whenever the actuator407causes the barcode-reading device401to change directions and switch between the first part427-1and the second part427-2of the pre-defined path427. Alternatively, the camera controller423can predict when the actuator407is going to cause the barcode-reading device401to change directions and switch between the first part427-1and the second part427-2of the pre-defined path427based on pre-defined timing. For example, if the camera controller423knows that the actuator407is going to cause the barcode-reading device401to change directions and switch between the first part427-1and the second part427-2of the pre-defined path427every N seconds, then the camera controller423can switch between causing the camera402to capture images and causing the camera402to not capture images every N seconds without any signals being sent to the camera controller423.

In some implementations, the camera controller423causes the camera402to capture images both when the barcode-reading device401moves along the first part427-1of the pre-defined path427and also when the barcode-reading device401moves along the second part427-2of the pre-defined path427. In such implementations, only the images captured when the barcode-reading device401moves along the first part427-1of the pre-defined path427would have the benefits of reduced image blur and reduced image distortion.

In some implementations, the speed of the barcode-reading device401can be based on signals429that the actuator407receives from a device that controls the conveyor belt418. Such a device is shown as a conveyor belt controller428inFIG.4F. The signals429can indicate the speed of the conveyor belt418, and the actuator407can set and subsequently adjust the speed of the barcode-reading device401based on these signals429. If the conveyor belt controller428subsequently changes (increases or decreases) the speed of the conveyor belt418, this can be communicated to the actuator407via the signals429. In response to receiving the signals429, the actuator407can adjust the speed of the barcode-reading device401to match (or substantially match) the new speed of the conveyor belt418.

Alternatively, in other implementations, the actuator407may know the speed of the conveyor belt418independently of any signals429received from the conveyor belt418or the conveyor belt controller428. In such implementations, the actuator407may set the speed of the barcode-reading device401based on its knowledge of the speed of the conveyor belt418. For example, the actuator407may not be communicatively coupled to the conveyor belt418or the conveyor belt controller428, but an individual with knowledge of the speed of the conveyor belt418may program the actuator407to cause the barcode-reading device401to move along the first part427-1of the pre-defined path427at the same speed (or substantially the same speed) as the speed of the conveyor belt418.

In the embodiment shown inFIGS.4A-G, at least part of the conveyor belt418is located within the field of view of the camera402at all times while the barcode-reading device401moves along the pre-defined path427. In other words, at least part of the conveyor belt418is located within the field of view of the camera402both while the barcode-reading device401moves along the first part427-1of the pre-defined path427(i.e., in the forward direction) and also while the barcode-reading device401moves along the second part427-2of the pre-defined path427(i.e., in the backward direction). However, this is not necessary. In some alternative embodiments, the conveyor belt418may not be located within the field of view of the camera402during the entire pre-defined path427. Some examples of such embodiments will be described below.

In some implementations, the actuator407can cause the barcode-reading device401to travel at the same speed (although in opposite directions) along the first part427-1and the second part427-2of the pre-defined path427. Alternatively, the actuator407can cause the barcode-reading device401to travel at different speeds along the first part427-1and the second part427-2of the pre-defined path427. For example, whereas the actuator407causes the barcode-reading device401to move at substantially the same speed as the objects on the conveyor belt418when the barcode-reading device401moves in the forward direction along the first part427-1of the pre-defined path427, the actuator407can cause the barcode-reading device401to move at a faster speed when the barcode-reading device401moves in the backward direction along the second part427-2of the pre-defined path427.

In the system400just described, the path427followed by the barcode-reading device401is linear. In an alternative embodiment, the path could be a looped path. For example, a barcode-reading device could be coupled to a looped track, and an actuator could cause the barcode-reading device to move around the looped track.

In another alternative embodiment, more than one barcode-reading device could be positioned along the looped track. For example, at least two barcode-reading devices could be utilized, so that one barcode-reading device is moving in the direction of motion of the conveyor belt while another barcode-reading device is moving back into position. Depending on the number of barcode-reading devices involved, this could provide additional coverage of the conveyor belt and the objects in motion on it.

FIG.8illustrates an example of a looped path827.FIG.8illustrates how the looped path827appears from a top-down view, with a conveyor belt shown in dotted lines. In the depicted embodiment, the looped path827includes a first substantially linear portion827-1and a second substantially linear portion827-2. The looped path827also includes two curved end portions827-3,827-4. An actuator causes a first barcode-reading device801-1and a second barcode-reading device801-2to move along the looped path827.

FIG.8shows the first barcode-reading device801-1moving in a forward direction along the first substantially linear portion827-1of the looped path827. For purposes of the present example, it will be assumed that objects move along the conveyor belt818in the forward direction.FIG.8shows the second barcode-reading device801-2moving in a backward direction along the second substantially linear portion827-2of the looped path827.

The path827followed by the first barcode-reading device801-1will now be described. As indicated above, the first barcode-reading device801-1is shown moving in a forward direction along the first substantially linear portion827-1of the looped path827. When the first barcode-reading device801-1reaches the end of the first substantially linear portion827-1of the looped path827, the first barcode-reading device801-1will move around the curved portion827-4until it reaches the second substantially linear portion827-2of the looped path827. The first barcode-reading device801-1then moves in a backward direction along the second substantially linear portion827-2of the looped path827until it reaches the end of the second substantially linear portion827-2of the looped path827. At this point, the first barcode-reading device801-1moves around the curved portion827-3until it returns to the first substantially linear portion827-1of the looped path827. Then the overall path827is repeated. The second barcode-reading device801-2follows a similar path827.

When either the first barcode-reading device801-1or the second barcode-reading device801-2is moving along the first substantially linear portion827-1of the looped path827, the velocity condition and the field of view condition (as those terms are described above) are satisfied. However, these conditions are not satisfied in other portions of the looped path827.

In an alternative embodiment, the looped path could be a different shape, such as a circular path, an elliptical path, or the like.

In an alternative embodiment, only the cameras of the barcode-reading devices801-1,801-2could be moved along the looped path827. These cameras could be communicatively coupled to computing devices that perform decoding and potentially other actions (e.g., image processing).

FIGS.5A-5Fillustrate another example of a system500that is configured for improving image quality in accordance with the present disclosure. The system500shown inFIGS.5A-5Fis similar in some respects to the system400that was described previously in connection withFIGS.4A-4G. For example, a barcode-reading device501reads barcodes affixed to objects that are traveling along a conveyor belt518. The barcode-reading device501includes a camera, which can be similar to the camera402shown inFIG.4F. An actuator507controls movement of the barcode-reading device501in such a way that the barcode-reading device501follows the objects as they travel along the conveyor belt518.FIGS.5A-5Eonce again show the system500from the side of the conveyor belt518.

Like the actuator407in the system400described previously, the actuator507causes the barcode-reading device501to move along a pre-defined path527(which is shown inFIG.5F). As in the system400described previously, the velocity condition and the field of view condition are satisfied during part of the pre-defined path527.FIG.5Fshows the pre-defined path527as including (i) a first part527-1, during which the velocity condition and the field of view condition are satisfied, and (ii) a second part527-2, during which the velocity condition is not satisfied.

In the depicted embodiment, the actuator507is coupled to a motor524, which is coupled to a shaft525. The motor524causes the shaft525to swing as a pendulum parallel to the length522of the conveyor belt518. Because the barcode-reading device501is coupled to the shaft525, the motion of the shaft525causes the barcode-reading device501to swing as a pendulum between the back end519and the front end520of the conveyor belt518.

The first part527-1of the pre-defined path527corresponds to the first half of the pendulum's period, during which the barcode-reading device501swings from the back end519toward the front end520of the conveyor belt518. The second part527-2of the pre-defined path527corresponds to the second half of the pendulum's period, during which the barcode-reading device501swings from the front end520toward the back end519of the conveyor belt518. The barcode-reading device501swings back and forth between the back end519and the front end520of the conveyor belt518, thereby alternating between the first part527-1and the second part527-2of the pre-defined path527.

As noted above, the velocity condition and the field of view condition are satisfied during the first part527-1of the pre-defined path527. More specifically, these conditions are satisfied because when the barcode-reading device501is moving along the first part527-1of the pre-defined path527(i.e., swinging from the back end519of the conveyor belt518toward the front end520of the conveyor belt518in the forward direction), the speed of the barcode-reading device501in the forward direction is substantially similar to the speed of the conveyor belt518and at least part of the conveyor belt518is located within the field of view of the camera within the barcode-reading device501. Because the velocity condition and the field of view condition are satisfied, the camera within the barcode-reading device501can follow and remain aimed at objects as they travel along the conveyor belt518while the barcode-reading device501moves along the first part527-1of the pre-defined path527.

A camera controller (which can be similar to the camera controller423described previously) causes the camera in the barcode-reading device501to capture images while the barcode-reading device501is moving along the first part527-1of the pre-defined path. Because the velocity condition and the field of view condition are satisfied when the images are captured, the images should be substantially free of image blur and image distortion.

To more clearly illustrate how the actuator507causes the barcode-reading device501to move along the pre-defined path,FIGS.5A-5Eshow “snapshots” of the conveyor belt518at different points in time.

FIG.5Ashows the conveyor belt518at a first point in time (t1). A first object504-1has been placed on the conveyor belt518. A barcode (not shown) is affixed to the first object504-1. The first object504-1is positioned near the back end519of the conveyor belt518. The first object504-1moves along the conveyor belt518in the forward direction. The barcode-reading device501is positioned above the first object504-1, such that the first object504-1is located within the field of view of the camera within the barcode-reading device501. The actuator507causes the barcode-reading device501to move along the first part527-1of the pre-defined path527by swinging from the back end519of the conveyor belt518toward the front end520of the conveyor belt518. As noted above, when the barcode-reading device501moves along the first part527-1of the pre-defined path527, the barcode-reading device501is moving in the same direction as the conveyor belt518(i.e., the forward direction) and the speed of the barcode-reading device501in the forward direction is substantially similar to the speed of the conveyor belt518.

FIG.5Bshows the conveyor belt518at a second point in time (t2), which occurs after t1. At t2, both the first object504-1and the barcode-reading device501are positioned between the back end519and the front end520of the conveyor belt518. The actuator507continues to cause the barcode-reading device501to move along the first part527-1of the pre-defined path527by swinging in the same direction as the conveyor belt518(i.e., the forward direction) toward the front end520of the conveyor belt518. The speed at which the barcode-reading device501is moving in the forward direction continues to be substantially similar to the speed of the conveyor belt518. Thus, the barcode-reading device501remains positioned above the first object504-1, with the first object504-1located within the field of view of the camera within the barcode-reading device501, as the first object504-1moves along the conveyor belt518in the forward direction.

FIG.5Cshows the conveyor belt518at a third point in time (t3), which occurs after t2. At t3, both the first object504-1and the barcode-reading device501have reached the front end520of the conveyor belt518. At this point, the actuator507causes the barcode-reading device501to change directions and begin moving along the second part527-2of the pre-defined path527. In other words, the actuator507causes the barcode-reading device501to begin swinging in the opposite direction, from the front end520of the conveyor belt518toward the back end519of the conveyor belt518.

FIG.5Dshows the conveyor belt518at a fourth point in time (t4), which occurs after t3. At t4, the barcode-reading device501is positioned between the front end520and the back end519of the conveyor belt518. The actuator507continues to cause the barcode-reading device501to move along the second part527-2of the pre-defined path527by swinging toward the back end519of the conveyor belt518.

FIG.5Eshows the conveyor belt518at a fifth point in time (t5), which occurs after t4. At t5, the barcode-reading device501has finished moving along the second part527-2of the pre-defined path527and is positioned near the back end519of the conveyor belt518. A second object504-2has been placed on the conveyor belt518. The actuator507causes the barcode-reading device501to change directions once again and start moving along the first part527-1of the pre-defined path527by swinging toward the front end520of the conveyor belt518. Thus, the barcode-reading device501follows the second object504-2as the second object504-2moves along the conveyor belt518, in a similar manner to the way that the barcode-reading device501followed the first object504-1(as shown inFIGS.5A-C).

FIGS.6A-6Eillustrate another example of a system600that is configured for improving image quality in accordance with the present disclosure. The system600shown inFIGS.6A-6Eis similar in some respects to the systems400,500that were described previously in connection withFIGS.4A-4Gand5A-5F. For example, a barcode-reading device601reads barcodes affixed to objects that are traveling along a conveyor belt618. The barcode-reading device601includes a camera, which can be similar to the camera402shown inFIG.4F. An actuator607controls movement of the barcode-reading device601in such a way that the barcode-reading device601follows the objects as they travel along the conveyor belt618.

Like the actuators407,507in the systems400,500described previously, the actuator607causes the barcode-reading device601to move along a pre-defined path627(which is shown inFIG.6E). As in the systems400,500described previously, the velocity condition and the field of view condition (as those terms are above) are satisfied during part of the pre-defined path627.FIG.6Eshows the pre-defined path627as including (i) a first part627-1, shown in solid lines, during which the velocity condition and the field of view condition are satisfied, and (ii) a second part627-2, shown in dotted lines, during which the velocity condition and the field of view condition are not satisfied.

In the system600shown inFIGS.6A-6E, the pre-defined path627is circular. The barcode-reading device601is coupled to a rotatable shaft626. The actuator607causes the shaft626to rotate. Because the barcode-reading device601is coupled to the shaft626, the rotation of the shaft626causes the barcode-reading device601to move along a circular pre-defined path627. To more clearly illustrate the circular pre-defined path627,FIGS.6A-6Eshow a top-down view of the system600.

As noted above, the velocity condition and the field of view condition are satisfied during the first part627-1of the circular pre-defined path627. More specifically, the velocity condition is satisfied because the first part627-1is the portion of the circular path627when the speed of the barcode-reading device601in the direction of motion of the conveyor belt618(namely, the forward direction) is substantially similar to the speed of the conveyor belt618. The field of view condition is satisfied because the first part627-1is the portion of the circular path627when at least part of the conveyor belt618is located within the field of view of the camera within the barcode-reading device601. Because the velocity condition and the field of view condition are satisfied during the first part627-1of the circular pre-defined path627, the camera within the barcode-reading device601can follow and remain aimed at objects as they travel along the conveyor belt618while the barcode-reading device601moves along the first part627-1of the circular pre-defined path627.

A camera controller (which can be similar to the camera controller423described previously) causes the camera in the barcode-reading device601to capture images while the barcode-reading device601is moving along the first part627-1of the circular pre-defined path627. Because the velocity condition and the field of view condition are satisfied when the images are captured, the images should be substantially free of image blur and image distortion.

To more clearly illustrate how the actuator607causes the barcode-reading device601to move along the circular pre-defined path627,FIGS.6A-6Dshow “snapshots” of the system600at different points in time.

FIG.6Ashows the system600at a first point in time (t1). A first object604-1has been placed on the conveyor belt618. A barcode (not shown) is affixed to the first object604-1. The first object604-1is positioned near the back end619of the conveyor belt618. The first object604-1moves along the conveyor belt618in the forward direction toward the front end620. The barcode-reading device601is coupled to the shaft626, which is positioned to the side of the conveyor belt618. The actuator607causes the shaft626to rotate, which causes the barcode-reading device601to move along the circular pre-defined path627. At t1, the barcode-reading device601is near the end of the second part627-2of the circular pre-defined path627and rotating toward the first part627-1. Neither the velocity condition nor the field of view condition is satisfied at t1.

FIG.6Bshows the system600at a second point in time (t2), which occurs after t1. At t2, the first object604-1is positioned between the back end619and the front end620of the conveyor belt618. The barcode-reading device601is in the first part627-1of the circular pre-defined path627, so the velocity condition and the field of view condition are satisfied. In other words, the speed of the barcode-reading device601in the forward direction is substantially the same as the speed of the conveyor belt618, and at least part of the conveyor belt618(specifically, the part of the conveyor belt618that includes the first object604-1) is located within the field of view of the camera within the barcode-reading device601. Thus, the camera within the barcode-reading device601is able to follow the first object604-1as the first object604-1moves in the forward direction along the conveyor belt618.

FIG.6Cshows the system600at a third point in time (t3), which occurs after t2. At t3, the first object604-1has reached the front end620of the conveyor belt618. At this point, the barcode-reading device601has completed the first part627-1of the circular pre-defined path627and is just starting the second part627-2. Neither the velocity condition nor the field of view condition is satisfied at t3.

FIG.6Dshows the system600at a fourth point in time (t4), which occurs after t3. At t4, a second object604-2has been placed on the conveyor belt618, near the back end619. The second object604-2is moving along the conveyor belt618in the forward direction, from the back end619toward the front end620. The barcode-reading device601has moved so that it is once again near the end of the second part627-2of the circular pre-defined path627and is rotating toward the first part627-1. Neither the velocity condition nor the field of view condition is satisfied at t4. However, these conditions will once again be satisfied when the barcode-reading device601enters the first part627-1of the circular pre-defined path627. This will allow the camera within the barcode-reading device601to follow the second object604-2as the second object604-2moves along the conveyor belt618, in a similar manner to the way that the camera within the barcode-reading device601followed the first object604-1(as shown inFIGS.6A-6C).

In the embodiment shown inFIGS.6A-6E, the barcode-reading device601follows a circular path627while being positioned to the side of the conveyor belt618. In an alternative embodiment, a barcode-reading device could follow a circular path while being positioned above a conveyor belt. For example, as noted above, a barcode-reading device could be coupled to a circular track, and an actuator could cause the barcode-reading device to move around the circular track.

FIGS.7A-7Cillustrate another example of a system700that is configured for improving image quality in accordance with the present disclosure.

The system700shown inFIGS.7A-7Cis similar in some respects to the systems400,500,600that were described previously in connection withFIGS.4A-4G,5A-5F, and6A-6E. For example, a barcode-reading device701reads barcodes affixed to objects that are traveling along a conveyor belt718. The barcode-reading device701includes a camera, which can be similar to the camera402shown inFIG.4F.

In the system700shown inFIGS.7A-7C, an appendage731is affixed to the barcode-reading device701. The appendage731is made of a rigid material that can maintain its shape when it is contacted by an object704moving along the conveyor belt718.

A mounting assembly732is configured to attach the barcode-reading device701to a support structure733that holds the barcode-reading device701in place relative to the conveyor belt718. The barcode-reading device701is positioned so that an object704on the conveyor belt718collides with the appendage731when the object704moves past the barcode-reading device701.FIG.7Ashows the object704before it has collided with the appendage731, andFIG.7Bshows the object704after it has collided with the appendage731.

The mounting assembly732includes a pivot734. The pivot734enables the barcode-reading device701to rotate when the object704collides with the appendage731. The position of the object704inFIG.7Acan be considered to be the “resting” position of the barcode-reading device701. This is the position of the barcode-reading device701when the appendage731is not in contact with an object704. The position of the object704inFIG.7Bcan be considered to be a “rotated” position of the barcode-reading device701.

As shown inFIG.7B, the rotation of the barcode-reading device701enables the camera within the barcode-reading device701to remain aimed at the object704after the object704has moved past the barcode-reading device701. Stated another way, the rotation of the barcode-reading device701enables the camera within the barcode-reading device701to remain aimed at the object704for a longer time period than if the barcode-reading device701had not been rotated. Consider the position of the object704inFIG.7B. If the barcode-reading device701had not been rotated, the camera within the barcode-reading device701would not be aimed at the object704at this point in time. However, because the collision between the object704and the appendage731causes the barcode-reading device701to rotate, the camera is still aimed at the object704at this point in time.

Enabling the camera within the barcode-reading device701to remain aimed at the object704after the object704has moved past the barcode-reading device701can help reduce image blur and image distortion as described above. Moreover, if the object704includes a barcode on its top surface736, then the above-described techniques can facilitate more accurate barcode reading.

The pivot734includes some type of mechanism, such as a spring, that causes the barcode-reading device701to rotate back to its resting position after the object704has moved to a place where the object704is no longer in contact with the appendage731. This is shown inFIG.7C.

In the system700shown inFIGS.7A-7C, the barcode-reading device701is positioned above the conveyor belt718. In an alternative embodiment, the barcode-reading device could instead be positioned to the side of the conveyor belt. Such an embodiment would be useful for reading barcodes that are affixed to the sides of objects. In such an embodiment, the appendage could be oriented perpendicularly to the appendage731inFIGS.7A-7C(e.g., into the page as opposed to the appendage731, which is oriented downward).

The embodiments described herein are provided for purposes of example only; those skilled in the art will recognize many other embodiments of the inventive concepts disclosed herein.

For example, in another embodiment, a camera-based barcode-reading device can be mechanically attached to a conveyor belt with gears, chains, pulleys, or other power transmission mechanisms. This type of embodiment may or may not utilize a cam to precisely control the angle of the barcode-reading device to track the subject.

In some embodiments, one or more optical components (e.g., a prism, one or more mirrors) can be used to split a captured image into two or more fields of view. These fields of view can each support different image parameters, such as focal length, viewing direction, optical filters, and/or reference images for calibration.

In the foregoing discussion, the techniques disclosed herein were described as enabling the camera within a barcode-reading device to remain aimed at an object that is in motion while the camera is capturing an image of the object. In some embodiments, this means that the object remains in substantially the same position within the camera's field of view during the time period when the camera is capturing an image of the object.

The phrase “capturing an image” (and grammatical variants thereof) can refer to the overall process whereby light entering a camera is converted into a digital image. Under some circumstances, the phrase “capturing an image” can refer specifically to the portion of the process during which the pixels within an image sensor are exposed to light (or, stated another way, when the pixels within an image sensor are collecting light). For example, consider the statement that a barcode-reading device remains aimed at an object that is in motion while the camera is capturing an image of the object. In this statement, the phrase “capturing an image” can refer specifically to the period of time during which the pixels within an image sensor are exposed to light.

As used herein, the term “substantially” should be interpreted to mean “to a great extent or degree.” In some embodiments, the speed of a first object is considered to be substantially similar to the speed of a second object if the speed of the first object is within 0.1% of the speed of the second object. In some embodiments, the speed of a first object is considered to be substantially similar to the speed of a second object if the speed of the first object is within 1% of the speed of the second object. In some embodiments, the speed of a first object is considered to be substantially similar to the speed of a second object if the speed of the first object is within 5% of the speed of the second object. In some embodiments, the speed of a first object is considered to be substantially similar to the speed of a second object if the speed of the first object is within 10% of the speed of the second object.

The techniques disclosed herein can be implemented in hardware, software, firmware, or any combination thereof, unless specifically described as being implemented in a specific manner.

At least some of the features disclosed herein have been described as instructions that are executable by a processor to perform various operations, actions, or other functionality. The term “instructions” should be interpreted broadly to include any type of computer-readable statement(s). For example, the term “instructions” may refer to one or more programs, routines, sub-routines, functions, procedures, modules etc. “Instructions” may comprise a single computer-readable statement or many computer-readable statements. In addition, instructions that have been described separately in the above description can be combined as desired in various embodiments.

The term “processor” should be interpreted broadly to encompass a general-purpose processor, a central processing unit (CPU), a microprocessor, a digital signal processor (DSP), a controller, a microcontroller, a state machine, and so forth. Under some circumstances, a “processor” may refer to an application specific integrated circuit (ASIC), a programmable logic device (PLD), a field programmable gate array (FPGA), etc. The term “processor” may refer to a combination of processing devices, e.g., a combination of a digital signal processor (DSP) and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a digital signal processor (DSP) core, or any other such configuration.

The term “memory” should be interpreted broadly to encompass any electronic component capable of storing electronic information. The term “memory” may refer to various types of processor-readable media such as random-access memory (RAM), read-only memory (ROM), non-volatile random-access memory (NVRAM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable PROM (EEPROM), flash memory, magnetic or optical data storage, registers, etc. Memory is said to be communicatively coupled to a processor if the processor can read information from and/or write information to the memory. Memory that is integral to a processor is communicatively coupled to the processor.

The term “communicatively coupled” refers to coupling of components such that these components are able to communicate with one another through, for example, wired, wireless, or other communications media. The term “communicatively coupled” can include direct, communicative coupling as well as indirect or “mediated” communicative coupling. For example, a component A may be communicatively coupled to a component B directly by at least one communication pathway, or a component A may be communicatively coupled to a component B indirectly by at least a first communication pathway that directly couples component A to a component C and at least a second communication pathway that directly couples component C to component B. In this case, component C is said to mediate the communicative coupling between component A and component B.

Any communication interface(s) described herein can be based on wireless communication technology and/or wired communication technology. Some examples of communication interfaces that are based on wireless communication technology include a Bluetooth wireless communication adapter, a wireless adapter that operates in accordance with an Institute of Electrical and Electronics Engineers (IEEE) 802.11 wireless communication protocol, and an infrared (IR) communication port. Some examples of communication interfaces that are based on wired communication technology include a Universal Serial Bus (USB) and an Ethernet adapter.

The term “determining” (and grammatical variants thereof) can encompass a wide variety of actions. For example, “determining” can include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database or another data structure), ascertaining and the like. Also, “determining” can include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory) and the like. Also, “determining” can include resolving, selecting, choosing, establishing and the like.

The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there can be additional elements other than the listed elements.

The phrase “based on” does not mean “based only on,” unless expressly specified otherwise. In other words, the phrase “based on” describes both “based only on” and “based at least on.”

The steps, operations, and/or actions of the methods described herein may be interchanged with one another without departing from the scope of the claims. In other words, unless a specific order of steps, operations, and/or actions is required for proper functioning of the method that is being described, the order and/or use of specific steps, operations, and/or actions may be modified without departing from the scope of the claims.

References to “one embodiment” or “an embodiment” of the present disclosure are not intended to be interpreted as excluding the existence of additional embodiments that also incorporate the recited features. For example, any element or feature described in relation to an embodiment herein may be combinable with any element or feature of any other embodiment described herein, where compatible.

In the above description, reference numbers have sometimes been used in connection with various terms. Where a term is used in connection with a reference number, this may be meant to refer to a specific element that is shown in one or more of the Figures. Where a term is used without a reference number, this may be meant to refer generally to the term without limitation to any particular Figure.

The present disclosure may be embodied in other specific forms without departing from its spirit or characteristics. The described embodiments are to be considered as illustrative and not restrictive. The scope of the disclosure is, therefore, indicated by the appended claims rather than by the foregoing description. Changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.