READING OPTICAL CODES

DE502024000997D1Active Publication Date: 2026-04-30SICK AG
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
SICK AG
Filing Date
2024-04-10
Publication Date
2026-04-30

AI Technical Summary

Technical Problem

Existing code reading systems face inefficiencies in processing image sequences due to real-time constraints and varying image quality, leading to missed code readings and wasted processing time on difficult images, especially when early images contain code fragments or poor optical conditions.

Method used

A code-reading device and method that utilizes a control and evaluation unit with multiple processing units to prioritize and parallel process code image areas across an image sequence, scoring and queuing them based on likelihood of readability, ensuring optimal utilization of processing time.

Benefits of technology

Significantly improves the probability of successful code reading by efficiently utilizing processing capacity, allowing more code image areas to be evaluated, thereby increasing the read rate and reducing the likelihood of missed codes.

✦ Generated by Eureka AI based on patent content.
Patent Text Reader
Need to check novelty before this filing date? Find Prior Art

Description

[0001] The invention relates to a code reading device and a method for reading optical codes according to the preamble of claim 1 and 15 respectively.

[0002] Code readers are commonly found at supermarket checkouts, for automatic package identification, mail sorting, baggage handling at airports, and in other logistics applications. In one important application group, the code-bearing objects are conveyed past the code reader. A code reader based on matrix cameras captures a sequence of images. This involves capturing several images sequentially as the object moves along the conveyor belt. Furthermore, the reading field of the code reader is often too small to cover the entire width of a conveyor belt, which is why multiple camera heads are arranged side by side. Finally, it is also conceivable that the code reader's perspective does not allow it to capture all sides of the object. For this reason, multiple code readers can be used, for example, as reading tunnels to capture objects from multiple or all sides.

[0003] As preparation for reading codes, a captured image of a code-bearing object is searched for code image areas—that is, those areas in the image that could potentially contain a code. This step is called segmentation or pre-segmentation. The code image areas are classified into different code types, and the contained code is read using a suitable decoder method, depending on the code type. The decoder method may also detect a false-positive code image area that actually contains no code and is therefore subsequently discarded.

[0004] In the conveyor application described above, a reading gate is defined as the time within which a particular object can be detected by the code reader during the conveyor movement. The reading gate thus enables the acquisition of an image sequence consisting of multiple images from different perspectives. This results, on the one hand, in multiple opportunities to read a given code, as it is sufficient for the decoder to successfully read it in just one of the images within the sequence. On the other hand, the reading gate imposes a real-time requirement: all images in the sequence must be processed within the reading gate, or at least until the start of the next reading gate for a subsequent object. Despite the multiple opportunities, partial evaluation of only a few images is insufficient, as, for example, a specific code might only be recognizable in the last image.The real-time constraint can be relaxed somewhat, as the processing of a single image may take slightly longer than one period of the frame rate, as long as the overall read gate is maintained. It is also conceivable to allocate any gap between objects and the next read gate to the previous read gate.

[0005] The goal is a high read rate, ideally reading all codes on every object within its read gateway. Unread codes or read errors necessitate time-consuming troubleshooting, such as manual rescanning or re-sorting. A problem arises when valuable decoder time is wasted on ultimately unsuccessful read attempts, and therefore, due to the real-time constraint, code image areas remain unprocessed whose code could have been read. Some example scenarios are described below.

[0006] Scattering pressure regions in one or more images of the image sequence significantly increase processing time, to the extreme case where the processing time exceeds the entire read gate, thus rendering all images unusable for actual code reading. Especially towards the beginning and end of a read gate, often only code fragments are visible. The decoder may attempt to read such code fragments using more aggressive algorithms and error correction, resulting in increased processing time. This time is then unavailable for the images in which the code is fully captured and could be read with minimal effort. Frequently, codes in some images are difficult to read due to optical effects such as reflections, blurring, low contrast, or perspective distortion.Conversely, it can happen that the decoder process loses a lot of time on a code image area of ​​an unfavorable image, and therefore it is no longer possible to attempt to use an objectively more favorable image within the reading gate.

