Barcode detection method

11379680 · 2022-07-05

Assignee

Inventors

Cpc classification

International classification

Abstract

The invention relates to a computer-implemented method for detecting barcodes in a digital image represented as a two-dimensional digital image array comprising: applying a filter to the image array, computing a discrete Radon transformation of the filtered image array, wherein the discrete Radon Transformation is computed for a plurality of discrete lines across the filtered image array, wherein for each given discrete line with a given slope the discrete Radon transformation is computed for a number of different displacements of the given discrete line, wherein said number of displacements is less than two times a dimension of the image array, detecting in the output of the discrete Radon transformation of the filtered image array the vertex points of a pattern, and converting the detected vertex points back to discrete lines in the image array for constraining the location of a barcode present in the digital image.

Claims

1. A method for detecting barcodes, the method comprising: obtaining, at a processor, a digital image represented as a two-dimensional digital image array; applying a filter to the two-dimensional digital image array to obtain a filtered image array; performing a discrete Radon transformation of the filtered image array to obtain an output, wherein the discrete Radon transformation is performed for a plurality of discrete lines across the filtered image array; wherein for each given discrete line with a given slope, the discrete Radon transformation is performed for a number of different displacements of the given discrete line, wherein the number of different displacements is less than two times a dimension of the two-dimensional digital image array; detecting vertex points of a pattern in the output of the discrete Radon transformation of the filtered image array; and converting the detected vertex points back to discrete lines in the two-dimensional digital image array to constrain a location of a barcode present in the digital image.

2. The method of claim 1, wherein the displacement for a given discrete line with a given slope is associated with an intercept.

3. The method of claim 1, wherein the filter is a gradient filter.

4. The method of claim 1, wherein the pattern in the output of the discrete Radon transformation has a quadrilateral shape.

5. The method of claim 1, wherein the discrete Radon transformation for a given slope is performed for a number N of displacements of discrete lines that are closest to a center of the two-dimensional digital image array, and wherein N is an integer and a dimension of the two-dimensional digital image array.

6. The method of claim 1, further comprising: resizing the digital image as a square image when the digital image is not square-shaped.

7. The method of claim 1, wherein performing the discrete Radon transformation of the filtered image array, comprises performing a discrete Radon transformation of four quadrants of the two-dimensional digital image array.

8. The method of claim 7, wherein a first quadrant covers discrete line slopes 0° to 45°, a second quadrant covers discrete line slopes from 45° to 90°, a third quadrant covers discrete line slopes from −90° to −45°, and a fourth quadrant covers discrete line slopes from −45° to 0°, and wherein a rotated and a transposed copy of a computed Radon transformation of the first quadrant defining a fifth quadrant is attached to the fourth quadrant.

9. The method of claim 1, wherein computing the discrete Radon transformation of the filtered image array is performed on per column of the filtered image array.

10. The method of claim 9, further comprising, assigning separate memory buffers for performing discrete Radon transformation of odd and even columns.

11. The method of claim 1, wherein detecting the vertex points of the pattern comprises detecting intensity values and variance in the output of the discrete Radon transformation.

12. The method of claim 1, wherein constraining the location of a barcode present in the digital image comprises averaging a vertical index of a detected top vertex point and a detected bottom vertex point of the detected vertex points of the pattern in the discrete Radon transformation of the filtered image array.

13. The method of claim 1, wherein constraining the location of a barcode present in the digital image comprises computing a difference of a horizontal index of two detected lateral vertex points of the detected pattern.

14. The method of claim 1, wherein converting the detected vertex points back to discrete lines in the two-dimensional digital image array comprises, converting two detected lateral vertex points, into line parameters of two discrete lines in the two-dimensional digital image array and calculating a crossing point of the two discrete lines.

15. The method of claim 1, further comprising using a neural network to detect the vertex points of the detected pattern.

