JP2018036737A - Image processing device for reading multiple bar code - Google Patents

Image processing device for reading multiple bar code Download PDF

Info

Publication number
JP2018036737A
JP2018036737A JP2016167411A JP2016167411A JP2018036737A JP 2018036737 A JP2018036737 A JP 2018036737A JP 2016167411 A JP2016167411 A JP 2016167411A JP 2016167411 A JP2016167411 A JP 2016167411A JP 2018036737 A JP2018036737 A JP 2018036737A
Authority
JP
Japan
Prior art keywords
image
block
processing
module
blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016167411A
Other languages
Japanese (ja)
Inventor
東川 レバン
Reban Tokawa
レバン 東川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Leontec Co Ltd
Original Assignee
Leontec Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Leontec Co Ltd filed Critical Leontec Co Ltd
Priority to JP2016167411A priority Critical patent/JP2018036737A/en
Publication of JP2018036737A publication Critical patent/JP2018036737A/en
Pending legal-status Critical Current

Links

Landscapes

  • Image Processing (AREA)

Abstract

PROBLEM TO BE SOLVED: To extract and read a plurality of bar codes from one sheet of an image.SOLUTION: A first module extracts a plurality of first processing blocks from a first image. Each of the plurality of first processing blocks includes a plurality of pixels. A second module calculates an average value of the value showing a gradation of the plurality of pixels with respect to each of the plurality of first processing blocks. A third module calculates a corrected average value by correcting a second average value calculated by the second module with respect to the first processing block on the basis of a plurality of first average values calculated respectively by the second module with respect to a plurality of peripheral blocks located in the periphery of the block. A fourth module generates a second image on the basis of the value showing each gray scale of the plurality of pixels included in the first image and the corrected average value calculated with respect to one block including the pixel from among the plurality of first processing blocks.SELECTED DRAWING: Figure 3

Description

本開示は、複数のバーコードを含む画像の中からこれらのバーコードを読み取るための画像処理装置に関する。   The present disclosure relates to an image processing apparatus for reading these barcodes from an image including a plurality of barcodes.

複数のバーコードをまとめて撮影した1枚の画像から、上記複数のバーコードを読み取る試みが行われている(例えば、下記の特許文献4の段落0024、特許文献5の段落0061等)。1枚の画像のどの部分とどの部分にバーコードが含まれているかが指定されているならば、それぞれ指定された部分を画像から切り出せば、複数のバーコードを読み取ることができる。しかし、そのような指定がない場合には、1枚の画像のどの部分とどの部分を切り出すべきかを決定することが求められる。   Attempts have been made to read the plurality of barcodes from a single image obtained by photographing a plurality of barcodes together (for example, paragraph 0024 of Patent Document 4 and paragraph 0061 of Patent Document 5). If it is specified which part of an image and which part contains the barcode, a plurality of barcodes can be read by cutting out the designated part from the image. However, when there is no such designation, it is required to determine which part of an image and which part should be cut out.

特開2011−170882号公報JP 2011-170882 A 特開2002−150213号公報JP 2002-150213 A 特開2006−059073号公報JP 2006-059073 A 特開2013−101481号公報JP 2013-101481 A 特開2009−266190号公報JP 2009-266190 A 特開平07−028924号公報Japanese Patent Application Laid-Open No. 07-028924 特開平09−319821号公報JP 09-319821 A

本開示の1つの観点に係る画像処理装置は、第1〜第4のモジュールを含む。第1のモジュールは、第1の画像から複数の第1の処理ブロックを抽出し、複数の第1の処理ブロックの各々は複数の画素を含む。第2のモジュールは、複数の第1の処理ブロックの各々について、複数の画素の階調を示す値の平均値を算出する。第3のモジュールは、複数の第1の処理ブロックの各々について、当該ブロックの周辺に位置する複数の周辺ブロックについて第2のモジュールによりそれぞれ算出された複数の第1の平均値に基づいて、当該ブロックについて第2のモジュールにより算出された第2の平均値を補正することにより、補正平均値を算出する。第4のモジュールは、第1の画像に含まれる複数の画素の各々の階調を示す値と、複数の第1の処理ブロックのうちの1つのブロックであって当該画素が含まれる当該1つのブロックについて算出された補正平均値と、に基づいて、第2の画像を生成する。   An image processing apparatus according to an aspect of the present disclosure includes first to fourth modules. The first module extracts a plurality of first processing blocks from the first image, and each of the plurality of first processing blocks includes a plurality of pixels. The second module calculates an average value of the values indicating the gradations of the plurality of pixels for each of the plurality of first processing blocks. For each of the plurality of first processing blocks, the third module is based on the plurality of first average values respectively calculated by the second module for the plurality of peripheral blocks located around the block. A corrected average value is calculated by correcting the second average value calculated by the second module for the block. The fourth module includes a value indicating the gradation of each of the plurality of pixels included in the first image, and one of the plurality of first processing blocks, the one including the pixel A second image is generated based on the corrected average value calculated for the block.

本開示の実施形態に係る画像処理装置40の機能ブロック図である。3 is a functional block diagram of an image processing device 40 according to an embodiment of the present disclosure. FIG. 上記画像処理装置40によって撮影及び処理される画像の例を示す。The example of the image image | photographed and processed by the said image processing apparatus 40 is shown. 上記画像処理装置40において第1の画像から第2の画像を生成する処理を示すフローチャートである。4 is a flowchart showing a process of generating a second image from a first image in the image processing apparatus 40. 第1の画像の一部を示す。A part of the first image is shown. 図3のS1000において第1の画像から抽出された複数の第1の処理ブロックを示す。A plurality of first processing blocks extracted from the first image in S1000 of FIG. 3 are shown. 図3のS2000において算出された平均値の例を示す。The example of the average value calculated in S2000 of FIG. 3 is shown. 図3のS3000において明度が減じられた平均値の例を示す。The example of the average value by which the brightness was reduced in S3000 of FIG. 3 is shown. 図3のS4000において算出される補正平均値と、補正平均値の算出方法を示す。The correction average value calculated in S4000 of FIG. 3 and the correction average value calculation method are shown. 図3のS5000において生成される第2の画像のうち、図8に対応する部分を示す。The part corresponding to FIG. 8 is shown among the 2nd images produced | generated in S5000 of FIG. 図3のS5000において生成される第2の画像のうち、図4に対応する部分を示す。The part corresponding to FIG. 4 is shown among the 2nd images produced | generated in S5000 of FIG. 上記画像処理装置40において一次元バーコードを解析する処理の詳細を示すフローチャートである。4 is a flowchart showing details of a process of analyzing a one-dimensional barcode in the image processing apparatus 40. 図11のS6100において第2の画像から抽出された複数の第2の処理ブロックを示す。A plurality of second processing blocks extracted from the second image in S6100 of FIG. 11 are shown. 上記画像処理装置40において第2の処理ブロックを抽出する処理の詳細を示すフローチャートである。4 is a flowchart showing details of processing for extracting a second processing block in the image processing apparatus 40; 当該ブロックが有効ブロックか否かの判定の過程を示す。A process of determining whether or not the block is a valid block is shown. 上記画像処理装置40において当該ブロックが有効ブロックか否かを判定する処理の詳細を示すフローチャートである。It is a flowchart which shows the detail of the process which determines whether the said block is an effective block in the said image processing apparatus. 上記画像処理装置40において一次元バーコードエリアを決定する処理の詳細を示すフローチャートである。4 is a flowchart showing details of processing for determining a one-dimensional barcode area in the image processing apparatus 40; 上記画像処理装置40においてn番目の一次元バーコードエリアを抽出する処理の詳細を示すフローチャートである。4 is a flowchart showing details of processing for extracting an n-th one-dimensional barcode area in the image processing apparatus 40. 隣接又は一部重なる有効ブロックを関連付けた状態を示す。The state which linked | related the effective block which adjoins or partially overlaps is shown. 一次元バーコードエリアを拡大した状態を示す。The state where the one-dimensional barcode area is enlarged is shown. 上記画像処理装置40において二次元バーコードを解析する処理の詳細を示すフローチャートである。4 is a flowchart showing details of a process of analyzing a two-dimensional barcode in the image processing apparatus 40. 図20のS6500において第2の画像から抽出された複数の第2の処理ブロックを示す。A plurality of second processing blocks extracted from the second image in S6500 of FIG. 20 are shown. 複数の第2の処理ブロックの各々についての有効ブロックか否かの判定結果を示す。The determination result of whether it is an effective block about each of several 2nd processing blocks is shown. 上記画像処理装置40において二次元バーコードエリアを決定する処理の詳細を示すフローチャートである。4 is a flowchart showing details of processing for determining a two-dimensional barcode area in the image processing apparatus 40; 上記画像処理装置40においてn番目の二次元バーコードエリアを抽出する処理の詳細を示すフローチャートである。5 is a flowchart showing details of processing for extracting an n-th two-dimensional barcode area in the image processing apparatus 40. 二次元バーコードエリアを抽出する過程を示す。The process of extracting a two-dimensional barcode area is shown. 上記画像処理装置40において二次元バーコードを読み取る処理の詳細を示すフローチャートである。4 is a flowchart showing details of a process of reading a two-dimensional barcode in the image processing apparatus 40. S6901において切り取られる画像の範囲の例と、画像の加工バリエーションの例を示す。An example of the range of an image cut out in S6901 and an example of an image processing variation are shown.

以下、本開示の実施形態を、図面を参照しながら詳細に説明する。以下に説明される各実施形態は、本開示の一例を示すものであって、本開示の内容を限定するものではない。また、各実施形態で説明される構成及び動作のすべてが本開示の構成及び動作として必須であるとは限らない。なお、同一の構成要素には同一の参照符号を付して、重複する説明を省略する。   Hereinafter, embodiments of the present disclosure will be described in detail with reference to the drawings. Each embodiment described below shows an example of this indication, and does not limit the contents of this indication. In addition, not all of the configurations and operations described in the embodiments are essential as the configurations and operations of the present disclosure. In addition, the same referential mark is attached | subjected to the same component and the overlapping description is abbreviate | omitted.

なお、本開示において、「一次元バーコード」とは白黒パターンが1方向に配列されたバーコードをいうものとする。「二次元バーコード」とは白黒パターンが互いに交差する2方向に配列されたバーコードをいうものとする。「白」及び「黒」は、厳密な意味での白色及び黒色を意味するものではなく、「白」は一定の明度よりも明るい色をいい、「黒」は上記一定の明度よりも暗い色をいうものとする。   In the present disclosure, “one-dimensional barcode” refers to a barcode in which monochrome patterns are arranged in one direction. “Two-dimensional barcode” refers to a barcode in which black and white patterns are arranged in two directions intersecting each other. “White” and “black” do not mean white and black in a strict sense, “white” means a lighter color than a certain lightness, and “black” is a darker color than the above certain lightness. It shall be said.

<1.画像処理装置の構成>
図1は、本開示の実施形態に係る画像処理装置40の機能ブロック図である。画像処理装置40は、入出力部10と、撮像部20と、処理部30と、を備える。
<1. Configuration of Image Processing Device>
FIG. 1 is a functional block diagram of an image processing device 40 according to an embodiment of the present disclosure. The image processing device 40 includes an input / output unit 10, an imaging unit 20, and a processing unit 30.

入出力部10は、タッチパネルのように情報の入力と出力とが行える装置を含む。あるいは、入出力部10は、入力装置と出力装置とを別々に含んでいてもよい。入出力部10は、ユーザーによる設定情報や撮像指示などの入力を受け付けて処理部30に送信可能となっている。入出力部10は、処理部30によって処理された画像や、処理部30によるバーコードのデコード結果などを表示可能となっている。   The input / output unit 10 includes a device that can input and output information, such as a touch panel. Alternatively, the input / output unit 10 may include an input device and an output device separately. The input / output unit 10 can receive input of setting information, imaging instructions, and the like by the user and can transmit the input to the processing unit 30. The input / output unit 10 can display an image processed by the processing unit 30, a barcode decoding result by the processing unit 30, and the like.

撮像部20は、CCDカメラを含んでいる。撮像部20は、処理部30からの駆動信号に応じて撮影を行い、画像データを処理部30に送信可能となっている。   The imaging unit 20 includes a CCD camera. The imaging unit 20 can take an image in accordance with a drive signal from the processing unit 30 and transmit image data to the processing unit 30.

処理部30は、プロセッサ、主記憶装置、ストレージメモリ等を含む。ストレージメモリには、プロセッサにより実行可能な画像処理プログラム31及びバーコード解析プログラム32が格納されている。バーコード解析プログラム32は、図1に示される画像処理装置40とは別の装置に格納されていてもよい。当該別の装置に、画像処理プログラム31による計算結果が送信されて、当該別の装置から、バーコード解析プログラムを用いたバーコードのデコード結果を受信してもよい。処理部30は、入出力部10との間及び撮像部20との間で、上述のデータ又は信号のやり取りを行う。   The processing unit 30 includes a processor, a main storage device, a storage memory, and the like. The storage memory stores an image processing program 31 and a barcode analysis program 32 that can be executed by the processor. The barcode analysis program 32 may be stored in a device different from the image processing device 40 shown in FIG. The calculation result by the image processing program 31 may be transmitted to the other device, and the barcode decoding result using the barcode analysis program may be received from the other device. The processing unit 30 exchanges the above data or signals with the input / output unit 10 and with the imaging unit 20.

上述の各種機能を有する画像処理装置40は、例えば、1台の携帯電話機で構成することもできる。   The image processing apparatus 40 having the various functions described above can be configured by, for example, one mobile phone.

<2.画像処理装置の使用例>
図2は、上記画像処理装置40によって撮影及び処理される画像の例を示す。画像処理装置40は、例えば、トレイ50に載せられた複数の商品51を撮影して1枚の画像を取得する。複数の商品51には、様々な文字52やバーコード53が印刷されている。複数の商品51のデザインは様々で、バーコード53の印刷箇所や大きさも様々なことがある。このような様々な商品51のバーコード53を1枚の画像からそれぞれ読み取ることにより、例えば、どの商品を幾つ出荷したかの管理が可能となる。その他、流通業での入出庫管理、医療業での薬品管理など幅広い応用が可能となる。
<2. Example of use of image processing device>
FIG. 2 shows an example of an image taken and processed by the image processing device 40. For example, the image processing apparatus 40 captures a plurality of products 51 placed on the tray 50 and acquires one image. Various characters 52 and barcodes 53 are printed on the plurality of products 51. The designs of the plurality of products 51 are various, and the printing location and size of the barcode 53 may be various. By reading the bar codes 53 of such various products 51 from one image, for example, it is possible to manage how many products are shipped. In addition, a wide range of applications are possible, such as warehouse management in the distribution industry and drug management in the medical industry.