[0007] In current technology, images are simply processed in the chronological order of their acquisition. This is advantageous because processing can begin as soon as the first image is available. As long as the total time required for segmenting all images and processing the code image areas found in each image using a decoder method does not exceed the time required for reading, the problem of object identification is essentially solved. However, if one of the aforementioned interfering effects occurs in an early image, or even in the first image of the sequence, more promising code image areas in later images will not be found and processed, and the probability of successful object identification will be low.

[0008] German patent DE 10 2011 056 660 A1 discloses a marker reader designed to prioritize images. Images are evaluated based on feature attributes and then prioritized for decoding. Since the prioritization remains at the image level, this is only a first step towards solving the problem described. The approach will fail, in particular, if an image contains both an easily readable and a poorly readable code. There is no correct prioritization for such an image: either the decoder will focus on the poorly readable code if it has a high score, or it will ignore the easily readable code if it has a low score.

[0009] Systems and methods for sorting image recording settings for pattern stitching and decoding using multiple recorded images are known from DE 10 2016 114 745 A1.

[0010] It is therefore the object of the invention to further improve the processing of image sequences for reading optical codes.

[0011] This problem is solved by a code-reading device and a method for reading optical codes according to claim 1 and 15, respectively. The code-reading device comprises a preferably matrix-shaped image sensor for capturing objects and an internal and / or external control and evaluation unit that controls or performs the image acquisition and evaluation. An image sequence is captured with a plurality of images of at least one object bearing an optical code, i.e., at least two and preferably n=3, 4, 5, ..., 10, ..., 20 or more images. It is not known in advance whether a captured object has no codes, one code, or several codes, and furthermore, only a part of the object or its code(s) may be visible from the perspective of a given capture.

[0012] The images are searched for code image regions, i.e., image areas (ROI, region of interest) containing a candidate for an optical code. This process, already mentioned in the introduction, is also called segmentation and is well-known in itself. At the time of segmentation, only indicators for optical codes are evaluated; therefore, a code image region initially contains only one candidate for an optical code. The code image regions are processed with a decoder method or decoder engine to read the code. Like segmentation, the actual decoding process is well-known in itself. It involves attempting to read a specific code type using one or more methods, or trying out different code types. If successful, the decoding or reading result is the information contained in the code of the respective code image region.

[0013] The invention is based on the fundamental idea of ​​selecting the processing sequence of the code image areas across the images of the image sequence. Thus, unlike the prior art, complete images are not processed sequentially, neither in chronological order as in most conventional applications nor in a prioritized order as in DE 10 2011 056 660 A1. Instead, newly added images of the image sequence are segmented, even if not all code image areas of the previous images have yet been processed. The code image areas are collected in a common pool across the images of the image sequence, and when there is free processing capacity, the next code image area to be processed is taken from the pool.If the segmentation of a new image is pending at the same time as code image areas still need to be processed, a consideration must be made, discussed in more detail below, as to what the control and evaluation unit deals with first, or both can be processed in parallel.

[0014] The invention offers the advantage of significantly improved prioritization across the image sequence, thus allowing the limited processing time of, for example, a read gate to be used more effectively for promising code image areas. This makes it possible to fully evaluate more code image areas, thereby increasing the probability of codes being read and ultimately the read rate. The available computing capacity is utilized more efficiently. Assigning the read codes to a specific object remains possible, as it is independent of the processing order.

[0015] The control and evaluation unit preferably has at least two processing units for the parallel processing of images and / or code image areas. Processing units are a term for components capable of parallel processing. These can be multiple hardware components, structures within a hardware component such as processor cores, or software-based subdivisions or threads. A control and evaluation unit according to this embodiment with multiple processing units is therefore capable of parallel processing. This allows multiple images to be segmented in parallel, multiple code image areas to be processed in parallel using a decoder method, or both to be processed in a mixed parallel manner. It should be emphasized again that code image areas processed in parallel typically originate from multiple images.Exceptions include the time interval in which only the first image is initially captured, or a later time interval in which, due to a particular set of circumstances, all code image areas from earlier images have already been processed. However, the invention is designed for the general case and can therefore also handle these exceptions, but unlike the prior art, it is not limited to them.