16. A system comprising: a processor; and a memory, wherein the memory contains instructions, which when executed by the processor, cause the system to: obtain a digital image represented as a two-dimensional digital image array, apply a filter to the two-dimensional digital image array, perform a discrete Radon transformation of the filtered image array to obtain an output, wherein the discrete Radon transformation is performed for a plurality of discrete lines across the filtered image array, wherein for each given discrete line with a given slope, the discrete Radon transformation is performed for a number of different displacements of the given discrete line, wherein the number of different displacements is less than two times a dimension of the two-dimensional digital image array, detect vertex points of a pattern in the output of the discrete Radon transformation of the filtered image array, and convert the detected vertex points back to discrete lines in the two-dimensional digital image array to constrain a location of a barcode present in the digital image.

17. The system of claim 16, further comprising a camera.

Description

(1) The following figures illustrate exemplary aspects for a better understanding of the present invention.

(2) FIG. 1a: Exemplary discrete line with even ascent

(3) FIG. 1b: Exemplary discrete line with odd ascent

(4) FIG. 1c: Exemplary discrete lines for exemplary image array of size 8×8

(5) FIG. 2a: Exemplary discrete Radon transformation for first quadrant

(6) FIG. 2b: Exemplary four quadrants of discrete Radon transformation

(7) FIG. 3a: Exemplary discrete lines/projections and their sum contributions for slope or ascent=0

(8) FIG. 3b: Exemplary discrete lines/projections and their sum contributions for slope or ascent=N−1

(9) FIG. 3c: Exemplary contributions of number of pixels participating in the computation of a classical conventional Radon transformation for the first two quadrants

(10) FIG. 3d: Exemplary contributions of number of pixels participating in the computation of a Discrete Radon Transformation for N central displacements (DRTN) for the first two quadrants

(11) FIG. 4: Exemplary memory patterns or memory positions for different stages of computations of a discrete Radon Transformation

(12) FIG. 5: Exemplary computation scheme for data columns or data stripes

(13) FIG. 6: Example for constraining the location of a barcode embedded in an image

(14) The FIG. 1a, FIG. 1b and FIG. 1c exemplary show some aspects of discrete lines 103, 104 across an image array or image 100, 105 to be processed, along which a discrete Radon transformation as described herein can be computed.

(15) For example, the image or image array 100 in FIG. 1a and FIG. 1b maybe of size N×N, with N=2.sup.n, and with n being an integer greater 1, and wherein each image array point can be identified by an exemplary index pair (i,j) with 0≤i,j<N, and with i,j being integers.

(16) Said indexing is merely exemplary, and it is inter alia conceivable that other index schemes, e.g. wherein the indices start from 1 instead of 0, can be used.

(17) Said exemplary image or image array or image domain 100 can be divided along one axis, e.g. the horizontal axis, into two halves 101, 102 of width N/2, e.g. with the first half 101 spanning a width from 0 to N/2−1 and the second half spanning a width from N/2 to N−1.

(18) The exemplary depicted discrete line 103 can be defined in dependence of intercept d and slope or rise s, wherein d and s can be signed integers.

(19) Said exemplary discrete line 103 of FIG. 1a exemplary comprises an even number of ascent steps and exemplary connects the array points (0,d) and (N−1, d+s) and wherein the first half of the ascent or rise of the discrete line 103 occurs in the first half 101 of the image array 100 and wherein the second half of the ascent or rise of the discrete line 103 occurs in the second half 102 of the image array 100.

(20) The reference numerals 108, 109 exemplary denote the starting point and end point of discrete line 103.

(21) The exemplary discrete line 104 of FIG. 1b exemplary comprises an odd number of ascent steps and exemplary connects the array points (0,d) and (N−1, d+2 (floor (s/2))+1) and wherein an even number of ascent or rise steps of the discrete line 104 occurs in the first half 101 of the image array 100, said even number being floor ((number of ascent steps)/2), with floor being the floor function, and wherein the remaining number of ascent or rise steps of the discrete line 104 occurs in the second half 102 of the image array 100.

(22) The reference numerals 110, 111 exemplary denote the starting point and end point of discrete line 104.

(23) FIG. 1c exemplary shows a specific example for two discrete lines 106, 107 across an image array 105 with N=8.