<3.第1の画像から第2の画像を生成する処理>
図3は、上記画像処理装置40において第1の画像から第2の画像を生成する処理を示すフローチャートである。画像処理装置40の処理部30は、画像処理プログラム31を実行して、以下の処理により第1の画像から第2の画像を生成する。第1の画像は、例えば、撮像部20が撮像した元の画像である。第2の画像は、例えば、後の処理でバーコードエリアを抽出しやすいように白黒パターン部分が強調処理された二値画像である。本開示において、第1の画像から第2の画像を生成する処理は、一次元バーコードの読み取りと二次元バーコードの読み取りとで共通であるが、本開示の趣旨を逸脱しない範囲でそれぞれ別々の改変が行われてもよい。
<3. Processing for generating second image from first image>
FIG. 3 is a flowchart showing a process of generating a second image from the first image in the image processing apparatus 40. The processing unit 30 of the image processing apparatus 40 executes the image processing program 31 and generates a second image from the first image by the following processing. The first image is an original image captured by the imaging unit 20, for example. The second image is, for example, a binary image in which the monochrome pattern portion is emphasized so that the barcode area can be easily extracted in later processing. In the present disclosure, the process of generating the second image from the first image is common to the reading of the one-dimensional barcode and the reading of the two-dimensional barcode, but each is separate within the scope of the present disclosure. May be modified.

図4は、第1の画像の一部を示す。図4は、第1の画像のうち、1つの一次元バーコードと、別の1つの一次元バーコードの一部と、が含まれた部分を示している。特許出願の様式上の都合から、図4はグレースケール画像を示しているが、第1の画像はカラー画像でよい。撮影対象への光の当たり方などの撮影条件によって、撮影された画像における階調が影響を受けることがある。また、図2を参照しながら説明したように、様々なデザインの商品を撮影したときに、一次元バーコードエリアの特定が困難なことがある。そこで、以下の処理により、白黒パターン部分が強調処理された第2の画像を生成する。   FIG. 4 shows a part of the first image. FIG. 4 shows a portion of the first image that includes one one-dimensional barcode and a part of another one-dimensional barcode. Although FIG. 4 shows a gray scale image for the convenience of the patent application format, the first image may be a color image. The gradation in the photographed image may be affected by photographing conditions such as how light strikes the subject. In addition, as described with reference to FIG. 2, it may be difficult to specify a one-dimensional barcode area when shooting products with various designs. Therefore, a second image in which the monochrome pattern portion is emphasized is generated by the following processing.

図3のS1000において、処理部30は、第1の画像から複数の第1の処理ブロックを抽出する。第1の処理ブロックは、複数の画素を含む。S1000の処理を行うモジュールは、本開示の第1のモジュールに相当し得る。   In S1000 of FIG. 3, the processing unit 30 extracts a plurality of first processing blocks from the first image. The first processing block includes a plurality of pixels. The module that performs the process of S1000 may correspond to the first module of the present disclosure.

図5は、図3のS1000において第1の画像から抽出された複数の第1の処理ブロックを示す。図5は、図4の太枠線内の部分を示している。説明を簡易にするため、図5においては、複数の第1の処理ブロックの各々は4行×4列の16画素を含むものとしているが、8行×8列の64画素を含むものとしてもよい。さらに、図5においては、それぞれの画素の階調を示す数値の例が示されている。また、それぞれの画素は、階調を示す数値に応じて、色分けして示されている。階調を示す数値は、図5においては、紙幅の都合から0から15までの16階調となっているが、0から255までの256階調でもよい。ここでは、階調を示す数値が小さいほど明度が低く、暗い色であることを示し、階調を示す数値が大きいほど明度が高く、明るい色であることを示す。   FIG. 5 shows a plurality of first processing blocks extracted from the first image in S1000 of FIG. FIG. 5 shows a portion within the thick frame line of FIG. In order to simplify the description, in FIG. 5, each of the plurality of first processing blocks includes 16 pixels of 4 rows × 4 columns, but may include 64 pixels of 8 rows × 8 columns. Good. Further, FIG. 5 shows an example of numerical values indicating the gradation of each pixel. In addition, each pixel is shown in different colors according to the numerical value indicating the gradation. In FIG. 5, the numerical value indicating the gradation is 16 gradations from 0 to 15 for convenience of the paper width, but may be 256 gradations from 0 to 255. Here, the smaller the numerical value indicating the gradation, the lower the lightness and the darker the color. The higher the numerical value indicating the gradation, the higher the lightness and the brighter the color.

次に、図3のS2000において、処理部30は、複数の第1の処理ブロックの各々について、階調を示す値の平均値を算出する。上述の図5に示された例で言えば、複数の第1の処理ブロックの各々に含まれる16個の画素の階調を示す値を合計し、その合計値を画素数16で除算する。
図6は、図3のS2000において算出された平均値の例を示す。1つの第1の処理ブロックについて、1つの平均値が算出される。
Next, in S2000 of FIG. 3, the processing unit 30 calculates an average value of values indicating gradation for each of the plurality of first processing blocks. In the example shown in FIG. 5 described above, the values indicating the gradations of the 16 pixels included in each of the plurality of first processing blocks are summed, and the total value is divided by the number of pixels of 16.
FIG. 6 shows an example of the average value calculated in S2000 of FIG. One average value is calculated for one first processing block.

次に、図3のS3000において、処理部30は、複数の第1の処理ブロックの各々について、階調を示す値の平均値の明度を減じる。上述のように数値が低い方が明度が低いことを示す場合には、例えば、上述の図6に示された平均値の各々に1未満の軽減率を乗算する。軽減率は、例えば、0.7以上0.95以下の範囲で設定される。軽減率は、撮影現場の明るさなどによって最適値が変化することがあるので、入出力部10を用いてユーザーによって設定可能とされてもよい。あるいは、S3000において明度を減じるために、上述の図6に示された平均値の各々から一定のオフセット値を減算してもよい(但し、負数にはしない)。   Next, in S3000 of FIG. 3, the processing unit 30 reduces the brightness of the average value of the values indicating the gradation for each of the plurality of first processing blocks. As described above, when the value is lower, the lightness is lower, for example, each of the average values shown in FIG. 6 is multiplied by a reduction rate of less than 1. For example, the reduction rate is set in a range of 0.7 to 0.95. Since the optimum value of the reduction rate may change depending on the brightness of the shooting site, etc., it may be set by the user using the input / output unit 10. Alternatively, in order to reduce the brightness in S3000, a certain offset value may be subtracted from each of the average values shown in FIG. 6 (however, it is not a negative number).

図7は、図3のS3000において明度が減じられた平均値の例を示す。図7においては、上述の図6に示された平均値の各々に0.8が乗算されている。
S2000の処理を行うモジュール、又はS2000とS3000の処理を行うモジュールは、本開示の第2のモジュールに相当し得る。第2のモジュールは、平均値の明度を減じる処理を行っても、行わなくてもよい。あるいは、第2のモジュールは、S2000とS3000の処理順序を入れ替えて、複数の画素の各々について明度を減じてから、複数の第1の処理ブロックの各々について平均値を算出してもよい。S2000とS3000の処理順序を入れ替えると、計算量が若干増加するが、それでもなお本開示の効果を奏し得る。
FIG. 7 shows an example of the average value in which the brightness is reduced in S3000 of FIG. In FIG. 7, each of the average values shown in FIG. 6 is multiplied by 0.8.
The module that performs the process of S2000, or the module that performs the processes of S2000 and S3000 may correspond to the second module of the present disclosure. The second module may or may not perform the process of reducing the lightness of the average value. Alternatively, the second module may replace the processing order of S2000 and S3000 to reduce the brightness for each of the plurality of pixels, and then calculate an average value for each of the plurality of first processing blocks. If the processing order of S2000 and S3000 is changed, the amount of calculation increases slightly, but the effect of the present disclosure can still be achieved.

次に、図3のS4000において、処理部30は、複数の第1の処理ブロックの各々について、当該ブロックの補正平均値を以下のようにして算出する。S4000の処理を行うモジュールは、本開示の第3のモジュールに相当し得る。   Next, in S4000 of FIG. 3, the processing unit 30 calculates the corrected average value of each of the plurality of first processing blocks as follows. The module that performs the process of S4000 may correspond to the third module of the present disclosure.

図8は、図3のS4000において算出される補正平均値と、補正平均値の算出方法を示す。当該ブロックの補正平均値は、当該ブロックの周辺に位置する複数の周辺ブロックについてそれぞれ算出された複数の第1の平均値D1〜D8と、当該ブロックについて算出された第2の平均値Dとを用いて算出される。第1の平均値D1〜D8及び第2の平均値Dは、図6又は図7に示される平均値である。図8の下部に示されるように、第1の平均値D1〜D8のうち、D1〜D4は、当該ブロックの上下左右にそれぞれ隣接するブロックの平均値であり、D5〜D8は、当該ブロックの斜め方向にずれた位置にあるブロックの平均値である。補正平均値Eは、以下の式により算出される。
E = [4×D+2×(D1+D2+D3+D4)+(D5+D6+D7+D8)]/16
以上のようにして、当該ブロックの周辺に位置する複数の周辺ブロックについてそれぞれ算出された複数の第1の平均値D1〜D8に基づいて、当該ブロックについて算出された第2の平均値Dが補正される。
補正平均値Eは、第1の平均値D1〜D8に第1の重み1又は2を付与し、前記第2の平均値Dに第1の重みより大きい第2の重み4を付与して算出される、第1の平均値D1〜D8と第2の平均値Dとの平均値である。これらの重みの値は、別の値に変更されてもよい。さらに、当該ブロックの上下左右及び斜めにそれぞれ隣接する8つのブロックだけでなく、8つのブロックのさらに周辺に位置するブロックを考慮に入れてもよい。この場合、当該ブロックの近くに位置するブロックには、当該ブロックから遠くに位置するブロックよりも大きい重みを付与することが望ましい。
FIG. 8 shows the corrected average value calculated in S4000 of FIG. 3 and a method for calculating the corrected average value. The corrected average value of the block includes a plurality of first average values D1 to D8 calculated for each of a plurality of peripheral blocks located around the block, and a second average value D calculated for the block. Is used to calculate. The first average values D1 to D8 and the second average value D are the average values shown in FIG. 6 or FIG. As shown in the lower part of FIG. 8, among the first average values D1 to D8, D1 to D4 are average values of blocks adjacent to the block in the vertical and horizontal directions, and D5 to D8 are the blocks of the block. It is an average value of blocks at positions shifted in an oblique direction. The corrected average value E is calculated by the following formula.
E = [4 × D + 2 × (D1 + D2 + D3 + D4) + (D5 + D6 + D7 + D8)] / 16
As described above, the second average value D calculated for the block is corrected based on the plurality of first average values D1 to D8 respectively calculated for the plurality of peripheral blocks located around the block. Is done.
The corrected average value E is calculated by giving a first weight 1 or 2 to the first average values D1 to D8, and giving a second weight 4 larger than the first weight to the second average value D. The average value of the first average values D1 to D8 and the second average value D. These weight values may be changed to other values. Furthermore, not only the eight blocks adjacent to each other in the vertical and horizontal directions and diagonally, but also a block located further around the eight blocks may be taken into consideration. In this case, it is desirable to give a greater weight to a block located near the block than a block located far from the block.

図5に示された領域の階調データだけでは補正平均値を算出できない処理ブロックについては、図8に補正平均値の算出結果が示されていない。しかし、さらに周辺の階調データを用いて補正平均値が算出されてもよい。   FIG. 8 does not show the calculation result of the correction average value for the processing block in which the correction average value cannot be calculated only by the gradation data of the region shown in FIG. However, the corrected average value may be calculated using peripheral gradation data.

次に、図3のS5000において、処理部30は、以下のようにして第2の画像を生成する。S5000の処理を行うモジュールは、本開示の第4のモジュールに相当し得る。   Next, in S5000 of FIG. 3, the processing unit 30 generates a second image as follows. The module that performs the process of S5000 may correspond to the fourth module of the present disclosure.

図9は、図3のS5000において生成される第2の画像のうち、図8に対応する部分を示す。S5000において、処理部30は、第1の画像に含まれる複数の画素の各々の階調を示す値と、当該画素が属する第1の処理ブロックについて算出された補正平均値とを比較する。図5に示される画素の階調を示す値が、図8に示される補正平均値より大きい、すなわち明度が高い場合は、第2の画像における当該画素を白点(0)とする。図5に示される画素の階調を示す値が図8に示される補正平均値より小さい、すなわち明度が低い場合は、第2の画像における当該画素を黒点(1)とする。以上のようにして二値画像が生成される。   FIG. 9 shows a portion corresponding to FIG. 8 in the second image generated in S5000 of FIG. In S5000, the processing unit 30 compares the value indicating the gradation of each of the plurality of pixels included in the first image with the corrected average value calculated for the first processing block to which the pixel belongs. When the value indicating the gradation of the pixel shown in FIG. 5 is larger than the corrected average value shown in FIG. 8, that is, the lightness is high, the pixel in the second image is set as a white point (0). When the value indicating the gradation of the pixel shown in FIG. 5 is smaller than the corrected average value shown in FIG. 8, that is, when the brightness is low, the pixel in the second image is set as a black point (1). A binary image is generated as described above.