[0016] The control and evaluation unit is preferably designed to assess code image areas with a numerical value to determine the probability of an optical code being present within them. This numerical value (scoring) allows for a prediction of whether a candidate code image area is indeed a readable optical code. For this purpose, the decoder method is not yet employed; instead, at least one general parameter of the overall image quality or of the affected code image area, a geometric parameter, or similar is determined and evaluated.

[0017] Preferably, the score is determined from contrast, edge count, edge density, texture orientation, and / or background properties. These are image features that can be calculated quickly and robustly and have good predictive power as to whether a code image area likely contains a readable code. Contrast, for example, is measured via a grayscale distribution or the variance of grayscale values. Numerous image analysis methods exist for edge detection, where edges are further evaluated using measures such as their number, density, or orientation. Codes are often applied as labels and can be identified based on their background. Such general properties are preferably determined during segmentation anyway, in order to identify the code image areas as such in the first place.Therefore, many existing segmentation methods can also be used to determine the value score.

[0018] The control and evaluation unit is preferably configured to store images from the captured multitude in a first queue or first processing queue. The first queue is therefore an image queue. Preferably, it is a FIFO (First In, First Out) queue into which each newly captured image is inserted. The control and evaluation unit, or one of its processing units, can retrieve an image from the first queue whenever processing capacity is available. The processing order then corresponds to the chronology of the captures, with the first queue allowing an image to be processed for longer than the period between two captures. Available processing capacity here and in the following means, in particular, that no task is currently assigned to a processing unit and it is therefore free for the next task.

[0019] The control and evaluation unit is preferably configured to store code image areas in a second queue or processing queue. This second queue is thus a code image area queue spanning images and represents an implementation example of the aforementioned code image area pool. The control and evaluation unit, or one of its processing units, can retrieve a code image area from the second queue whenever processing capacity is available. The order in the second queue is preferably prioritized by value. Therefore, the control and evaluation unit, or one of its processing units, processes the code image areas according to relevance or anticipated read success. This ensures optimal utilization of the available processing time.It should be noted that the highest value indicates the greatest relevance with regard to likely readable codes, even if this might be represented internally by other numbers. Ordering in the second queue is preferably achieved by sorting each incoming code image area according to its value (insertion sort). Ultimately, however, the specific implementation of the second queue or its sorting is not crucial; what matters is that the most relevant code image areas, based on their value, have the highest priority. This could also be achieved, for example, by selectively jumping within the second queue.

[0020] The control and evaluation unit is preferably configured to extract an image from the first queue, locate code image areas within it, and store these areas in the second queue. The control and evaluation unit, or one of its processing units, thus populates the second queue of code image areas by segmenting an image from the first queue. This preferably occurs in parallel with other processing units already processing code image areas from the second queue using a decoder method. If at least one additional processing unit is available, it is possible to segment the same image in parallel using multiple processing units, or, if at least one additional image is stored in the first queue, to segment multiple images in parallel.

[0021] The control and evaluation unit is preferably configured to extract a code image area from the second queue and process it using at least one decoder method. Given available processing capacity, the control and evaluation unit, or one of its processing units, processes the next code image area. Since the second queue is preferably configured accordingly, the extracted code image area is the one that, according to its value, is most likely to contain a readable code. Furthermore, since the second queue is fed with code image areas from several previously acquired images, it is the most likely readable—and not yet read—code not only of the current image, but of all previously acquired images.

[0022] The control and evaluation unit is preferably configured to access the first and second queues according to a priority scheme, specifically to only extract a code image area from the second queue when the first queue is empty. After a certain settling-in period, both queues will regularly be full. Therefore, given the available processing capacity of the control and evaluation unit, or one of its processing units, a decision must be made as to which task to tackle next. A weighting can be assumed for this purpose, such as 50 / 50 or 80 / 20, either in terms of probability or a fixed scheme. Advantageously, the first queue receives a higher weight, up to and including a constant priority or a weighting of 100 / 0, which means that the second queue is only accessed when the first queue is empty.The underlying heuristic is that each new image offers the chance to find code image areas with better values. For example, the same code might be captured again in a later image under better lighting conditions or from a more favorable perspective. In that case, it makes more sense to dedicate processing time to the code image area with the more easily readable code, especially since segmenting all images is desirable anyway, as some codes are only found, or at least only in sufficient quality, in a single image of the image sequence.