(24) Therein exemplary discrete line 106 connects the image array points (0,4) and (7,6), i.e. the line 106 ascends two ascent steps, with a first ascent step being carried out in the first image half or first image domain and the second ascent step being carried out in the second image half or second image domain.

(25) The exemplary discrete line 107 connects the image domain points (0,−1) and (7,4), i.e. the line 176 ascends 5 ascent steps, with the first two ascent steps being carried out in the first image domain and two other ascent steps being carried out in the second image half or second image domain, and with the remaining ascent step being carried in between the two halves.

(26) For completeness it is noted that the starting (or end) points of the discrete lines crossing the to be processed image array can lie outside the image array, i.e. outside the image array points or image array indices.

(27) FIG. 2a shows an exemplary discrete Radon transformation for the first quadrant 204 for a to be processed image or image array 200 of size N.sup.2=N×N, with N=2.sup.n, with n being an integer greater 1 and with N being a natural number.

(28) The exemplary image array 200 may for example be described in the (x, y)-plane 201 and may comprise N×N image array points that can be identified by an exemplary index pair (i,j) with 0≤i,j<N, and with i,j being integers.

(29) Exemplary, the left lower corner of the image or image array 200 coincides with the origin of the (x, y)-plane 201, i.e. the image array point (0,0).

(30) The domain in which the discrete lines are described along which a discrete Radon transformation over the image 200 can be carried out, can exemplary be parametrized in the domain of the parameters intercept or displacement d and angle or slope s.

(31) Exemplary shown is a discrete line 202 for which a discrete Radon transformation can be computed.

(32) Said exemplary discrete line 202 traverses or contacts only one point of the to be processed image or image array 200 and said exemplary discrete line 202 can be, for example, described as starting from the intercept or displacement d=−N+1 and ascending with a slope s=N, i.e. ascending N steps.

(33) In fact for the displacement d=−N+1, the only non-zero sum of the discrete Radon transformation in the first quadrant will be the one that ascends N steps or positions, i.e. the discrete line 202. Increasing the displacement until displacement d=−1, the number of non-null ascents steadily grows, and then, from displacement d=0 to d=N−1 and for all possible ascents the sums are not null.

(34) As a further example, the discrete line 210 is depicted, which exemplary coincides with the bottom edge or bottom row of the image 200 and can be described as starting from the intercept or displacement d=0 and progressing or advancing for N steps with slope s=0, i.e. horizontally.

(35) Applying exemplary a discrete Radon transformation, denoted with 203, for a/the plurality of discrete lines across the image 200 generates an output 204 in the domain or domain space describes in the (d, s)-plane 208, i.e. in the domain parametrized by intercept or displacement d and angle or slope s.

(36) In particular, the depicted exemplary computed output 204 can be generated by carrying out a discrete Radon transformation for a/the set of discrete lines comprising 2 N displacements with slopes from 0° to 45, i.e. the range of slopes of discrete lines in the first quadrant.

(37) Said output 204 is of size N.sup.2+N(N−1)/2 and is of the shape exemplary depicted.

(38) Said output 204 may also be referred to as Radon transformation computation of a quadrant, and more precisely as Radon transformation computation of the first quadrant.

(39) FIG. 2b exemplary shows the shape of all four quadrants 204, 205, 206, 207 to be computed in the Radon domain or Radon domain space 209 to obtain a full global discrete Radon transformation of the image 200 to be processed.

(40) For completeness, it is noted that the horizontal axis in FIG. 2b is parametrized by the angle atan(s/(N−1)). However, it could be also parametrized simply by slope s.

(41) As mentioned above, a quadrant can define a specific range of slopes or angles of discrete lines across the filtered image array for which the discrete Radon transformation is to be computed.

(42) For example, the first quadrant 204 may cover discrete line slopes or angles from 0° to 45° (0 to π/4), the second quadrant 205 may cover discrete line slopes from 45° to 90° (π/4 to π/2), the third quadrant 206 may cover discrete line slopes from −90° to −45° (−π/2 to −π/4), and the fourth quadrant may 207 cover discrete line slopes from −45° to 0° (−π/4 to −0).