図10は、図3のS5000において生成される第2の画像のうち、図4に対応する部分を示す。図10に示されるように、第2の画像においては、第1の画像の背景部分の濃淡がかなり消去され、一次元バーコードにおける白黒の繰返しパターンが強調されている。このような第2の画像を生成できるのは、当該画素の階調を示す値を、周囲の補正平均値と比較しているためである。さらに、本実施形態においては、S3000及びS4000の処理をブロック単位で行っているので、ブロックサイズに応じて計算量が低減される。例えば、ブロックサイズが4行×4列であれば、S3000及びS4000の計算量は16分の1となる。また、S5000の処理は、画素数に応じた計算量が必要になるが、ブロックサイズに応じて補正平均値の読み込み回数が低減される。   FIG. 10 shows a portion corresponding to FIG. 4 in the second image generated in S5000 of FIG. As shown in FIG. 10, in the second image, the shade of the background portion of the first image is considerably erased, and the black and white repetitive pattern in the one-dimensional barcode is emphasized. Such a second image can be generated because the value indicating the gradation of the pixel is compared with the surrounding correction average value. Furthermore, in the present embodiment, since the processes of S3000 and S4000 are performed in units of blocks, the amount of calculation is reduced according to the block size. For example, if the block size is 4 rows × 4 columns, the calculation amount of S3000 and S4000 is 1/16. The processing of S5000 requires a calculation amount corresponding to the number of pixels, but the number of readings of the corrected average value is reduced according to the block size.

次に、図3のS6000において、処理部30は、バーコードの解析を行う。上述の第2の画像を用いてS6000の処理を行うことにより、バーコードエリアの特定を高速化し、正確にバーコードを解析できる。S6000の処理の詳細については、一次元バーコードの解析(図11〜図19)と、二次元バーコードの解析(図20〜図27)と、に分けて以下に説明する。   Next, in S6000 of FIG. 3, the processing unit 30 analyzes the barcode. By performing the process of S6000 using the second image described above, the barcode area can be specified at high speed and the barcode can be analyzed accurately. Details of the processing of S6000 will be described below by dividing into one-dimensional barcode analysis (FIGS. 11 to 19) and two-dimensional barcode analysis (FIGS. 20 to 27).

<4.一次元バーコードの解析>
図11は、上記画像処理装置40において一次元バーコードを解析する処理の詳細を示すフローチャートである。図11に示される処理は、図3のS6000のサブルーチンとして、処理部30によって行われる。図11に示される処理は、特に言及しない限り、画像処理プログラム31に基づいて行われる。
<4. Analysis of one-dimensional barcode>
FIG. 11 is a flowchart showing details of processing for analyzing a one-dimensional barcode in the image processing apparatus 40. The processing shown in FIG. 11 is performed by the processing unit 30 as a subroutine of S6000 in FIG. The processing shown in FIG. 11 is performed based on the image processing program 31 unless otherwise specified.

<4−1.第2の処理ブロックの抽出>
まず、図11のS6100において、処理部30は、図3のS5000で生成された第2の画像から複数の第2の処理ブロックを抽出する。第2の処理ブロックは、複数の画素を含む。第2の処理ブロックは、第1の処理ブロックと同じ画素数を有していてもよいし、異なる画素数を有していてもよい。第2の処理ブロックの画素数は、入出力部10を用いてユーザーによって設定されてもよい。また、ユーザーによって一次元バーコード方向が入力されている場合に、第2の処理ブロックは一次元バーコード方向と交差する方向に一部重なるように設定される。ここで、「一次元バーコード方向」とは、一次元バーコードに含まれる白黒の繰り返しパターンの繰り返し方向をいう。S6100の処理を行うモジュールは、本開示の第5のモジュールに相当し得る。
<4-1. Extraction of second processing block>
First, in S6100 of FIG. 11, the processing unit 30 extracts a plurality of second processing blocks from the second image generated in S5000 of FIG. The second processing block includes a plurality of pixels. The second processing block may have the same number of pixels as the first processing block, or may have a different number of pixels. The number of pixels of the second processing block may be set by the user using the input / output unit 10. Further, when the one-dimensional barcode direction is input by the user, the second processing block is set so as to partially overlap in the direction intersecting the one-dimensional barcode direction. Here, the “one-dimensional barcode direction” refers to the repeating direction of the black-and-white repeating pattern included in the one-dimensional barcode. The module that performs the process of S6100 may correspond to the fifth module of the present disclosure.

図12は、図11のS6100において第2の画像から抽出された複数の第2の処理ブロックを示す。図12においては、複数の第2の処理ブロックの各々は、16行×16列の256画素を含むものとしている。図12において、一次元バーコード方向は横方向となっている。この場合、第2の処理ブロックは、縦方向に一部重なるように設定される。   FIG. 12 shows a plurality of second processing blocks extracted from the second image in S6100 of FIG. In FIG. 12, each of the plurality of second processing blocks includes 256 pixels of 16 rows × 16 columns. In FIG. 12, the one-dimensional barcode direction is the horizontal direction. In this case, the second processing block is set so as to partially overlap in the vertical direction.

ここで、ブロック番号(i,j)を横方向の座標iと縦方向の座標jを用いて特定するとした場合、ブロック番号(1,1)に対してブロック番号(1,2)は第2の処理ブロックの縦の長さの半分だけ重なっている。すなわち、ブロック番号(1,1)に対してブロック番号(1,2)は第2の処理ブロックの縦の長さの半分だけずれて位置している。このように第2の処理ブロックを設定することにより、一次元バーコード方向と垂直な方向の一次元バーコードの幅が狭くても、適切な範囲の一次元バーコードエリアを抽出することができる。これにより、一次元バーコード領域の特定の精度を向上し得る。   Here, when the block number (i, j) is specified by using the horizontal coordinate i and the vertical coordinate j, the block number (1, 1) is the second number relative to the block number (1, 1). The processing block is overlapped by half the vertical length. That is, the block number (1, 2) is shifted from the block number (1, 1) by half the vertical length of the second processing block. By setting the second processing block in this way, an appropriate range of one-dimensional barcode area can be extracted even if the width of the one-dimensional barcode in the direction perpendicular to the one-dimensional barcode direction is narrow. . Thereby, the specific precision of a one-dimensional barcode area | region can be improved.

図13は、上記画像処理装置40において第2の処理ブロックを抽出する処理の詳細を示すフローチャートである。図13に示される処理は、図11のS6100のサブルーチンとして、処理部30によって行われる。   FIG. 13 is a flowchart showing details of processing for extracting the second processing block in the image processing apparatus 40. The processing shown in FIG. 13 is performed by the processing unit 30 as a subroutine of S6100 in FIG.

まず、S6101において、処理部30は、一次元バーコード方向が入力されたか否かを判定する。ユーザーが一次元バーコード方向を入力する場合には、図2に示されるようにユーザーが一次元バーコード方向をほぼそろえて複数の一次元バーコードを撮影するのが好ましい。   First, in S6101, the processing unit 30 determines whether or not a one-dimensional barcode direction has been input. When the user inputs a one-dimensional barcode direction, it is preferable that the user captures a plurality of one-dimensional barcodes with the one-dimensional barcode direction substantially aligned as shown in FIG.

一次元バーコード方向が入力されていない場合(S6101;NO)、処理部30は、一次元バーコード方向が入力されるまで待機する。あるいは、処理部30は、第2の処理ブロックが重ならないように、第2の処理ブロックを設定してもよい。あるいは、処理部30は、第2の処理ブロックが縦横いずれの方向にもそれぞれ一部重なるように、第2の処理ブロックを設定してもよい。   When the one-dimensional barcode direction is not input (S6101; NO), the processing unit 30 stands by until the one-dimensional barcode direction is input. Alternatively, the processing unit 30 may set the second processing block so that the second processing block does not overlap. Alternatively, the processing unit 30 may set the second processing block so that the second processing block partially overlaps in both the vertical and horizontal directions.

一次元バーコード方向が入力された場合(S6101;YES)、処理部30は、S6102に処理を進める。S6102において、処理部30は、第2の処理ブロックが一次元バーコード方向と垂直な方向に一部重なるように、第2の処理ブロックを設定する。S6102の後、処理部30は、本フローチャートの処理を終了して図11に示される処理に戻る。   When the one-dimensional barcode direction is input (S6101; YES), the processing unit 30 advances the process to S6102. In S6102, the processing unit 30 sets the second processing block so that the second processing block partially overlaps in the direction perpendicular to the one-dimensional barcode direction. After S6102, the processing unit 30 ends the process of this flowchart and returns to the process illustrated in FIG.

<4−2.有効ブロックか否かの判定>
図11のS6200において、処理部30は、複数の第2の処理ブロックの各々について、当該ブロックが有効ブロックか否かを判定する。S6200の処理を行うモジュールは、本開示の第6のモジュールに相当し得る。当該ブロックが有効ブロックか否かの判定は、以下のように行われる。
図14は、当該ブロックが有効ブロックか否かの判定の過程を示す。図14は、図12の太枠内の部分に相当するブロック番号(4,4)を示している。
図15は、上記画像処理装置40において当該ブロックが有効ブロックか否かを判定する処理の詳細を示すフローチャートである。図15に示される処理は、図11のS6200のサブルーチンとして、処理部30によって行われる。
<4-2. Determining whether the block is valid>
In S6200 of FIG. 11, the processing unit 30 determines, for each of the plurality of second processing blocks, whether the block is an effective block. The module that performs the process of S6200 may correspond to the sixth module of the present disclosure. The determination as to whether the block is a valid block is performed as follows.
FIG. 14 shows the process of determining whether or not the block is a valid block. FIG. 14 shows block numbers (4, 4) corresponding to the portions within the thick frame in FIG.
FIG. 15 is a flowchart showing details of processing for determining whether or not the block is an effective block in the image processing apparatus 40. The processing shown in FIG. 15 is performed by the processing unit 30 as a subroutine of S6200 in FIG.

まず、図15のS6201において、処理部30は、一次元バーコード方向と交差する方向の複数の列を抽出し、各列における黒点の数と白点の数とをカウントする。一次元バーコード方向と交差する方向の複数の列は、本開示の複数の第1の列又は行に相当し得る。
図14の上端付近に、各列における黒点の数が示されている。図14の中央付近に、各列における白点の数が示されている。なお、各列において、黒点の数と白点の数の合計は16であり、この値はブロックサイズBlock_sizeに等しい。
First, in S6201 of FIG. 15, the processing unit 30 extracts a plurality of columns in a direction intersecting with the one-dimensional barcode direction, and counts the number of black points and the number of white points in each column. The plurality of columns in a direction that intersects the one-dimensional barcode direction may correspond to the plurality of first columns or rows of the present disclosure.
Near the upper end of FIG. 14, the number of black spots in each column is shown. The number of white spots in each row is shown near the center of FIG. In each column, the total number of black spots and white spots is 16, and this value is equal to the block size Block_size.

図15のS6202において、処理部30は、一次元バーコード方向の複数の行を抽出し、一次元バーコード方向の各行における黒点の数と白点の数とをカウントする。一次元バーコード方向の複数の行は、本開示の複数の第2の行又は列に相当し得る。
図14の左端付近に、各行における黒点の数が示されている。図14の右端付近に、各行における白点の数が示されている。なお、各行において、黒点の数と白点の数の合計は16であり、この値はブロックサイズBlock_sizeに等しい。
In S6202 of FIG. 15, the processing unit 30 extracts a plurality of rows in the one-dimensional barcode direction, and counts the number of black spots and the number of white spots in each row in the one-dimensional barcode direction. The plurality of rows in the one-dimensional barcode direction may correspond to the plurality of second rows or columns of the present disclosure.
Near the left end of FIG. 14, the number of black dots in each row is shown. Near the right end of FIG. 14, the number of white spots in each row is shown. In each row, the total number of black spots and white spots is 16, and this value is equal to the block size Block_size.

次に、図15のS6203において、処理部30は、各列について、黒線か、白線か、いずれでもないかを判定する。各列における黒点の数が第1の閾値より大きければ、その列は黒線であると判定される。第1の閾値は、各列における黒点の数の平均値より大きい値、例えば、当該平均値の1.1倍以上、1.3倍以下の値に設定される。各列における白点の数が第2の閾値より大きければ、その列は白線であると判定される。第2の閾値は、各列における白点の数の平均値より大きい値、例えば、当該平均値の1.1倍以上、1.3倍以下の値に設定される。   Next, in S6203 of FIG. 15, the processing unit 30 determines whether each line is a black line or a white line. If the number of black dots in each column is greater than the first threshold, it is determined that the column is a black line. The first threshold value is set to a value larger than the average value of the number of black spots in each column, for example, a value that is 1.1 times or more and 1.3 times or less of the average value. If the number of white dots in each column is greater than the second threshold, it is determined that the column is a white line. The second threshold value is set to a value larger than the average value of the number of white spots in each column, for example, a value that is 1.1 times or more and 1.3 times or less of the average value.

図14の上端付近に、各列についての黒線か否かの判定結果が示されている。第1の閾値は、各列における黒点の数の平均より大きい値に設定されている。縦黒線か否かの判定結果は、縦黒線なら1、縦黒線でないなら0として示されている。
図14の中央付近に、各列についての白線か否かの判定結果が示されている。第2の閾値は、各列における白点の数の平均より大きい値に設定されている。縦白線か否かの判定結果は、縦白線なら1、縦白線でないなら0として示されている。
In the vicinity of the upper end of FIG. 14, the determination result as to whether or not each column is a black line is shown. The first threshold value is set to a value larger than the average of the number of black spots in each column. The determination result as to whether or not it is a vertical black line is indicated as 1 if it is a vertical black line, and 0 if it is not a vertical black line.
In the vicinity of the center of FIG. 14, the determination result as to whether or not each line is a white line is shown. The second threshold value is set to a value larger than the average of the number of white spots in each column. The determination result as to whether or not it is a vertical white line is indicated as 1 if it is a vertical white line and 0 if it is not a vertical white line.

次に、図15のS6204において、処理部30は、縦黒線の数HORZblackと、縦白線の数HORZwhiteと、をそれぞれカウントする。
図14の上端付近に、縦黒線の数HORZblackの算出結果が示されている。
図14の中央付近に、縦白線の数HORZwhiteの算出結果が示されている。
Next, in S6204 of FIG. 15, the processing unit 30 counts the number of vertical black lines HORZblack and the number of vertical white lines HORZwhite.
Near the upper end of FIG. 14, the calculation result of the number of vertical black lines HORZblack is shown.
The calculation result of the number of vertical white lines HORZwhite is shown near the center of FIG.