[0023] The control and evaluation unit is preferably designed to terminate the processing of a code image area with at least one decoder method after a maximum processing time has elapsed. This prevents the control and evaluation unit from using a large portion of its available processing time on a single code image area, leaving other code image areas, or possibly all other code image areas, unprocessed. While this is somewhat less critical with multiple processing units, even then an entire branch of the parallel processing chain is at risk of failing. The termination frees up the control and evaluation unit, or rather the processing unit it is affecting, for other tasks.The initial maximum time can be dynamically adjusted to the value and / or the queue fill level, or the total processing time still available. In particular, a longer initial maximum time can be assigned to a code image area with a high value, (largely) empty queues, and / or plenty of processing time remaining. After an abort, the affected code image area can be discarded or returned to the second queue, especially with a reduction in its value and / or intermediate results such as a partial decoding, a module size, or the like.

[0024] During the acquisition of numerous images, at least one acquisition parameter is likely to change, particularly from image to image. Therefore, due to the varying acquisition conditions, the images are not identical; in particular, no two images are the same. This leads to a certain range in the numerical values ​​of the code image areas across the images, making appropriate prioritization particularly advantageous. The code reader can initiate this change, for example, by varying the focus setting or exposure, or it can result from the environment, such as perspective, ambient light, or similar factors.

[0025] The multitude of images is preferably captured during relative movement between the code-reading device and the at least one object. In particular, the code-reading device is mounted on a conveyor system, from which the at least one object is conveyed through a reading field of the code-reading device. This is a common application scenario in which a sequence of several images is generated, which must be processed within a time window or reading window that depends on external factors such as the conveying speed and the object density on the conveyor belt. The different conveying positions of the captured objects, and the resulting variation in perspective, is an example of a change in capture parameters as described in the previous paragraph.

[0026] The control and evaluation unit is preferably designed to terminate the evaluation of the large number of images after a second maximum time at the latest. This refers to a global termination, in contrast to the previously described termination only for a specific code image area after the first maximum time has elapsed. Thus, images are neither further segmented nor are code image areas further processed using a decoder method. The second maximum time preferably corresponds to a read gate; the results must be available after this time because a decision must be made about the object or a new object is introduced into the read field of the code reading device. The second maximum time is not necessarily known in advance but is, for example, dependent on when an object leaves the read area or a new object enters the read area. However, fixed or parameterized runtimes or delays are also conceivable.Images and code image areas that remain in either queue after the second maximum time has elapsed are, depending on the implementation, marked as unprocessed, deleted, or moved to the very end of their queues until a time slot becomes available for their processing. The application may offer this time tolerance. It can also be helpful for diagnostic purposes to determine whether the value has appropriately prioritized the late-processed code image areas.

[0027] The control and evaluation unit is preferably designed to combine reading results from processing using at least one decoder method across at least two code image areas. This allows partial readings to potentially be combined into a complete decoding.

[0028] The control and evaluation unit is preferably designed to remove code image areas containing a previously read code from the second queue and / or not store them in the second queue. This effectively masks codes that have already been successfully read from the other images. If a corresponding code image area is found again in a later image, it can be discarded directly. In a conveyor application, the correspondence of code image areas can be readily estimated from the expected intermediate movement. The terms "remove," "not store," or "discard" preferably refer only to the handling within the code reading process itself. The code image areas can be stored for other purposes or remain in place and, for example, simply marked with a masking flag.As an alternative to this embodiment, redundant reading may even be desirable, but in this case too, the number of values ​​of code image areas corresponding to a code that has already been read is preferably reduced in order to give priority to codes that have not yet been read.