(43) FIG. 3a exemplary shows an image or image array 300 to be processed and having a size of N.sup.2=N×N, with N=8, i.e. and image comprising 8×8 pixel.

(44) This figure further shows an exemplary set of projections or set of discrete lines 301 with angle or slope s=0 but with 2 N different intercepts or displacements d, along which a Radon transformation can be carried out.

(45) Therein the reference numeral 302 denotes a set of exemplary bins that count for each given discrete line 301 or for each given projection the number of image pixel 305 that would contribute to the summation term of the/a Radon transformation for said given discrete line or projection.

(46) In the exemplary show case, for any projection or discrete line 301 that crosses or traverses the image 300, the number of image pixel 305 contributing to the summation term of the/a Radon transformation of such projection or discrete line would be 8.

(47) FIG. 3b exemplary shows again the image or image array 300 of FIG. 3a, but exemplary shows an exemplary set of projections or set of discrete lines 303 with a different angle or slope as shown in FIG. 3a, namely with an angle of 45° (or atan(s/(N−1))=)π/4 or slope s=N−1.

(48) Again 2 N different intercepts or displacements d for said angle or slope are shown, along which a Radon transformation can be carried out.

(49) In analogy to FIG. 3a, the reference numeral 304 denotes a set of exemplary bins that count for each given discrete line 303 or for each given projection the number of image pixel 305 that would contribute to the summation term of the/a Radon transformation for said given discrete line or given projection.

(50) However, in contrast to the case depicted in FIG. 3a, the number of image pixel 305 contributing to the summation term of the/a Radon transformation along projections or discrete lines 303 that cross or travers the image 300 varies.

(51) For example, while for the projection or discrete line 306, i.e. with s=N−1 and d=0, the number of image pixel 305 that would contribute to the summation term of the/a Radon transformation would be 8, the number of contributing image pixel 305 for any other displacement, i.e. for any other projection or discrete line 302 would be less than 8.

(52) FIG. 3c exemplary and schematically inter alia shows in the (d,s) domain 313, the number of pixels or participating in the computation for each value of the two central quadrants 307, 308 of a conventional or classic Radon transformation carried out on the exemplary image or image array 300 of size 8×8 of FIG. 3a or FIG. 3b, and wherein the contours 311, 312 exemplary mark computations or values of the Radon transformation that are not zero, or that mark the number of pixels contributing to the sum terms of the Radon transformation that are not zero.

(53) In contrast to the state of the art, the present invention allows to compute the (discrete) Radon transformation per quadrant more efficiently such that for each given discrete line with a given slope the discrete Radon transformation is computed only for a number of displacements is less than two times a/the dimension of the image array.

(54) In particular, the present invention allows computing the Discrete Radon Transformation for N central displacements (DRTN) of a given discrete line with a given slope.

(55) Exemplary, the number of contributing pixels for N central displacements (DRTN) of a given discrete line with a given slope for the two exemplary shown quadrants 307, 308 is marked by contours 309 and 310.

(56) FIG. 3d exemplary shows only the number of contributing pixels 309, 310 for N central displacements (DRTN) of a given discrete line with a given slope for the two exemplary shown quadrants 307, 308 in a rearranged manner, thereby exemplary illustrating an exemplary advantageous effect of the present invention, wherein the number or scale of computations or required memory units in the (d,s) domain for a quadrant has been reduced from 2 N×N down to N×N.

(57) In other words, the present invention can provide significant savings in memory and computation requirements.

(58) FIG. 4 exemplary and schematically shows data memory patterns or data memory positions 400, 401, 402, 403, 404 in the domain 405 of angles or slopes s and intercepts or displacements d, for different stages m, with m being an integer ranging from 0 to n, e.g. with n being an integer n=4, of computations of a discrete Radon transformation for an image or image array to be processed, for example an N×N image array, with N=16=2n=2.sup.4.