次に、図15のS6205において、処理部30は、縦黒線の数HORZblackと、縦白線の数HORZwhiteと、の和が第1の所定値より大きいか否かを判定する。第1の所定値は、ブロックサイズBlock_sizeに所定の判定率を乗算した値でよい。判定率は、例えば、0.2以上、0.3以下の値を有している。   Next, in S6205 of FIG. 15, the processing unit 30 determines whether the sum of the number of vertical black lines HORZblack and the number of vertical white lines HORZwhite is greater than a first predetermined value. The first predetermined value may be a value obtained by multiplying the block size Block_size by a predetermined determination rate. The determination rate has a value of 0.2 or more and 0.3 or less, for example.

縦黒線の数HORZblackと、縦白線の数HORZwhiteと、の和が第1の所定値より大きくない場合(S6205;NO)、処理部30は、処理をS6210に進める。
縦黒線の数HORZblackと、縦白線の数HORZwhiteと、の和が第1の所定値より大きい場合(S6205;YES)、処理部30は、処理をS6206に進める。
When the sum of the number of vertical black lines HORZblack and the number of vertical white lines HORZwhite is not larger than the first predetermined value (S6205; NO), the processing unit 30 advances the processing to S6210.
When the sum of the number of vertical black lines HORZblack and the number of vertical white lines HORZwhite is larger than the first predetermined value (S6205; YES), the processing unit 30 advances the process to S6206.

図15のS6206において、処理部30は、各行について、黒線か、白線か、いずれでもないかを判定する。各行における黒点の数が第1の閾値より大きければ、その行は黒線であると判定される。第1の閾値は、上記黒点の数の平均より大きい値に設定される。各行における白点の数が第2の閾値より大きければ、その行は白線であると判定される。第2の閾値は、各行における白点の数の平均より大きい値に設定される。   In S6206 of FIG. 15, the processing unit 30 determines whether each line is a black line or a white line. If the number of black dots in each row is greater than the first threshold, it is determined that the row is a black line. The first threshold value is set to a value larger than the average of the number of black spots. If the number of white spots in each row is greater than the second threshold, it is determined that the row is a white line. The second threshold value is set to a value larger than the average number of white spots in each row.

図14の左端付近に、各行についての黒線か否かの判定結果が示されている。第1の閾値は、各行における黒点の数の平均より大きい値に設定されている。横黒線か否かの判定結果は、横黒線なら1、横黒線でないなら0として示されている。
図14の中央付近に、各行についての白線か否かの判定結果が示されている。第2の閾値は、各行における白点の数の平均より大きい値に設定されている。横白線か否かの判定結果は、横白線なら1、横白線でないなら0として示されている。
Near the left end of FIG. 14, the determination result of whether or not each line is a black line is shown. The first threshold value is set to a value larger than the average of the number of black spots in each row. The determination result as to whether or not it is a horizontal black line is indicated as 1 if it is a horizontal black line and 0 if it is not a horizontal black line.
In the vicinity of the center of FIG. 14, the determination result as to whether or not each line is a white line is shown. The second threshold value is set to a value larger than the average number of white spots in each row. The determination result as to whether or not it is a horizontal white line is indicated as 1 if it is a horizontal white line and 0 if it is not a horizontal white line.

次に、図15のS6207において、処理部30は、横黒線の数VERTblackと、横白線の数VERTwhiteと、をそれぞれカウントする。
図14の左端付近に、横黒線の数VERTblackの算出結果が示されている。
図14の右端付近に、横白線の数VERTwhiteの算出結果が示されている。
Next, in S6207 of FIG. 15, the processing unit 30 counts the number of horizontal black lines VERTblack and the number of horizontal white lines VERTwhite.
Near the left end of FIG. 14, the calculation result of the number of horizontal black lines VERTblack is shown.
The calculation result of the number of horizontal white lines VERTwhite is shown near the right end of FIG.

次に、図15のS6208において、処理部30は、縦黒線の数HORZblackと、横黒線の数VERTblackと、の差と、縦白線の数HORZwhiteと、横白線の数VERTwhiteと、の差と、を算出する。そして、処理部30は、これらの差の積の絶対値が第2の所定値より大きいか否かを判定する。第2の所定値は、ブロックサイズBlock_sizeに上記の判定率の2乗を乗算した値でよい。
上述の差の積の絶対値が第2の所定値より大きくない場合(S6208;NO)、処理部30は、処理をS6210に進める。
上述の差の積の絶対値が第2の所定値より大きい場合(S6208;YES)、処理部30は、処理をS6209に進める。
Next, in S6208 of FIG. 15, the processing unit 30 compares the difference between the number of vertical black lines HORZblack and the number of horizontal black lines VERTblack, the number of vertical white lines HORZwhite, and the number of horizontal white lines VERTwhite. And are calculated. Then, the processing unit 30 determines whether or not the absolute value of the product of these differences is greater than a second predetermined value. The second predetermined value may be a value obtained by multiplying the block size Block_size by the square of the determination rate.
When the absolute value of the product of the above differences is not greater than the second predetermined value (S6208; NO), the processing unit 30 advances the processing to S6210.
If the absolute value of the product of the differences is larger than the second predetermined value (S6208; YES), the processing unit 30 advances the process to S6209.

S6209において、処理部30は、当該ブロックが有効ブロックであると判定する。
S6210において、処理部30は、当該ブロックが有効ブロックではなく無効ブロックであると判定する。
上述のS6205の判定結果がYESであることを有効ブロックの条件とすることにより、一次元バーコード方向と垂直な方向の黒線及び白線の数が少ないブロックを除外することができる。
上述のS6208の判定結果がYESであることを有効ブロックの条件とすることにより、縦黒線数と横黒線数との差が小さいブロックや、縦白線数と横白線数との差が小さいブロックを除外することができる。
複数の第2の処理ブロックの各々についてS6209又はS6210の判定結果を得た後、処理部30は、本フローチャートの処理を終了して図11に示される処理に戻る。
In S6209, the processing unit 30 determines that the block is a valid block.
In S6210, the processing unit 30 determines that the block is not an effective block but an invalid block.
By making the determination result of S6205 described above YES as an effective block condition, it is possible to exclude blocks with a small number of black lines and white lines in a direction perpendicular to the one-dimensional barcode direction.
By making the determination result of S6208 above YES as an effective block condition, the difference between the number of vertical black lines and the number of horizontal black lines is small, or the difference between the number of vertical white lines and the number of horizontal white lines is small. Blocks can be excluded.
After obtaining the determination result of S6209 or S6210 for each of the plurality of second processing blocks, the processing unit 30 ends the processing of this flowchart and returns to the processing shown in FIG.

なお、ここでは、S6101において一次元バーコード方向が入力された場合について説明したが、一次元バーコード方向が入力されていない場合、特に一次元バーコード方向が画像の縦横方向に対して斜めである場合には、図14における走査線の角度を傾けて、この走査線の方向と垂直な方向及び平行な方向に沿ってそれぞれ黒点及び白点をカウントする。
また、一次元バーコード方向が入力されていない場合、複数の方向で有効ブロックとして判定されることがある。その場合には、S6208を参照しながら説明した差の積の絶対値が大きい方の走査線の方向を一次元バーコード方向とする。
Here, the case where the one-dimensional barcode direction is input in S6101 has been described. However, when the one-dimensional barcode direction is not input, the one-dimensional barcode direction is particularly oblique with respect to the vertical and horizontal directions of the image. In some cases, the angle of the scanning line in FIG. 14 is tilted, and black points and white points are counted along a direction perpendicular to and parallel to the direction of the scanning line, respectively.
In addition, when the one-dimensional barcode direction is not input, it may be determined as an effective block in a plurality of directions. In that case, the direction of the scanning line having the larger absolute value of the product of the differences described with reference to S6208 is set as the one-dimensional barcode direction.

<4−3.一次元バーコードエリアの決定>
図11のS6300において、処理部30は、複数の第2の処理ブロックの各々について得られた有効ブロックか否かの判定結果に基づいて、一次元バーコードが含まれる可能性のある一次元バーコードエリアを決定する。S6300の処理を行うモジュールは、本開示の第7のモジュールに相当し得る。一次元バーコードエリアの決定は、以下のように行われる。
図16は、上記画像処理装置40において一次元バーコードエリアを決定する処理の詳細を示すフローチャートである。図16に示される処理は、図11のS6300のサブルーチンとして、処理部30によって行われる。
<4-3. Determination of one-dimensional barcode area>
In S6300 of FIG. 11, the processing unit 30 determines a one-dimensional bar code that may include a one-dimensional barcode based on the determination result of whether or not each of the plurality of second processing blocks is an effective block. Determine the code area. The module that performs the process of S6300 may correspond to the seventh module of the present disclosure. The determination of the one-dimensional barcode area is performed as follows.
FIG. 16 is a flowchart showing details of processing for determining a one-dimensional barcode area in the image processing apparatus 40. The processing shown in FIG. 16 is performed by the processing unit 30 as a subroutine of S6300 in FIG.

まず、図16のS6310において、処理部30は、一次元バーコードエリアをカウントするカウンタnを1にセットする。
次に、図16のS6320において、処理部30は、n番目の一次元バーコードエリアを抽出する。
First, in S6310 of FIG. 16, the processing unit 30 sets a counter n for counting the one-dimensional barcode area to 1.
Next, in S6320 of FIG. 16, the processing unit 30 extracts the n-th one-dimensional barcode area.

図17は、上記画像処理装置40においてn番目の一次元バーコードエリアを抽出する処理の詳細を示すフローチャートである。図17に示される処理は、図16のS6320のサブルーチンとして、処理部30によって行われる。   FIG. 17 is a flowchart showing details of processing for extracting the n-th one-dimensional barcode area in the image processing apparatus 40. The processing shown in FIG. 17 is performed by the processing unit 30 as a subroutine of S6320 in FIG.

まず、S6321において、処理部30は、第2の画像に含まれる複数の第2の処理ブロックをスキャンして、1つの有効ブロックを探す。処理部30は、この有効ブロックを起点として横方向及び縦方向に探索を行い、隣接する有効ブロック又は一部重なる有効ブロックを関連付ける。処理部30は、隣接又は一部重なる複数の有効ブロックを関連付けたら、S6322に処理を進める。   First, in S6321, the processing unit 30 scans a plurality of second processing blocks included in the second image and searches for one effective block. The processing unit 30 searches in the horizontal direction and the vertical direction starting from this effective block, and associates adjacent effective blocks or partially overlapping effective blocks. When the processing unit 30 associates a plurality of adjacent or partially overlapping effective blocks, the processing unit 30 proceeds to step S6322.

S6322において、処理部30は、関連付けられた複数の有効ブロックが所定サイズ以上になるか否かを判定する。
関連付けられた複数の有効ブロックが所定サイズ未満である場合(S6322;NO)、処理部30は、これらの有効ブロックはn番目の一次元バーコードエリアとしない。処理部30は、S6321に処理を戻して、これらの有効ブロックとは別の1つの有効ブロックを探し、当該別の有効ブロックを起点として、隣接又は一部重なる複数の有効ブロックをスキャンする。
関連付けられた複数の有効ブロックが所定サイズ以上となる場合(S6322;YES)、処理部30は、これらの有効ブロックをn番目の一次元バーコードエリアとする。その後、処理部30は、本フローチャートの処理を終了して、図16に示される処理に戻る。
In S6322, the processing unit 30 determines whether or not a plurality of associated effective blocks are equal to or larger than a predetermined size.
When the associated plurality of valid blocks is less than the predetermined size (S6322; NO), the processing unit 30 does not set these valid blocks as the nth one-dimensional barcode area. The processing unit 30 returns the processing to S6321, searches for one effective block different from these effective blocks, and scans a plurality of adjacent or partially overlapping effective blocks from the other effective block as a starting point.
When a plurality of associated effective blocks are equal to or larger than the predetermined size (S6322; YES), the processing unit 30 sets these effective blocks as the nth one-dimensional barcode area. Thereafter, the processing unit 30 ends the processing of this flowchart and returns to the processing shown in FIG.

図18は、隣接又は一部重なる有効ブロックを関連付けた状態を示す。ブロック番号(2,3)からブロック番号(4,5)までの9個の有効ブロックが関連付けられている。   FIG. 18 shows a state in which adjacent or partially overlapping effective blocks are associated. Nine effective blocks from block number (2, 3) to block number (4, 5) are associated.

図16のS6340において、処理部30は、一次元バーコードエリアをすべて抽出したか否かを判定する。例えば、処理部30は、第2の画像に含まれる複数の第2の処理ブロックをすべてスキャンしたら、一次元バーコードエリアをすべて抽出したと判定する。   In S6340 of FIG. 16, the processing unit 30 determines whether all the one-dimensional barcode areas have been extracted. For example, when all the plurality of second processing blocks included in the second image are scanned, the processing unit 30 determines that all the one-dimensional barcode areas have been extracted.

一次元バーコードエリアをすべて抽出していない場合(S6340;NO)、処理部30は、S6350において、カウンタnの値に1を加算してnの値を更新する。その後、処理部30は、上述のS6320に処理を戻して、n番目の一次元バーコードエリアを抽出する。例えば、図18に示されるブロック番号(1,8)、ブロック番号(2,9)などの有効ブロックを含む別の一次元バーコードエリアを抽出する。
一次元バーコードエリアをすべて抽出した場合(S6340;YES)、処理部30は、S6360に処理を進める。
When all the one-dimensional barcode areas have not been extracted (S6340; NO), the processing unit 30 adds 1 to the value of the counter n and updates the value of n in S6350. Thereafter, the processing unit 30 returns the processing to the above-described S6320 and extracts the n-th one-dimensional barcode area. For example, another one-dimensional barcode area including valid blocks such as block number (1, 8) and block number (2, 9) shown in FIG. 18 is extracted.
When all the one-dimensional barcode areas are extracted (S6340; YES), the processing unit 30 advances the process to S6360.