[0029] The method according to the invention is a computer-implemented method that, for example, runs in a control and evaluation unit of a code reader and / or a computing unit connected thereto. It can be further developed in a similar manner to the code reading device according to the invention or one of its embodiments and exhibits similar advantages. Such advantageous features are described by way of example, but not exhaustively, in the dependent claims following the independent claims.

[0030] The invention is further explained below with regard to additional features and advantages by way of example embodiments and with reference to the accompanying drawing. The illustrations in the drawing show: Fig. 1 shows an overview of a code reader above a conveyor belt; Fig. 2 shows an exemplary flowchart for prioritized processing of code image areas across multiple images of an image sequence; Fig. 3 shows a first example of a comparison of the timing of conventional and prioritized processing of code image areas across multiple images of an image sequence; and Fig. 4 shows a second example similarly. Figure 3 , however, with a different number of code image areas and different processing times per code image area.

[0031] Figure 1Figure 1 shows an optoelectronic code reader 10 in a preferred application situation mounted above a conveyor belt 12, which conveys objects 14, as indicated by arrow 16, through the detection area 18 of the code reader 10. The objects 14 have code image areas 20 on their outer surfaces, which are detected and evaluated by the code reader 10. These code image areas 20 can only be recognized by the code reader 10 if they are located on the top side or at least visible from above. Therefore, unlike the illustration in Figure 1, the object 14 can be mounted on a 12-inch or 12-inch surface. Figure 1To read a code 22 located, for example, to the side or bottom, a plurality of code readers 10 may be mounted from different directions to enable so-called omnidirectional reading from all directions. Furthermore, there are conveyor belts 12 that are too wide to be captured by a single code reader 10, so that several code readers 10, or, not further differentiated here, several camera heads of a code reader 10, are arranged side by side. In practice, several code readers 10 are usually grouped together as a reading tunnel. This stationary application of the code reader 10 on a conveyor belt is very common in practice. However, the invention relates more generally to the code reader 10 itself or the method implemented therein for locating the code image areas 20 and for reading the respective codes of an image sequence, so this example should not be understood as limiting.There are other ways to record an image sequence with a code reader 10, such as by moving the code reader 10 or by using different lighting scenarios.

[0032] The code reader 10 uses an image sensor 24 to capture image data of the conveyed objects 14 and the code image areas 20, which are then further processed by a control and evaluation unit 26 using image evaluation and decoding methods. A code reader 10 with an image sensor 24 is also referred to as a camera-based code reader. Preferably, a matrix-shaped image sensor 24 is provided, which generates an image of its reading area with each capture. The control and evaluation unit 26 can comprise several components, such as an FPGA (Field Programmable Gate Array), a microprocessor (CPU), an ASIC (Application-Specific Integrated Circuit), a DSP (Digital Signal Processor), or the like.The control and evaluation unit 26 preferably comprises several processing units 28 for parallel processing, which are represented here as substructures, i.e., for example, several building blocks, processors or processor cores, but alternatively represent any other hardware or software implementation of parallel processing.

[0033] The code reader 10 outputs information, such as read codes or image data, via an interface 30. It is also conceivable that the control and evaluation unit 26 is not located within the actual code reader 10, i.e., within its housing. Figure 1The control unit 26 is not arranged within the housing shown as a camera symbol, but is connected as a separate control device to one or more code readers 10. In a network of several code readers 10, one code reader 10 can act as the master, or several code readers 10 can take on the tasks of a control device. In this case, interface 30 or another interface serves as the connection between internal and external control and evaluation. The control and evaluation functionality can thus be distributed virtually arbitrarily across internal and external components, whereby the external components can also be connected via a network or cloud or implemented as an edge device. All of this is not further differentiated here, and the control and evaluation unit 26 is considered part of the code reader 10, regardless of the specific implementation.