(59) Herein and in general, the term stage m can inter alia to be understood as a step of computation(s) of the discrete Radon transformation for an image or image array to be processed, with stage m=0, e.g. 400, being the step at the beginning when no summation term for discrete Radon transformation has yet being computed and with the last stage e.g., stage 404 with m=n, with n being an integer and with n=log.sub.2 (N), being the step when all discrete Radon transformation computation steps have been carried out. Any intermediate stages, e.g. 401, 402, 403, can then refer to stages at which only part of the required discrete Radon transformation computation steps have been carried out, i.e. to stages at which the discrete Radon transformation has been computed only partially.

(60) Herein, the memory pattern 400, exemplary representing the initial stage or input stage with m=0, can inter alia be understood as memory space or memory position in a computer system reserved for holding or storing computation values of computations to be carried out during computing a discrete Radon transformation for an input image or image array to be processed.

(61) For a conventional discrete Radon transformation with an N×N image array as input, the size of the memory pattern or data memory positions would at least be of size N in angle or slope positions s (horizontal axis) and of size 2 N in intercepts or displacements d (vertical axis), wherein, for example, in the first stage, the lower half 406 (marked in cross-hatched gray fill color) of the memory pattern may be filled with zeros and wherein the other half 407 (no fill/white color), e.g. the upper half, may be, for example, filled with values of intensities of the image pixel of the image or image array, e.g. of size N×N, to be processed.

(62) However, instead of requiring the full memory space of size N×2 N, the present invention allows using a more reduced memory space or allows a more efficient use of memory space.

(63) In the depicted example, white pixel or white regions can be inter alia be understood as denoting a position or positions in the (d,s) domain space 405 that need to be calculated, for example according to the herein described method.

(64) Gray/cross-hatched pixel or gray/cross-hatched regions can inter alia be understood as denoting those positions in the (d,s) domain space 405 that must be calculated with conventional discrete Radon Transformation techniques, but that can be avoided with the herein proposed method.

(65) As evident from FIG. 4, columns or stripes of data to be calculated can thereby gradually moving downwards.

(66) As discussed above, the computational relationship between data stripes or data columns may be exploited by realizing that data at a certain stage m+1 can be computed from data from a previous stage m, with m being an integer ranging from 0 to n−1, with n being an integer and with n=log.sub.2 (N).

(67) In particular, for example, in the discrete Radon transformation with N central displacements (DRTN) two data stripes or data columns of length N of one stage, for example even and odd numbered data stripes or data columns, can be added together to obtain a data stripe or data column of the next stage.

(68) In other words, at each stage it is only required to compute N values per data column or data stripe.

(69) An exemplary data stripe or data column of (vertical) length N of intermediate stage 403, e.g. with m=3, is exemplary denoted with the reference numeral 408.

(70) This exemplary data column or data stripe based computation scheme of the discrete Radon transformation with N central displacements (DRTN) when carried out for n stages can then converge in the last stage 404 to a memory pattern or memory region or footprint denoted by reference numeral 409 and which is of the size of the input image or image array, e.g. of size N×N. That exemplary footprint 409 corresponds to the portion of data or data computations considered to be sufficient and it is analog to the data portions 309 or 310 shown rectified in the FIG. 3d, although there for the case N=8.

(71) In comparison, a conventional discrete Radon transformation computation scheme would lead to the larger memory pattern or memory region or footprint denoted by reference numeral 410.

(72) It has been unexpectedly and surprisingly found, that, while all those gray/cross hatched pixel in said footprint 410 may carry information different than zero, this information can be safely ignored, as it was found that the weight or significance of this information is marginal as compared with the information (sums different than zero) contained in the white pixel, i.e. in the memory region or footprint 409 obtained from the discrete Radon transformation with N central displacements (DRTN).

(73) FIG. 5 exemplary illustrates a computation scheme operating in the exemplary intercept or displacement d and angle or slope s, (d,s) domain space 502 for exemplary data columns or data stripes S.sub.0, S.sub.1, S and S+1, denoted with reference numerals 503, 504, 505 and 506 of two exemplary consecutive stages m and m+1, denoted with reference numerals 500 and 501.