S6360において、処理部30は、一次元バーコードエリアを拡大する。
図19は、一次元バーコードエリアを拡大した状態を示す。図18において関連付けられたブロック番号(2,3)からブロック番号(4,5)までの有効ブロックに対し、上方向に1ブロック分、左方向に1ブロック分、右方向に1ブロック分だけそれぞれ一次元バーコードエリアが拡大されている。拡大幅は1ブロック分とする場合に限られず、2ブロック分としてもよい。
但し、図19において、下方向には0.5ブロック分しか拡大していない。これは、下方向に1ブロック分拡大すると、ブロック番号(1,8)、ブロック番号(2,9)などの有効ブロックを含む別の一次元バーコードエリアと重なってしまうためである。このような処理により、適切な範囲の一次元バーコードエリアを決定することができる。
図16のS6360の後、処理部30は、本フローチャートの処理を終了し、図11に示される処理に戻る。
In S6360, processing unit 30 enlarges the one-dimensional barcode area.
FIG. 19 shows a state where the one-dimensional barcode area is enlarged. For the effective blocks from block numbers (2, 3) to block numbers (4, 5) associated in FIG. 18, one block upward, one block left, and one block right The one-dimensional barcode area has been expanded. The enlargement width is not limited to one block, and may be two blocks.
However, in FIG. 19, only 0.5 blocks are enlarged in the downward direction. This is because if one block is enlarged downward, it overlaps with another one-dimensional barcode area including valid blocks such as block number (1, 8) and block number (2, 9). By such processing, a one-dimensional barcode area in an appropriate range can be determined.
After S6360 in FIG. 16, the processing unit 30 ends the processing of this flowchart and returns to the processing illustrated in FIG. 11.

<4−4.一次元バーコードの読み取り>
図11のS6400において、処理部30は、S6300において決定されたn個の一次元バーコードエリアの各々について、第1の画像から該当するエリアを切り取る。そして、処理部30は、バーコード解析プログラム32を用いて一次元バーコードの読み取りを行う。
以上のように、一次元バーコードの解析が行われる。
<4-4. Reading one-dimensional barcode>
In S6400 of FIG. 11, the processing unit 30 cuts out a corresponding area from the first image for each of the n one-dimensional barcode areas determined in S6300. Then, the processing unit 30 reads the one-dimensional barcode using the barcode analysis program 32.
As described above, the one-dimensional barcode is analyzed.

<5.二次元バーコードの解析>
図20は、上記画像処理装置40において二次元バーコードを解析する処理の詳細を示すフローチャートである。図20に示される処理は、図3のS6000のサブルーチンとして、処理部30によって行われる。図20に示される処理は、特に言及しない限り、画像処理プログラム31に基づいて行われる。
<5. Analysis of 2D barcode>
FIG. 20 is a flowchart showing details of processing for analyzing a two-dimensional barcode in the image processing apparatus 40. The processing shown in FIG. 20 is performed by the processing unit 30 as a subroutine of S6000 in FIG. The processing shown in FIG. 20 is performed based on the image processing program 31 unless otherwise specified.

<5−1.第2の処理ブロックの抽出>
まず、図20のS6500において、処理部30は、図3のS5000で生成された第2の画像から複数の第2の処理ブロックを抽出する。第2の処理ブロックは、複数の画素を含む。第2の処理ブロックは、第1の処理ブロックと同じ画素数を有していてもよいし、異なる画素数を有していてもよい。第2の処理ブロックの画素数は、入出力部10を用いてユーザーによって設定されてもよい。また、S6500において、第2の処理ブロックは互いに重ならないように設定されてもよい。S6500の処理を行うモジュールは、本開示の第5のモジュールに相当し得る。
<5-1. Extraction of second processing block>
First, in S6500 of FIG. 20, the processing unit 30 extracts a plurality of second processing blocks from the second image generated in S5000 of FIG. The second processing block includes a plurality of pixels. The second processing block may have the same number of pixels as the first processing block, or may have a different number of pixels. The number of pixels of the second processing block may be set by the user using the input / output unit 10. In S6500, the second processing blocks may be set so as not to overlap each other. The module that performs the process of S6500 may correspond to the fifth module of the present disclosure.

図21は、図20のS6500において第2の画像から抽出された複数の第2の処理ブロックを示す。図21においては、複数の第2の処理ブロックの各々は、4行×4列の16画素を含むものとしている。以下の説明において、ブロック番号(i,j)を横方向の座標iと縦方向の座標jを用いて特定するものとする。   FIG. 21 shows a plurality of second processing blocks extracted from the second image in S6500 of FIG. In FIG. 21, each of the plurality of second processing blocks includes 16 pixels of 4 rows × 4 columns. In the following description, the block number (i, j) is specified using the horizontal coordinate i and the vertical coordinate j.

<5−2.有効ブロックか否かの判定>
図20のS6600において、処理部30は、複数の第2の処理ブロックの各々について、当該ブロックが有効ブロックか否かを判定する。当該ブロックが有効ブロックか否かの判定は、例えば、当該ブロックに黒点が所定数以上含まれるか否かによって行われる。所定数は、ブロック内の画素数の10%以上、50%以下の範囲で設定される。S6600の処理を行うモジュールは、本開示の第6のモジュールに相当し得る。
図22は、複数の第2の処理ブロックの各々についての有効ブロックか否かの判定結果を示す。図22において、有効ブロックは「A」で示され、無効ブロックは「X」で示されている。
<5-2. Determining whether the block is valid>
In S6600 of FIG. 20, the processing unit 30 determines, for each of the plurality of second processing blocks, whether the block is an effective block. The determination of whether or not the block is an effective block is performed based on, for example, whether or not the block includes a predetermined number or more of black spots. The predetermined number is set in a range of 10% to 50% of the number of pixels in the block. The module that performs the process of S6600 may correspond to the sixth module of the present disclosure.
FIG. 22 shows the determination result as to whether each of the plurality of second processing blocks is an effective block. In FIG. 22, the valid block is indicated by “A” and the invalid block is indicated by “X”.

<5−3.二次元バーコードエリアの決定>
図20のS6700において、処理部30は、複数の第2の処理ブロックの各々について得られた有効ブロックか否かの判定結果に基づいて、二次元バーコードが含まれる可能性のある二次元バーコードエリアを決定する。S6700の処理を行うモジュールは、本開示の第7のモジュールに相当し得る。二次元バーコードエリアの決定は、以下のように行われる。
図23は、上記画像処理装置40において二次元バーコードエリアを決定する処理の詳細を示すフローチャートである。図23に示される処理は、図20のS6700のサブルーチンとして、処理部30によって行われる。
<5-3. Determination of 2D barcode area>
In S6700 of FIG. 20, the processing unit 30 determines a two-dimensional bar code that may contain a two-dimensional bar code based on the determination result of whether or not the block is an effective block obtained for each of the plurality of second processing blocks. Determine the code area. The module that performs the process of S6700 may correspond to the seventh module of the present disclosure. The two-dimensional barcode area is determined as follows.
FIG. 23 is a flowchart showing details of processing for determining a two-dimensional barcode area in the image processing apparatus 40. The processing shown in FIG. 23 is performed by the processing unit 30 as a subroutine of S6700 in FIG.

まず、図23のS6710において、処理部30は、二次元バーコードエリアをカウントするカウンタnの値を1にセットする。また、処理部は、二次元バーコードエリアを決定する過程で当該二次元バーコードエリアの先頭の行番号を記憶する変数Jminの値を1にセットする。
次に、図23のS6720において、処理部30は、n番目の二次元バーコードエリアを抽出する。
First, in S6710 of FIG. 23, the processing unit 30 sets the value of the counter n that counts the two-dimensional barcode area to 1. In addition, the processing unit sets the value of the variable Jmin that stores the leading row number of the two-dimensional barcode area to 1 in the process of determining the two-dimensional barcode area.
Next, in S6720 of FIG. 23, the processing unit 30 extracts the n-th two-dimensional barcode area.

図24は、上記画像処理装置40においてn番目の二次元バーコードエリアを抽出する処理の詳細を示すフローチャートである。図24に示される処理は、図23のS6720のサブルーチンとして、処理部30によって行われる。   FIG. 24 is a flowchart showing details of processing for extracting the n-th two-dimensional barcode area in the image processing apparatus 40. The processing shown in FIG. 24 is performed by the processing unit 30 as a subroutine of S6720 in FIG.

まず、S6721において、処理部30は、n番目の二次元バーコードエリアを抽出するために、先頭の行番号Jminから数えて何行目を注目しているか、を示すカウンタmを0に設定する。   First, in S6721, the processing unit 30 sets a counter m that indicates what line is counted from the first line number Jmin to 0 in order to extract the n-th two-dimensional barcode area. .

次に、S6722において、処理部30は、Jminの行にN個以上連続する有効ブロックがあるか否かを判定する。閾値Nは、例えば、3個以上でもよい。Jminの行において連続する有効ブロックのうちの左端に位置する有効ブロックをI(m)minとし、Jminの行において連続する有効ブロックのうちの右端に位置する有効ブロックをI(m)maxとする。S6722においては、mの値が0なので、I(m)minはI(0)minであり、I(m)maxはI(0)maxである。
Jminの行にN個以上連続する有効ブロックがない場合(S6722;NO)、処理部は、処理をS6728に進める。
Next, in S6722, the processing unit 30 determines whether there are N or more effective blocks in the row of Jmin. The threshold value N may be three or more, for example. The effective block located at the left end of consecutive effective blocks in the row of Jmin is defined as I (m) min, and the effective block positioned at the right end of consecutive effective blocks in the row of Jmin is defined as I (m) max. . In S6722, since the value of m is 0, I (m) min is I (0) min, and I (m) max is I (0) max.
When there are no N or more effective blocks in the row of Jmin (S6722; NO), the processing unit advances the processing to S6728.

S6728において、処理部30は、Jminの値が、第2の画像に含まれる複数の第2の処理ブロックのうちの最終の行番号Jから閾値Nを減算した値より大きいか否かを判定する。
Jminの値が、最終の行番号Jから閾値Nを減算した値よりも大きくない場合(S6728;NO)、処理部30は、処理をS6729に進める。
In S6728, the processing unit 30 determines whether or not the value of Jmin is larger than a value obtained by subtracting the threshold N from the last row number J of the plurality of second processing blocks included in the second image. .
When the value of Jmin is not larger than the value obtained by subtracting the threshold value N from the final line number J (S6728; NO), the processing unit 30 advances the processing to S6729.

S6729において、処理部30は、現在のJminの値に1を加算してJminの値を更新し、処理を上述のS6721に戻す。これにより、S6722において、次の行にN個以上連続する有効ブロックがあるか否かを判定する。   In S6729, the processing unit 30 adds 1 to the current value of Jmin, updates the value of Jmin, and returns the process to S6721 described above. Thereby, in S6722, it is determined whether there are N or more effective blocks in the next row.

図25は、二次元バーコードエリアを抽出する過程を示す。図25においては、上から3行目において3個の連続する有効ブロックがあった場合を示している。
図24において、Jminの行にN個以上連続する有効ブロックがある場合(S6722;YES)、処理部は、処理をS6723に進める。
FIG. 25 shows a process of extracting a two-dimensional barcode area. FIG. 25 shows a case where there are three continuous effective blocks in the third row from the top.
In FIG. 24, when there are N or more effective blocks in the row of Jmin (S6722; YES), the processing unit advances the processing to S6723.

S6723において、処理部30は、カウンタmの値に1を加算してmの値を更新する。
次に、S6724において、処理部30は、Jmin+mの行にM個以上の有効ブロックがあるか否かを判定する。例えば、m=1の場合、処理部30は、先頭の行番号Jminの次の行について、有効ブロックの数をカウントし、有効ブロックの数がM個以上であるか否かを判定する。S6724における有効ブロックの数のカウントは、以下のように行う。
In S6723, the processing unit 30 adds 1 to the value of the counter m and updates the value of m.
Next, in S6724, the processing unit 30 determines whether there are M or more effective blocks in the row of Jmin + m. For example, when m = 1, the processing unit 30 counts the number of valid blocks for the row next to the first row number Jmin, and determines whether the number of valid blocks is M or more. The number of valid blocks in S6724 is counted as follows.

第1に、直前のJmin+m−1の行における有効ブロックのうちの左端に位置する有効ブロックI(m-1)minと、Jmin+m−1の行における有効ブロックのうちの右端に位置する有効ブロックI(m-1)maxとの間に位置する処理ブロックに対して、それぞれ、直下の処理ブロックが有効ブロック(A)であれば有効ブロック(B)とし、無効ブロック(X)であれば無効ブロック(Y)とする。但し、直前のJmin+m−1の行における有効ブロック(A)の直下の無効ブロック(X)については、Jmin+mの行に限って有効ブロック(C)として扱う。
第2に、I(m-1)minの直下のブロックの左隣のブロックが有効ブロック(A)であるときは、このブロックも有効ブロック(B)とする。左側に有効ブロック(A)が連続するときは、これらの連続する有効ブロックをすべて有効ブロック(B)とする。
同様に、I(m-1)maxの直下のブロックの右隣のブロックが有効ブロック(A)であるときは、このブロックも有効ブロック(B)とする。右側に有効ブロック(A)が連続するときは、これらの連続する有効ブロックをすべて有効ブロック(B)とする。
第3に、Jmin+mの行に存在する有効ブロック(B)又は(C)の数をカウントする。
First, the effective block I (m−1) min located at the left end of the effective blocks in the immediately preceding Jmin + m−1 row and the effective block I positioned at the right end of the effective blocks in the Jmin + m−1 row. (m-1) With respect to the processing block located between max, if the processing block immediately below is a valid block (A), it is a valid block (B), and if it is an invalid block (X), it is an invalid block. (Y). However, the invalid block (X) immediately below the valid block (A) in the previous Jmin + m−1 row is treated as the valid block (C) only in the Jmin + m row.
Secondly, when the block immediately to the left of the block immediately below I (m−1) min is a valid block (A), this block is also designated as a valid block (B). When effective blocks (A) continue on the left side, all of these continuous effective blocks are set as effective blocks (B).
Similarly, when the block immediately to the right of the block immediately below I (m−1) max is a valid block (A), this block is also designated as a valid block (B). When valid blocks (A) continue on the right side, all these valid blocks are valid blocks (B).
Third, the number of effective blocks (B) or (C) existing in the row of Jmin + m is counted.