[0034] Figure 2This shows an exemplary flowchart for prioritized processing of code image areas 20 across multiple images of an image sequence. An exemplary complete process is shown; not all steps need to be implemented in every embodiment. The processing according to Figure 2The process preferably takes place continuously; in particular, there is no waiting until an image sequence is complete, i.e., until an object 14 has passed through the detection area 18. The process is described starting at the point in time when a new image sequence is to be processed, or when the processing of a previous image sequence has been completed. The background steps by which images are captured and moved into an initial queue 32 for images of the image sequence are not shown. A trigger is preferably provided, for example, a light barrier or object recognition integrated into the code reader 10, so that an image sequence only starts when a new object 14 enters the detection area 18.

[0035] In step S1, it is checked whether at least one image is present in the first queue 32 for images of the image sequence. The first queue is preferably a simple FIFO, which thus maintains the chronological order of image acquisition in the image sequence.

[0036] If an image is available, it is segmented in step S2. As described in the introduction and as is generally known, segmentation uses relatively simple features such as contrast, number of edges, color, geometry, size of an image structure, and the like to find code image areas 20 in the image. At this point, it is not yet clear whether a readable code is actually contained in a respective code image area 20.

[0037] Segmentation and / or subsequent evaluation assigns a score to the code image areas 20. In step S3, the code image areas 20 found in the segmentation of step S2 are placed in a second queue 34 according to their score (push N). This also applies to later iterations after the segmentation of further images in the image sequence. The second queue 34 is therefore a priority queue for all previously found code image areas 20, even across multiple images in the image sequence.

[0038] If a maximum time, particularly a read gate, expires during segmentation, processing is aborted (timeout) in step S4 to ensure reliable termination of the procedure. The image sequence could not be fully processed, and no further processing time is available, especially because subsequent operations are starting or a new read gate is opening. Otherwise, once segmentation is complete and all found code image areas 20 are sorted into the second queue 34, the process returns to step S1.

[0039] If no new image is available in step S1, step S5 checks whether there are still code image areas 20 in the second queue 34 that are in Figure 2Regions are named. If this is not the case, the process returns to step S1; currently, no action is required. However, it is preferably checked without display whether the maximum time has expired; if so, it terminates at step S4.

[0040] If, in step S5, the second queue 34 still contains at least one code image area 20, a code image area 20 is processed in step S6, which is taken from the second queue 34 in step S7 (Pop Max). According to the sorting or prioritization of the second queue 34, this is the code image area 20 with the highest value among the unprocessed code image areas 20, and therefore the one that most likely promises successful code reading. An attempt is made to read the code using at least one decoder method. Again, the process is aborted in step S4 if the maximum time expires during this step. If the code can be read, the code content is saved or output at a suitable location, and the process returns to step S1. Optionally, a further maximum time is checked, which does not refer globally to a read gate or the like, but rather assigns a maximum processing time to a single code image area 20.When the maximum time expires, the process does not end but returns to step S1. The code image area 20, which was processed unsuccessfully for the time being, is discarded or returned to the second queue with a reduced value, preferably saving intermediate results in case more processing time can be devoted to this code image area 20 in a later iteration. This approach is also advantageous because at the beginning of an image sequence, only code image areas 20 from the first image(s) are available. It is then sensible to evaluate these code image areas 20, as otherwise processing time would be wasted. The processing should not get stuck on a poor early code image area 20 but should have the opportunity to switch to more promising, later-acquired code image areas 20.

[0041] The depicted process always ends when the maximum time expires. This corresponds to the application scenario of Figure 1 , in which the traversing object 14 determines the maximum time over the conveyance time through the detection area 18. At the time of termination, however, many, and preferably all, code image areas 20 of the image sequence have been processed. Alternatively, the number of images in the image sequence could be limited, and the process could end when all images and the code image areas 20 found within them have been processed.

[0042] The previous description of the process according to Figure 2 The potential for advantageous parallelization across multiple processing units 28 has not yet been considered. Prioritizing code image areas 20 across images of an image sequence is advantageous even without parallelization, as the most promising code image area 20 is processed in each case, regardless of its origin from a specific image within the image sequence.