(74) As indicated previously, in the herein proposed method the computation of data columns or data stripes at a given stage of computing a discrete Radon transformation can make use of the computation of data columns or data stripes from the previous stage.

(75) For example, here the data at exemplary stage m+1 can be computed from data from the previous stage m, with m being an integer ranging from 0 to n−1, with n being an integer and with n=log.sub.2(N), and with N being an integer dimension of an image or image array to be processed, e.g. an N×N image array.

(76) The exemplary two consecutive data columns or data stripes in the two-dimensional (d,s)-domain 502, with indexes S, even, and S+1, odd, are as mentioned belonging to stage m+1.

(77) In order to calculate the desired N values of each of these columns, one can add together two stripes of length N coming from columns with indexes S.sub.0 and S.sub.1. Therein the starting point along the d axis of the columns to add can depend on the values Δ.sub.d.sub.even, Δ.sub.d.sub.odd and Δ.sub.S.sub.1, denoted with reference numerals 507, 508 and 509.

(78) As previously noted, herein, for example, N data in column S descending from row index top-Δ.sub.d.sub.even, are the result of adding N data in column S.sub.0 descending from row index top-Δ.sub.d.sub.even, and N data in column S.sub.1 descending from row index top-Δ.sub.d.sub.even+Δ.sub.S.sub.1. In FIG. 5 those regions or stripes 510, 511, 512 are exemplary framed by flat cornered boxes on solid lines.

(79) On the other hand, for columns on odd positions, the relation to accomplish is that N data in column S+1 descending from row index top-Δ.sub.d.sub.even−Δ.sub.d.sub.odd, are the result of adding N data in column S.sub.0 descending from row index top-Δ.sub.d.sub.even−Δ.sub.d.sub.odd, and N data in column S.sub.1 descending from row index top-Δ.sub.d.sub.even−Δ.sub.d.sub.odd+ΔS.sub.1+1. In FIG. 5 those regions or stripes 513, 514, 515 are framed by rounded cornered boxes on dashed lines.

(80) Therein, the prefix “top” exemplary denotes the maximum vertical index or dimension of temporal buffers used to storage intermediate results. This index can be, for example, lowered to 3 N/2, which is an improvement over state-of-the-art methods that require larger index numbers.

(81) Stated differently, in the herein proposed method, two data columns of a given stage can be added together and the result of said summation can be deposited or stored in a memory place or position where a the computation of a column from a different later stage can or will look for it.

(82) The FIG. 6 provides an example for constraining the location of a barcode 612 embedded in an image 601, e.g. an image captured by a digital camera integrated in a mobile device, e.g. a smart phone.

(83) In the depicted example, the exemplary image 601 or image array the (x, y)-plane of the image array domain 615 comprises inter alia a label or tag 614 of an article, e.g. a price tag, with a linear one-dimensional barcode 612.

(84) Before applying a discrete Radon transformation with N central displacements (DRTN) to said image, it is possible to apply a filter to the image array, which can, as indicated earlier, inter alia facilitate the analysis of the output of a discrete Radon transformation with N central displacements (DRTN) applied to the image 601, more precisely that can be applied to filtered version (not shown) of the image 601.

(85) On the left a possible exemplary an output 600 of an exemplary discrete Radon transformation with N central displacements (DRTN) applied to the image 601 or applied to a filtered version (not shown) of the image is shown. This output is described in the (d,s) domain or domain space 607, with d being a (vertical) displacement or intercept and s being an angle or slope.

(86) As mentioned above, the herein described discrete Radon transformation can generate specific or special patterns in in the (d,s) domain or domain space 607 from which the location of a barcode 612 embedded in the image 601 can be derived or constraint.

(87) Illustrated here is an exemplary quadrilateral shaped, e.g. a rhombus shaped, pattern 606, that comprises four vertex points 602, 603, 604, 605, which can be easily detected as described earlier and from which constraints on the location of the barcode 612 in the (x, y)-plane of the image array domain 615 can be derived.

(88) More precisely, detected edges or vertex points of the pattern in the Radon transformation output can be converted back to discrete lines in the image array for constraining the location of a barcode present in the digital image.