S6724において、有効ブロック(B)又は(C)はM個連続していなくてもよい。閾値Mは、例えば、N個以上で、且つ、直前のJmin+m−1の行における有効ブロック(B)又は(C)の数の0.5倍以上であることを条件とする。
Jmin+mの行における有効ブロック(B)又は(C)のうちの左端に位置する有効ブロック(B)又は(C)をI(m)minとし、Jmin+mの行における有効ブロック(B)又は(C)のうちの右端に位置する有効ブロック(B)又は(C)をI(m)maxとする。
M個以上の有効ブロック(B)又は(C)がある場合(S6724;YES)、処理部30は、処理を上述のS6723に戻してカウンタmの値に1を加算し、次の行にM個以上の有効ブロックがあるか否かを判定する。
図25に示される例においては、m=1のときに有効ブロックが5個に増加し、m=2のときに有効ブロックが7個に増加し、m=5のときに有効ブロックが8個に増加している。
M個以上の有効ブロック(B)又は(C)がない場合(S6724;NO)、処理部30は、処理をS6725に進める。
図25に示される例においては、m=5のときに有効ブロックが8個であったのに対し、m=6のときに有効ブロックが3個に減少している。すなわち、直前の行における有効ブロックの数の0.5倍未満となっている。
In S6724, M effective blocks (B) or (C) may not be consecutive. The threshold value M is, for example, provided that it is N or more and 0.5 or more times the number of effective blocks (B) or (C) in the immediately preceding row of Jmin + m−1.
The effective block (B) or (C) located at the left end of the effective block (B) or (C) in the row of Jmin + m is defined as I (m) min, and the effective block (B) or (C) in the row of Jmin + m Of these, the effective block (B) or (C) located at the right end is defined as I (m) max.
When there are M or more effective blocks (B) or (C) (S6724; YES), the processing unit 30 returns the processing to the above-mentioned S6723, adds 1 to the value of the counter m, and adds M to the next row. It is determined whether there are more than one valid block.
In the example shown in FIG. 25, the number of effective blocks increases to 5 when m = 1, the number of effective blocks increases to 7 when m = 2, and the number of effective blocks increases to 8 when m = 5. Has increased.
When there are no M or more effective blocks (B) or (C) (S6724; NO), the processing unit 30 advances the processing to S6725.
In the example shown in FIG. 25, there are 8 effective blocks when m = 5, whereas the number of effective blocks is reduced to 3 when m = 6. That is, it is less than 0.5 times the number of effective blocks in the immediately preceding row.

S6725において、n番目の二次元バーコードエリアを特定するためのInmin、Inmax、Jnmin、及びJnmaxの値を、それぞれ以下のように算出する。
行番号Jminから数えて0行目からm−1行目までの有効ブロックのうちの左端の有効ブロックI(0)min、I(1)min、...、I(m-1)minの最小値を、Inminとする。なお、I(m)minは、S6724においてM個以上の有効ブロックがなかった行についての左端の有効ブロックなので、S6725においては使用しない。
行番号Jminから数えて0行目からm−1行目までの有効ブロックのうちの右端の有効ブロックI(0)max、I(1)max、...、I(m-1)maxの最大値を、Inmaxとする。なお、I(m)maxは、S6724においてM個以上の有効ブロックがなかった行についての右端の有効ブロックなので、S6725においては使用しない。
行番号Jminを、Jnminとする。
行番号Jmin+m−1を、Jnmaxとする。なお、Jmin+mは、S6724においてM個以上の有効ブロックがなかった行なので、S6725においては使用しない。
In S6725, values of Inmin, Inmax, Jnmin, and Jnmax for specifying the n-th two-dimensional barcode area are calculated as follows.
Of the effective blocks from the 0th line to the (m-1) th line counted from the line number Jmin, the leftmost effective block I (0) min, I (1) min, ..., I (m-1) min The minimum value is Inmin. Note that I (m) min is the leftmost effective block for a row in which there are no M or more effective blocks in S6724, and is not used in S6725.
Of the effective blocks from the 0th line to the (m-1) th line counted from the line number Jmin, the rightmost effective blocks I (0) max, I (1) max, ..., I (m-1) max The maximum value is Inmax. Note that I (m) max is the rightmost effective block for a row in which there are no M or more effective blocks in S6724, and is not used in S6725.
Let line number Jmin be Jnmin.
The line number Jmin + m−1 is Jnmax. Note that Jmin + m is a line in which there are no M or more effective blocks in S6724, and is not used in S6725.

次に、S6726において、Inmin、Inmax、Jnmin、及びJnmaxで特定される処理ブロック(Inmin,Jnmin)から(Inmax,Jnmax)までを、判定済みの処理ブロックとする。
次に、S6727において、処理部30は、カウンタmの値がN以上であるか否かを判定する。
Next, in S6726, the processing blocks (Inmin, Jnmin) to (Inmax, Jnmax) specified by Inmin, Inmax, Jnmin, and Jnmax are determined as determined processing blocks.
Next, in S6727, the processing unit 30 determines whether or not the value of the counter m is N or more.

カウンタmの値がN以上である場合(S6727;YES)、処理部30は、ブロック番号(Inmin−1,Jnmin−1)から(Inmax+1,Jnmax+1)までをn番目の二次元バーコードエリアとする。このように、判定済みの処理ブロックよりも二次元バーコードエリアを上下左右に拡大することにより、適切な範囲の二次元バーコードエリアを抽出できる。拡大幅は1ブロック分でなくてもよく、例えば2ブロック分でも3ブロック分でもよい。
その後、処理部30は、本フローチャートの処理を終了して、図23に示される処理に戻る。
When the value of the counter m is N or more (S6727; YES), the processing unit 30 sets the block numbers (Inmin-1, Jnmin-1) to (Inmax + 1, Jnmax + 1) as the nth two-dimensional barcode area. . As described above, by expanding the two-dimensional barcode area vertically and horizontally from the determined processing block, it is possible to extract a two-dimensional barcode area in an appropriate range. The enlargement width may not be one block, for example, two blocks or three blocks.
Thereafter, the processing unit 30 ends the processing of this flowchart and returns to the processing shown in FIG.

カウンタmの値がN以上ではない場合(S6727;NO)、有効ブロックのj方向の行数が少ないので、(Inmin,Jnmin)から(Inmax,Jnmax)までを二次元バーコードエリアにはしない。この場合、処理部30は、上述のS6721に処理を戻す。これにより、S6722において、Jminの行にN個以上連続する有効ブロックがあるか否かを判定する。なお、既に判定済みとなっている処理ブロック(Inmin,Jnmin)から(Inmax,Jnmax)までについては、その後は有効ブロックの判定をしない。また、S6727からS6722に処理を戻すときに、Jminの値は更新しない。行番号Jminの中に、判定済みではない有効ブロックがあれば、その有効ブロックを起点として、上述のS6721からS6726までの処理を行う。   When the value of the counter m is not N or more (S6727; NO), since the number of rows in the j direction of the effective block is small, (Inmin, Jnmin) to (Inmax, Jnmax) are not set as the two-dimensional barcode area. In this case, the processing unit 30 returns the process to S6721 described above. Thereby, in S6722, it is determined whether there are N or more effective blocks in the row of Jmin. For the processing blocks (Inmin, Jnmin) to (Inmax, Jnmax) that have already been determined, valid blocks are not determined thereafter. Further, the value of Jmin is not updated when the process returns from S6727 to S6722. If there is a valid block that has not been determined in the line number Jmin, the above-described processing from S6721 to S6726 is performed starting from the valid block.

上述のS6728において、Jminの値が、第2の画像に含まれる複数の第2の処理ブロックのうちの最終の行番号Jから閾値Nを減算した値より大きい場合(S6728;YES)、Jminに1を加算してもj方向にN行以上の有効ブロックが存在することはない。この場合、処理部30は、n番目の二次元バーコードエリアを抽出せずに本フローチャートの処理を終了して、図23に示される処理に戻る。   In S6728 described above, when the value of Jmin is larger than the value obtained by subtracting the threshold N from the last row number J of the plurality of second processing blocks included in the second image (S6728; YES), Even if 1 is added, there is no valid block of N rows or more in the j direction. In this case, the processing unit 30 ends the process of this flowchart without extracting the n-th two-dimensional barcode area, and returns to the process shown in FIG.

図25に実線の太枠で示されるように、ブロック番号(Inmin−1,Jnmin−1)から(Inmax+1,Jnmax+1)までが二次元バーコードエリアとして抽出されている。   As shown by the solid thick frame in FIG. 25, block numbers (Inmin-1, Jnmin-1) to (Inmax + 1, Jnmax + 1) are extracted as two-dimensional barcode areas.

図23のS6740において、処理部30は、二次元バーコードエリアをすべて抽出したか否かを判定する。例えば、処理部30は、上述のS6728においてYESと判定されていた場合には、二次元バーコードエリアをすべて抽出したと判定する。   In S6740 of FIG. 23, the processing unit 30 determines whether or not all the two-dimensional barcode areas have been extracted. For example, when it is determined YES in S6728 described above, the processing unit 30 determines that all the two-dimensional barcode areas have been extracted.

二次元バーコードエリアをすべて抽出していない場合(S6740;NO)、処理部30は、S6750において、カウンタnの値に1を加算してnの値を更新する。その後、処理部30は、上述のS6720に処理を戻して、n番目の二次元バーコードエリアを抽出する。S6750において、Jminの値は変更しない。従って、S6720に処理を戻したときも、従前のJminの行から順番に、n番目の二次元バーコードエリアを抽出する。
二次元バーコードエリアをすべて抽出した場合(S6740;YES)、処理部30は、S6760に処理を進める。
図25は、一点鎖線の太枠で示されるもう1つの二次元バーコードエリアが抽出されたことを示している。
When all the two-dimensional barcode areas have not been extracted (S6740; NO), the processing unit 30 adds 1 to the value of the counter n and updates the value of n in S6750. Thereafter, the processing unit 30 returns the processing to the above-described S6720 and extracts the n-th two-dimensional barcode area. In S6750, the value of Jmin is not changed. Therefore, even when the processing is returned to S6720, the n-th two-dimensional barcode area is extracted in order from the previous row of Jmin.
When all the two-dimensional barcode areas are extracted (S6740; YES), the processing unit 30 advances the process to S6760.
FIG. 25 shows that another two-dimensional bar code area indicated by a thick dashed-dotted frame is extracted.

S6760において、処理部30は、複数の隣接する二次元バーコードエリアがある場合に、これらの隣接する二次元バーコードエリアを結合して1つの二次元バーコードエリアとする。
図25に示されるように、実線の太枠で示される二次元バーコードエリアと、これに隣接する一点鎖線の太枠で示される二次元バーコードエリアと、を結合することにより、適切な二次元バーコードエリアを抽出することができる。
図23のS6760の後、処理部30は、本フローチャートの処理を終了し、図20に示される処理に戻る。
In S6760, when there are a plurality of adjacent two-dimensional barcode areas, the processing unit 30 combines these adjacent two-dimensional barcode areas into one two-dimensional barcode area.
As shown in FIG. 25, an appropriate two-dimensional bar code area indicated by a solid thick frame and a two-dimensional bar code area indicated by a thick one-dot chain line adjacent to the two-dimensional bar code area are combined. A dimension barcode area can be extracted.
After S6760 in FIG. 23, the processing unit 30 ends the processing of this flowchart and returns to the processing illustrated in FIG.

<5−4.二次元バーコードの読み取り>
図20のS6900において、処理部30は、S6700において決定された二次元バーコードエリアの各々について二次元バーコードの読み取りを行う。二次元バーコードの読み取りは、以下のように行われる。
図26は、上記画像処理装置40において二次元バーコードを読み取る処理の詳細を示すフローチャートである。図26に示される処理は、図20のS6900のサブルーチンとして、処理部30によって行われる。
<5-4. Reading 2D barcodes>
In S6900 of FIG. 20, the processing unit 30 reads the two-dimensional barcode for each of the two-dimensional barcode areas determined in S6700. The reading of the two-dimensional barcode is performed as follows.
FIG. 26 is a flowchart showing details of processing for reading a two-dimensional barcode in the image processing apparatus 40. The processing shown in FIG. 26 is performed by the processing unit 30 as a subroutine of S6900 in FIG.

まず、図26のS6901において、処理部30は、1つの二次元バーコードエリアを中心として上下左右に範囲を広げた画像を、第1の画像から切り取る。
図27(A)は、S6901において切り取られる画像の範囲の例を一点鎖線で示す。S6901において切り取られる画像の範囲は、破線で示される二次元バーコードエリアに対して、上方向及び下方向のそれぞれに、当該二次元バーコードエリアの縦の幅と同じ幅だけ広げ、左方向及び右方向のそれぞれに、当該二次元バーコードエリアの横の幅と同じ幅だけ広げた範囲とする。
次に、S6902において、処理部30は、画像の加工バリエーションを示すカウンタkの値を1にセットする。
First, in S6901 of FIG. 26, the processing unit 30 cuts out an image whose range is expanded vertically and horizontally around one two-dimensional barcode area from the first image.
FIG. 27A shows an example of a range of an image cut out in S6901 by a one-dot chain line. The range of the image cut out in S6901 is expanded in the upward and downward directions by the same width as the vertical width of the two-dimensional barcode area with respect to the two-dimensional barcode area indicated by the broken line. In each of the right directions, the range is widened by the same width as the horizontal width of the two-dimensional barcode area.
In step S6902, the processing unit 30 sets the value of the counter k indicating the image processing variation to 1.