[0043] In the case of an advantageous parallelized embodiment, the process can be applied to the individual processing units 28 or threads. The queues 32 and 34 should then preferably be implemented in a thread-safe manner. Thus, several code image areas 20 are processed in parallel in step S6 using a decoder method, and whenever a new image is found in the first queue 32, the next available processing unit 28, in step S2, takes care of segmenting the new image and thus adding further code image areas 20 to the second queue 34, in parallel with the continued decoding of the existing code image areas 20.

[0044] The demonstrated process always prioritizes the segmentation of a new image over the decoding of already found code image areas 20. This is sensible and preferable because additional code image areas 20 offer the chance of a new highest value and thus a faster, successful code reading. Alternatively, a weighting can be specified regarding how much attention or processing time new images should receive compared to already found code image areas 20. This can be implemented particularly in the logic of the Figure 2 This can be illustrated if, in step S1, the process transitions to step S5 at least occasionally according to the weighting, even though the first queue 32 is not empty. Furthermore, it is conceivable that several processing units 28 jointly segment an image in parallel processing. Again, this is particularly relevant in the logic of... Figure 2In other words, in step S1, if the first queue 32 is empty, a processing unit 28 additionally checks whether another processing unit 28 is currently engaged in segmentation and supports this in the case by joint parallel segmentation.