(89) Thereby the constraining of the location of a barcode 612 present in the digital image 601 can inter alia comprise averaging the vertical index or intercept or slope d of a detected top vertex point 604 and a detected bottom vertex point 605 of the detected pattern 606. This may constrain the slope or angle of the barcode in the to be processed image 601.

(90) Constraining the location of a barcode present in the digital image may further comprise computing the difference of the horizontal index or slope or angle s of two detected lateral vertex points 602, 603, e.g. a left 602 and a right vertex point 603, of the detected pattern 606.

(91) Moreover, converting the detected vertex points back to discrete lines in the image array may comprise, converting two detected lateral vertex points 602, 603, e.g. a left 602 and a right vertex point and/or a top 604 and a bottom vertex point 605 or any other combination of vertex points, into line parameters of discrete lines in the (x, y)-plane of the image array domain 615 of the image 601.

(92) For example a crossing point 613 of two discrete lines 608, 609 can be calculated, wherein said two discrete lines 608, 609 are obtained by converting the two detected lateral vertex points 602, 603, e.g. a left 602 and a right vertex point into the (x, y)-plane of the image array domain 615 of the image 601

(93) Said crossing point 613, for example, can constrain the location of the center of the barcode in the to be processed image 601.

(94) Converting, for example, the detected top 604 and a bottom vertex point 605 into the (x, y)-plane of the image array domain 615 of the image 601 can yield to lines 610 and 611 that can constrain the orientation and height of the barcode in the image 601.

(95) In particular, for example, converting the detected vertex points from the Radon d and s parameter space of the output of the discrete Radon transformation of the filtered image array to the x and y parameter space of lines in the image may comprise, for example, for the first quadrant, computing the relation y=d+s/(N−1)x.

(96) In other words, the presence of a barcode in an image can generate in the DRTN transform of its gradients a quadrilateral or rhombus-shaped zone or pattern, which stands out as having a greater value and at the same time having a relative variance smaller than the rest of any other zones or patterns originating from non-barcode related image features.

(97) Normally, a simple local detector based on these two characteristics—mean value and relative variance—is sufficient, especially in the case of isolated barcodes 612 such as those shown here.

(98) However, when areas or non-barcode related image features with high frequencies are present next to the barcode, it is convenient that the quadrilateral or rhombus-shaped zone or pattern 606 be detected and located by a neural network trained for this purpose.

(99) Exemplary shown are further artefact patterns 616 that arise from features in the image 600, such as text or symbols 617, 618, that are not related to the to be detected barcode 612. They can be seen as noise. However, as shown, the quadrilateral shaped, e.g. a rhombus shaped, pattern 606 has a sufficient large signal to noise factor, so that these non-barcode related features will not hinder the detection and localization of the barcode.