次に、S6903において、処理部30は、カウンタkの値に応じた画像の加工を行い、第3の画像を生成する。S6903の処理を行うモジュールは、本開示の第8のモジュールに相当し得る。
図27(B)〜図27(E)は、画像の加工バリエーションの例を示す。図27(B)に示されるように、1つの加工バリエーションは、二次元バーコードエリアの左下側に読み取り範囲を拡大するものでもよい。読み取り範囲は、左側及び下側にそれぞれ二次元バーコードエリアの幅と同じ幅だけ拡大してもよい。また、他の加工バリエーションとして、二次元バーコードエリアの右下側に読み取り範囲を拡大するもの、右上側に読み取り範囲を拡大するもの、左上側に読み取り範囲を拡大するものがそれぞれあってもよい。このように斜め方向に読み取り範囲を拡大し、画像の中心位置をずらすことにより、画像の左右方向又は上下方向での濃淡バランスが調整され、バーコード解析プログラム32による読み取りが成功することがある。
また、図27(C)に示されるように、他の加工バリエーションとして、読み取り範囲の拡大幅が図27(B)に示される拡大幅と異なるものがあってもよい。読み取り範囲は、左側及び下側にそれぞれ二次元バーコードエリアの幅の半分の幅だけ拡大してもよい。このように拡大幅を変えた加工バリエーションは、二次元バーコードエリアの右下側に読み取り範囲を拡大するもの、右上側に読み取り範囲を拡大するもの、左上側に読み取り範囲を拡大するものについてそれぞれあってもよい。
Next, in S6903, the processing unit 30 processes the image according to the value of the counter k, and generates a third image. The module that performs the process of S6903 may correspond to the eighth module of the present disclosure.
FIG. 27B to FIG. 27E show examples of image processing variations. As shown in FIG. 27 (B), one processing variation may be to enlarge the reading range on the lower left side of the two-dimensional barcode area. The reading range may be enlarged on the left side and the lower side by the same width as the width of the two-dimensional barcode area. Further, as other processing variations, there may be one that expands the reading range on the lower right side of the two-dimensional barcode area, one that expands the reading range on the upper right side, and one that expands the reading range on the upper left side. . In this way, by expanding the reading range in an oblique direction and shifting the center position of the image, the contrast of the image in the horizontal direction or the vertical direction is adjusted, and the barcode analysis program 32 may succeed in reading.
In addition, as shown in FIG. 27C, as another processing variation, there may be an enlarged width of the reading range different from the enlarged width shown in FIG. The reading range may be enlarged on the left side and the lower side by half the width of the two-dimensional barcode area. The processing variations with different enlargement widths are those that expand the reading range on the lower right side of the two-dimensional barcode area, those that expand the reading range on the upper right side, and those that expand the reading range on the upper left side, respectively. There may be.

また、図27(D)に示されるように、他の加工バリエーションとして、読み取り範囲を上下左右にほぼ均等に拡大してもよい。さらに他の加工バリエーションとして、読み取り範囲の拡大幅が図27(D)と異なるものがあってもよい。例えば、読み取り範囲の拡大幅が8段階のバリエーションを有していてもよい。
また、図27(E)に示されるように、他の加工バリエーションとして、画像を所定角度回転させたものがあってもよい。この所定角度には、例えば、2度きざみで22段階のバリエーションが存在してもよい。さらに、所定角度が同じでも、読み取り範囲の大きさに応じて、加工バリエーションが存在してもよい。
図27(A)に示されるように、S6901において画像を切り取ってから種々の加工を行うことにより、第1の画像から直接種々の加工を行う場合に比べて計算量を軽減できる。
In addition, as shown in FIG. 27D, as another processing variation, the reading range may be enlarged substantially uniformly in the vertical and horizontal directions. Furthermore, as another processing variation, there may be one in which the expansion width of the reading range is different from that in FIG. For example, the expansion range of the reading range may have eight variations.
In addition, as shown in FIG. 27E, as another processing variation, there may be an image rotated by a predetermined angle. This predetermined angle may have 22 stages of variation in increments of 2 degrees, for example. Furthermore, even if the predetermined angle is the same, processing variations may exist depending on the size of the reading range.
As shown in FIG. 27A, the amount of calculation can be reduced by performing various processes after cutting out the image in S6901, as compared with the case of performing various processes directly from the first image.

次に、S6904において、処理部30は、S6903において加工された画像と、バーコード解析プログラム32とを用いて二次元バーコードの読み取りを行う。S6904の処理を行うモジュールは、本開示の第9のモジュールに相当し得る。
次に、S6905において、処理部30は、二次元バーコードの読み取りが成功したか否かを判定する。二次元バーコードの読み取りが成功した場合(S6905;YES)、処理部30は、本フローチャートの処理を終了する。二次元バーコードの読み取りが成功しなかった場合(S6905;NO)、処理部30は、S6906において、カウンタkが最大値kmaxに達したか否かを判定する。
In step S6904, the processing unit 30 reads a two-dimensional barcode using the image processed in step S6903 and the barcode analysis program 32. The module that performs the process of S6904 may correspond to the ninth module of the present disclosure.
In step S6905, the processing unit 30 determines whether the two-dimensional barcode has been successfully read. When the reading of the two-dimensional barcode is successful (S6905; YES), the processing unit 30 ends the process of this flowchart. If reading of the two-dimensional barcode is not successful (S6905; NO), the processing unit 30 determines in S6906 whether the counter k has reached the maximum value kmax.

カウンタkが最大値kmaxに達していない場合(S6906;NO)、処理部30は、カウンタkの値に1を加算してkの値を更新し、別の加工バリエーションによって画像の加工を行い、二次元バーコードの読み取りを試みる。
カウンタkが最大値kmaxに達した場合(S6906;YES)、処理部30は、S6907において、読み取りエラーを示す信号を出力して、本フローチャートの処理を終了する。
図26の処理は、S6700で抽出されたすべての二次元バーコードエリアについてそれぞれ行われる。
When the counter k does not reach the maximum value kmax (S6906; NO), the processing unit 30 adds 1 to the value of the counter k to update the value k, and processes the image by another processing variation, Attempts to read 2D barcodes.
When the counter k reaches the maximum value kmax (S6906; YES), the processing unit 30 outputs a signal indicating a reading error in S6907 and ends the process of this flowchart.
The processing in FIG. 26 is performed for all the two-dimensional barcode areas extracted in S6700.

<6.その他>
本開示の範囲は、特許請求の範囲に記述される。その他、本開示は以下の発明を含む。
[請求項A]
第5から第7のモジュールを含む画像処理装置であって、
前記第5のモジュールは、第2の画像から複数の第2の処理ブロックを抽出し、
前記第6のモジュールは、前記複数の第2の処理ブロックの各々について、バーコードの一部が含まれる可能性の高い有効ブロックか否かを判定し、
前記第7のモジュールは、前記複数の第2の処理ブロックのうちの前記有効ブロックと判定された複数のブロックの存在位置に基づいて、前記第2の画像において1つのバーコードが含まれる可能性のあるバーコードエリアを抽出する、
画像処理装置。
[請求項A1]
請求項Aに記載の画像処理装置であって、
前記第5のモジュールは、前記複数の第2の処理ブロックの各々が、前記複数の第2の処理ブロックのうちの少なくとももう1つの第2の処理ブロックと一部重なるように、前記複数の第2の処理ブロックを抽出する、
画像処理装置。
[請求項A2]
請求項A1に記載の画像処理装置であって、
前記第5のモジュールは、前記第2の画像に含まれる少なくとも1つの一次元バーコードの明暗パターンの繰り返し方向を示すデータが入力された場合に、前記複数の第2の処理ブロックの各々が、前記繰り返し方向と交差する方向に前記もう1つの第2の処理ブロックと一部重なるように、前記複数の第2の処理ブロックを抽出する、
画像処理装置。
[請求項A3]
請求項Aに記載の画像処理装置であって、
前記第6のモジュールは、前記複数の第2の処理ブロックの各々について、
当該第2の処理ブロックの画素配列から複数の第1の列又は行を抽出し、前記複数の第1の列又は行の各々は、第1の所定方向を有し、かつ所定幅を有し、
前記複数の第1の列又は行の各々が白線か、黒線か、いずれでもないかを判定し、
前記複数の第1の列又は行のうちの白線の数と、前記複数の第1の列又は行のうちの黒線の数と、に基づいて、当該第2の処理ブロックが前記有効ブロックか否かを判定する、
画像処理装置。
[請求項A4]
請求項A3に記載の画像処理装置であって、
前記第6のモジュールは、前記第2の画像に含まれる少なくとも1つの一次元バーコードの明暗パターンの繰り返し方向を示すデータが入力された場合に、当該繰り返し方向と前記第1の所定方向とが交差するように前記複数の第1の列又は行を抽出する、
画像処理装置。
[請求項A5]
請求項A3に記載の画像処理装置であって、
前記第6のモジュールは、前記複数の第2の処理ブロックの各々について、
当該第2の処理ブロックの画素配列から複数の第2の行又は列を抽出し、前記複数の第2の行又は列の各々は、前記第1の所定方向と交差する第2の所定方向を有し、かつ前記所定幅を有し、
前記複数の第2の行又は列の各々が白線か、白線でないかを判定し、
前記複数の第1の列又は行のうちの白線の数と前記複数の第2の行又は列のうちの白線の数とを比較した比較結果に基づいて、当該第2の処理ブロックが前記有効ブロックか否かを判定する、
画像処理装置。
[請求項A6]
請求項A3に記載の画像処理装置であって、
前記第6のモジュールは、前記複数の第2の処理ブロックの各々について、
当該第2の処理ブロックの画素配列から複数の第2の行又は列を抽出し、前記複数の第2の行又は列の各々は、前記第1の所定方向と交差する第2の所定方向を有し、かつ前記所定幅を有し、
前記複数の第2の行又は列の各々が黒線か、黒線でないかを判定し、
前記複数の第1の列又は行のうちの黒線の数と前記複数の第2の行又は列のうちの黒線の数とを比較した比較結果に基づいて、当該第2の処理ブロックが前記有効ブロックか否かを判定する、
画像処理装置。
[請求項A7]
請求項Aに記載の画像処理装置であって、
前記第7のモジュールは、前記有効ブロックと判定された複数のブロックのうちの隣接又は一部重なるブロックを関連付けることにより、複数のバーコードエリアを抽出し、
前記複数のバーコードエリアの各々について、当該バーコードエリアを、前記複数のバーコードエリアのうちの他のバーコードエリアと重ならないように拡大する、
画像処理装置。
[請求項B]
第7から第10のモジュールを含む画像処理装置であって、
前記第7のモジュールは、第1の画像から、1つのバーコードが含まれる可能性のあるバーコードエリアを抽出し、
前記第8のモジュールは、前記第1の画像から、前記バーコードエリアを含む第3の画像を生成し、
前記第9のモジュールは、前記第8のモジュールが生成した画像に対してバーコード解析プログラムを実行し、
前記第8のモジュールは、前記第9のモジュールによるバーコードの解析が失敗したときに、前記第1の画像から、前記バーコードエリアを含み且つ前記第3の画像と異なる範囲の第4の画像を生成する、
画像処理装置。
[請求項B1]
請求項Bに記載の画像処理装置であって、
前記第8のモジュールは、前記第3の画像の中心位置と前記第4の画像の中心位置とが互いに異なるように前記第4の画像を生成する、
画像処理装置。
<6. Other>
The scope of the present disclosure is set forth in the claims. In addition, the present disclosure includes the following inventions.
[Claim A]
An image processing apparatus including fifth to seventh modules,
The fifth module extracts a plurality of second processing blocks from the second image,
The sixth module determines whether each of the plurality of second processing blocks is an effective block that is likely to include a part of a barcode,
The seventh module may include one barcode in the second image based on the presence positions of the plurality of blocks determined as the effective block among the plurality of second processing blocks. Extract the barcode area with
Image processing device.
[Claim A1]
An image processing apparatus according to claim A,
The fifth module includes the plurality of second processing blocks such that each of the plurality of second processing blocks partially overlaps at least one second processing block of the plurality of second processing blocks. 2 processing blocks are extracted,
Image processing device.
[Claim A2]
An image processing apparatus according to claim A1,
When the data indicating the repetition direction of the light / dark pattern of at least one one-dimensional barcode included in the second image is input to the fifth module, each of the plurality of second processing blocks includes: Extracting the plurality of second processing blocks so as to partially overlap the second processing block in a direction crossing the repetition direction;
Image processing device.
[Claim A3]
An image processing apparatus according to claim A,
The sixth module is configured for each of the plurality of second processing blocks.
A plurality of first columns or rows are extracted from the pixel array of the second processing block, and each of the plurality of first columns or rows has a first predetermined direction and a predetermined width. ,
Determining whether each of the plurality of first columns or rows is a white line or a black line;
Whether the second processing block is the effective block based on the number of white lines in the plurality of first columns or rows and the number of black lines in the plurality of first columns or rows. Determine whether or not
Image processing device.
[Claim A4]
An image processing apparatus according to claim A3,
When the data indicating the repetition direction of the light / dark pattern of at least one one-dimensional barcode included in the second image is input, the sixth module determines the repetition direction and the first predetermined direction. Extracting the plurality of first columns or rows to intersect;
Image processing device.
[Claim A5]
An image processing apparatus according to claim A3,
The sixth module is configured for each of the plurality of second processing blocks.
A plurality of second rows or columns are extracted from the pixel array of the second processing block, and each of the plurality of second rows or columns has a second predetermined direction intersecting the first predetermined direction. And having the predetermined width,
Determining whether each of the plurality of second rows or columns is a white line or not a white line;
Based on a comparison result of comparing the number of white lines in the plurality of first columns or rows and the number of white lines in the plurality of second rows or columns, the second processing block is determined to be the effective Determine whether it is a block,
Image processing device.
[Claim A6]
An image processing apparatus according to claim A3,
The sixth module is configured for each of the plurality of second processing blocks.
A plurality of second rows or columns are extracted from the pixel array of the second processing block, and each of the plurality of second rows or columns has a second predetermined direction intersecting the first predetermined direction. And having the predetermined width,
Determining whether each of the plurality of second rows or columns is a black line or not a black line;
Based on the comparison result of comparing the number of black lines in the plurality of first columns or rows with the number of black lines in the plurality of second rows or columns, the second processing block is Determining whether the block is valid;
Image processing device.
[Claim A7]
An image processing apparatus according to claim A,
The seventh module extracts a plurality of barcode areas by associating adjacent or partially overlapping blocks among the plurality of blocks determined as the effective block,
For each of the plurality of barcode areas, the barcode area is enlarged so as not to overlap other barcode areas of the plurality of barcode areas.
Image processing device.
[Claim B]
An image processing apparatus including seventh to tenth modules,
The seventh module extracts a barcode area that may contain one barcode from the first image;
The eighth module generates a third image including the barcode area from the first image,
The ninth module executes a barcode analysis program on the image generated by the eighth module;
When the barcode analysis by the ninth module fails, the eighth module includes, from the first image, a fourth image including the barcode area and having a range different from the third image. Generate
Image processing device.
[Claim B1]
An image processing apparatus according to claim B,
The eighth module generates the fourth image so that a center position of the third image and a center position of the fourth image are different from each other;
Image processing device.

10…入出力部、20…撮像部、30…処理部、40…画像処理装置、50…トレイ、51…商品、52…文字、53…バーコード DESCRIPTION OF SYMBOLS 10 ... Input-output part, 20 ... Imaging part, 30 ... Processing part, 40 ... Image processing apparatus, 50 ... Tray, 51 ... Goods, 52 ... Character, 53 ... Bar code