[0045] Figure 3 shows a first example of a comparison of the passage of time in conventional processing, chronologically image by image ( Figure 3 above) and prioritized processing of code image areas 20 according to an embodiment of the invention across multiple images of an image sequence ( Figure 3(below). Three processing units 28 or threads are available for parallel processing. For simplicity, it is assumed that in the conventional method, all three threads work in parallel to segment a new image in the image sequence. According to the assumption of conventional image-by-image processing, parallel segmentation can only begin once the previous image has been fully processed. In the embodiment according to the invention, the first image is also segmented in parallel in all three threads; subsequently, the first thread to become available takes over the segmentation of a further image. Further optimization, as briefly explained above, could be achieved by having additional threads that become available participate in the segmentation in parallel.

[0046] In the first example, a sequence of five images is processed at a frame rate of 10 Hz. The read gate terminates 100 ms after the fifth image is captured, at marker 36 (timeout), after a total of 500 ms. Each image contains four code image areas (20), each requiring 60 ms to process. The segmentation effort per image is 30 ms. Any time loss due to parallelization overhead is neglected.

[0047] In conventional processing, fifteen of the twenty code image areas 20 are fully processed, and the last image must be discarded. The effective utilization of the available computing power is 68%. In the embodiment according to the invention, eighteen of the twenty code image areas 20 are fully processed, with an effective utilization of the available computing power of 82%.

[0048] Figure 4A second example shows this. The size of the image sequence and the duration of the reading gate are unchanged. In contrast to the first example, Figure 3 Each image now contains seven code image areas 20, with six of the code image areas requiring a processing time of 40 ms, while one code image area 20 requires 130 ms, for example due to scattering. The segmentation effort per image remains at 30 ms.

[0049] In the second example, conventional processing processes nineteen of the thirty-five code image areas 20 and discards two of the five images. The effective utilization of the available computing power is approximately 69%. In the embodiment according to the invention, twenty-five of the thirty-five code image areas 20 are fully processed with an effective utilization of the available computing power of 97%. It should also be noted in both examples that, thanks to the prioritization across the image sequence, the unprocessed code image areas 20 are highly likely to contain no code at all, and conversely, conventional processing could never consider the last images of the image sequence and their potentially particularly promising code image areas 20. For both examples, it is also illustrated when complete processing would end if the read gate could be chosen more generously; here, too, the invention demonstrates clear advantages.

[0050] The inventive method is particularly advantageous when processing time is limited, as the latency can only be improved compared to conventional processing. For example, if, as an extreme case, the first image contains a code image area 20 that cannot be processed within the read gate, then conventional processing fails completely because the subsequent images are never processed. With the inventive method, at most a single thread may fail while attempting to process this code image area 20 in vain. The other threads can then process other, perhaps more promising, images in the image sequence in parallel.

[0051] In an advantageous further development of the invention, results can be processed across the image sequence. This makes it possible to combine partial results from code image areas of 20 multiple images that are related by the same code, in order to read a code that is only partially recognizable in each image. As a further option to accelerate the process, after a successful read, it is conceivable not to reprocess, discard, or at least reduce the value of the corresponding code image areas of 20 other images (GoodRead Masking).

Claims

1. A code reading device (20) for reading optical codes, which has an image sensor (24) for recording images of at least one object (14) having at least one optical code and a control and evaluation unit (26) which is configured to successively record an image sequence comprising a plurality of images, to locate code image zones (20) in the images, with a candidate for an optical code being present in each of said code image zones (20), to assess the code image zones (20) with a value number as to how probable it is that an optical code is present therein, to collect the code image zones (20) across images of the image sequence in a common pool and to process them using at least one decoder method in order to read the optical code of the code image zone (20) and, for this purpose, to select a processing order of the code image zones (20) by the at least one decoder method across several images of the plurality of images, wherein the code image zones that are the most relevant according to the value number have the highest priority.

2. A code reading device (10) according to claim 1, wherein the control and evaluation unit (26) has at least two processing units (28) for a parallel processing of images and / or code image zones (20).

3. A code reading device (10) according to claim 1 or 2, wherein the value number is determined from a contrast, a number of edges, an edge density, a main orientation of a texture and / or properties of a code base surface.

4. A code reading device (10) according to any one of the preceding claims, wherein the control and evaluation unit (26) is configured to store images of the recorded plurality of images in a first queue (32).

5. A code reading device (10) according to any one of the preceding claims, wherein the control and evaluation unit (26) is configured to store code image zones (20) in a second queue (34), in particular, if dependent on claim 3, in an order prioritized by value number.

6. A code reading device (10) according to claim 4, wherein the control and evaluation unit (26) is configured to take an image from the first queue (32), to locate code image zones (20) therein and to store the located code image zones (20) in the second queue (34).

7. A code reading device (10) according to claim 5, wherein the control and evaluation unit (26) is configured to take a code image zone (20) from the second queue (34) and to process it using at least one decoder method.

8. A code reading device (10) according to claim 6 and 7, wherein the control and evaluation unit (26) is configured to access the first queue (32) and the second queue (34) according to a preferred scheme, in particular to remove a code image zone (20) from the second queue (34) only if the first queue (32) is empty.

9. A code reading device (10) according to any one of the preceding claims, wherein the control and evaluation unit (26) is configured to abort the processing of a code image zone (20) by at least one decoder method after a first maximum time at the latest.

10. A code reading device (10) according to any one of the preceding claims, wherein at least one recording parameter changes during the recording of the plurality of images, in particular from image to image.

11. A code reading device (10) according to any one of the preceding claims, wherein the plurality of images are recorded in the course of a relative movement between the code reading device (10) and the at least one object (14), in particular the code reading device (10) is mounted at a conveying device (12) by which the at least one object (14) is conveyed through a reading field (18) of the code reading device (10).

12. A code reading device (10) according to any one of the preceding claims, wherein the control and evaluation unit (26) is configured to abort the evaluation of the plurality of images after a second maximum time at the latest.

13. A code reading device (10) according to any one of the preceding claims, wherein the control and evaluation unit (26) is configured to combine reading results of the processing by at least one decoder method across at least two code image zones (20).

14. A code reading device (10) according to any one of the preceding claims, wherein the control and evaluation unit (26) is configured to remove code image zones (20) which contain a code that has already been read from the second queue (34) and / or not to store them in the second queue (34).

15. A method for reading optical codes, in which a plurality of images of at least one object (14) having at least one optical code are successively recorded, code image zones (20) are located in the images, with a candidate for an optical code being present in each of said code image zones (20), code image zones (20) are assessed with a value number as to how likely it is that an optical code is located therein, the code image zones (20) are collected across images of the image sequence in a common pool and are processed using at least one decoder method in order to read the optical code of the code image zone (20) and, for this purpose, a processing order of the code image zones (20) by the at least one decoder method is selected across several images of the plurality of images, wherein the code image zones that are the most relevant according to the value number have the highest priority.