(100) Followed by seven sheets comprising FIG. 1a, FIG. 1b, FIG. 1c, FIG. 2a, FIG. 2b, FIG. 3a, FIG. 3b, FIG. 3c, FIG. 3d, FIG. 4, FIG. 5 and FIG. 6, and wherein the reference numerals are assigned as follows. 100 Exemplary image/image array 101 Exemplary (first) half of image/image array divided along horizontal axis 102 Exemplary (second) half of image/image array divided along horizontal axis 103 Exemplary discrete line 104 Exemplary discrete line 105 Exemplary image/image array 106 Exemplary discrete line with even ascent/even number of ascent steps 107 Exemplary discrete line with odd ascent/odd number of ascent steps 108 Exemplary starting point 109 Exemplary end point 110 Exemplary starting point 111 Exemplary end point 200 Exemplary image or image array to be processed 201 Exemplary origin of the (x, y)-plane of the image array domain 202 Exemplary discrete line 203 Exemplary Radon transformation 204 Exemplary output of Radon transformation, exemplary first quadrant 205 Exemplary second quadrant 206 Exemplary third quadrant 207 Exemplary fourth quadrant 208 Exemplary origin of the (d, s)-plane of the Radon domain 209 Exemplary origin of the Radon domain wherein the horizontal axis is parametrized with atan (s/(N−1)) 300 Exemplary image or image array 301 Exemplary set of projections or set of discrete lines 302 Exemplary set of exemplary bins that count for each discrete line or for each projection the number of image pixel that would contribute to the summation term of the/a Radon transformation for said given projection or line 303 Exemplary set of projections or set of discrete lines 304 Exemplary set of exemplary bins that count for each discrete line or for each projection the number of image pixel that would contribute to the summation term of the/a Radon transformation for said given projection or line 305 Exemplary image pixel 306 Exemplary projection/exemplary discrete lines 307 Exemplary (first) quadrant 308 Exemplary (second) quadrant 309 Exemplary contour 310 Exemplary contour 311 Exemplary contour 312 Exemplary contour 313 Exemplary (d,s) domain or domain space, with d being a (vertical) displacement or intercept and s being an angle or slope 400 Exemplary data memory pattern or data memory positions at initial stage or input stage 401 Exemplary data memory pattern or data memory positions for an intermediate stage, e.g. first stage 402 Exemplary data memory pattern or data memory positions for an intermediate stage, e.g. second stage 403 Exemplary data memory pattern or data memory positions for an intermediate stage, e.g. third stage 404 Exemplary data memory pattern or data memory positions for exemplary final stage, e.g. output stage 405 Exemplary (d,s) domain or domain space, with d being a (vertical) displacement or intercept and s being an angle or slope 406 Exemplary lower half of memory pattern at input stage 407 Exemplary upper half of memory pattern at input stage 408 Exemplary data stripe or data column of (vertical) length N 409 Exemplary memory region of last stage as output of discrete Radon transformation with N central displacements (DRTN) 410 Exemplary memory region of last stage as output of conventional discrete Radon transformation 500 Exemplary stage, e.g. stage m, of computation of discrete Radon transformation with N central displacements (DRTN) in (d,s) domain or domain space, with d being a (vertical) displacement or intercept and s being an angle or slope 501 Exemplary stage, e.g. stage m+1, of computation of discrete Radon transformation with N central displacements (DRTN) in (d,s) domain or domain space, with d being a (vertical) displacement or intercept and s being an angle or slope 502 Exemplary (d,s) domain or domain space, with d being a (vertical) displacement or intercept and s being an angle or slope 503 Exemplary data column or index S.sub.0 504 Exemplary data column or index S.sub.1 505 Exemplary data column or index S 506 Exemplary data column or index S+1 507 Exemplary value of (vertical) offsets in d axis 508 Exemplary value of (vertical) offsets in d axis 509 Exemplary value of (vertical) offsets in d axis 510 Exemplary data stripe 511 Exemplary data stripe 512 Exemplary data stripe 513 Exemplary data stripe 514 Exemplary data stripe 515 Exemplary data stripe 516 Exemplary data stripe 600 Exemplary output of an exemplary discrete Radon transformation with N central displacements (DRTN) 601 Exemplary image, e.g. an image captured by a digital camera integrated in a mobile device 602 Exemplary vertex point 603 Exemplary vertex point 604 Exemplary vertex point 605 Exemplary vertex point 606 Exemplary pattern, e.g. exemplary quadrilateral shaped, e.g. a rhombus shaped, pattern 607 Exemplary (d,s) domain or domain space, with d being a (vertical) displacement or intercept and s being an angle or slope 608 Exemplary line in (x, y)-plane of the image array domain derived from a detected vertex point 609 Exemplary line in (x, y)-plane of the image array domain derived from a detected vertex point 610 Exemplary line in (x, y)-plane of the image array domain derived from a detected vertex point 611 Exemplary line in (x, y)-plane of the image array domain derived from a detected vertex point 612 Exemplary barcode 613 Exemplary center position of barcode in (x, y)-plane of the image array domain 614 Exemplary label 615 Exemplary(x, y)-plane of the image or image array domain 616 Exemplary artefact pattern, pattern arising from non-barcode related image features 617 Exemplary features in image unrelated to barcode 618 Exemplary features in image unrelated to barcode