Claims (13)

第1から第4のモジュールを含む画像処理装置であって、
前記第1のモジュールは、第1の画像から複数の第1の処理ブロックを抽出し、前記複数の第1の処理ブロックの各々は複数の画素を含み、
前記第2のモジュールは、前記複数の第1の処理ブロックの各々について、前記複数の画素の階調を示す値の平均値を算出し、
前記第3のモジュールは、前記複数の第1の処理ブロックの各々について、当該ブロックの周辺に位置する複数の周辺ブロックについて前記第2のモジュールによりそれぞれ算出された複数の第1の平均値に基づいて、当該ブロックについて前記第2のモジュールにより算出された第2の平均値を補正することにより、補正平均値を算出し、
前記第4のモジュールは、前記第1の画像に含まれる複数の画素の各々の階調を示す値と、前記複数の第1の処理ブロックのうちの1つのブロックであって当該画素が含まれる当該1つのブロックについて算出された前記補正平均値と、に基づいて、第2の画像を生成する、
画像処理装置。
An image processing apparatus including first to fourth modules,
The first module extracts a plurality of first processing blocks from a first image, and each of the plurality of first processing blocks includes a plurality of pixels,
The second module calculates, for each of the plurality of first processing blocks, an average value of values indicating gradations of the plurality of pixels;
The third module is based on a plurality of first average values respectively calculated by the second module for a plurality of peripheral blocks located around the block for each of the plurality of first processing blocks. The corrected average value is calculated by correcting the second average value calculated by the second module for the block,
The fourth module includes a value indicating the gradation of each of the plurality of pixels included in the first image and one block of the plurality of first processing blocks, and the pixel is included. Generating a second image based on the corrected average value calculated for the one block;
Image processing device.
請求項1に記載の画像処理装置であって、
前記第3のモジュールが算出する前記補正平均値は、前記複数の第1の平均値に第1の重みを付与し、前記第2の平均値に前記第1の重みより大きい第2の重みを付与して算出される前記複数の第1の平均値と前記第2の平均値との平均値である、
画像処理装置。
The image processing apparatus according to claim 1,
The corrected average value calculated by the third module assigns a first weight to the plurality of first average values, and sets a second weight greater than the first weight to the second average value. It is an average value of the plurality of first average values and the second average value calculated by giving,
Image processing device.
請求項1に記載の画像処理装置であって、
前記第2の画像は二値画像であり、
前記第4のモジュールは、
前記第1の画像に含まれる複数の画素の各々の階調を示す値が、当該画素が含まれる当該1つのブロックについて算出された前記補正平均値より明るいことを示す場合に、前記第2の画像において当該画素に相当する画素を白点とし、
前記第1の画像に含まれる複数の画素の各々の階調を示す値が、当該画素が含まれる当該1つのブロックについて算出された前記補正平均値より暗いことを示す場合に、前記第2の画像において当該画素に相当する画素を黒点とする、
画像処理装置。
The image processing apparatus according to claim 1,
The second image is a binary image;
The fourth module includes:
When the value indicating the gradation of each of the plurality of pixels included in the first image is brighter than the corrected average value calculated for the one block including the pixel, the second A pixel corresponding to the pixel in the image is a white point,
When the value indicating the gradation of each of the plurality of pixels included in the first image is darker than the corrected average value calculated for the one block including the pixel, the second A pixel corresponding to the pixel in the image is a black dot.
Image processing device.
請求項1に記載の画像処理装置であって、
第5から第7のモジュールを含む画像処理装置をさらに備え、
前記第5のモジュールは、第2の画像から複数の第2の処理ブロックを抽出し、
前記第6のモジュールは、前記複数の第2の処理ブロックの各々について、バーコードの一部が含まれる可能性の高い有効ブロックか否かを判定し、
前記第7のモジュールは、前記複数の第2の処理ブロックのうちの前記有効ブロックと判定された複数のブロックの存在位置に基づいて、前記第2の画像において1つのバーコードが含まれる可能性のあるバーコードエリアを抽出する、
画像処理装置。
The image processing apparatus according to claim 1,
An image processing apparatus including fifth to seventh modules;
The fifth module extracts a plurality of second processing blocks from the second image,
The sixth module determines whether each of the plurality of second processing blocks is an effective block that is likely to include a part of a barcode,
The seventh module may include one barcode in the second image based on the presence positions of the plurality of blocks determined as the effective block among the plurality of second processing blocks. Extract the barcode area with
Image processing device.
請求項4に記載の画像処理装置であって、
前記第5のモジュールは、前記複数の第2の処理ブロックの各々が、前記複数の第2の処理ブロックのうちの少なくとももう1つの第2の処理ブロックと一部重なるように、前記複数の第2の処理ブロックを抽出する、
画像処理装置。
The image processing apparatus according to claim 4,
The fifth module includes the plurality of second processing blocks such that each of the plurality of second processing blocks partially overlaps at least one second processing block of the plurality of second processing blocks. 2 processing blocks are extracted,
Image processing device.
請求項4に記載の画像処理装置であって、
前記第5のモジュールは、前記第2の画像に含まれる少なくとも1つの一次元バーコードの明暗パターンの繰り返し方向を示すデータが入力された場合に、前記複数の第2の処理ブロックの各々が、前記繰り返し方向と交差する方向に前記もう1つの第2の処理ブロックと一部重なるように、前記複数の第2の処理ブロックを抽出する、
画像処理装置。
The image processing apparatus according to claim 4,
When the data indicating the repetition direction of the light / dark pattern of at least one one-dimensional barcode included in the second image is input to the fifth module, each of the plurality of second processing blocks includes: Extracting the plurality of second processing blocks so as to partially overlap the second processing block in a direction crossing the repetition direction;
Image processing device.
請求項4に記載の画像処理装置であって、
前記第6のモジュールは、前記複数の第2の処理ブロックの各々について、
当該第2の処理ブロックの画素配列から複数の第1の列又は行を抽出し、前記複数の第1の列又は行の各々は、第1の所定方向を有し、かつ所定幅を有し、
前記複数の第1の列又は行の各々が白線か、黒線か、いずれでもないかを判定し、
前記複数の第1の列又は行のうちの白線の数と、前記複数の第1の列又は行のうちの黒線の数と、に基づいて、当該第2の処理ブロックが前記有効ブロックか否かを判定する、
画像処理装置。
The image processing apparatus according to claim 4,
The sixth module is configured for each of the plurality of second processing blocks.
A plurality of first columns or rows are extracted from the pixel array of the second processing block, and each of the plurality of first columns or rows has a first predetermined direction and a predetermined width. ,
Determining whether each of the plurality of first columns or rows is a white line or a black line;
Whether the second processing block is the effective block based on the number of white lines in the plurality of first columns or rows and the number of black lines in the plurality of first columns or rows. Determine whether or not
Image processing device.
請求項7に記載の画像処理装置であって、
前記第6のモジュールは、前記第2の画像に含まれる少なくとも1つの一次元バーコードの明暗パターンの繰り返し方向を示すデータが入力された場合に、当該繰り返し方向と前記第1の所定方向とが交差するように前記複数の第1の列又は行を抽出する、
画像処理装置。
The image processing apparatus according to claim 7,
When the data indicating the repetition direction of the light / dark pattern of at least one one-dimensional barcode included in the second image is input, the sixth module determines the repetition direction and the first predetermined direction. Extracting the plurality of first columns or rows to intersect;
Image processing device.
請求項7に記載の画像処理装置であって、
前記第6のモジュールは、前記複数の第2の処理ブロックの各々について、
当該第2の処理ブロックの画素配列から複数の第2の行又は列を抽出し、前記複数の第2の行又は列の各々は、前記第1の所定方向と交差する第2の所定方向を有し、かつ前記所定幅を有し、
前記複数の第2の行又は列の各々が白線か、白線でないかを判定し、
前記複数の第1の列又は行のうちの白線の数と前記複数の第2の行又は列のうちの白線の数とを比較した比較結果に基づいて、当該第2の処理ブロックが前記有効ブロックか否かを判定する、
画像処理装置。
The image processing apparatus according to claim 7,
The sixth module is configured for each of the plurality of second processing blocks.
A plurality of second rows or columns are extracted from the pixel array of the second processing block, and each of the plurality of second rows or columns has a second predetermined direction intersecting the first predetermined direction. And having the predetermined width,
Determining whether each of the plurality of second rows or columns is a white line or not a white line;
Based on a comparison result of comparing the number of white lines in the plurality of first columns or rows and the number of white lines in the plurality of second rows or columns, the second processing block is determined to be the effective Determine whether it is a block,
Image processing device.
請求項7に記載の画像処理装置であって、
前記第6のモジュールは、前記複数の第2の処理ブロックの各々について、
当該第2の処理ブロックの画素配列から複数の第2の行又は列を抽出し、前記複数の第2の行又は列の各々は、前記第1の所定方向と交差する第2の所定方向を有し、かつ前記所定幅を有し、
前記複数の第2の行又は列の各々が黒線か、黒線でないかを判定し、
前記複数の第1の列又は行のうちの黒線の数と前記複数の第2の行又は列のうちの黒線の数とを比較した比較結果に基づいて、当該第2の処理ブロックが前記有効ブロックか否かを判定する、
画像処理装置。
The image processing apparatus according to claim 7,
The sixth module is configured for each of the plurality of second processing blocks.
A plurality of second rows or columns are extracted from the pixel array of the second processing block, and each of the plurality of second rows or columns has a second predetermined direction intersecting the first predetermined direction. And having the predetermined width,
Determining whether each of the plurality of second rows or columns is a black line or not a black line;
Based on the comparison result of comparing the number of black lines in the plurality of first columns or rows with the number of black lines in the plurality of second rows or columns, the second processing block is Determining whether the block is valid;
Image processing device.
請求項4に記載の画像処理装置であって、
前記第7のモジュールは、前記有効ブロックと判定された複数のブロックのうちの隣接又は一部重なるブロックを関連付けることにより、複数のバーコードエリアを抽出し、
前記複数のバーコードエリアの各々について、当該バーコードエリアを、前記複数のバーコードエリアのうちの他のバーコードエリアと重ならないように拡大する、
画像処理装置。
The image processing apparatus according to claim 4,
The seventh module extracts a plurality of barcode areas by associating adjacent or partially overlapping blocks among the plurality of blocks determined as the effective block,
For each of the plurality of barcode areas, the barcode area is enlarged so as not to overlap other barcode areas of the plurality of barcode areas.
Image processing device.
第7から第9のモジュールを含む画像処理装置であって、
前記第7のモジュールは、第1の画像から、1つのバーコードが含まれる可能性のあるバーコードエリアを抽出し、
前記第8のモジュールは、前記第1の画像から、前記バーコードエリアを含む第3の画像を生成し、
前記第9のモジュールは、前記第8のモジュールが生成した画像に対してバーコード解析プログラムを実行し、
前記第8のモジュールは、前記第9のモジュールによるバーコードの解析が失敗したときに、前記第1の画像から、前記バーコードエリアを含み且つ前記第3の画像と異なる範囲の第4の画像を生成する、
画像処理装置。
An image processing apparatus including seventh to ninth modules,
The seventh module extracts a barcode area that may contain one barcode from the first image;
The eighth module generates a third image including the barcode area from the first image,
The ninth module executes a barcode analysis program on the image generated by the eighth module;
When the barcode analysis by the ninth module fails, the eighth module includes, from the first image, a fourth image including the barcode area and having a range different from the third image. Generate
Image processing device.
請求項12に記載の画像処理装置であって、
前記第8のモジュールは、前記第3の画像の中心位置と前記第4の画像の中心位置とが互いに異なるように前記第4の画像を生成する、
画像処理装置。
The image processing apparatus according to claim 12,
The eighth module generates the fourth image so that a center position of the third image and a center position of the fourth image are different from each other;
Image processing device.
JP2016167411A 2016-08-29 2016-08-29 Image processing device for reading multiple bar code Pending JP2018036737A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016167411A JP2018036737A (en) 2016-08-29 2016-08-29 Image processing device for reading multiple bar code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016167411A JP2018036737A (en) 2016-08-29 2016-08-29 Image processing device for reading multiple bar code

Publications (1)

Publication Number Publication Date
JP2018036737A true JP2018036737A (en) 2018-03-08

Family

ID=61567537

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016167411A Pending JP2018036737A (en) 2016-08-29 2016-08-29 Image processing device for reading multiple bar code

Country Status (1)

Country Link
JP (1) JP2018036737A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024085229A1 (en) * 2022-10-21 2024-04-25 グローリー株式会社 Image processing device, image processing system, information code search method, and information code search program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024085229A1 (en) * 2022-10-21 2024-04-25 グローリー株式会社 Image processing device, image processing system, information code search method, and information code search program

Similar Documents

Publication Publication Date Title
JP4909216B2 (en) Character segmentation device, method and program
US8534560B2 (en) Two-dimensional code reader and program
JP6157138B2 (en) Image processing device
JPWO2004084125A1 (en) Information input / output method using dot pattern
JPWO2006100720A1 (en) Code image processing method
KR101450782B1 (en) Image processing device and program
JP2000261650A (en) Image processing unit
JP4774390B2 (en) Character segmentation device, method and program
EP1686532A1 (en) Image processing apparatus, image processing program, and readable recording medium
US10032059B2 (en) Image analyzing apparatus that identifies barcode image in target image
US10931942B2 (en) Evaluation system and evaluation method
JPS59136875A (en) Pattern identifier
JP2018036737A (en) Image processing device for reading multiple bar code
JP4436202B2 (en) Image quality improvement using partial template matching
US5271067A (en) Optical character recognition apparatus
US7701467B2 (en) Character display apparatus, character display method, character display program, and recording medium
JP6790601B2 (en) Image analyzer
US7957594B2 (en) Outline definition apparatus and outline definition method, and image processing apparatus
US11003902B2 (en) Image identification apparatus and non-transitory computer readable medium
JP2007079586A (en) Image processor
JP2007079587A (en) Image processor
JP6704726B2 (en) Edge detection device, edge detection method, and program
US8452104B2 (en) Image determination apparatus, computer readable medium storing program, and method
JP5911352B2 (en) Image processing apparatus and control method thereof
JP2005149439A (en) Image processor and image processing method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190712

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200728

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210209