[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2022135893A - Optical information reader - Google Patents

Optical information reader Download PDF

Info

Publication number
JP2022135893A
JP2022135893A JP2021164236A JP2021164236A JP2022135893A JP 2022135893 A JP2022135893 A JP 2022135893A JP 2021164236 A JP2021164236 A JP 2021164236A JP 2021164236 A JP2021164236 A JP 2021164236A JP 2022135893 A JP2022135893 A JP 2022135893A
Authority
JP
Japan
Prior art keywords
decoding
image
processing
code
inference
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
JP2021164236A
Other languages
Japanese (ja)
Inventor
郁生 山田
Ikuo Yamada
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.)
Keyence Corp
Original Assignee
Keyence Corp
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 Keyence Corp filed Critical Keyence Corp
Priority to US17/542,538 priority Critical patent/US11694048B2/en
Publication of JP2022135893A publication Critical patent/JP2022135893A/en
Priority to US18/198,322 priority patent/US12039400B2/en
Priority to US18/731,499 priority patent/US20240320455A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Image Processing (AREA)
  • Character Input (AREA)

Abstract

To preventing the load of inferring processing from causing a prolong of a processing time while increasing the accuracy of reading by inferring processing of a machine learning.SOLUTION: The optical information reading device has a processor including: an inferring processing unit for performing inferring processing of inputting a read image into a neural network and generating an ideal image for the read image; and a decoding processing unit of executing first decoding processing of decoding the read image and second decoding processing of decoding the ideal image generated by the inferring processing unit. The processor executes the inferring processing and the first decoding processing in parallel, and also executes the second decoding processing after the inferring processing is completed.SELECTED DRAWING: Figure 16

Description

本発明は、情報を光学的に読み取る光学的情報読取装置に関する。 The present invention relates to an optical information reader that optically reads information.

近年、たとえば物品の流通経路を製造段階から消費段階あるいは廃棄段階まで追跡可能にする、いわゆるトレーサビリティが重要視されてきており、このトレーサビリティを目的としたコードリーダが普及してきている。また、トレーサビリティ以外にもコードリーダは様々な分野で利用されている。 BACKGROUND ART In recent years, so-called traceability, which enables, for example, traceability of a distribution route of an article from a manufacturing stage to a consumption stage or a disposal stage, has been emphasized, and code readers for the purpose of this traceability have become popular. Code readers are also used in various fields other than traceability.

一般的に、コードリーダは、ワークに付されたバーコードや二次元コード等のコードをカメラによって撮影し、得られた画像に含まれるコードを画像処理によって切り出して二値化し、デコード処理して情報を読み取ることができるように構成されており、情報を光学的に読み取る装置であることから光学的情報読取装置とも呼ばれている。 Generally, a code reader photographs a code such as a bar code or a two-dimensional code attached to a workpiece with a camera, extracts the code contained in the obtained image by image processing, binarizes it, and decodes it. It is configured to be able to read information, and is also called an optical information reader because it is a device for optically reading information.

この種の光学的情報読取装置としては、例えば特許文献1に開示されているように、ロボットの視覚センサにより取得したコードの画像と、理想的なコードの画像との関係を示すモデル構造を学習する機械学習装置を備えたものが知られている。特許文献1には、運用時に視覚センサにより取得したコードの画像に、機械学習装置による学習結果を適用することで、読み取りに適した画像に修復することが記載されている。 As disclosed in Patent Document 1, for example, this type of optical information reading device learns a model structure showing the relationship between a code image acquired by a visual sensor of a robot and an ideal code image. There is known a machine equipped with a machine learning device that Patent Document 1 describes restoring an image suitable for reading by applying learning results from a machine learning device to an image of a code acquired by a visual sensor during operation.

特許第6683666号公報Japanese Patent No. 6683666

ところで、機械学習による画像の修復、即ち理想画像の推論処理はプロセッサの演算負荷が重く、処理に時間がかかる。そのため、読み取りが難しくない読取画像、即ち印字状態が良好な読取画像であれば、ニューラルネットワークに入力して理想画像の推論処理を実行するまでもなく、ただちに読取画像に対してデコード処理を実行する方が処理時間を考慮すると好ましい。一方、機械学習による推論処理が必要かどうかを読取画像から事前に判断することは容易ではなく、また、デコード処理と機械学習による推論処理をシリアルに実施すると処理に時間がかかってしまう。 By the way, image restoration by machine learning, that is, inference processing of an ideal image imposes a heavy computational load on a processor and takes a long time to process. Therefore, if the read image is not difficult to read, that is, if the read image is in good printing condition, it is not necessary to input it to the neural network and execute the inference processing of the ideal image, and the read image is immediately subjected to decoding processing. Considering the processing time, this method is preferable. On the other hand, it is not easy to determine in advance from the read image whether inference processing by machine learning is necessary or not, and serial execution of decoding processing and inference processing by machine learning takes time.

本発明は、かかる点に鑑みてなされたものであり、その目的とするところは、機械学習の推論処理によって読み取り精度を向上させながら、当該推論処理の負荷によって処理時間が長時間化してしまうのを抑制することにある。 The present invention has been made in view of this point, and its purpose is to improve the reading accuracy by inference processing of machine learning, but to prevent the processing time from becoming long due to the load of the inference processing. is to suppress

上記目的を達成するために、本開示の一態様では、ワークに付されたコードを読み取る光学的情報読取装置を前提とすることができる。光学的情報読取装置は、コードを撮影し、読取画像を生成するカメラと、前記カメラにより生成された読取画像に対応する理想画像を推定するためのニューラルネットワークの構造及びパラメータを記憶する記憶部と、前記記憶部に記憶された構造及びパラメータで構成されたニューラルネットワークに前記カメラにより生成された読取画像を入力し、前記読取画像に対応する理想画像を生成する推論処理を実行する推論処理部と、前記カメラにより生成された読取画像をデコードする第1デコード処理と前記推論処理部が生成した理想画像をデコードする第2デコード処理とを実行するデコード処理部とを有するプロセッサとを備えている。前記プロセッサは、前記推論処理部による推論処理と前記デコード処理部による第1デコード処理とを並列的に実行するとともに、前記推論処理部による推論処理の完了後に、前記デコード処理部による前記第2デコード処理を実行するように構成されている。 In order to achieve the above object, one aspect of the present disclosure can presuppose an optical information reading device that reads a code attached to a work. The optical information reading device includes a camera that captures a code and generates a read image, and a storage unit that stores the structure and parameters of a neural network for estimating an ideal image corresponding to the read image generated by the camera. an inference processing unit that inputs the read image generated by the camera to a neural network configured with the structure and parameters stored in the storage unit, and executes inference processing for generating an ideal image corresponding to the read image; , a decoding processing unit for executing a first decoding process for decoding the read image generated by the camera and a second decoding process for decoding the ideal image generated by the inference processing unit. The processor executes inference processing by the inference processing unit and first decoding processing by the decoding processing unit in parallel, and after the inference processing by the inference processing unit is completed, the second decoding by the decoding processing unit. configured to do the work.

この構成によれば、コードの印字状態が悪い場合のように、光学的情報読取装置の運用時にカメラにより生成された読取画像がコードの読取に適していない場合には、カメラにより生成された読取画像を推論処理部に入力して推論処理を実行することで理想画像が生成される。一方、コードの印字状態が良好な場合のように、光学的情報読取装置の運用時にカメラにより生成された読取画像がコードの読取に適している場合には、カメラにより生成された読取画像を推論処理部に入力することなく、デコード処理部で第1デコード処理する。推論処理と、第1デコード処理とが並列的に実行されるので、推論処理が必要な読取画像に対する推論処理の実行中に、推論処理が不要な別の読取画像に対するデコード処理を実行すること、または、推論処理が不要な読取画像に対するデコード処理の実行中に、推論処理が必要な別の読取画像に対する推論処理を実行することができる。これにより、処理時間が短縮される。尚、第1デコード処理と、推論処理とが同じ読取画像に対して実行されてもよい。 According to this configuration, when the read image generated by the camera during the operation of the optical information reading device is not suitable for reading the code, such as when the print condition of the code is poor, the read image generated by the camera An ideal image is generated by inputting an image to the inference processing unit and executing inference processing. On the other hand, if the read image generated by the camera during the operation of the optical information reading device is suitable for reading the code, such as when the code printing condition is good, the read image generated by the camera is inferred. First decoding processing is performed in the decoding processing unit without being input to the processing unit. Since the inference processing and the first decoding processing are executed in parallel, executing the decoding processing for another read image that does not require the inference processing while the inference processing is being executed for the read image that requires the inference processing; Alternatively, inference processing can be executed for another read image that requires inference processing while decoding processing is being executed for a read image that does not require inference processing. This shortens the processing time. Note that the first decoding process and the inference process may be performed on the same read image.

また、推論処理部による推論処理の完了後には、第2デコード処理を実行して理想画像をデコードするので、読み取り精度が高まる。 Further, after the inference processing by the inference processing unit is completed, the second decoding processing is executed to decode the ideal image, so the reading accuracy is enhanced.

本開示の他の態様では、前記デコード処理部が、前記第1デコード処理と前記第2デコード処理とを別スレッドで並列的に実行するコアを有していてもよい。 In another aspect of the present disclosure, the decoding processing section may have a core that executes the first decoding process and the second decoding process in parallel in separate threads.

本開示の他の態様では、前記デコード処理部が、前記第1デコード処理と前記第2デコード処理とを異なるコアで実行可能なマルチコアで構成されていてもよい。 In another aspect of the present disclosure, the decoding processing unit may be configured with multi-cores capable of executing the first decoding process and the second decoding process with different cores.

この構成によれば、第1デコード処理を実行するコアと、第2デコード処理を実行するコアとが別のコアになるので、第1デコード処理と第2デコード処理と並列的に実行でき、処理時間が短縮される。 According to this configuration, since the core that executes the first decoding process and the core that executes the second decoding process are different cores, the first decoding process and the second decoding process can be executed in parallel. time is reduced.

本開示の他の態様では、前記デコード処理部が、前記カメラにより生成された読取画像の中からコードが存在する可能性が高いコード候補領域を抽出する抽出処理と、当該抽出処理により読取画像の中から抽出された部分画像をデコードする前記第1デコード処理とを実行する汎用コアを有している。前記推論処理部は、抽出処理により読取画像の中から抽出された部分画像を入力し、当該読取画像に対応する理想画像を生成する推論処理を実行する推論処理専用コアを有している。 In another aspect of the present disclosure, the decoding processing unit extracts a code candidate area in which a code is likely to exist from the read image generated by the camera, and extracts the read image by the extraction process. and a general-purpose core for executing the first decoding process for decoding the partial image extracted from the inside. The inference processing unit has an inference processing dedicated core that inputs a partial image extracted from a read image by extraction processing and executes inference processing for generating an ideal image corresponding to the read image.

この構成によれば、コード候補領域の抽出処理と、抽出処理により抽出された部分画像をデコードする第1デコード処理とを汎用コアで実行し、推論処理を汎用コアとは別の推論処理に特化した推論処理専用コアで実行することができるので、推論処理を高速化できる。 According to this configuration, the general-purpose core executes the code candidate region extraction process and the first decoding process of decoding the partial image extracted by the extraction process, and the inference process is performed by the inference process different from the general-purpose core. Inference processing can be accelerated because it can be executed on a dedicated inference processing core.

本開示の他の態様では、前記汎用コアが、前記推論処理専用コアによる推論処理で生成された理想画像をデコードする第2デコード処理を実行するものである。 In another aspect of the present disclosure, the general-purpose core executes second decoding processing for decoding an ideal image generated by the inference processing performed by the inference processing dedicated core.

本開示の他の態様では、前記汎用コアが、前記抽出処理を実行する第1コアと、前記第1デコード処理を実行する第2コアと、前記第2デコード処理を実行する第3コアとを有している。 In another aspect of the present disclosure, the general-purpose core includes a first core that executes the extraction process, a second core that executes the first decoding process, and a third core that executes the second decoding process. have.

この構成によれば、抽出処理、第1デコード処理及び第2デコード処理を全て別のコアで実行することができる。特に、第2コア及び第3コアをデコード処理に特化したコアにすることができるので、処理がより一層高速化する。 According to this configuration, the extraction process, the first decoding process, and the second decoding process can all be executed by separate cores. In particular, since the second core and the third core can be specialized for decoding processing, the processing speed is further increased.

本開示の他の態様では、前記推論処理専用コアによる推論処理で理想画像が生成された場合、前記汎用コアが前記第1デコード処理に優先して前記理想画像をデコードする前記第2デコード処理を実行するものである。 In another aspect of the present disclosure, when an ideal image is generated by the inference processing performed by the inference processing dedicated core, the general-purpose core performs the second decoding processing for decoding the ideal image prior to the first decoding processing. to execute.

すなわち、推論処理で理想画像が生成される場合は、カメラで生成された読取画像に対する第1デコード処理の処理時間が長くかかり、読み取りにくい画像であると考えられる。従って、理想画像が生成された場合には、カメラで生成された読取画像に対する第1デコード処理に優先して理想画像をデコードすることで、結果的に短時間で高精度な読み取り結果が得られる。 That is, when an ideal image is generated by the inference processing, the processing time of the first decoding processing for the read image generated by the camera takes a long time, and the image is considered to be difficult to read. Therefore, when an ideal image is generated, the ideal image is decoded prior to the first decoding process for the read image generated by the camera, and as a result, a highly accurate reading result can be obtained in a short time. .

本開示の他の態様では、前記汎用コアによる抽出処理の結果、複数の前記部分画像が抽出された場合、前記推論処理専用コアが、複数の前記部分画像に対して所定の順番に従って推論処理を実行することができる。また、前記汎用コアは、前記抽出処理の結果、複数の前記部分画像が抽出された場合、複数の前記部分画像に対して所定の順番に従って前記第1デコード処理を実行することができる。 In another aspect of the present disclosure, when a plurality of the partial images are extracted as a result of the extraction processing by the general-purpose core, the inference processing dedicated core performs inference processing on the plurality of partial images according to a predetermined order. can be executed. Further, when a plurality of partial images are extracted as a result of the extraction processing, the general-purpose core can execute the first decoding processing on the plurality of partial images according to a predetermined order.

すなわち、ワークを撮影して1枚の読取画像が生成された場合に、その1枚の読取画像に複数のコード候補領域が存在することがある。この場合、複数の部分画像が抽出されることになる。複数の部分画像に対して、例えば推論処理の優先度が高い順番に推論処理を実行することができる。また、複数の部分画像に対して、例えばデコード処理の優先度が高い順番に第1デコード処理を実行することができる。優先度は、所定の順番を決定するための条件に基づくものであってもよく、例えばコードの可能性が高い部分画像から処理を実行していってもよい。 That is, when one read image is generated by photographing a workpiece, a plurality of code candidate areas may exist in the one read image. In this case, multiple partial images are extracted. Inference processing can be performed on a plurality of partial images, for example, in descending order of the priority of the inference processing. In addition, the first decoding process can be executed on a plurality of partial images, for example, in descending order of decoding process priority. The priority may be based on a condition for determining a predetermined order, and for example, processing may be performed starting with partial images that are more likely to be codes.

本開示の他の態様では、前記プロセッサが、前記第1デコード処理でデコードに成功した場合は、前記推論処理部による推論処理を終了させるように構成されている。 In another aspect of the present disclosure, the processor is configured to end the inference processing by the inference processing unit when decoding is successful in the first decoding processing.

すなわち、第1デコード処理は、推論処理をしていない読取画像に対するデコード処理である。この読取画像に対するデコード処理が成功したということは、読み取りが難しくない読取画像であったということであり、推論処理が不要な場合である。この場合に推論処理が途中であっても当該推論処理を終了させることで、次に入力された別の読取画像に対する推論処理を早期に開始させることが可能になる。 That is, the first decoding process is a decoding process for a read image that has not undergone inference processing. Successful decoding of the read image means that the read image is not difficult to read, and no inference processing is required. In this case, even if the inference process is in progress, by ending the inference process, it is possible to early start the inference process for another read image that is input next.

本開示の他の態様では、前記汎用コアが、前記コード候補領域を第1の所定条件で抽出する第1抽出処理と、前記コード候補領域を前記第1の所定条件よりも精度の高い抽出を可能にする第2の所定条件で抽出する第2抽出処理と、前記第1抽出処理により読取画像の中から抽出された部分画像をデコードする前記第1デコード処理とを実行することができる。また、前記推論処理専用コアは、前記第2抽出処理により読取画像の中から抽出された部分画像を入力し、当該読取画像に対応する理想画像を生成する推論処理を実行することができる。 In another aspect of the present disclosure, the general-purpose core performs a first extraction process of extracting the code candidate region under a first predetermined condition, and extracts the code candidate region with higher precision than the first predetermined condition. It is possible to execute a second extraction process of extracting under a second predetermined condition that enables and the first decoding process of decoding a partial image extracted from the read image by the first extraction process. Further, the inference processing dedicated core can execute inference processing for inputting a partial image extracted from the read image by the second extraction processing and generating an ideal image corresponding to the read image.

この構成によれば、汎用コアが、比較的精度の低い第1抽出処理と、比較的精度の高い第2抽出処理とを行うことができる。第1抽出処理は、精度が低い分、高速な抽出が可能になるので、この第1抽出処理により読取画像の中から抽出された部分画像を第1デコード処理でデコードし、デコードに成功すれば、読み取り結果を短時間で出力することができる。 According to this configuration, the general-purpose core can perform the first extraction process with relatively low precision and the second extraction process with relatively high precision. Since the accuracy of the first extraction process is low, high-speed extraction is possible. , the reading result can be output in a short time.

一方、第1デコード処理でデコードを失敗する読取画像は、読み取りが難しい画像であり、第1抽出処理での抽出が困難な場合がある。この場合には、より高精度な抽出が可能な第2抽出処理で抽出された部分画像を推論処理専用コアによって推論処理し、理想画像を生成する。生成された理想画像に対して第2デコード処理することで、読み取り精度が高まる。 On the other hand, a read image for which decoding fails in the first decoding process is an image that is difficult to read and may be difficult to extract in the first extraction process. In this case, the partial image extracted by the second extraction process capable of extracting with higher accuracy is subjected to inference processing by the inference processing core to generate the ideal image. Reading accuracy is improved by subjecting the generated ideal image to the second decoding process.

すなわち、第1デコード処理は、読み取りが簡単な読取画像の読み取り結果を高速に出力することができ、また、第2デコード処理は、第1デコード処理でデコードを失敗する可能性の高い読取画像に対しても読み取りを可能にしてデコードが失敗する頻度を低くすることができる。 That is, the first decoding process can output the reading result of the read image that is easy to read at high speed, and the second decoding process can output the reading result of the read image that is highly likely to fail in decoding in the first decoding process. It is possible to reduce the frequency of decoding failures by enabling reading even with respect to

本開示の他の態様では、前記抽出処理により読取画像の中から抽出された部分画像が記憶されており、前記汎用コア及び前記推論処理専用コアが共にアクセス可能なメモリを光学的情報読取装置が備えている。 In another aspect of the present disclosure, the optical information reading device stores a partial image extracted from the read image by the extraction process, and stores a memory that can be accessed by both the general-purpose core and the inference process-dedicated core. I have.

この構成によれば、抽出処理による抽出結果を汎用コアと推論処理専用コアとで共有することができるので、処理を高速化できる。メモリはRAM等で構成されており、汎用コアと推論処理専用コアとが同一のRAMにアクセス可能に構成できる。 According to this configuration, the extraction result of the extraction process can be shared between the general-purpose core and the inference process-dedicated core, so that the processing speed can be increased. The memory is composed of a RAM or the like, and the general-purpose core and the dedicated inference processing core can be configured to access the same RAM.

本開示の他の態様では、前記汎用コア及び前記推論処理専用コアが同一の基板上に実装されていてもよい。この場合、前記推論処理専用コアは、ニューラルネットワークによる推論処理専用のICやFPGA等で構成することができる。 In another aspect of the present disclosure, the general-purpose core and the inference processing dedicated core may be mounted on the same substrate. In this case, the dedicated inference processing core can be composed of an IC, FPGA, or the like dedicated to inference processing by a neural network.

本開示の他の態様では、ニューラルネットワークに読取画像を入力し、読取画像を修復した修復画像を生成する推論処理を実行する画像修復部と、カメラにより生成された読取画像に対する第1デコード処理を実行する第1デコード処理部と、画像修復部が生成した修復画像に対する第2デコード処理を実行する第2デコード処理部とをさらに備えている。第2デコード処理部は、読取画像からコード候補領域を抽出するとともに、画像修復部に対し、推論処理を実行するようトリガ信号を送出する。画像修復部は、第2デコード処理部から送出されたトリガ信号を受信すると、コード候補領域に対応する部分画像をニューラルネットワークに入力し、当該部分画像を修復した修復画像を生成する推論処理を実行する。第2デコード処理部は、修復画像に基づいてコードの各セル位置を示すグリッド位置を決定し、決定したグリッド位置に基づいて当該修復画像のデコードを実行することができる。つまり、推論処理されていない通常の読取画像のデコードを第1デコード処理部が実行し、また、推論処理による修復画像の生成を画像修復部が実行し、また、推論処理により修復された修復画像のデコードを第2デコード処理部が実行することで、それぞれに適した処理回路を構築して処理速度の高速化を図ることができる。加えて、画像修復部は、コード候補領域に対応する部分画像を修復すればよいので、処理速度の更なる高速化が可能になる。 In another aspect of the present disclosure, an image restoration unit that inputs a read image to a neural network and performs an inference process to generate a restored image obtained by restoring the read image, and a first decoding process for the read image generated by the camera. and a second decoding processing unit for executing second decoding processing on the restored image generated by the image restoration unit. The second decoding processing section extracts a code candidate region from the read image and sends a trigger signal to the image restoration section to execute inference processing. When receiving the trigger signal sent from the second decoding processing unit, the image restoration unit inputs the partial image corresponding to the code candidate area to the neural network, and executes inference processing to generate a restored image by restoring the partial image. do. The second decoding processing unit can determine grid positions indicating each cell position of the code based on the restored image, and decode the restored image based on the determined grid positions. That is, the first decoding processing unit decodes a normal read image that is not subjected to inference processing, the image restoration unit generates a restored image by inference processing, and the restored image restored by inference processing By having the second decoding processing unit execute the decoding of , it is possible to construct a processing circuit suitable for each of them and to increase the processing speed. In addition, since the image restoration section only needs to restore the partial image corresponding to the code candidate area, the processing speed can be further increased.

本開示の他の態様では、画像修復部による推論処理と、第1デコード処理部による第1デコード処理を並列に実行することで、処理速度の高速化を図ることができる。また、第2デコード処理部が第2デコード処理を実行している期間の少なくとも一部は、画像修復部による推論処理が実行されない休止期間を有しているので、画像修復部の負荷低減や、発熱を抑制できる。この場合、第2デコード処理部は、複数のコアで構成されていてもよい。 In another aspect of the present disclosure, processing speed can be increased by executing inference processing by the image restoration unit and first decoding processing by the first decoding processing unit in parallel. In addition, since at least a part of the period during which the second decoding processing unit is executing the second decoding processing has a pause period during which the inference processing by the image restoration unit is not executed, the load on the image restoration unit can be reduced, Heat generation can be suppressed. In this case, the second decoding processing section may be configured with a plurality of cores.

本開示の他の態様では、第1デコード処理部は、第2デコード処理にかかる時間よりも短い時間で第1デコード処理を実行できる。また、設定部により、第2デコード処理を実行するか否か、即ち、修復画像のデコード処理を実行するか否かを切り替えることができる。第2デコード処理は、修復画像のデコード処理を実行するため、通常の読取画像のデコード処理を実行する第1デコード処理に比べて処理にかかる時間が長い。これを前提としたとき、第2デコード処理を実行すると設定されている場合は、第2デコード処理の実行に必要な時間よりも長いデコードタイムアウト時間(デコード制限時間)を設定することができる。一方、第2デコード処理を実行しないと設定されている場合は、第2デコード処理の実行に必要な時間よりも短いデコードタイムアウト時間を設定することができるので、修復画像に対するデコードがデコードタイムアウト時間を超過すると、速やかに次に撮像された画像のデコード処理に移行できる。 In another aspect of the present disclosure, the first decoding processing section can execute the first decoding process in a shorter time than the time required for the second decoding process. Further, the setting unit can switch whether or not to execute the second decoding process, that is, whether or not to execute the restored image decoding process. Since the second decoding process is for decoding the restored image, it takes longer than the first decoding process for decoding the normal read image. On this premise, if it is set to execute the second decoding process, it is possible to set a decoding timeout time (decoding limit time) longer than the time required to execute the second decoding process. On the other hand, if it is set not to execute the second decoding process, a decode timeout period shorter than the time required to execute the second decoding process can be set. When it exceeds, it is possible to quickly shift to the decoding process of the next captured image.

本開示の他の態様に係るデコード処理部は、カメラにより生成された読取画像に対する第1デコード処理と並列に、修復画像に対する第2デコード処理を実行できるので、読取画像と修復画像とが混在していても、処理速度を高速化できる。このデコード処理部は、設定部により第2デコード処理を実行しないと設定されている場合は、第2デコード処理に使われる処理のリソースを第1デコード処理に振り分けることができる。処理のリソースとは、例えばメモリの使用領域や、マルチコアCPUを構成しているコア等であり、第2デコード処理に使われる処理のリソースとしてメモリ領域やコアが予め設定されている場合に、第2デコード処理を実行しないと設定されると、そのメモリ領域やコアを第1デコード処理に使うことができるので、第1デコード処理をより一層高速化できる。 The decoding processing unit according to another aspect of the present disclosure can execute the second decoding process on the restored image in parallel with the first decoding process on the read image generated by the camera. processing speed can be increased. When the setting unit has set not to execute the second decoding process, the decoding process part can allocate processing resources used for the second decoding process to the first decoding process. The processing resource is, for example, a memory usage area, a core constituting a multi-core CPU, or the like. When the second decoding process is set not to be executed, the memory area and the core can be used for the first decoding process, so that the first decoding process can be further speeded up.

本開示の他の態様に係るデコード処理部は、読取画像からコードが存在する可能性が高いコード候補領域を抽出する。画像修復部は、コード候補領域に対応する部分画像をニューラルネットワークに入力し、当該部分画像を修復した修復画像を生成する。デコード処理部は、画像修復部が生成した修復画像に基づいてグリッド位置を決定し、決定したグリッド位置に基づいて当該修復画像のデコードを実行する。すなわち、修復画像の生成には時間がかかる場合が多いので、修復画像の生成前に、例えばコードらしさを示す特徴量に基づいてコード候補領域を抽出しておくことで、修復画像の生成に要する時間を短縮できる。また、グリッド位置の決定は修復後の画像に基づいて高精度に実行できるので、読取性能が向上する。 A decoding processing unit according to another aspect of the present disclosure extracts a code candidate area in which a code is likely to exist from a read image. The image restoration unit inputs a partial image corresponding to the code candidate area to the neural network and generates a restored image by restoring the partial image. The decoding processing unit determines a grid position based on the restored image generated by the image restoration unit, and decodes the restored image based on the determined grid position. That is, since it often takes a long time to generate a repaired image, by extracting a code candidate region based on, for example, a feature value indicating code-likeness before generating a repaired image, Save time. Also, since the grid position can be determined with high accuracy based on the restored image, reading performance is improved.

本開示の他の態様では、最適な撮像条件及びデコード条件を決定するとともに、読取対象のコードの大きさを設定するチューニング処理を実行する。デコード処理部は、チューニング処理で設定されたコードの大きさに基づき、読取画像の中からコード候補領域を含む抽出画像のサイズを決定できる。その抽出画像を予め定められたサイズの画像に拡大・縮小してニューラルネットワークに入力することで、ニューラルネットワークに入力されるコード画像のPPCを所定の範囲内に収めることができ、ニューラルネットワークによる画像修復効果を安定的に引き出すことができる。また、読取対象のコードサイズは様々であることが考えられるが、最終的にニューラルネットワークに入力されるコードのサイズを固定できるので、処理の高速性とデコードのし易さのバランスを一定以上に保つことができる。 In another aspect of the present disclosure, tuning processing is performed to determine the optimum imaging conditions and decoding conditions and to set the size of the code to be read. The decoding processing unit can determine the size of the extracted image including the code candidate area from the read image based on the size of the code set in the tuning process. By enlarging/reducing the extracted image to an image of a predetermined size and inputting it to the neural network, the PPC of the code image input to the neural network can be kept within a predetermined range. Restoration effect can be stably drawn out. In addition, although the size of the code to be read may vary, since the size of the code that is finally input to the neural network can be fixed, the balance between high speed processing and ease of decoding can be achieved. can keep.

本開示の他の態様に係るカメラは、第1偏光板を通過し、コードから反射した光を第2偏光板を介して受光し、第1偏光板及び第2偏光板を介さない場合に比べて低コントラストな読取画像を生成する。偏光板を使用することで、ワークの正反射成分が除去されるので、正反射成分の影響が軽減された読取画像を取得できる。例えば金属ワークを撮像した場合のように正反射成分が多くなる画像に偏光板は適しているものの、光量の低下によって読取画像が暗くなり、コントラストが低下することがある。このような場合に、ニューラルネットワークの推論処理によって高コントラストな修復画像に変換することで、読取性能が向上する。 A camera according to another aspect of the present disclosure receives light that passes through the first polarizing plate and is reflected from the code through the second polarizing plate. to generate a low-contrast read image. By using the polarizing plate, the specular reflection component of the workpiece is removed, so that a read image can be acquired with reduced influence of the specular reflection component. For example, a polarizing plate is suitable for an image with many regular reflection components, such as when an image of a metal workpiece is captured, but a decrease in the amount of light may darken the read image and lower the contrast. In such a case, reading performance is improved by converting the image into a high-contrast restored image through neural network inference processing.

本開示の他の態様では、チューニング実行部により、第1の撮像条件及びコード条件と、第2の撮像条件及びコード条件とを含む複数の撮像条件及びコード条件を設定することができる。デコード処理部は、第1の撮像条件及びコード条件で生成された読取画像をニューラルネットワークに入力して修復画像を生成し、当該修復画像のデコード処理に失敗した場合は、第1の撮像条件及びコード条件とは異なる第2の撮像条件及びコード条件で生成された読取画像をニューラルネットワークに入力して修復画像を生成し、当該修復画像のデコードを実行することができる。 In another aspect of the present disclosure, the tuning execution unit can set a plurality of imaging conditions and code conditions including a first imaging condition and code condition and a second imaging condition and code condition. The decode processing unit inputs the read image generated under the first imaging condition and the code condition to the neural network to generate the restored image, and if the decode processing of the restored image fails, the first imaging condition and the code condition are generated. A read image generated under second imaging conditions and code conditions different from the code conditions is input to the neural network to generate a restored image, and the restored image can be decoded.

以上説明したように、論処理部による推論処理とデコード処理部によるデコード処理とを並列的に実行するとともに、推論処理の完了後に理想画像にデコード処理を実行することができるので、推論処理によって読み取り精度を向上させながら、推論処理の負荷によって処理時間が長時間化してしまうのを抑制できる。 As described above, the inference processing by the logic processing unit and the decoding processing by the decoding processing unit can be executed in parallel. It is possible to suppress the processing time from increasing due to the load of the inference processing while improving the accuracy.

定置式の光学的情報読取装置の運用時を説明する図である。It is a figure explaining the time of operation of a stationary optical information reader. 定置式の光学的情報読取装置の斜視図である。1 is a perspective view of a stationary optical information reader; FIG. 光学的情報読取装置のブロック図である。1 is a block diagram of an optical information reader; FIG. 手持ち式の光学的情報読取装置の斜視図である。1 is a perspective view of a handheld optical information reader; FIG. プロセッサによって構成される各部を説明する図である。It is a figure explaining each part comprised by a processor. ニューラルネットワークの概念図である。1 is a conceptual diagram of a neural network; FIG. ニューラルネットワークの学習時の基本手順の一例を示すフローチャートである。4 is a flow chart showing an example of a basic procedure during learning of a neural network; 不良画像と理想画像のペアを示し、(A)は不良画像、(B)は理想画像の例である。A pair of a defective image and an ideal image is shown, where (A) is an example of a defective image and (B) is an example of an ideal image. 画像変換に用いられる畳み込みニューラルネットワークの概念図である。1 is a conceptual diagram of a convolutional neural network used for image transformation; FIG. 光学的情報読取装置の設定時に行われるチューニング工程の手順の一例を示すフローチャートである。4 is a flow chart showing an example of a procedure of a tuning process performed when setting the optical information reading device; 縮小率及び拡大率決定前のデコード処理手順の一例を示すフローチャートである。7 is a flow chart showing an example of a decoding processing procedure before determination of a reduction ratio and an enlargement ratio; 縮小率及び拡大率決定後のデコード処理手順の一例を示すフローチャートである。7 is a flow chart showing an example of a decoding process procedure after determination of a reduction rate and an enlargement rate; (A)はカメラで生成された読取画像の例を示し、(B)は画像処理フィルタ実行後の画像の例を示す図である。(A) shows an example of a read image generated by a camera, and (B) shows an example of an image after execution of an image processing filter. (A)は縮小処理後の画像の例を示し、(B)はコード領域抽出後の画像の例を示す図である。(A) shows an example of an image after reduction processing, and (B) shows an example of an image after code region extraction. ニューラルネットワークによって読取画像に対して推論処理を実行した例を示す図である。FIG. 10 is a diagram showing an example in which an inference process is performed on a read image by a neural network; 読取画像に対するデコード処理と、推論処理とを並列的に実行する場合の第1の例を示すフローチャートである。FIG. 10 is a flow chart showing a first example of parallel execution of decode processing and inference processing for a read image; FIG. 第1の例のシーケンス例1を示すシーケンス図である。FIG. 11 is a sequence diagram showing sequence example 1 of the first example; 第1の例のシーケンス例2を示すシーケンス図である。FIG. 11 is a sequence diagram showing sequence example 2 of the first example; 第1の例のシーケンス例3を示すシーケンス図である。FIG. 12 is a sequence diagram showing sequence example 3 of the first example; 読取画像に対するデコード処理と、推論処理とを並列的に実行する場合の第2の例を示すフローチャートである。FIG. 10 is a flow chart showing a second example of parallel execution of decoding processing and inference processing for a read image; FIG. 第2の例のシーケンス例を示すシーケンス図である。FIG. 12 is a sequence diagram showing a sequence example of the second example; 読取画像に対するデコード処理と、推論処理とを並列的に実行する場合の第3の例を示すフローチャートである。FIG. 11 is a flow chart showing a third example of parallel execution of decoding processing and inference processing for a read image; FIG. 第3の例のシーケンス例を示すシーケンス図である。FIG. 12 is a sequence diagram showing a sequence example of the third example; 第1デコード処理で読み取りが成功した場合のタスクシーケンス図である。FIG. 10 is a task sequence diagram when reading is successful in the first decoding process; 第2デコード処理で読み取りが成功した場合のタスクシーケンス図である。FIG. 10 is a task sequence diagram when reading is successful in the second decoding process; 第1デコード処理と第2デコード処理で読み取りが成功した場合のタスクシーケンス図である。FIG. 10 is a task sequence diagram when reading is successful in the first decoding process and the second decoding process; 第2デコード処理で2回読み取りが成功した場合のタスクシーケンス図である。FIG. 10 is a task sequence diagram when reading is successful twice in the second decoding process; 連続撮影時の読み取りシーケンス図である。FIG. 10 is a reading sequence diagram during continuous shooting; 連続撮影時のデコード処理シーケンス図である。FIG. 10 is a sequence diagram of decoding processing during continuous shooting; その他の実施形態に係るデコード処理手順の一例を示す図である。It is a figure which shows an example of the decoding processing procedure which concerns on other embodiment. 第1デコード処理部及び第2デコード処理部によるデコード処理のタイムチャートである。4 is a time chart of decoding processing by a first decoding processing unit and a second decoding processing unit; デコード処理部によるデコード処理のタイムチャートである。4 is a time chart of decoding processing by a decoding processing unit; 第1デコード処理及び第2デコード処理の一例を示すフローチャートである。4 is a flowchart showing an example of first decoding processing and second decoding processing; 各処理の画像例を示す図である。It is a figure which shows the image example of each process. 複数のニューラルネットワークを用いてコードの白黒反転に対応する場合について説明する図である。FIG. 10 is a diagram for explaining a case in which a plurality of neural networks are used to handle black-and-white inversion of a code; 1つのニューラルネットワークを用いてコードの白黒反転に対応する場合について説明する図である。FIG. 10 is a diagram for explaining a case in which one neural network is used to handle black/white inversion of a code; コントラストとマッチングレベルの関係を示すグラフである。4 is a graph showing the relationship between contrast and matching level; マッチングレベルの算出処理の一例を示すフローチャートである。7 is a flowchart illustrating an example of matching level calculation processing; 表示部に表示されるユーザインターフェースの例を示す図である。FIG. 4 is a diagram showing an example of a user interface displayed on the display unit; AIチップ付き撮像素子を用いた例を示す図である。It is a figure which shows the example using an imaging device with an AI chip.

以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、以下の好ましい実施形態の説明は、本質的に例示に過ぎず、本発明、その適用物或いはその用途を制限することを意図するものではない。 BEST MODE FOR CARRYING OUT THE INVENTION Hereinafter, embodiments of the present invention will be described in detail based on the drawings. It should be noted that the following description of preferred embodiments is essentially merely illustrative, and is not intended to limit the invention, its applications, or its uses.

(定置式の光学的情報読取装置)
図1は、本発明の実施形態に係る定置式の光学的情報読取装置1の運用時を模式的に示す図である。この例では、複数のワークWが搬送用ベルトコンベアBの上面に載置された状態で図1における矢印Yの方向へ搬送されており、そのワークWから上方へ離れた所に、実施形態に係る光学的情報読取装置1が設置されている。光学的情報読取装置1は、ワークWに付されているコードを撮影し、撮影された画像に含まれるコードをデコード処理して情報を読み取ることができるように構成されたコードリーダである。図1に示す例では、光学的情報読取装置1が定置式の場合である。この定置式の光学的情報読取装置1の運用時には、光学的情報読取装置1が動かないようにブラケット等(図示せず)に固定して使用する。尚、定置式の光学的情報読取装置1をロボット(図示せず)が把持した状態で使用してもよい。また、静止状態にあるワークWのコードを光学的情報読取装置1によって読み取るようにしてもよい。定置式の光学的情報読取装置1の運用時とは、搬送用ベルトコンベアBによって搬送されるワークWのコードを順に読み取る動作を行っている時である。
(Stationary Optical Information Reader)
FIG. 1 is a diagram schematically showing operation of a stationary optical information reader 1 according to an embodiment of the present invention. In this example, a plurality of works W are conveyed in the direction of arrow Y in FIG. Such an optical information reader 1 is installed. The optical information reader 1 is a code reader configured to photograph a code attached to a work W, decode the code contained in the photographed image, and read information. In the example shown in FIG. 1, the optical information reader 1 is of a stationary type. When the stationary optical information reader 1 is operated, it is fixed to a bracket or the like (not shown) so that the optical information reader 1 does not move. The stationary optical information reader 1 may be used while being held by a robot (not shown). Alternatively, the code of the work W in a stationary state may be read by the optical information reader 1 . The operating time of the stationary optical information reading device 1 is the time when the code of the work W conveyed by the conveying belt conveyor B is sequentially read.

また、各ワークWの外面にはコードが付されている。コードには、バーコード及び二次元コードの両方が含まれる。二次元コードとしては、たとえば、QRコード(登録商標)、マイクロQRコード、データマトリクス(Data matrix;Data code)、ベリコード(Veri code)、アズテックコード(Aztec code)、PDF417、マキシコード(Maxi code)などがある。二次元コードにはスタック型とマトリクス型があるが、本発明はいずれの二次元コードに対しても適用できる。コードは、ワークWに直接印刷あるいは刻印することによって付してもよいし、ラベルに印刷した後にワークWに貼付することによって付してもよく、その手段、方法は問わない。 A code is attached to the outer surface of each work W. As shown in FIG. Codes include both barcodes and two-dimensional codes. Examples of two-dimensional codes include QR code (registered trademark), micro QR code, data matrix (Data code), Veri code, Aztec code, PDF417, and Maxi code. and so on. Two-dimensional codes include stack type and matrix type, but the present invention can be applied to any two-dimensional code. The code may be attached by printing or stamping it directly on the work W, or by attaching it to the work W after being printed on a label.

光学的情報読取装置1は、コンピュータ100及びプログラマブル・ロジック・コントローラ(PLC)101にそれぞれ信号線100a、101aによって有線接続されているが、これに限らず、光学的情報読取装置1、コンピュータ100及びPLC101に通信モジュールを内蔵し、光学的情報読取装置1と、コンピュータ100及びPLC101とを無線接続するようにしてもよい。PLC101は、搬送用ベルトコンベアB及び光学的情報読取装置1をシーケンス制御するための制御装置であり、汎用のPLCを利用することができる。コンピュータ100は、汎用あるいは専用の電子計算機や携帯型端末等を利用することができる。 The optical information reader 1 is wired to a computer 100 and a programmable logic controller (PLC) 101 via signal lines 100a and 101a, respectively. A communication module may be incorporated in the PLC 101 to wirelessly connect the optical information reader 1 with the computer 100 and the PLC 101 . The PLC 101 is a control device for sequence-controlling the transport belt conveyor B and the optical information reader 1, and a general-purpose PLC can be used. As the computer 100, a general-purpose or dedicated computer, a portable terminal, or the like can be used.

また、光学的情報読取装置1は、その運用時において、PLC101から信号線101aを介して、コード読取の開始タイミングを規定する読取開始トリガ信号を受信する。そして、光学的情報読取装置1は、この読取開始トリガ信号に基づいてコードの撮像やデコードを行う。その後、デコードした結果は、信号線101aを介してPLC101へ送信される。このように、光学的情報読取装置1の運用時には、光学的情報読取装置1とPLC101等の外部制御装置との間で、信号線101aを介して読取開始トリガ信号の入力とデコード結果の出力が繰り返し行われる。なお、読取開始トリガ信号の入力やデコード結果の出力は、上述したように、光学的情報読取装置1とPLC101との間の信号線101aを介して行ってもよいし、それ以外の図示しない信号線を介して行ってもよい。例えば、ワークWの到着を検知するためのセンサと光学的情報読取装置1とを直接的に接続し、そのセンサから光学的情報読取装置1へ読取開始トリガ信号を入力するようにしてもよい。 During operation, the optical information reader 1 receives a read start trigger signal that defines the start timing of code reading from the PLC 101 via the signal line 101a. Then, the optical information reader 1 picks up and decodes the code based on this reading start trigger signal. After that, the decoded result is transmitted to the PLC 101 via the signal line 101a. As described above, when the optical information reader 1 is operated, the input of the reading start trigger signal and the output of the decoding result are performed between the optical information reader 1 and the external control device such as the PLC 101 via the signal line 101a. Repeatedly. The reading start trigger signal input and the decoding result output may be performed via the signal line 101a between the optical information reader 1 and the PLC 101 as described above, or other signals (not shown) may be input. You can go through the line. For example, a sensor for detecting the arrival of the work W may be directly connected to the optical information reader 1, and a reading start trigger signal may be input to the optical information reader 1 from the sensor.

図2に示すように、光学的情報読取装置1は、箱状のハウジング2と、偏光フィルタアタッチメント3と、照明部4と、カメラ5と、表示部6と、電源コネクタ7と、信号線コネクタ8とが設けられている。さらに、ハウジング2には、インジケータ9と、エイマー光照射部(光照射部)10と、操作ボタン11、12とが設けられており、インジケータ9、エイマー光照射部10及び操作ボタン11、12も光学的情報読取装置1の構成要素である。 As shown in FIG. 2, the optical information reader 1 includes a box-shaped housing 2, a polarizing filter attachment 3, an illumination section 4, a camera 5, a display section 6, a power connector 7, and a signal line connector. 8 are provided. Further, the housing 2 is provided with an indicator 9, an aimer light irradiation section (light irradiation section) 10, and operation buttons 11 and 12. The indicator 9, the aimer light irradiation section 10 and the operation buttons 11 and 12 are also provided. It is a component of the optical information reader 1 .

ハウジング2は、所定方向に長い形状となっているが、ハウジング2の形状は図示した形状に限られるものではない。ハウジング2の前側の外面には、偏光フィルタアタッチメント3が脱着可能に取り付けられている。このハウジング2の内部に、照明部4、カメラ5、エイマー光照射部10、プロセッサ20、記憶装置30、ROM40、RAM41等が収容されている。プロセッサ20、記憶装置30、ROM40及びRAM41も光学的情報読取装置1の構成要素である。 The housing 2 has a shape elongated in a predetermined direction, but the shape of the housing 2 is not limited to the illustrated shape. A polarizing filter attachment 3 is detachably attached to the front outer surface of the housing 2 . Inside the housing 2, an illumination unit 4, a camera 5, an aimer light irradiation unit 10, a processor 20, a storage device 30, a ROM 40, a RAM 41, and the like are accommodated. The processor 20 , storage device 30 , ROM 40 and RAM 41 are also components of the optical information reader 1 .

ハウジング2の前側には、照明部4が設けられている。照明部4は、光学的情報読取装置1の前方へ向けて光を照射することによってワークWの少なくともコードを照明するための部分である。図3にも示すように、照明部4は、複数の発光ダイオード((LED:Light Emission Diode)からなる第1照明部4aと、複数の発光ダイオードからなる第2照明部4bと、第1照明部4a及び第2照明部4bを駆動するLEDドライバ等からなる照明駆動部4cとを備えている。第1照明部4a及び第2照明部4bは、照明駆動部4cにより個別に駆動され、別々に点灯及び消灯させることができるようになっている。照明駆動部4cはプロセッサ20に接続されており、プロセッサ20によって照明駆動部4cが制御されるようになっている。尚、第1照明部4a及び第2照明部4bのうち、一方を省略してもよい。 A lighting section 4 is provided on the front side of the housing 2 . The illumination unit 4 is a part for illuminating at least the code of the work W by irradiating light toward the front of the optical information reading device 1 . As also shown in FIG. 3, the lighting unit 4 includes a first lighting unit 4a made up of a plurality of light emitting diodes (LEDs: Light Emission Diodes), a second lighting unit 4b made up of a plurality of light emitting diodes, and a first lighting unit 4b made up of a plurality of light emitting diodes. and an illumination drive unit 4c including an LED driver or the like for driving the unit 4a and the second illumination unit 4b.The first illumination unit 4a and the second illumination unit 4b are individually driven by the illumination drive unit 4c, The lighting drive unit 4c is connected to the processor 20, and is controlled by the processor 20. The first lighting unit 4c can be turned on and off. One of 4a and the second lighting unit 4b may be omitted.

図2に示すように、ハウジング2の前側の中央部には、カメラ5が設けられている。カメラ5の光軸方向は、照明部4による光の照射方向と略一致している。カメラ5は、コードを撮影し、読取画像を生成する部分である。図3に示すように、カメラ5は、ワークWに付されていて上記照明部4によって照明されているコードからの反射光を受光する撮像素子5aと、レンズ等を有する光学系5bと、AFモジュール(オートフォーカスモジュール)5cとを備えている。光学系5bには、ワークWのコードが付された部分から反射した光が入射するようになっており、入射した光は撮像素子5aへ向けて出射されて撮像素子5aの撮像面上で結像する。 As shown in FIG. 2, a camera 5 is provided in the central portion of the front side of the housing 2 . The direction of the optical axis of the camera 5 substantially coincides with the direction of light emitted by the illumination section 4 . The camera 5 is a part that photographs the code and generates a read image. As shown in FIG. 3, the camera 5 includes an imaging device 5a for receiving reflected light from a code attached to the work W and illuminated by the illumination unit 4, an optical system 5b having a lens and the like, an AF and a module (autofocus module) 5c. Light reflected from the coded portion of the workpiece W is incident on the optical system 5b. image.

撮像素子5aは、光学系5bを通して得られたコードの画像を電気信号に変換するCCD(charge-coupled device)やCMOS(complementary metal oxide semiconductor)等の受光素子からなるイメージセンサである。撮像素子5aはプロセッサ20に接続されていて、撮像素子5aによって変換された電気信号は、読取画像のデータとしてプロセッサ20に入力される。また、AFモジュール5cは、光学系5bを構成するレンズのうち、合焦用レンズの位置や屈折率を変更することによってピント合わせを行う機構である。AFモジュール5cもプロセッサ20に接続され、プロセッサ20により制御される。 The imaging device 5a is an image sensor comprising a light-receiving device such as a CCD (charge-coupled device) or CMOS (complementary metal oxide semiconductor) that converts a code image obtained through the optical system 5b into an electric signal. The image sensor 5a is connected to a processor 20, and the electric signal converted by the image sensor 5a is input to the processor 20 as read image data. The AF module 5c is a mechanism that performs focusing by changing the position and refractive index of a focusing lens among the lenses that make up the optical system 5b. The AF module 5 c is also connected to and controlled by the processor 20 .

図2に示すように、ハウジング2の側面には表示部6が設けられている。表示部6は、たとえば有機ELディスプレイや液晶ディスプレイ等からなるものである。表示部6は、プロセッサ20に接続され、たとえば撮像部5で撮像されたコード、コードのデコード結果である文字列、読み取り成功率、マッチングレベル等を表示させることができる。読み取り成功率とは、複数回読み取り処理を実行したときの平均読み取り成功率である。マッチングレベルとは、デコードが成功したコードの読み取りのしやすさを示す読取余裕度である。これはデコード時に発生した誤り訂正の数等から求めることができ、たとえば数値で表すことができる。誤り訂正が少なければ少ないほどマッチングレベル(読取余裕度)が高くなり、一方、誤り訂正が多ければ多いほどマッチングレベル(読取余裕度)が低くなる。 As shown in FIG. 2, a display portion 6 is provided on the side surface of the housing 2. As shown in FIG. The display unit 6 is composed of, for example, an organic EL display, a liquid crystal display, or the like. The display unit 6 is connected to the processor 20, and can display, for example, the code imaged by the imaging unit 5, the character string that is the result of decoding the code, the reading success rate, the matching level, and the like. The reading success rate is the average reading success rate when the reading process is executed multiple times. The matching level is a reading margin indicating how easily a successfully decoded code can be read. This can be obtained from the number of error corrections that occur during decoding, and can be represented by a numerical value, for example. The fewer error corrections, the higher the matching level (reading margin), while the more error corrections, the lower the matching level (reading margin).

電源コネクタ7には、光学的情報読取装置1に外部から電源を供給するための電源ケーブル(図示せず)が接続される。また、信号線コネクタ8には、コンピュータ100及びPLC101と通信を行うための信号線100a、101a等が接続される。信号線コネクタ8は、例えばEthernetコネクタ、RS232C等のシリアル通信用コネクタ、USBコネクタ等で構成することができる。 A power cable (not shown) for supplying power to the optical information reader 1 from the outside is connected to the power connector 7 . Signal lines 100 a and 101 a for communicating with the computer 100 and PLC 101 are connected to the signal line connector 8 . The signal line connector 8 can be composed of, for example, an Ethernet connector, a serial communication connector such as RS232C, a USB connector, or the like.

ハウジング2には、インジケータ9が設けられている。インジケータ9は、プロセッサ20に接続されていて、たとえば発光ダイオード等の発光体で構成することができる。光学的情報読取装置1の作動状態をインジケータ9の点灯状態によって外部に報知することができる。 An indicator 9 is provided on the housing 2 . The indicator 9 is connected to the processor 20 and can consist of a light emitter such as a light emitting diode. The operating state of the optical information reader 1 can be notified to the outside by the lighting state of the indicator 9 .

ハウジング2の前側には、カメラ5を挟むように一対のエイマー光照射部10が設けられている。図3に示すように、エイマー光照射部10は、発光ダイオード等からなるエイマー10aと、エイマー10aを駆動するエイマー駆動部10bとを備えている。エイマー10aは、光学的情報読取装置1の前方へ向けて光(エイマー光)を照射することによってカメラ5の撮影範囲や視野中心、照明部4の光軸の目安等を示すためのものである。具体的には、エイマー10aは、カメラ5の撮影視野範囲内へ向けて環境光とは異なる色(例えば赤色や緑色等)の可視光を照射し、その可視光が照射された面に肉眼で視認可能な目印を形成する。目印は各種図形や記号、文字等であってもよい。ユーザは、エイマー10aから照射される光を参照して光学的情報読取装置1を設置することもできる。 A pair of aimer light irradiation units 10 are provided on the front side of the housing 2 so as to sandwich the camera 5 therebetween. As shown in FIG. 3, the aimer light irradiation unit 10 includes an aimer 10a composed of a light emitting diode or the like, and an aimer driving unit 10b for driving the aimer 10a. The aimer 10a irradiates light (aimer light) toward the front of the optical information reading device 1 to indicate the imaging range and the center of the visual field of the camera 5, the guideline of the optical axis of the illumination unit 4, and the like. . Specifically, the aimer 10a irradiates visible light of a color (for example, red or green) different from ambient light toward the range of the imaging field of view of the camera 5, and the surface irradiated with the visible light is visible to the naked eye. Form a visible landmark. The mark may be various figures, symbols, characters, or the like. The user can also set the optical information reader 1 by referring to the light emitted from the aimer 10a.

図2に示すように、ハウジング2の側面には、光学的情報読取装置1の設定時等に使用する操作ボタン11、12が設けられている。操作ボタン11、12は、例えばセレクトボタンやエンターボタン等を含んでいる。操作ボタン11、12以外にも、例えばタッチパネル式の操作手段が設けられていてもよい。操作ボタン11、12はプロセッサ20に接続されていて、プロセッサ20は操作ボタン11、12の操作状態を検出可能になっている。操作ボタン11、12の操作により、表示部6に表示された複数の選択肢の中から1つを選択することや、選択した結果を確定することができる。 As shown in FIG. 2, the side surface of the housing 2 is provided with operation buttons 11 and 12 that are used when setting the optical information reader 1 and the like. The operation buttons 11 and 12 include, for example, select buttons and enter buttons. In addition to the operation buttons 11 and 12, for example, touch panel type operation means may be provided. The operation buttons 11 and 12 are connected to a processor 20 so that the processor 20 can detect the operation states of the operation buttons 11 and 12. FIG. By operating the operation buttons 11 and 12, it is possible to select one of a plurality of options displayed on the display unit 6 and to confirm the selected result.

(手持ち式の光学的情報読取装置)
上述した例では、光学的情報読取装置1が定置式である場合を示したが、本発明は定置式の光学的情報読取装置1以外にも適用可能である。図4は、手持ち式の光学的情報読取装置1Aを示すものであり、この図に示すような手持ち式の光学的情報読取装置1Aにも本発明を適用することができる。
(hand-held optical information reader)
In the above example, the optical information reader 1 is of a stationary type, but the present invention is applicable to devices other than the stationary optical information reader 1 . FIG. 4 shows a handheld optical information reader 1A, and the present invention can also be applied to a handheld optical information reader 1A as shown in this figure.

手持ち式の光学的情報読取装置1Aのハウジング2Aは、上下方向に長い形状とされている。尚、光学的情報読取装置1Aの使用時の向きは図示した向きに限定されるものではなく、様々な向きで使用可能であるが、説明の便宜上、光学的情報読取装置1Aの上下方向を特定している。 A housing 2A of the hand-held optical information reader 1A has a vertically elongated shape. The orientation of the optical information reader 1A when used is not limited to the illustrated orientation, and can be used in various orientations. is doing.

ハウジング2Aの上側部分には、表示部6Aが設けられている。表示部6Aは、定置式の光学的情報読取装置1の表示部6と同様に構成されている。ハウジング2Aの下側部分は、運用時にユーザが把持するための把持部2Bである。把持部2Bは、一般的な成人が片手で握るようにして持つことが可能な部分であり、形状や大きさは自由に設定できる。この把持部2Bを持つことで、光学的情報読取装置1Aを携帯して移動することができる。つまり、この光学的情報読取装置1Aは、携帯型端末装置であり、例えばハンディターミナルと呼ぶこともできるものである。 A display portion 6A is provided on the upper portion of the housing 2A. The display section 6A is configured in the same manner as the display section 6 of the stationary optical information reader 1. FIG. A lower portion of the housing 2A is a grip portion 2B for a user to grip during operation. The grip part 2B is a part that a general adult can hold with one hand, and its shape and size can be freely set. By holding the grip portion 2B, the optical information reader 1A can be carried and moved. In other words, the optical information reader 1A is a portable terminal device, and can be called a handy terminal, for example.

定置式の光学的情報読取装置1と同様に、手持ち式のハウジング2Aにも、照明部、カメラ、エイマー光照射部、プロセッサ、記憶部、ROM、RAM等(図示せず)が収容されている。照明部の光軸、カメラの光軸、エイマー光照射部の光軸は、ハウジング2Aの上端近傍から斜め上方に向いている。また、手持ち式のハウジング2Aには、ブザー(図示せず)も設けられている。 Similar to the stationary optical information reader 1, the hand-held housing 2A also accommodates an illumination unit, a camera, an aimer light irradiation unit, a processor, a storage unit, a ROM, a RAM, etc. (not shown). . The optical axis of the illumination unit, the optical axis of the camera, and the optical axis of the aimer light irradiation unit are directed obliquely upward from the vicinity of the upper end of the housing 2A. A buzzer (not shown) is also provided in the handheld housing 2A.

把持部2Bやその近傍には、複数の操作ボタン11A及びトリガーキー11Bが設けられている。操作ボタン11Aは、定置式の光学的情報読取装置1の操作ボタン11等と同様である。ユーザが光学読取装置1Aの先端(上端)をワークWに向けてトリガーキー11Bを押下すれば、光学読取装置1Aの先端からエイマー光が照射される。ユーザは、ワークWの表面で反射されるエイマー光を目視しながら光学読取装置1Aの向きを調整し、エイマー光を読取対象のコードに合わせれば、コードの読み取り及びデコード処理が自動的に行われる。読み取りが完了すると、ブザーから完了報知音が発せられる。 A plurality of operation buttons 11A and trigger keys 11B are provided on the grip portion 2B and its vicinity. The operation button 11A is the same as the operation button 11 of the stationary optical information reader 1 and the like. When the user presses the trigger key 11B with the tip (upper end) of the optical reader 1A facing the workpiece W, the tip of the optical reader 1A emits an aimer beam. When the user adjusts the direction of the optical reader 1A while visually observing the aimer light reflected on the surface of the work W, and aligns the aimer light with the code to be read, the code is automatically read and decoded. . When the reading is completed, the buzzer emits a completion notification sound.

手持ち式の光学的情報読取装置1Aの使用例として、物流倉庫内におけるピッキング作業に手持ち式の光学的情報読取装置1Aを用いる例がある。例えば、受注した商品を物流倉庫から発送する場合、商品倉庫内の商品棚から必要な商品がピッキングされる。このピッキング作業は、コードが記載された受注伝票を持ったユーザが、商品棚まで移動した後、受注伝票のコードと、商品又は商品棚に付されたコードとを照合しながら行われる。この場合、受注伝票のコードと、商品又は商品棚に付されたコードとを交互に手持ち式の光学的情報読取装置1Aで読み取る。 As an example of use of the handheld optical information reader 1A, there is an example of using the handheld optical information reader 1A for picking work in a distribution warehouse. For example, when shipping ordered products from a distribution warehouse, the necessary products are picked from the product shelves in the product warehouse. This picking operation is performed by a user holding an order slip with a code written thereon, after moving to the product shelf, while comparing the code of the order slip with the code attached to the product or the product shelf. In this case, the hand-held optical information reader 1A alternately reads the code of the order slip and the code attached to the product or the product shelf.

(プロセッサの構成)
以下の説明は、定置式の光学的情報読取装置1と、手持ち式の光学的情報読取装置1Aとで共通しており、特に断りがなければ、いずれの装置1、1Aでも適用できる。図3に示すように、プロセッサ20は、中央演算処理装置であるコアを複数有するマルチコアプロセッサで構成されている。具体的には、プロセッサ20は、第1汎用コア21、第2汎用コア22、第3汎用コア23、第4汎用コア24及びニューラルネットワークによる推論処理専用の専用コア25を備えている。第1~第4汎用コア21~24及び専用コア25は、いわゆるSystem-on-a-chip(SoC,SOC)であり、同一の基板上に実装されている。尚、第1~第4汎用コア21~24及び専用コア25は、SoCでなくてもよく、その場合は同じ基板上に実装されなくともよい形態となるが、その場合も本発明の範囲に含まれる。この実施形態では、汎用コアの数が4つの場合について説明するが、これに限らず、汎用コアは1つであってもよいし、2以上の任意の数(例えば6コア、8コア等)であってもよい。
(Processor configuration)
The following description is common to the stationary optical information reader 1 and the handheld optical information reader 1A, and can be applied to either apparatus 1 or 1A unless otherwise specified. As shown in FIG. 3, the processor 20 is a multi-core processor having multiple cores that are central processing units. Specifically, the processor 20 includes a first general-purpose core 21, a second general-purpose core 22, a third general-purpose core 23, a fourth general-purpose core 24, and a dedicated core 25 dedicated to inference processing by a neural network. The first to fourth general-purpose cores 21 to 24 and dedicated core 25 are so-called system-on-a-chip (SoC, SOC) and are mounted on the same substrate. Note that the first to fourth general-purpose cores 21 to 24 and the dedicated core 25 may not be SoC, and in that case, they may not be mounted on the same substrate. included. In this embodiment, the case where the number of general-purpose cores is four will be described, but the number of general-purpose cores is not limited to this, and may be one, or any number of two or more (for example, six cores, eight cores, etc.). may be

第1~第4汎用コア21~24及び専用コア25には、同一のメモリとしてのRAM41が接続されており、第1~第4汎用コア21~24及び専用コア25のいずれもが同一のRAM41にアクセス可能となっている。また、プロセッサ20には、同一のメモリとしてのROM40が接続されており、第1~第4汎用コア21~24及び専用コア25のいずれもが同一のROM40にもアクセス可能となっている。 A RAM 41 as the same memory is connected to the first to fourth general-purpose cores 21 to 24 and the dedicated core 25, and all of the first to fourth general-purpose cores 21 to 24 and the dedicated core 25 have the same RAM 41. is accessible. Further, the processor 20 is connected with a ROM 40 as the same memory, and all of the first to fourth general-purpose cores 21 to 24 and the dedicated core 25 can access the same ROM 40 as well.

第1~第4汎用コア21~24は、いわゆる汎用プロセッサであり、例えばAF制御、照明制御、カメラ制御、コード候補領域を抽出する抽出処理、読取画像に対するデコード処理、読取画像に対する各種フィルタ処理等を実行する部分である。第1~第4汎用コア21~24の具体的な処理例については後述する。 The first to fourth general-purpose cores 21 to 24 are so-called general-purpose processors, for example, AF control, lighting control, camera control, extraction processing for extracting code candidate regions, decoding processing for read images, various filter processing for read images, and the like. is the part that executes A specific processing example of the first to fourth general-purpose cores 21 to 24 will be described later.

一方、専用コア25は、ニューラルネットワークを利用して、読取画像に対応する理想画像を生成する推論処理を実行するための推論処理専用コアであり、ニューラルネットワークによる処理に必要な積和演算を超高速に実行することに特化したものである。専用コア25は、例えばICやFPGA等を含む。尚、ニューラルネットワークによる学習結果を適用して推論処理することで、読取画像をデコードに適した画像に修復することができるので、推論処理によって理想画像を生成することを読取画像の修復とも呼ぶ。この場合、専用コア25は、ニューラルネットワークを利用して読取画像の修復を試行する部分である。 On the other hand, the dedicated core 25 is a dedicated inference processing core for executing inference processing for generating an ideal image corresponding to the read image using a neural network, and exceeds the sum-of-products operation required for processing by the neural network. Specialized for fast execution. The dedicated core 25 includes, for example, an IC, FPGA, and the like. Since the read image can be restored to an image suitable for decoding by applying the learning result of the neural network and performing inference processing, generating an ideal image by inference processing is also called restoration of the read image. In this case, the dedicated core 25 is a part that tries to restore the read image using a neural network.

図5に示すように、プロセッサ20により、AF制御部20a、撮像制御部20b、フィルタ処理部20c、チューニング実行部20d、デコード処理部20f、抽出部20g、縮小部20h、拡大部20i及び推論処理部20jが構成される。AF制御部20a、撮像制御部20b、フィルタ処理部20c、チューニング実行部20d、デコード処理部20f、抽出部20g、縮小部20h及び拡大部20iは、第1~第4汎用コア21~24の演算処理によって構成される部分である。一方、推論処理部20jは、専用コア25によって構成される部分であり、読取画像を修復した修復画像を生成する推論処理を実行する部分であることから画像修復部とも呼ぶ。 As shown in FIG. 5, the processor 20 operates an AF control unit 20a, an imaging control unit 20b, a filter processing unit 20c, a tuning execution unit 20d, a decoding processing unit 20f, an extraction unit 20g, a reduction unit 20h, an expansion unit 20i, and inference processing. A part 20j is configured. The AF control unit 20a, the imaging control unit 20b, the filter processing unit 20c, the tuning execution unit 20d, the decoding processing unit 20f, the extraction unit 20g, the reduction unit 20h, and the expansion unit 20i perform calculations of the first to fourth general-purpose cores 21-24. It is a part configured by processing. On the other hand, the inference processing unit 20j is a part configured by the dedicated core 25, and is also called an image restoration unit because it is a part that executes inference processing for generating a restored image obtained by restoring a read image.

(AF制御部の構成)
AF制御部20aは、図3に示すAFモジュール5cを制御するユニットであり、従来から周知のコントラストAFや位相差AFによって光学系5bのピント合わせを行うことができるように構成されている。AF制御部20aは、第1~第4汎用コア21~24のうち、デコード処理部20f及び抽出部20gとなるコアで構成してもよいし、デコード処理部20f及び抽出部20gとなるコア以外のコアで構成してもよい。
(Configuration of AF control unit)
The AF control unit 20a is a unit that controls the AF module 5c shown in FIG. 3, and is configured to be able to focus the optical system 5b by conventionally known contrast AF or phase difference AF. The AF control unit 20a may be composed of cores serving as the decoding processing unit 20f and the extraction unit 20g among the first to fourth general-purpose cores 21 to 24, or cores other than the cores serving as the decoding processing unit 20f and the extraction unit 20g. core.

(撮像制御部の構成)
撮像制御部20bは、カメラ5のゲインを調整したり、照明部4の光量を制御したり、撮像素子5aの露光時間(シャッタースピード)を制御するユニットである。ここで、カメラ5のゲインとは、撮像素子5aから出力された画像の明るさをデジタル画像処理によって増幅する際の増幅率(倍率とも呼ばれる)のことである。照明部4の光量については、第1照明部4aと第2照明部4bを別々に制御して変更することができる。ゲイン、照明部4の光量及び露光時間は、カメラ5の撮像条件である。撮像制御部20bは、第1~第4汎用コア21~24のうち、デコード処理部20f及び抽出部20gとなるコアで構成してもよいし、デコード処理部20f及び抽出部20gとなるコア以外のコアで構成してもよい。尚、上記AF制御部20aと撮像制御部20bとは、同じコアで構成してもよいし、別のコアで構成してもよい。
(Configuration of imaging control section)
The imaging control section 20b is a unit that adjusts the gain of the camera 5, controls the amount of light of the illumination section 4, and controls the exposure time (shutter speed) of the imaging device 5a. Here, the gain of the camera 5 is an amplification factor (also called magnification) when the brightness of the image output from the image sensor 5a is amplified by digital image processing. The amount of light of the illumination unit 4 can be changed by controlling the first illumination unit 4a and the second illumination unit 4b separately. The gain, the amount of light of the illumination unit 4 and the exposure time are imaging conditions of the camera 5 . The imaging control unit 20b may be composed of cores serving as the decoding processing unit 20f and the extraction unit 20g among the first to fourth general-purpose cores 21 to 24, or cores other than the cores serving as the decoding processing unit 20f and the extraction unit 20g. core. Note that the AF control unit 20a and the imaging control unit 20b may be configured with the same core, or may be configured with different cores.

(フィルタ処理部の構成)
フィルタ処理部20cは、読取画像に対して画像処理フィルタを実行する部分であり、デコード処理部20f及び抽出部20gとなるコアで構成してもよいし、デコード処理部20f及び抽出部20gとなるコア以外のコアで構成してもよい。フィルタ処理部20cを構成するコアはDSPコアであってもよい。
(Configuration of filter processing section)
The filter processing unit 20c is a portion that executes an image processing filter on the read image, and may be composed of cores serving as the decoding processing unit 20f and the extraction unit 20g, or may be the decoding processing unit 20f and the extraction unit 20g. A core other than the core may be used. A core that configures the filter processing unit 20c may be a DSP core.

フィルタ処理部20cは、カメラ5により生成された画像に含まれるノイズを除去するノイズ除去フィルタや、コントラストを補正するコントラスト補正フィルタ、平均化フィルタ等を実行する。フィルタ処理部20cが実行する画像処理フィルタは、ノイズ除去フィルタ、コントラスト補正フィルタ、平均化フィルタに限られるものではなく、他の画像処理フィルタを含んでいてもよい。 The filter processing unit 20c executes a noise removal filter that removes noise included in the image generated by the camera 5, a contrast correction filter that corrects contrast, an averaging filter, and the like. The image processing filters executed by the filter processing unit 20c are not limited to noise removal filters, contrast correction filters, and averaging filters, and may include other image processing filters.

フィルタ処理部20cは、後述する推論処理実行前の読取画像に対して画像処理フィルタを実行するように構成されている。また、フィルタ処理部20cは、後述する拡大、縮小前の読取画像に対して画像処理フィルタを実行するように構成されている。尚、フィルタ処理部20cは、推論処理実行後の読取画像に対して画像処理フィルタを実行するように構成されていてもよいし、拡大、縮小後の読取画像に対して画像処理フィルタを実行するように構成されていてもよい。 The filter processing unit 20c is configured to perform an image processing filter on a read image before execution of inference processing, which will be described later. Further, the filter processing unit 20c is configured to perform an image processing filter on a read image before enlargement or reduction, which will be described later. Note that the filter processing unit 20c may be configured to execute an image processing filter on the read image after executing the inference processing, or execute the image processing filter on the read image after enlargement or reduction. It may be configured as

(チューニング実行部の構成)
図5に示すチューニング実行部20dは、カメラ5の撮像条件及びデコード処理のデコード条件を変化させて、撮像及びデコード処理を繰り返し、各撮像条件及びデコード条件にて算出されたコードの読み取りのしやすさを示すマッチングレベルに基づいて、最適な撮像条件及びデコード条件を決定するとともに、読取対象のコードの大きさを設定するチューニング処理を実行する。具体的には、チューニング実行部20dは、光学的情報読取装置1、1Aの設定時に、カメラ5のゲイン、照明部4の光量及び露光時間等の撮像条件や、フィルタ処理部20cにおける画像処理条件を変更してデコードに適した条件となるように各種条件(チューニングパラメータ)を設定する部分である。フィルタ処理部20cにおける画像処理条件とは、画像処理フィルタの係数(フィルタの強弱)や、複数の画像処理フィルタがある場合に画像処理フィルタの切替、種類の異なる画像処理フィルタの組み合わせ等である。搬送時のワークWに対する外光の影響や、コードが付されている面の色及び材質等によって適切な撮像条件及び画像処理条件は異なる。よって、チューニング実行部20dは、より適切な撮像条件及び画像処理条件を探索して、AF制御部20a、撮像制御部20b、フィルタ処理部20cによる処理を設定する。
(Configuration of Tuning Execution Unit)
The tuning execution unit 20d shown in FIG. 5 changes the imaging conditions of the camera 5 and the decoding conditions of the decoding process, repeats the imaging and decoding processes, and makes it easier to read the code calculated under each imaging condition and decoding condition. Based on the matching level indicating the size, the optimum imaging condition and decoding condition are determined, and a tuning process for setting the size of the code to be read is executed. Specifically, when setting the optical information reader 1 or 1A, the tuning execution unit 20d sets the imaging conditions such as the gain of the camera 5, the light amount and exposure time of the illumination unit 4, and the image processing conditions in the filter processing unit 20c. is changed to set various conditions (tuning parameters) so that the conditions are suitable for decoding. The image processing conditions in the filter processing unit 20c include image processing filter coefficients (filter strength), switching of image processing filters when there are a plurality of image processing filters, combination of different types of image processing filters, and the like. Appropriate imaging conditions and image processing conditions differ depending on the influence of external light on the workpiece W during transportation, the color and material of the surface to which the code is attached, and the like. Therefore, the tuning execution unit 20d searches for more appropriate imaging conditions and image processing conditions, and sets processing by the AF control unit 20a, the imaging control unit 20b, and the filter processing unit 20c.

チューニング実行部20dは、カメラ5により生成された読取画像に含まれるコードのサイズを取得可能に構成されている。コードのサイズを取得する場合、始めに、チューニング実行部20dは、コードらしさを示す特徴量に基づいてコードを探索する。次いで、チューニング実行部20dは、探索したコードのPPC、コード種、コードサイズ等を取得する。PPC、コード種、コードサイズ等は、コードパラメータまたはコード条件に含まれるものであり、従って、チューニング実行部20dは、探索したコードのコードパラメータまたはコード条件を取得可能に構成されている。 The tuning execution unit 20d is configured to be able to acquire the size of the code included in the read image generated by the camera 5. FIG. When acquiring the size of the chord, first, the tuning execution unit 20d searches for the chord based on the feature quantity indicating the likeness of the chord. Next, the tuning execution unit 20d acquires the PPC, code type, code size, etc. of the searched code. The PPC, code type, code size, etc. are included in the code parameters or code conditions, so the tuning execution unit 20d is configured to be able to acquire the code parameters or code conditions of the searched code.

二次元コードは、複数の白色のモジュールと黒色のモジュールとがランダムに配列されることによって構成されている。例えば、QRコードのモデル2ではモジュール数は21×21~177×177まである。定置式の光学的情報読取装置1の場合は事前に読み取り対象のコードを読み取ることで、モジュール数やPPCを限定し、コードの大きさ(ピクセルサイズ)をモジュール数×PPCに限定して運用する。 The two-dimensional code is constructed by randomly arranging a plurality of white modules and black modules. For example, QR code model 2 has modules from 21×21 to 177×177. In the case of the stationary optical information reader 1, by reading the code to be read in advance, the number of modules and PPC are limited, and the code size (pixel size) is limited to the number of modules x PPC. .

コードを構成するモジュールのうち、1つのモジュールに着目した時、そのモジュールがいくつのピクセル(画素)で構成されているかを示すコードパラメータがPPCである。チューニング実行部20dは、1つのモジュールを特定した後、1つのモジュールを構成している画素数をカウントすることで、PPCを取得できる。 PPC is a code parameter that indicates how many pixels (picture elements) constitute one module among the modules that constitute the code. After identifying one module, the tuning execution unit 20d can obtain the PPC by counting the number of pixels that constitute one module.

コード種は、例えばQRコード、データマトリクスコード、ベリコードといったコードの種類のことである。各コードには特徴があるので、チューニング実行部20dは、例えばファインダパターンの有無等によってコード種を判別することが可能である。 The code type is the type of code such as QR code, data matrix code, Vericode, for example. Since each chord has its own characteristics, the tuning execution unit 20d can determine the chord type by, for example, the presence or absence of a finder pattern.

また、コードサイズは、コードの縦または横方向に並ぶモジュールの数とPPCとによって算出できる。チューニング実行部20dは、コードの縦または横方向に並ぶモジュールの数を算出するとともに、PPCを算出し、縦または横方向に並ぶモジュールの数とPPCとを積算することによってコードサイズを取得できる。 Also, the code size can be calculated from the number of modules arranged in the vertical or horizontal direction of the code and the PPC. The tuning execution unit 20d can obtain the code size by calculating the number of modules arranged vertically or horizontally in the code, calculating the PPC, and multiplying the number of modules arranged vertically or horizontally by the PPC.

(デコード処理部の構成)
デコード処理部20fは、白黒の二値化されたデータをデコードする部分である。デコードには、符号化されたデータの対照関係を示すテーブルを使用することができる。さらに、デコード処理部20fは、デコードした結果が正しいか否かを所定のチェック方式に従ってチェックする。データに誤りが発見された場合にはエラー訂正機能を使用して正しいデータを演算する。エラー訂正機能はコードの種類によって異なる。
(Structure of decoding processing unit)
The decoding processing unit 20f is a part that decodes black and white binarized data. Decoding can use a table showing the correspondence of the encoded data. Furthermore, the decoding processing unit 20f checks whether the decoded result is correct according to a predetermined check method. If an error is found in the data, correct data is calculated using the error correction function. The error correction function differs depending on the type of code.

この実施形態では、デコード処理部20fは、後述する推論処理後の理想画像に含まれるコードをデコードするが、推論処理前の読取画像に含まれるコードをデコードすることもできる。デコード処理部20fは、コードをデコードして得られたデコード結果を図3に示すROM40のデコード結果記憶部40bに書き込むように構成されている。 In this embodiment, the decoding processing unit 20f decodes a code included in an ideal image after inference processing, which will be described later, but can also decode a code included in a read image before inference processing. The decoding processing unit 20f is configured to write the decoding result obtained by decoding the code into the decoding result storage unit 40b of the ROM 40 shown in FIG.

(抽出部の構成)
抽出部20gは、カメラ5により生成された読取画像の中からコードが存在する可能性が高いコード候補領域を抽出する部分である。コード候補領域は、コードらしさを示す特徴量に基づいて抽出することができ、この場合、コードらしさを示す特徴量はコードを特定するための情報となる。例えば、抽出部20gは、読取画像を取得し、取得した読取画像に対して、コードらしさを示す特徴量に基づいてコードを探索することができる。具体的には、取得した読取画像の中に、コードらしさを示す特徴量を所定以上持った部分が存在するか否かを探索し、その結果、コードらしさを示す特徴量を持った部分を探索することができれば、その部分を含む領域をコード候補領域として抽出する。コード候補領域には、コード以外の領域が含まれていてもよいが、少なくともコードである可能性が所定以上高い部分を含んでいる。尚、コード候補領域は、あくまでもコードが存在する可能性が高い領域であることから、結果的にコードが含まれない領域の場合もあり得る。
(Structure of extraction unit)
The extraction unit 20g is a part that extracts a code candidate area that is highly likely to contain a code from the read image generated by the camera 5. FIG. A chord candidate region can be extracted based on a feature amount indicating chord-likeness. In this case, the feature amount indicating chord-likeness serves as information for specifying a chord. For example, the extraction unit 20g can acquire a read image and search for a code in the acquired read image based on a feature amount indicating code-likeness. Specifically, it is searched for whether or not there is a portion having a predetermined or more feature amount indicating code-likeness in the acquired read image, and as a result, a portion having a feature amount indicating code-likeness is searched. If possible, an area including that part is extracted as a code candidate area. The code candidate region may include regions other than code, but includes at least a portion that is more likely to be code than a predetermined number. Note that the code candidate region is a region in which there is a high possibility that a code exists, and therefore, there may be a case where the code is not included in the region.

抽出部20gは、エイマー光照射部10から照射されたエイマー光の位置情報を、コードを特定するための情報として利用し、コード候補領域を抽出することもできる。この場合、抽出部20gは、読取画像の中から、エイマー光照射部10により形成された目印に対応する部分を特定し、当該特定された部分をコード候補領域として抽出する。すなわち、上述したように、エイマー光はカメラ5の撮影範囲や視野中心を示すためのものであることから、エイマー光によって形成される目印は、予めカメラ5の視野中心と一致させておくことが可能である。特に、手持ち式の光学的情報読取装置1Aの場合、ユーザはエイマー光を読取対象のコードに合わせるので、エイマー光によって形成される目印は、コードと重なっている確率が高い。つまり、エイマー光照射部10により形成された目印に対応する部分をカメラ5の視野中心と一致させておくことで、抽出部20gがカメラ5の視野中心を含む領域を抽出すると、その領域はコードが存在する可能性が高い領域となる。この場合、エイマー光照射部10により形成された目印に対応する部分をカメラ5の視野中心と完全に一致させておかなくてもよく、視野の縦方向または横方向に多少ずれていてもよい。また、コードは所定の大きさを有しているので、抽出部20gが抽出する領域は、カメラ5の視野中心だけではなく、視野中心を含む所定の大きさを持った領域である。 The extraction unit 20g can also use the positional information of the aimer beam emitted from the aimer beam irradiation unit 10 as information for identifying the code, and extract the code candidate area. In this case, the extraction unit 20g identifies a portion corresponding to the mark formed by the aimer light irradiation unit 10 from the read image, and extracts the identified portion as a code candidate area. That is, as described above, since the aimer light is used to indicate the imaging range and the center of the field of view of the camera 5, the mark formed by the aimer light should be aligned with the center of the field of view of the camera 5 in advance. It is possible. In particular, in the case of the hand-held optical information reader 1A, the user aligns the aimer light with the code to be read, so there is a high probability that the mark formed by the aimer light overlaps the code. That is, by aligning the portion corresponding to the mark formed by the aimer light irradiation unit 10 with the center of the field of view of the camera 5, when the extraction unit 20g extracts an area including the center of the field of view of the camera 5, the area is a code. is likely to exist. In this case, the portion corresponding to the mark formed by the aimer light irradiation unit 10 does not have to be completely aligned with the center of the field of view of the camera 5, and may be slightly shifted in the vertical or horizontal direction of the field of view. Also, since the code has a predetermined size, the region extracted by the extraction unit 20g is not only the center of the field of view of the camera 5, but also a region of a predetermined size including the center of the field of view.

抽出部20gは、読取画像の中心部分を特定し、当該中心部分をコード候補領域として抽出することもできる。例えば、カメラ5の視野中心を、コードを特定するための情報として予め取得しておくことで、このカメラ5の視野中心となる部分を読取画像上で特定することができる。特に、手持ち式の光学的情報読取装置1Aの場合、読取画像上で特定した中心部分は、エイマー光照射部10により形成された目印に対応しているので、その中心部分はコードが存在する可能性が高い領域となる。 The extraction unit 20g can also specify the central portion of the read image and extract the central portion as the code candidate area. For example, by obtaining in advance the center of the field of view of the camera 5 as information for specifying the code, the portion that will be the center of the field of view of the camera 5 can be specified on the read image. In particular, in the case of the hand-held optical information reader 1A, since the central portion specified on the read image corresponds to the mark formed by the aimer light irradiation section 10, the code may exist in the central portion. This is an area with high potential.

抽出部20gは、読取画像の中から、ユーザによる所定の部分の指定を受け付けるように構成することができ、当該指定された部分をコード候補領域として抽出することができる。すなわち、ユーザは読取画像上の任意の位置(座標)で任意の大きさの領域指定を行うと、抽出部20gは、その位置の座標及び大きさの情報に基づいて読取画像の中から所定の部分の指定を受け付ける。抽出部20gは、受け付けた部分をコード候補領域として抽出する。例えば、定置式の光学的情報読取装置1の場合、図1に示すように搬送用ベルトコンベアBによって搬送されているワークWを撮影してコードのデコード処理を実行することになるが、搬送用ベルトコンベアBの幅方向中央部にワークWが存在しているとは限らず、端にワークWが存在していることがあり、この場合には、読取画像の中から、搬送用ベルトコンベアBの端に対応する部分を指定することで、コードが存在する可能性が高い領域として的確な抽出が可能になる。その他にも、大きなワークWで、その中央部から離れた端近傍にコードが表示されている場合もあり、この場合には、読取画像の中から、ワークWの端近傍に対応する部分を指定することで、コードが存在する可能性が高い領域として的確な抽出が可能になる。 The extraction unit 20g can be configured to accept a user's designation of a predetermined portion from the read image, and can extract the designated portion as a code candidate region. That is, when the user designates an area of arbitrary size at an arbitrary position (coordinates) on the read image, the extraction unit 20g extracts a predetermined area from the read image based on the information on the coordinates and size of the position. Accepts part specification. The extraction unit 20g extracts the received portion as a code candidate region. For example, in the case of a stationary optical information reader 1, as shown in FIG. The work W does not always exist in the center of the width direction of the belt conveyor B, but the work W may exist at the end. In this case, the conveying belt conveyor B By specifying the part corresponding to the end of , it is possible to accurately extract the area where the code is likely to exist. In addition, there are cases where the code is displayed near the edge of a large work W, away from the center. By doing so, it is possible to accurately extract the region where the code is likely to exist.

(記憶装置、ROMの構成)
図3に示す記憶装置30は、例えばSSD(ソリッドステートドライブ)等のような読み書き可能な記憶装置で構成することができる。記憶装置30には、各種プログラムや設定情報、画像データ等を記憶しておくことができる。
(Configuration of storage device and ROM)
The storage device 30 shown in FIG. 3 can be composed of a readable/writable storage device such as an SSD (Solid State Drive). The storage device 30 can store various programs, setting information, image data, and the like.

ROM40には、画像データ記憶部40aと、デコード結果記憶部40bと、パラメータセット記憶部40cと、ニューラルネットワーク記憶部40dとが含まれている。画像データ記憶部40aは、カメラ5で生成された読取画像を記憶する部分である。デコード結果記憶部40bは、デコード処理部20fで実行されたコードのデコード結果を記憶する部分である。パラメータセット記憶部40cは、チューニング実行部20dが実行したチューニングの結果、設定された各種条件やユーザが設定した各種条件を記憶する部分である。ニューラルネットワーク記憶部40dは、後述する学習済みのニューラルネットワークの構造及びパラメータを記憶する部分である。 The ROM 40 includes an image data storage section 40a, a decoding result storage section 40b, a parameter set storage section 40c, and a neural network storage section 40d. The image data storage section 40a is a section that stores the read image generated by the camera 5. FIG. The decoding result storage unit 40b is a part that stores the decoding result of the code executed by the decoding processing unit 20f. The parameter set storage section 40c is a section that stores various conditions set as a result of tuning executed by the tuning execution section 20d and various conditions set by the user. The neural network storage unit 40d is a part that stores the structure and parameters of a trained neural network, which will be described later.

上記記憶部40a、40b、40c、40dの少なくとも一部は、ROM40以外の部分に設けられていてもよく、例えば、記憶装置30に設けられていてもよい。 At least part of the storage units 40a, 40b, 40c, and 40d may be provided in a portion other than the ROM 40, and may be provided in the storage device 30, for example.

(ニューラルネットワークを利用した推論処理)
光学的情報読取装置1、1Aは、カメラ5で取得した読取画像を、ニューラルネットワークを利用して推論処理することによって理想画像を生成する理想画像生成機能を有している。本実施形態では、光学的情報読取装置1、1Aで機械学習を行うのではなく、既に学習が終わったニューラルネットワークの構造及びパラメータを光学的情報読取装置1、1Aが予め保持しておき、その保持している構造及びパラメータで構成されたニューラルネットワークを利用して推論処理を実行するように構成されている例について説明するが、これに限らず、光学的情報読取装置1、1Aで機械学習を行ってニューラルネットワークの構造及びパラメータを変更してもよい。
(Inference processing using neural networks)
The optical information reader 1, 1A has an ideal image generating function of generating an ideal image by inferring the read image acquired by the camera 5 using a neural network. In this embodiment, instead of performing machine learning in the optical information reader 1, 1A, the optical information reader 1, 1A holds in advance the structure and parameters of the neural network that has already completed learning, and An example configured to execute inference processing using a neural network configured with a retained structure and parameters will be described, but not limited to this, machine learning with the optical information reading device 1, 1A may be performed to change the structure and parameters of the neural network.

ニューラルネットワークは、図6に示すように、入力データ(本例では画像データ)が入力される入力層と、出力データを出力する出力層と、入力層及び出力層の間に設けられる中間層とを有している。中間層は例えば複数設けることができ、これにより、多層構造のニューラルネットワークとすることができる。 As shown in FIG. 6, the neural network has an input layer to which input data (image data in this example) is input, an output layer to output output data, and an intermediate layer provided between the input layer and the output layer. have. For example, a plurality of intermediate layers can be provided, thereby forming a multi-layered neural network.

(ニューラルネットワークの学習)
始めに、図7に示すフローチャートに基づいてニューラルネットワークの学習時の基本手順について説明する。ニューラルネットワークの学習は、光学的情報読取装置1、1A以外の学習用として用意したコンピュータを用いて行うことができるが、学習用以外の汎用コンピュータを用いて行ってもよい。また、光学的情報読取装置1、1Aで学習を行ってもよい。ニューラルネットワークの学習方法は従来から周知の方法を用いてもよい。
(Neural network learning)
First, the basic procedure for neural network learning will be described based on the flow chart shown in FIG. Learning of the neural network can be performed using a computer prepared for learning other than the optical information reading devices 1 and 1A, but may be performed using a general-purpose computer other than for learning. Also, the learning may be performed by the optical information reader 1, 1A. A conventionally well-known method may be used for the learning method of the neural network.

スタート後のステップSA1では予め準備している不良画像のデータを読み込む。不良画像は、コードの読み取りに不適切な部分を有する画像であり、図8の左側に示すような画像を例示することができる。不適切な部分とは、例えば汚れた部分や着色された部分等である。その後、ステップSA2に進み、予め準備している理想画像のデータを読み込む。理想画像は、コードの読み取りに適切な画像であり、図8の右側に示すような画像を例示することができる。不良画像と理想画像とはペアとしておき、このようなペアを複数準備しておく。光学的情報読取装置1、1Aで学習を行う場合には、光学的情報読取装置1、1Aに不良画像と理想画像を入力する。 In step SA1 after the start, data of defective images prepared in advance are read. A defective image is an image having a portion inappropriate for code reading, and can be exemplified by the image shown on the left side of FIG. The inappropriate part is, for example, a dirty part, a colored part, or the like. After that, the process advances to step SA2 to read the ideal image data prepared in advance. The ideal image is an image suitable for reading the code, and can be exemplified by the image shown on the right side of FIG. A defective image and an ideal image are paired, and a plurality of such pairs are prepared. When learning is performed by the optical information reader 1, 1A, a defective image and an ideal image are input to the optical information reader 1, 1A.

ステップSA2では、損失関数を計算し、不良画像と理想画像との差分を求める。ステップSA3では、ステップSA2で求めた差分を反映させてニューラルネットワークのパラメータを更新する。 At step SA2, a loss function is calculated to find the difference between the defective image and the ideal image. At step SA3, the parameters of the neural network are updated by reflecting the difference obtained at step SA2.

ステップSA4では機械学習の完了条件を満たすか否かを判定する。機械学習の完了条件とは、ステップSA2で求めた差分に基づいて設定することができ、例えば差分が所定以下であれば、機械学習の完了条件を満たすと判定できる。ステップSA4でYESと判定されて機械学習の完了条件を満たしている場合には機械学習を終了する。一方、ステップSA4でNOと判定されて機械学習の完了条件を満たしていない場合にはステップSA1に戻り、別の不良画像を読み込んだ後、ステップSA2に進んで当該別の不良画像とペアになっている別の理想画像を読み込む。 At step SA4, it is determined whether or not the machine learning completion condition is satisfied. The machine learning completion condition can be set based on the difference obtained in step SA2. For example, if the difference is a predetermined value or less, it can be determined that the machine learning completion condition is satisfied. If it is determined YES in step SA4 and the machine learning completion condition is satisfied, the machine learning is terminated. On the other hand, if it is determined NO in step SA4 and the machine learning completion condition is not satisfied, the process returns to step SA1, another defective image is read, and then the process proceeds to step SA2 to pair with the other defective image. Load another ideal image that is

このようにして、複数の不良画像と、当該複数の不良画像にそれぞれ対応する複数の理想画像とを機械学習させることにより、学習済みのニューラルネットワークを予め生成することができる。学習済みのニューラルネットワークの構造及びパラメータを光学的情報読取装置1、1Aが保持しておくことで、光学的情報読取装置1、1A内で学習済みのニューラルネットワークを構築することができる。本例のように、光学的情報読取装置1、1A外で機械学習を行い、その結果得られたニューラルネットワークの構造及びパラメータを光学的情報読取装置1、1Aで保持しておけば、光学的情報読取装置1、1Aの小型軽量化を実現しながら、ニューラルネットワークによる推論処理が可能になる。尚、演算処理能力が十分に高いプロセッサ20を搭載している場合には、光学的情報読取装置1、1Aで学習を行っても問題とはならない。 In this manner, a learned neural network can be generated in advance by performing machine learning on a plurality of defective images and a plurality of ideal images corresponding to the plurality of defective images. By holding the structure and parameters of the trained neural network in the optical information reader 1, 1A, the trained neural network can be constructed in the optical information reader 1, 1A. As in this example, machine learning is performed outside the optical information reader 1, 1A, and the structure and parameters of the neural network obtained as a result are held in the optical information reader 1, 1A. Inference processing by a neural network becomes possible while realizing a reduction in size and weight of the information reading devices 1 and 1A. Incidentally, if the processor 20 with a sufficiently high arithmetic processing capability is installed, there is no problem even if the optical information reader 1, 1A is used for learning.

図9は、上述のようにして構成された畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)の概念図である。「Convolution」では、入力された画像の特徴の抽出を行う。この層は、画像処理フィルタのような畳み込み演算で構成される。フィルタの重みをカーネルと呼び、カーネルに合わせた特徴量の抽出を行う。畳み込み層は一般的に複数の異なるカーネルを持ち、カーネル数に応じてマップ数(D)が増えていく。カーネルサイズは、例えば3×3、5×5などを取ることができる。 FIG. 9 is a conceptual diagram of a convolutional neural network (CNN) configured as described above. "Convolution" extracts the features of the input image. This layer consists of convolution operations such as image processing filters. The weight of the filter is called a kernel, and the feature quantity is extracted according to the kernel. A convolutional layer generally has a plurality of different kernels, and the number of maps (D) increases according to the number of kernels. The kernel size can take, for example, 3×3, 5×5, and so on.

「pooling」では、縮小処理を行って各カーネルの反応をまとめる。「Deconvolution」では、逆畳み込みフィルタにより、特徴値から画像を再構成する。「Unpooling」では、拡大処理を行って反応値を先鋭化する。 In "pooling", the reduction process is performed to combine the reactions of each kernel. "Deconvolution" reconstructs an image from feature values using a deconvolution filter. "Unpooling" sharpens the reaction value by performing expansion processing.

学習済みのニューラルネットワークの構造及びパラメータは、図3に示すROM40のニューラルネットワーク記憶部40dに記憶される。ニューラルネットワークの構造とは、入力層と出力層との間に設けられる中間層の数(D)や、画像処理フィルタの数等である。ニューラルネットワークのパラメータは、図7に示すフローチャートのステップSA3で設定されたパラメータである。 The structure and parameters of the trained neural network are stored in the neural network storage unit 40d of the ROM 40 shown in FIG. The neural network structure includes the number of intermediate layers (D) provided between the input layer and the output layer, the number of image processing filters, and the like. The parameters of the neural network are the parameters set in step SA3 of the flow chart shown in FIG.

また、ニューラルネットワーク記憶部40dには、層の数または画像処理フィルタの数が異なる複数のニューラルネットワークの構造及びパラメータを記憶することが可能になっている。この場合、複数のニューラルネットワークの構造及びパラメータと、コード条件とを関連付けた状態でニューラルネットワーク記憶部40dに記憶することができる。例えば、第1のニューラルネットワークを構成するための当該ニューラルネットワークの構造及びパラメータと、第1のニューラルネットワークに対応する第1のコード条件とを関連付ける。関連付けを行う際、第1のニューラルネットワークの層の数またはフィルタの数は、第1のコード条件、特に第1のPPCによって最適な数を事前に特定しておくことができるものなので、この関係が保たれるように関連付けておく。同様に、第1のニューラルネットワークとは異なる第2のニューラルネットワークの構造及びパラメータと、第1のコード条件とは異なる第2のコード条件とを関連付ける。 Further, the neural network storage unit 40d can store the structures and parameters of a plurality of neural networks having different numbers of layers or different numbers of image processing filters. In this case, the structures and parameters of a plurality of neural networks and code conditions can be stored in the neural network storage unit 40d in association with each other. For example, the structure and parameters of the neural network for constructing the first neural network are associated with a first code condition corresponding to the first neural network. When making the association, the number of layers or filters of the first neural network can be prespecified optimally by the first code condition, especially the first PPC, so this relationship be associated so that Similarly, the structure and parameters of a second neural network, different from the first neural network, are associated with a second code condition, different from the first code condition.

複数のニューラルネットワークの構造及びパラメータをニューラルネットワーク記憶部40dに記憶している場合には、光学的情報読取装置1、1Aの設定時に、次のようにチューニング実行部20dが動作する。すなわち、チューニング実行部20dは、カメラ5により生成された読取画像に含まれるコード条件を設定する際、設定したコード条件に関連付けられたニューラルネットワークの構造及びパラメータをニューラルネットワーク記憶部40dから読み出して運用時に使用するニューラルネットワークとして特定する。例えば、チューニング実行部20dが読取画像に含まれるコード条件をして第1のコード条件を設定した場合には、第1のコード条件と関連付けられた第1のニューラルネットワークの構造及びパラメータをニューラルネットワーク記憶部40dから読み出す。そして、第1のニューラルネットワークの構造及びパラメータを光学的情報読取装置1、1Aの運用時に使用するニューラルネットワークとして特定する。これにより、コード条件に最適なニューラルネットワークの構造及びパラメータで読取画像に対して推論処理を実行できるので、読み取り精度を高めることができる。 When the structures and parameters of a plurality of neural networks are stored in the neural network storage unit 40d, the tuning execution unit 20d operates as follows when setting the optical information reader 1, 1A. That is, when setting the code conditions included in the read image generated by the camera 5, the tuning execution unit 20d reads the structure and parameters of the neural network associated with the set code conditions from the neural network storage unit 40d and operates them. Identify as a neural network to use from time to time. For example, when the tuning execution unit 20d sets the first code condition as the code condition included in the read image, the structure and parameters of the first neural network associated with the first code condition are set to the neural network. Read from the storage unit 40d. Then, the structure and parameters of the first neural network are specified as the neural network to be used during operation of the optical information reader 1, 1A. As a result, inference processing can be executed on the read image with the optimal neural network structure and parameters for the code conditions, so that reading accuracy can be improved.

ニューラルネットワークの学習にあたっては、コードを構成するモジュールのピクセル分解能が特定範囲内である不良画像及び理想画像を機械学習させることもできる。モジュールのピクセル分解能は、例えばコードを構成する1つのモジュールのピクセル数(PPC)で表すことができ、PPCが特定範囲内にある不良画像及び理想画像のみでニューラルネットワークの機械学習を行ってもよい。 In learning the neural network, it is also possible to machine-learn a defective image and an ideal image in which the pixel resolution of the modules constituting the code is within a specific range. The pixel resolution of a module can be represented, for example, by the number of pixels (PPC) of one module that constitutes a code, and machine learning of a neural network may be performed only on defective images and ideal images in which the PPC is within a specific range. .

上記特定範囲は、読取画像に対する推論処理効果の高いピクセル分解能を含み、かつ、読取画像に対する推論処理効果が殆ど向上しないピクセル分解能を除外する範囲であり、複数のモジュールで構成されたコードを含む画像に対する推論処理を前提として設定することができる。これにより、コードを含む画像に対する推論処理に特化したニューラルネットワーク構造として処理速度を向上させることができる。 The specific range includes a pixel resolution with a high inference processing effect on the read image and excludes a pixel resolution with little improvement in the inference processing effect on the read image, and includes a code composed of a plurality of modules. can be set on the premise of inference processing for As a result, the processing speed can be improved as a neural network structure specialized for inference processing for images containing codes.

上記ピクセル数の特定範囲としては、例えば4PPC以上6PPC以下とすることができるが、4PPC未満であってもよいし、6PPCよりも多くてもよい。また、例えば特定範囲を4PPC以上6PPC以下に限定して機械学習することで、学習に用いる画像から余分なスケールの変動を排除することができ、学習済みニューラルネットワーク構造の適正化を図ることもできる。 The specific range of the number of pixels can be, for example, 4 PPC or more and 6 PPC or less, but it may be less than 4 PPC or more than 6 PPC. In addition, for example, by limiting the specific range to 4 PPC or more and 6 PPC or less for machine learning, it is possible to eliminate unnecessary scale fluctuations from the image used for learning, and it is also possible to optimize the trained neural network structure. .

(推論処理)
図5に示すように、光学的情報読取装置1、1Aのプロセッサ20には、専用コア25によって構成される推論処理部20jが設けられている。推論処理部20jは、ROM40のニューラルネットワーク記憶部40dに記憶されたニューラルネットワークの構造及びパラメータを読み出し、読み出したニューラルネットワークの構造及びパラメータで光学的情報読取装置1、1A内にニューラルネットワークを構成する。光学的情報読取装置1、1A内に構成されたニューラルネットワークは、図7のフローチャートに示す手順で学習した学習済みニューラルネットワークと同じものである。
(inference processing)
As shown in FIG. 5, the processor 20 of the optical information reader 1, 1A is provided with an inference processing section 20j composed of a dedicated core 25. FIG. The inference processing unit 20j reads the structure and parameters of the neural network stored in the neural network storage unit 40d of the ROM 40, and configures the neural network in the optical information reading device 1, 1A with the read structure and parameters of the neural network. . The neural network configured in the optical information reader 1, 1A is the same as the trained neural network learned according to the procedure shown in the flow chart of FIG.

推論処理部20jは、カメラ5により生成された読取画像をニューラルネットワークに入力することにより、ニューラルネットワーク記憶部40dに記憶されたニューラルネットワークの構造及びパラメータに従って読取画像に対応する理想画像を生成する推論処理を実行する。推論処理部20jが生成した理想画像は、あくまでも推論処理によって生成した画像であることから、上述した学習時に用いた理想画像と同じであるとは限らないが、本実施形態では推論処理部20jが生成した画像も理想画像と呼ぶ。 The inference processing unit 20j inputs the read image generated by the camera 5 to the neural network to generate an ideal image corresponding to the read image according to the structure and parameters of the neural network stored in the neural network storage unit 40d. Execute the process. Since the ideal image generated by the inference processing unit 20j is an image generated by the inference processing, it is not necessarily the same as the ideal image used during the learning described above. The generated image is also called an ideal image.

フィルタ処理部20cは、カメラ5により生成された読取画像を推論処理部20jがニューラルネットワークに入力する前に、読取画像に対して画像処理フィルタを実行するように構成されている。これにより、ニューラルネットワークによる推論処理を実行する前に適切な画像処理を実行しておくことができ、その結果、推論処理がより的確なものになる。 The filter processing unit 20c is configured to perform an image processing filter on the read image generated by the camera 5 before the inference processing unit 20j inputs the read image to the neural network. As a result, appropriate image processing can be performed prior to execution of inference processing by the neural network, resulting in more accurate inference processing.

デコード処理部20fでデコード処理する全ての読取画像に対して推論処理部20jが推論処理を実行してもよいし、デコード処理部20fでデコード処理する一部の読取画像に対してのみ推論処理部20jが推論処理を実行してもよい。例えば、デコード処理部20fは、推論処理を実行する前の読取画像に対してデコード処理を実行し、デコードが成功したか否かを判定する。デコードに成功した場合には、推論処理が不要な読取画像であったということであり、そのまま結果を出力する。一方、デコードに失敗した場合には、推論処理部20jが推論処理を実行し、生成された理想画像に対してデコード処理部20fがデコード処理を実行する。 The inference processing unit 20j may perform inference processing on all the read images to be decoded by the decoding processing unit 20f, or the inference processing unit 20j may perform inference processing only on some of the read images to be decoded by the decoding processing unit 20f. 20j may perform inference processing. For example, the decoding processing unit 20f executes decoding processing on the read image before executing the inference processing, and determines whether or not the decoding is successful. If the decoding is successful, it means that the read image does not require inference processing, and the result is output as it is. On the other hand, if the decoding fails, the inference processing unit 20j executes the inference processing, and the decoding processing unit 20f executes the decoding processing on the generated ideal image.

(部分画像の入力)
推論処理部20jがニューラルネットワークに入力する画像は、カメラ5により生成された読取画像の全部であってもよいが、入力する画像のサイズが大きければ大きいほどニューラルネットワークによる演算量が増大し、プロセッサ20の演算負荷が重くなり、ひいては処理速度の低下を招くおそれがある。具体的には、図9に示すようなFCN(Fully Convolutional Network)型のニューラルネットワークでは、構造が等しいと仮定した場合、演算量は入力画像サイズに比例した量となり、入力画像サイズはコードの大きさの二乗に比例するため、演算量もコードの大きさの二乗に比例することになる。
(Input partial image)
The image input to the neural network by the inference processing unit 20j may be the entire read image generated by the camera 5. 20, the computational load becomes heavy, and the processing speed may be lowered. Specifically, in a fully convolutional network (FCN) type neural network as shown in FIG. Since it is proportional to the square of the size of the code, the amount of computation is also proportional to the square of the size of the code.

一方、カメラ5により生成された読取画像の全体にコードが存在しているケースは皆無といってよく、通常の運用時には読取画像の一部の領域にのみコードが存在しており、その領域のみニューラルネットワークによる推論処理を実行することができれば、読み取り精度を高めることができる。 On the other hand, it can be said that there are no cases where the code exists in the entire read image generated by the camera 5. During normal operation, the code exists only in a partial area of the read image, and only in that area. Reading accuracy can be improved if inference processing can be executed by a neural network.

そこで、推論処理部20jがニューラルネットワークに入力する画像は、カメラ5により生成された読取画像の一部、即ちコードを含んだ部分画像とすることができる。具体的には、抽出部20gが抽出したコード候補領域に対応する部分画像を画像データ記憶部40aに記憶させておき、推論処理部20jがアクセス可能にしておく。推論処理部20jは部分画像をニューラルネットワークに入力することにより、ニューラルネットワーク記憶部40dに記憶された構造及びパラメータに従って部分画像に推論処理を実行する。そして、生成された理想画像に対してデコード処理部20fがデコード処理を実行する。また、後述するように、部分画像に推論処理を実行することなく、デコード処理を実行する場合には、デコード処理部20fが画像データ記憶部40aにアクセス可能にしておき、画像データ記憶部40aに記憶された部分画像をデコード処理部20fが読み込んでデコード処理を実行する。 Therefore, the image input to the neural network by the inference processing unit 20j can be a part of the read image generated by the camera 5, that is, a partial image containing the code. Specifically, a partial image corresponding to the code candidate region extracted by the extraction unit 20g is stored in the image data storage unit 40a and made accessible to the inference processing unit 20j. By inputting the partial image to the neural network, the inference processing unit 20j performs inference processing on the partial image according to the structure and parameters stored in the neural network storage unit 40d. Then, the decoding processing unit 20f executes decoding processing on the generated ideal image. Further, as will be described later, when decoding processing is executed without executing inference processing on a partial image, the decoding processing unit 20f is made accessible to the image data storage unit 40a. The decode processing unit 20f reads the stored partial image and executes the decoding process.

上述したように読取画像の全体にコードが存在しているケースは殆ど無いので、コード候補領域に対応する部分画像のサイズは、読取画像のサイズよりも小さくなる。これにより、ニューラルネットワークに入力する画像のサイズが小さくなるので、プロセッサ20の演算負荷が軽くなり、ひいては処理速度の高速化が実現される。また、部分画像は、コードが存在する可能性が高い領域に対応しているので、読み取りに必要な情報、即ちコードの全体を含んだ画像とすることが可能である。このコードの全体を含んだ画像をニューラルネットワークに入力するので、読み取り精度の低下は抑制される。 Since there are almost no cases where the code exists in the entire read image as described above, the size of the partial image corresponding to the code candidate area is smaller than the size of the read image. As a result, the size of the image to be input to the neural network is reduced, so that the computational load on the processor 20 is reduced, and the processing speed is increased. In addition, since the partial image corresponds to an area where the code is highly likely to exist, it is possible to create an image containing the information required for reading, that is, the entire code. Since the image containing the entire code is input to the neural network, a decrease in reading accuracy is suppressed.

推論処理部20jは、チューニング実行部20dで取得したコードサイズに基づいて部分画像のニューラルネットワークへの入力サイズを決定することができる。上述したように、チューニング実行部20dはコードサイズを取得することができる。推論処理部20jは、ニューラルネットワークへ入力する部分画像の入力サイズを、チューニング実行部20dで取得したコードサイズよりも所定量だけ大きくする。 The inference processing unit 20j can determine the input size of the partial image to the neural network based on the code size acquired by the tuning execution unit 20d. As described above, the tuning execution unit 20d can acquire the code size. The inference processing unit 20j makes the input size of the partial image to be input to the neural network larger than the code size obtained by the tuning execution unit 20d by a predetermined amount.

すなわち、部分画像をニューラルネットワークへ入力することで演算負荷を軽くすることができる反面、例えばコードが回転していたり、コードの位置が精密に検出できなかった場合には、部分画像中のコードの一部が欠けてしまい、デコード処理に失敗する可能性もある。本実施形態では、ニューラルネットワークへの入力サイズがチューニング実行部20dで取得したコードサイズと同じではなく、コードサイズよりも所定量だけ大きいので、部分画像中でコードの一部が欠けるのを抑制できる。尚、コードサイズよりも所定量だけ大きくしていることで、ニューラルネットワークへの入力サイズに上限を持たせることができ、よって、演算負荷が重くならないようにすることができる。「所定量」とは、例えばニューラルネットワークへ入力される部分画像の横(または縦)の長さが、チューニング実行部20dで取得したコードの横(または縦)の長さの1.5倍以上、または2.0倍以上、または3.0倍以上であってもよい。 That is, inputting the partial image to the neural network can reduce the computational load, but on the other hand, if, for example, the code is rotated or the position of the code cannot be detected precisely, the code in the partial image cannot be detected. It is also possible that part of the data is missing and the decoding process fails. In this embodiment, since the input size to the neural network is not the same as the code size obtained by the tuning execution unit 20d, but is larger than the code size by a predetermined amount, it is possible to prevent a part of the code from being missing in the partial image. . By making the code size larger than the code size by a predetermined amount, it is possible to give an upper limit to the input size to the neural network, thereby preventing the computational load from becoming heavy. The "predetermined amount" means, for example, that the horizontal (or vertical) length of the partial image input to the neural network is 1.5 times or more the horizontal (or vertical) length of the code acquired by the tuning execution unit 20d. , or 2.0 times or more, or 3.0 times or more.

推論処理部20jがニューラルネットワークへ入力する部分画像の入力サイズを決定する際、チューニング実行部20dで取得したコードを構成する1つのモジュールのピクセル数と当該コードの縦または横方向に並ぶモジュール数とに基づいて決定することができる。 When the inference processing unit 20j determines the input size of the partial image to be input to the neural network, the number of pixels in one module constituting the code acquired by the tuning execution unit 20d and the number of modules arranged in the vertical or horizontal direction of the code. can be determined based on

また、チューニング実行部20dでは上述したようにコード条件を設定することができる。推論処理部20jは、チューニング実行部20dで設定されたコード条件に基づいて、ニューラルネットワークに入力する読取画像のサイズを設定することもできる。例えば、チューニング実行部20dで設定されたコード条件のうち、コードサイズを推論処理部20jが取得すると、取得したコードサイズよりも所定量だけ大きなサイズの部分画像をニューラルネットワークに入力する。コードサイズが大きければニューラルネットワークに入力する部分画像のサイズが大きくなる一方、コードサイズが小さければニューラルネットワークに入力する部分画像のサイズが小さくなる。つまり、ニューラルネットワークに入力する部分画像のサイズをコード条件に応じて変えることができる。 Also, the tuning execution unit 20d can set the code conditions as described above. The inference processing unit 20j can also set the size of the read image to be input to the neural network based on the code conditions set by the tuning execution unit 20d. For example, when the inference processing unit 20j acquires the code size among the code conditions set by the tuning execution unit 20d, a partial image having a size larger than the acquired code size by a predetermined amount is input to the neural network. If the code size is large, the size of the partial image to be input to the neural network will be large, while if the code size is small, the size of the partial image to be input to the neural network will be small. In other words, the size of the partial image input to the neural network can be changed according to the code conditions.

(縮小・拡大機能)
ここで、図9に示すような畳み込みニューラルネットワークにおいてコードの特徴を十分に捉え、デコードに適した理想画像にするためには、一定量のモジュール数をカバーする範囲で特徴量を抽出する必要がある。例えば、ニューラルネットワークから得られる1つの特徴値が6×6モジュールの範囲から抽出される値であるとし、1つのモジュールが20ピクセルで撮影された画像の場合、120×120ピクセルの範囲から集約された特徴値を算出するようにニューラルネットワークを設計しなければならない。つまり、カバーしたいピクセル範囲が広ければ広い程、ニューラルネットワークの階層を深くしなければならず、例えば上述した120×120ピクセルの範囲から特徴値を集約しようとすると、6回の畳み込み層が必要となる。
(reduction/enlargement function)
Here, in order to fully capture the features of the code in the convolutional neural network as shown in FIG. 9 and create an ideal image suitable for decoding, it is necessary to extract feature quantities within a range that covers a certain number of modules. be. For example, if one feature value obtained from the neural network is a value extracted from a range of 6×6 modules, and one module is an image captured with 20 pixels, it is aggregated from a range of 120×120 pixels. A neural network must be designed to calculate feature values that In other words, the wider the pixel range to be covered, the deeper the layer of the neural network must be. For example, to aggregate the feature values from the 120×120 pixel range described above, six convolution layers are required. Become.

しかし、コードは白色のモジュールと黒色のモジュールとがランダムに配列されることによって構成されているため、広範囲でのピクセル値の関係は希薄であり、カバーするピクセル範囲を一定以上に広げても推論処理効果は殆ど向上しない。このような特徴を、本明細書では狭範囲特徴と呼ぶ。 However, since the code is composed of white modules and black modules arranged randomly, the relationship between pixel values over a wide range is sparse. The treatment effect is hardly improved. Such features are referred to herein as narrow range features.

また、コードに含まれるファインダパターンなど決まったモジュールパターンの配置やコード全体として四角形状であることは広範囲特徴になり得るが、モジュールと背景とを大まかに分離するだけであれば、広範囲特徴を用いることなく、狭範囲特徴のみを用いても十分に推論処理可能である。尚、広範囲特徴とは、広範囲に渡って決まった形状を持つ特徴と定義することができる。 In addition, the arrangement of fixed module patterns such as the finder pattern included in the code and the rectangular shape of the entire code can be wide-range features. Inference processing can be performed satisfactorily using only narrow-range features without using A wide range feature can be defined as a feature having a fixed shape over a wide range.

そこで、図7に示すニューラルネットワークの学習の際、コードのPPCが特定範囲にある画像を用いることができる。これにより、コードを含む画像に対する推論処理に特化したニューラルネットワーク構造として処理速度を向上させることができる反面、PPCが特定範囲外にある読取画像に対する推論処理効果は低下する懸念がある。尚、ニューラルネットワークの学習の際、コードのPPCが特定範囲外にある画像を用いてもよい。 Therefore, when learning the neural network shown in FIG. 7, an image in which the PPC of the code is within a specific range can be used. As a result, the processing speed can be improved as a neural network structure specialized for inference processing for images containing codes, but there is a concern that the inference processing effect for read images in which the PPC is outside the specific range will be reduced. When learning the neural network, an image in which the PPC of the code is outside the specific range may be used.

本実施形態の光学的情報読取装置1、1Aでは、読取画像のPPCが特定範囲に入るようにするために、読取画像の縮小・拡大機能を備えている。図5に示すように、プロセッサ20には、縮小部20h及び拡大部20iが構成されている。縮小部20hは、カメラ5により生成された読取画像の中のコードを構成するモジュールのピクセル分解能が上述した特定範囲内となるように縮小した読取画像を生成する部分であり、また、拡大部20iは、カメラ5により生成された読取画像の中のコードを構成するモジュールのピクセル分解能が上述した特定範囲内となるように拡大した読取画像を生成する部分である。 The optical information reading apparatuses 1 and 1A of the present embodiment are provided with functions for reducing/enlarging the read image so that the PPC of the read image is within a specific range. As shown in FIG. 5, the processor 20 includes a reducing section 20h and an enlarging section 20i. The reduction unit 20h is a unit that generates a read image that is reduced so that the pixel resolution of the modules that constitute the code in the read image generated by the camera 5 is within the above-described specific range. is a portion for generating a read image that is enlarged so that the pixel resolution of the modules constituting the code in the read image generated by the camera 5 is within the above-described specific range.

縮小部20h及び拡大部20iは、例えばカメラ5により生成された読取画像におけるコードのPPCが特定範囲(4PPC以上6PPC以下)外にあるか否かを判定し、特定範囲内である場合には、縮小または拡大を非実行にする一方、特定範囲外である場合には、縮小または拡大を実行する。縮小または拡大を実行することで、推論処理部20jがニューラルネットワークへ入力する部分画像におけるコードのPPCが特定範囲内に入る。 The reducing unit 20h and the enlarging unit 20i, for example, determine whether the PPC of the code in the read image generated by the camera 5 is outside a specific range (4 PPC or more and 6 PPC or less). While shrinking or enlarging is not executed, if it is outside the specified range, shrinking or enlarging is executed. By reducing or enlarging, the PPC of the code in the partial image that the inference processing unit 20j inputs to the neural network falls within a specific range.

推論処理部20jは、特定範囲内となるように拡大または縮小した読取画像を、ニューラルネットワーク記憶部40dに記憶された構造及びパラメータで構成されたニューラルネットワークに入力することにより、その構造及びパラメータに従って読取画像に対する推論処理を実行する。そして、生成された理想画像に対してデコード処理部20fがデコード処理を実行する。 The inference processing unit 20j inputs the read image, which has been enlarged or reduced within a specific range, to the neural network configured with the structure and parameters stored in the neural network storage unit 40d, and according to the structure and parameters, Perform inference processing on the read image. Then, the decoding processing unit 20f executes decoding processing on the generated ideal image.

抽出部20gは、拡大部20iにより拡大した読取画像または縮小部20hにより縮小した読取画像に対してコードを探索し、探索されたコードを含む領域をコードが存在する可能性が高いコード候補領域として抽出するように構成してもよい。この場合、推論処理部20jは、抽出部20gが抽出したコード候補領域に対応する部分画像を、ニューラルネットワーク記憶部40dに記憶された構造及びパラメータで構成されたニューラルネットワークに入力することにより、その構造及びパラメータに従って読取画像に対する推論処理を実行する。 The extracting unit 20g searches for codes in the read image enlarged by the enlarging unit 20i or the read image reduced by the reducing unit 20h, and designates an area including the searched code as a code candidate area where there is a high possibility that the code exists. It may be configured to extract. In this case, the inference processing unit 20j inputs the partial image corresponding to the chord candidate region extracted by the extraction unit 20g to the neural network configured with the structure and parameters stored in the neural network storage unit 40d, thereby Perform inference processing on the read image according to the structure and parameters.

光学的情報読取装置1、1Aの設定時には、チューニング実行部20dが、拡大率を変えた複数の読取画像(拡大画像)を生成すること、及び縮小率を変えた複数の読取画像(縮小画像)を生成することができる。チューニング実行部20dは、生成した複数の読取画像(拡大画像または縮小画像)をニューラルネットワークに入力して各読取画像の推論処理を実行し、生成された各理想画像に対してデコード処理を実行し、コードの読み取りのしやすさを示す読取余裕度を求める。チューニング実行部20dは、求めた読取余裕度が所定よりも高い読取画像の拡大率または縮小率を、運用時に使用する拡大率または縮小率として特定する。チューニング実行部20dが拡大率または縮小率を特定した場合、光学的情報読取装置1、1Aの運用時には、縮小部20h及び拡大部20iは、チューニング実行部20dが特定した拡大率または縮小率で読取画像を拡大または縮小する。 When setting the optical information reading apparatus 1, 1A, the tuning execution unit 20d generates a plurality of read images (enlarged images) with different enlargement ratios and a plurality of read images (reduced images) with different reduction ratios. can be generated. The tuning execution unit 20d inputs a plurality of generated read images (enlarged images or reduced images) to a neural network, executes inference processing for each read image, and executes decoding processing for each generated ideal image. , to obtain the reading margin indicating the readability of the code. The tuning executing unit 20d specifies the enlargement ratio or reduction ratio of the read image with the obtained reading margin higher than a predetermined value as the enlargement ratio or reduction ratio to be used during operation. When the tuning execution unit 20d specifies the enlargement ratio or reduction ratio, the reduction unit 20h and the enlargement unit 20i read at the enlargement ratio or reduction ratio specified by the tuning execution unit 20d during operation of the optical information reader 1 or 1A. Enlarge or reduce the image.

すなわち、例えば特定範囲にある程度の広さがある場合、その特定範囲内であっても拡大率や縮小率を変えると、読取余裕度が変化することが考えられる。チューニング実行部20dが求めた読取余裕度が所定よりも高くなるように、運用時における読取画像の拡大率または縮小率を特定することができるので、処理速度及び読み取り精度が向上する。 That is, for example, if the specific range has a certain extent, it is conceivable that the reading margin will change even within the specific range if the enlargement ratio or the reduction ratio is changed. Since the enlargement ratio or reduction ratio of the read image during operation can be specified so that the read margin obtained by the tuning execution unit 20d is higher than a predetermined value, the processing speed and reading accuracy are improved.

チューニング実行部20dは、各読取画像の読取余裕度を求めた後、求めた複数の読取余裕度のうち、最も高い読取余裕度の読取画像の拡大率または縮小率を、運用時に使用する拡大率または縮小率として特定することができる。これにより、処理速度及び読み取り精度を更に向上させることができる。 After obtaining the reading slack for each read image, the tuning executing unit 20d selects the enlargement ratio or reduction ratio of the read image with the highest reading slack among the plurality of obtained reading slacks as the enlargement ratio to be used during operation. Or it can be specified as a reduction ratio. Thereby, the processing speed and reading accuracy can be further improved.

また、縮小部20h及び拡大部20iで読取画像を縮小及び拡大できることを利用して、パラメータセットの種類を増やすこともできる。縮小部20hによる縮小率が異なる複数のパラメータセットと、拡大部20iによる拡大率が異なる複数のパラメータセットを生成し、これらパラメータセットをROM40のパラメータセット記憶部40cに記憶させることができる。例えば、縮小部20hによる縮小率が1/2、1/4、1/8のように複数設定可能な場合、縮小率が1/2のパラメータセット、縮小率が1/4のパラメータセット、縮小率が1/8のパラメータセットをパラメータセット記憶部40cに記憶させることができる。また、拡大部20iによる拡大率が2倍、4倍、8倍のように複数設定可能な場合、拡大率が2倍のパラメータセット、拡大率が4倍のパラメータセット、拡大率が8倍のパラメータセットをパラメータセット記憶部40cに記憶させることができる。そして、パラメータセット記憶部40cに記憶された複数のパラメータセットの中から任意の一のパラメータセットを適用することができる。 Further, by utilizing the fact that the read image can be reduced and enlarged by the reduction unit 20h and the enlargement unit 20i, the types of parameter sets can be increased. A plurality of parameter sets with different reduction ratios by the reduction unit 20h and a plurality of parameter sets with different enlargement ratios by the expansion unit 20i can be generated, and these parameter sets can be stored in the parameter set storage unit 40c of the ROM 40. FIG. For example, when a plurality of reduction ratios such as 1/2, 1/4, and 1/8 can be set by the reduction unit 20h, a parameter set with a reduction ratio of 1/2, a parameter set with a reduction ratio of 1/4, and a reduction ratio A parameter set with a rate of 1/8 can be stored in the parameter set storage unit 40c. In addition, when the enlargement ratio by the enlargement unit 20i can be set multiple times, such as 2 times, 4 times, and 8 times, a parameter set for the enlargement ratio of 2 times, a parameter set for the enlargement ratio of 4 times, and a parameter set for the enlargement ratio of 8 times. A parameter set can be stored in the parameter set storage unit 40c. Then, any one parameter set can be applied from the plurality of parameter sets stored in the parameter set storage unit 40c.

(推論処理フィルタ)
推論処理部20jは、ニューラルネットワークを利用して推論処理を実行する推論処理フィルタを実行する部分であってもよい。推論処理フィルタは、読取画像を、ニューラルネットワーク記憶部40dに記憶された構造及びパラメータで構成されたニューラルネットワークに入力することにより、ニューラルネットワーク記憶部40dに記憶された構造及びパラメータに従って推論処理を実行するフィルタであり、上述した推論処理機能と同じ機能を発揮する。
(inference processing filter)
The inference processing unit 20j may be a part that executes an inference processing filter that executes inference processing using a neural network. The inference processing filter performs inference processing according to the structure and parameters stored in the neural network storage unit 40d by inputting the read image to the neural network configured with the structure and parameters stored in the neural network storage unit 40d. This filter performs the same function as the inference processing function described above.

推論処理フィルタを実行可能にする場合、推論処理フィルタを設定するための設定部20e(図5に示す)を設けることができる。設定部20eは、ユーザによる推論処理フィルタの設定を受付可能に構成されている。設定部20eは、例えば光学的情報読取装置1、1Aの設定時に、「推論処理フィルタの適用」と「推論処理フィルタの非適用」との一方をユーザが選択可能なユーザインターフェースを生成して表示部6に表示させ、ユーザによる選択を受け付けるように構成することができる。したがって、推論処理部20jは、設定部20eにより設定された推論処理フィルタを読取画像に適用することで、当該読取画像に対して推論処理を実行する。 When making the inference processing filter executable, a setting unit 20e (shown in FIG. 5) for setting the inference processing filter can be provided. The setting unit 20e is configured to be able to receive the setting of the inference processing filter by the user. The setting unit 20e generates and displays a user interface that allows the user to select one of "application of the inference processing filter" and "non-application of the inference processing filter" when setting the optical information reader 1 or 1A, for example. It can be configured to be displayed on the unit 6 and accept selection by the user. Therefore, the inference processing unit 20j applies the inference processing filter set by the setting unit 20e to the read image to perform the inference processing on the read image.

設定部20eは、チューニング実行部20dに含まれていてもよいし、チューニング実行部20dとは別に構成されていてもよい。設定部20eがチューニング実行部20dに含まれている場合、チューニング時に推論処理フィルタに関するパラメータを設定することが可能になる。推論処理フィルタに関するパラメータとしては、「推論処理フィルタの適用」と「推論処理フィルタの非適用」とを含むことができる。「推論処理フィルタの適用」とは、推論処理フィルタを実行可能に設定することであり、「推論処理フィルタの非適用」とは、推論処理フィルタを設定しないことである。 The setting unit 20e may be included in the tuning execution unit 20d, or may be configured separately from the tuning execution unit 20d. When the setting unit 20e is included in the tuning execution unit 20d, it becomes possible to set parameters related to the inference processing filter during tuning. Parameters relating to the inference processing filter can include "application of inference processing filter" and "non-application of inference processing filter". “Applying the inference processing filter” means setting the inference processing filter to be executable, and “non-applying the inference processing filter” means not setting the inference processing filter.

推論処理フィルタに関するパラメータは、推論処理フィルタに関する情報でもあり、この場合、推論処理フィルタの設定に関する情報を含むパラメータセットをパラメータセット記憶部40cに記憶することができる。推論処理フィルタに関するパラメータは、「推論処理フィルタの適用」と「推論処理フィルタの非適用」とがあるので、パラメータセット記憶部40cに記憶されるパラメータセットには、推論処理フィルタを実行可能に設定する第1のパラメータセットと、推論処理フィルタを設定しない第2のパラメータセットと含まれる。光学的情報読取装置1、1Aの運用時には、第1のパラメータセットと、第2のパラメータセットとの中から選択された一方のパラメータセットが適用される。第1のパラメータセットが適用された場合には、推論処理フィルタによって推論処理が実行された理想画像に対してデコード処理部20fによるデコード処理が実行される一方、第2のパラメータセットが適用された場合には、推論処理が実行されない読取画像に対してデコード処理部20fによるデコード処理が実行される。 A parameter related to the inference process filter is also information related to the inference process filter, and in this case, a parameter set including information related to the setting of the inference process filter can be stored in the parameter set storage unit 40c. Since the parameters related to the inference processing filter include "application of the inference processing filter" and "non-application of the inference processing filter", the parameter set stored in the parameter set storage unit 40c is set so that the inference processing filter can be executed. and a second parameter set that does not set the inference processing filter. During operation of the optical information reader 1, 1A, one parameter set selected from the first parameter set and the second parameter set is applied. When the first parameter set is applied, the ideal image on which inference processing has been performed by the inference processing filter is subjected to decoding processing by the decoding processing unit 20f, while the second parameter set is applied. In this case, the decode processing unit 20f performs the decoding processing on the read image for which the inference processing is not performed.

パラメータセット記憶部40cに記憶されるパラメータセットには、カメラ5により生成された読取画像に含まれるコード条件を設定する項目も含まれる。コード条件を設定する項目では、チューニング実行部20dが取得したPPC、コード種、コードサイズ等が設定される。例えば、1つのパラメータセットには、コード条件を設定する項目としてのPPC、コード種、コードサイズと、撮像条件としてのカメラ5のゲイン、照明部4の光量、露光時間と、フィルタ処理部20cが適用する画像処理フィルタの項目としての画像処理フィルタ種類、当該画像処理フィルタのパラメータと、推論処理フィルタの適用項目とを含むことができる。これら各項目は、チューニング実行部20dが設定した値等をそのまま用いてもよいし、ユーザが任意に変更することもできる。 The parameter sets stored in the parameter set storage unit 40 c also include items for setting code conditions included in the read image generated by the camera 5 . In the items for setting the code conditions, the PPC, code type, code size, etc. acquired by the tuning execution unit 20d are set. For example, one parameter set includes PPC, code type, and code size as items for setting code conditions, gain of camera 5 as imaging conditions, light amount of illumination unit 4, exposure time, and filter processing unit 20c. An image processing filter type as an item of an image processing filter to be applied, a parameter of the image processing filter, and an application item of an inference processing filter can be included. For each of these items, the values set by the tuning execution unit 20d may be used as they are, or the user may arbitrarily change them.

(チューニング工程の手順の一例)
光学的情報読取装置1、1Aの設定時にチューニング実行部20dによって行われるチューニング工程の手順の一例について、図10に示すフローチャートに基づいて具体的に説明する。図10に示すフローチャートのスタート後のステップSB1では、チューニング実行部20dが照明部4及びカメラ5を制御してカメラ5に読取画像を生成させ、チューニング実行部20dが読取画像を取得する。このとき、デコード処理前に実行される画像処理フィルタの有無や種類、ニューラルネットワークによる推論処理を適用するためのデコード処理パラメータは任意のパラメータに設定されている。次いでステップSB2に進み、取得した読取画像に対してチューニング実行部20dがデコード処理部20fにデコード処理を実行させる。
(Example of tuning process procedure)
An example of the procedure of the tuning process performed by the tuning executing section 20d when setting the optical information reader 1, 1A will be specifically described with reference to the flowchart shown in FIG. At step SB1 after the start of the flow chart shown in FIG. 10, the tuning executing section 20d controls the illumination section 4 and the camera 5 to cause the camera 5 to generate a read image, and the tuning executing section 20d acquires the read image. At this time, the presence or absence and type of an image processing filter to be executed before the decoding process, and the decoding process parameters for applying the inference process by the neural network are set to arbitrary parameters. Next, in step SB2, the tuning executing section 20d causes the decoding processing section 20f to execute decoding processing on the acquired read image.

デコード処理後、ステップSB3に進み、ステップSB2のデコード処理が成功したか否かをチューニング実行部20dが判定する。ステップSB3でNOと判定されてステップSB2のデコード処理が失敗した場合、即ちコードの読み取りができなかった場合には、ステップSB4に進み、デコード処理パラメータを別のパラメータに変更した後、ステップSB2で再度デコード処理を実行する。全てのデコード処理パラメータでデコード処理を失敗した場合にはこのフローを終了してユーザに報知する。 After the decoding process, the process proceeds to step SB3, and the tuning execution section 20d determines whether or not the decoding process of step SB2 was successful. If NO is determined in step SB3 and the decoding process in step SB2 fails, that is, if the code cannot be read, the process advances to step SB4 to change the decoding process parameter to another parameter. Execute the decoding process again. If the decoding process fails with all the decoding process parameters, this flow is ended and the user is notified.

一方、ステップSB3でYESと判定されてステップSB2のデコード処理が成功した場合には、ステップSB5に進み、チューニング実行部20dがコードパラメータ(PPC、コード種、コードサイズ等)を決定する。チューニング実行部20dがコードパラメータを決定すると、コードパラメータと関連付けられてニューラルネットワーク記憶部40dに記憶されているニューラルネットワークの構造及びパラメータも決定される(ステップSB6)。ステップSB6では、ニューラルネットワーク記憶部40dから読み出した構造及びパラメータでニューラルネットワークを構成する。 On the other hand, if YES is determined in step SB3 and the decoding process in step SB2 succeeds, the process proceeds to step SB5, where the tuning execution unit 20d determines code parameters (PPC, code type, code size, etc.). When the tuning execution unit 20d determines the code parameters, the neural network structure and parameters associated with the code parameters and stored in the neural network storage unit 40d are also determined (step SB6). At step SB6, a neural network is configured with the structure and parameters read from the neural network storage unit 40d.

ステップSB7では、推論処理部20jが、ステップSB6で構成されたニューラルネットワークに読取画像を入力することにより、推論処理を実行し、生成された理想画像に対してデコード処理部20fがデコード処理を実行する。その後、ステップSB8に進み、チューニング実行部20dがステップSB7のデコード処理結果に基づいて読取余裕度を評価し、一旦記憶しておく。 At step SB7, the inference processing unit 20j inputs the read image to the neural network configured at step SB6 to execute inference processing, and the decoding processing unit 20f executes decoding processing on the generated ideal image. do. After that, the process proceeds to step SB8, and the tuning execution unit 20d evaluates the reading margin based on the decoding processing result of step SB7 and temporarily stores it.

ステップSB9では、全てのデコード処理パラメータでデコード処理の実行が完了したか否かを判定する。ステップSB9でNOと判定されて、全てのデコード処理パラメータでデコード処理の実行が完了していない場合にはステップSB10に進み、デコード処理パラメータを別のパラメータに変更した後、ステップSB7に進む。 At Step SB9, it is determined whether or not the decoding process has been completed with all the decoding process parameters. If NO is determined in step SB9 and execution of the decoding process has not been completed with all the decoding process parameters, the process proceeds to step SB10, changes the decoding process parameters to other parameters, and then proceeds to step SB7.

一方、ステップSB9でYESと判定されて全てのデコード処理パラメータでデコード処理の実行が完了するとステップSB11に進む。ステップSB11では、チューニング実行部20dが、全てのデコード処理パラメータの中から読取余裕度が最も高いデコード処理パラメータを選択し、その選択したデコード処理パラメータを運用時に適用するパラメータとして決定する。尚、チューニング工程では、撮像条件等も適切な条件に設定される。 On the other hand, when it is judged as YES in step SB9 and execution of the decoding process is completed with all the decoding process parameters, the process proceeds to step SB11. At step SB11, the tuning execution unit 20d selects the decoding process parameter with the highest reading margin from all the decoding process parameters, and determines the selected decoding process parameter as the parameter to be applied during operation. Incidentally, in the tuning process, the imaging conditions and the like are also set to appropriate conditions.

(縮小率及び拡大率決定前のデコード処理手順)
次に、縮小率及び拡大率決定前のデコード処理手順の一例について、図11に示すフローチャートに基づいて具体的に説明する。図11に示すフローチャートで特定される処理は、図10に示すフローチャートのステップSB2で実行することができる。
(Decoding processing procedure before determination of reduction ratio and enlargement ratio)
Next, an example of the decoding processing procedure before determining the reduction rate and the enlargement rate will be specifically described with reference to the flowchart shown in FIG. The processing specified in the flowchart shown in FIG. 11 can be executed in step SB2 of the flowchart shown in FIG.

図11に示すフローチャートのスタート後のステップSC1では、チューニング実行部20dが、複数の画像処理フィルタの中から任意の画像処理フィルタを選択する。この画像処理フィルタは、フィルタ処理部20cで実行されるフィルタである。その後、ステップSC2では、ステップSC1で選択した画像処理フィルタを読取画像に対してフィルタ処理部20cが実行する。 At step SC1 after the start of the flowchart shown in FIG. 11, the tuning execution unit 20d selects an arbitrary image processing filter from among a plurality of image processing filters. This image processing filter is a filter executed by the filter processing unit 20c. After that, in step SC2, the filter processing unit 20c executes the image processing filter selected in step SC1 on the read image.

次いで、ステップSC3に進み、画像ピラミッドを作成する。画像ピラミッドは、元の読取画像、元の読取画像を1/2に縮小した画像、元の読取画像を1/4に縮小した画像、元の読取画像を1/8に縮小した画像、…で構成されている。読取画像の縮小は、縮小部20hで実行される。また、画像ピラミッドは、元の読取画像、元の読取画像を2倍に拡大した画像、元の読取画像を4倍に拡大した画像、元の読取画像を8倍に拡大した画像、…で構成することもできる。読取画像の拡大は、拡大部20iで実行される。尚、縮小した画像と、拡大した画像とのうち、一方を省略してもよい。 Next, at step SC3, an image pyramid is created. The image pyramid consists of an original read image, an image reduced to 1/2 of the original read image, an image reduced to 1/4 of the original read image, an image reduced to 1/8 of the original read image, and so on. It is configured. Reduction of the read image is performed by the reduction unit 20h. The image pyramid consists of an original read image, an image obtained by enlarging the original read image by two times, an image obtained by enlarging the original read image by four times, an image obtained by enlarging the original read image by eight times, and so on. You can also Enlargement of the read image is performed by the enlarging section 20i. One of the reduced image and the enlarged image may be omitted.

画像ピラミッドを作成した後、ステップSC4に進み、画像ピラミッドを構成する複数の読取画像の中から任意の読取画像を選択する。この選択された画像の中には、縮小及び拡大されていない元の読取画像が含まれる場合もある。ステップSC5では、抽出部20gが、ステップSC4で選択した読取画像の中からコードが存在する可能性が高いコード候補領域を抽出する。その後、ステップSC6に進み、推論処理部20jが、ステップSC5で抽出されたコード候補領域に対応する部分画像をニューラルネットワークに入力して推論処理を実行する。ニューラルネットワークに入力する部分画像のサイズは、上述したコード条件によって決定する。 After creating the image pyramid, the process advances to step SC4 to select an arbitrary read image from among the plurality of read images forming the image pyramid. This selected image may include the original scanned image that has not been scaled down or scaled up. At step SC5, the extraction unit 20g extracts a code candidate area in which a code is likely to exist from the read image selected at step SC4. After that, in step SC6, the inference processing unit 20j inputs the partial image corresponding to the code candidate region extracted in step SC5 to the neural network and executes inference processing. The size of the partial image input to the neural network is determined by the code conditions described above.

推論処理を実行して理想画像を生成した後、ステップSC7に進み、コードの輪郭やコードを構成しているモジュールの位置決め処理を実行する。位置決め処理後、ステップSC8に進み、コードを構成している各モジュールが白であるか、黒であるかを判別する。白黒の判別後、ステップSC9に進み、生成された理想画像に対してデコード処理部20fがデコード処理を実行する。デコード処理では、例えばモジュールの0-1マトリックスから文字列を復元する手法を採用することができる。 After executing the inference processing and generating the ideal image, the process proceeds to step SC7 to execute the contour of the code and the positioning processing of the modules constituting the code. After the positioning process, the process proceeds to step SC8 to determine whether each module constituting the code is white or black. After determining black and white, the process proceeds to step SC9, and the decoding processing unit 20f executes decoding processing on the generated ideal image. In decoding processing, for example, a method of restoring a character string from a 0-1 matrix of modules can be adopted.

その後、ステップSC10に進み、ステップSC9のデコード処理が成功したか否かをチューニング実行部20dが判定する。ステップSC10でNOと判定されてステップSC9のデコード処理が失敗した場合には、ステップSC11に進み、画像ピラミッドを構成している全ての読取画像が選択されたか否かを判定する。ステップSC11でNOと判定されて画像ピラミッドを構成している全ての読取画像が選択されていない場合にはステップSC4に進み、画像ピラミッドを構成している別の縮小された読取画像または別の拡大された読取画像を選択し、ステップSC5に進む。 Thereafter, the process proceeds to step SC10, and the tuning execution unit 20d determines whether or not the decoding process of step SC9 was successful. If NO is determined in step SC10 and the decoding process in step SC9 fails, the process proceeds to step SC11 to determine whether or not all the read images forming the image pyramid have been selected. If the determination in step SC11 is NO and all the read images forming the image pyramid have not been selected, the process proceeds to step SC4 to select another reduced read image or another enlarged image forming the image pyramid. The scanned image is selected, and the process proceeds to step SC5.

一方、ステップSC11でYESと判定されて画像ピラミッドを構成している全ての読取画像が選択された場合にはこのフローを終了し、デコードが成功した条件を記憶しておく。 On the other hand, if YES is determined in step SC11 and all the read images forming the image pyramid have been selected, this flow is terminated and the conditions for successful decoding are stored.

(縮小率及び拡大率決定後のデコード処理手順)
次に、縮小率及び拡大率決定後のデコード処理手順の一例について、図12に示すフローチャートに基づいて具体的に説明する。図12に示すフローチャートで特定される処理は、図10に示すフローチャートのステップSB7及び光学的情報読取装置1、1Aの運用時に実行することができる。
(Decode processing procedure after determination of reduction ratio and enlargement ratio)
Next, an example of the decoding processing procedure after determining the reduction rate and the enlargement rate will be specifically described with reference to the flowchart shown in FIG. The processing specified in the flowchart shown in FIG. 12 can be executed during operation of step SB7 of the flowchart shown in FIG. 10 and the optical information reader 1, 1A.

図12に示すフローチャートのスタート後のステップSD1では、図11に示すフローチャートのステップSC1で選択した画像処理フィルタを読取画像に対してフィルタ処理部20cが実行する。このとき、図13の上側に示すような読取画像に対してフィルタ処理部20cが平均化フィルタを実行した場合には、図13の下側に示すような画像処理フィルタ実行後の画像が得られる。 At step SD1 after the start of the flow chart shown in FIG. 12, the filter processing section 20c executes the image processing filter selected at step SC1 of the flow chart shown in FIG. 11 on the read image. At this time, when the filter processing unit 20c executes the averaging filter on the read image as shown in the upper part of FIG. 13, the image after execution of the image processing filter as shown in the lower part of FIG. 13 is obtained. .

その後、ステップSD2に進み、必要に応じて読取画像の縮小・拡大処理を実行する。具体的には、画像処理フィルタ実行後の読取画像におけるコードのPPCが特定範囲内である場合には、縮小または拡大を非実行にする一方、特定範囲外である場合には、縮小または拡大を実行し、PPCが特定範囲内に入るようにする。図14の上側に、縮小処理後の読取画像の例を示している。 After that, the process advances to step SD2 to execute reduction/enlargement processing of the read image as necessary. Specifically, when the PPC of the code in the read image after execution of the image processing filter is within a specific range, reduction or enlargement is not executed, and when it is outside the specific range, reduction or enlargement is not executed. Execute and make sure the PPC is within a certain range. The upper part of FIG. 14 shows an example of a read image after reduction processing.

次いで、ステップSD3では、抽出部20gが、ステップSD2で縮小または拡大された読取画像の中からコードが存在する可能性が高いコード候補領域を抽出する。図14の下側に、コード候補領域抽出画像の例を示している。尚、ステップSD2で縮小または拡大されていない場合には、ステップSD3で元の読取画像に対して抽出処理が実行されることになる。 Next, in step SD3, the extracting unit 20g extracts code candidate areas in which codes are likely to exist from the read image reduced or enlarged in step SD2. The lower part of FIG. 14 shows an example of the chord candidate area extraction image. If the image is not reduced or enlarged in step SD2, the original read image is extracted in step SD3.

その後、ステップSD4に進み、推論処理部20jが、ステップSD3で抽出されたコード候補領域に対応する部分画像をニューラルネットワークに入力して推論処理を実行する。図15に推論処理実行前の読取画像と推論処理実行後の理想画像の例を示している。理想画像の生成後、ステップSD5~SD7を経てこのフローが終了する。ステップSD5~SD7は、図11に示すフローチャートのステップSC7~SC9と同じである。 Then, in step SD4, the inference processing unit 20j inputs the partial image corresponding to the code candidate region extracted in step SD3 to the neural network and executes inference processing. FIG. 15 shows an example of a read image before execution of inference processing and an example of an ideal image after execution of inference processing. After the ideal image is generated, this flow ends through steps SD5 to SD7. Steps SD5-SD7 are the same as steps SC7-SC9 in the flow chart shown in FIG.

(2種類のデコード処理)
上述したように本実施形態では、カメラ5により生成された読取画像に推論処理部20jが推論処理を実行することなく、当該読取画像に対してデコード処理部20fがデコード処理する場合と、カメラ5により生成された読取画像に推論処理部20jが推論処理を実行して理想画像を生成し、生成した理想画像に対してデコード処理部20fがデコード処理する場合とがある。前者の場合、即ち、読取画像に対してデコード処理する場合を第1デコード処理といい、後者の場合、即ち、推論処理で生成された理想画像に対してデコード処理する場合を第2デコード処理という。
(Two kinds of decoding processing)
As described above, in the present embodiment, the decode processing unit 20f decodes the read image generated by the camera 5 without the inference processing unit 20j executing the inference processing on the read image. In some cases, the inference processing unit 20j performs inference processing on the read image generated by the inference processing unit 20j to generate an ideal image, and the decoding processing unit 20f performs decoding processing on the generated ideal image. The former case, i.e., decoding the read image, is referred to as the first decoding process, and the latter case, i.e., decoding the ideal image generated by the inference process, is referred to as the second decoding process. .

第1デコード処理及び第2デコード処理は、共にデコード処理部20fで実行されるが、異なるデコード処理部で実行するようにしてもよい。すなわち、プロセッサ20は、専用コア25と第1~第4汎用コア21~24とを有しているので、専用コア25で構成される推論処理部20jによる推論処理と、第1~第4汎用コア21~24の少なくとも1つで構成されるデコード処理部20fによる第1デコード処理とを並列的にかつ高速で実行することができる。さらに、プロセッサ20は、推論処理部20jによる推論処理の完了後に、デコード処理部20fによる第2デコード処理を実行することができる。以下、具体的について説明する。 The first decoding process and the second decoding process are both executed by the decoding processing section 20f, but may be executed by different decoding processing sections. That is, since the processor 20 has the dedicated core 25 and the first to fourth general-purpose cores 21 to 24, the inference processing by the inference processing unit 20j configured by the dedicated core 25 and the first to fourth general-purpose The first decoding processing by the decoding processing section 20f constituted by at least one of the cores 21 to 24 can be executed in parallel at high speed. Furthermore, the processor 20 can execute the second decoding process by the decoding processing section 20f after the inference processing by the inference processing section 20j is completed. A specific description will be given below.

(第1の例)
図16は、第1デコード処理と推論処理とを並列的に実行する場合の第1の例を示すフローチャートである。このフローチャートのスタート後のステップSE1では、プロセッサ20が読取画像を取得する。その後、ステップSE2で第1デコード処理、即ち、読取画像に対してデコード処理部20fがデコード処理を実行する。第1デコード処理後にステップSE3に進み、読み取りが成功したか否かを判定する。読み取りが成功しなければ、ステップSE2に戻り、第1デコード処理を再度実行する。所定回数(時間)経過しても読み取りが成功しなければタイムアウトとなり、デコード処理を終了する。一方、ステップSE3で読み取りが成功したと判定された場合には、デコード処理を終了する。
(first example)
FIG. 16 is a flow chart showing a first example of parallel execution of the first decoding process and the inference process. At step SE1 after the start of this flow chart, the processor 20 acquires a read image. After that, in step SE2, the decoding processing section 20f executes the first decoding process, that is, the decoding process for the read image. After the first decoding process, the process proceeds to step SE3 to determine whether or not the reading is successful. If the reading is not successful, the process returns to step SE2 and executes the first decoding process again. If reading is not successful even after a predetermined number of times (time) has elapsed, a time-out occurs and the decoding process is terminated. On the other hand, if it is determined in step SE3 that the reading has succeeded, the decoding process is terminated.

また、ステップSE1からステップSE2に進むのと並行してステップSE4に進む。ステップSE4では、カメラ5により生成された読取画像に推論処理部20jが推論処理を実行して理想画像を生成する。この理想画像の生成と、ステップSE2の第1デコード処理とは並行して実行され、別の読取画像である。ステップSE4で理想画像を生成した後、ステップSE5に進み、第2デコード処理、即ち、ステップSE4で生成した理想画像に対してデコード処理部20fがデコード処理を実行する。第2デコード処理後にステップSE6に進み、読み取りが成功したか否かを判定する。読み取りが成功しなければ、ステップSE5に戻り、第2デコード処理を再度実行する。所定回数(時間)経過しても読み取りが成功しなければタイムアウトとなり、デコード処理を終了する。一方、ステップSE6で読み取りが成功したと判定された場合には、デコード処理を終了する。 In parallel with proceeding from step SE1 to step SE2, the process advances to step SE4. At step SE4, the inference processing unit 20j performs inference processing on the read image generated by the camera 5 to generate an ideal image. The generation of this ideal image and the first decoding process of step SE2 are executed in parallel, and are different read images. After the ideal image is generated in step SE4, the process proceeds to step SE5, where the second decoding process, that is, the decoding process of the ideal image generated in step SE4 is performed by the decoding processing unit 20f. After the second decoding process, the process proceeds to step SE6 to determine whether or not the reading is successful. If the reading is not successful, the process returns to step SE5 to execute the second decoding process again. If reading is not successful even after a predetermined number of times (time) has elapsed, a time-out occurs and the decoding process is terminated. On the other hand, if it is determined in step SE6 that the reading has succeeded, the decoding process is terminated.

ステップSE4~SE6をキャンセルする機能を光学的情報読取装置1に設けてもよい。ステップSE4~SE6は、推論処理及び第2デコード処理を実行するステップであるが、特に推論処理には時間を要するため、ステップSE4~SE6をキャンセルすることで、処理を高速化できる。ステップSE4~SE6をキャンセルする方法としては、例えばユーザの操作による方法がある。例えば、パラメータセット記憶部40cに記憶されるパラメータの一つとして、推論処理を実行するか否かの選択パラメータを含んでいてもよい。この選択パラメータをユーザが変更することで、推論処理を実行するモードと、実行しないモードとの一方に切り替えることができる。選択パラメータとしては、例えば「速度優先モード」の選択パラメータであってもよい。「速度優先モード」がユーザにより選択された場合には、推論処理を実行しないモードで動作させ、一方、「速度優先モード」が選択されない場合には、推論処理を実行するモードで動作させる。尚、チューニングによって得られた情報に基づいて、推論処理が不要な状況であると判定される場合には推論処理を自動的にキャンセルするようにしてもよい。 The optical information reader 1 may be provided with a function to cancel steps SE4 to SE6. Steps SE4 to SE6 are steps for executing the inference processing and the second decoding processing. Since the inference processing in particular takes time, canceling steps SE4 to SE6 can speed up the processing. As a method of canceling steps SE4 to SE6, for example, there is a method by user's operation. For example, one of the parameters stored in the parameter set storage unit 40c may include a selection parameter as to whether or not to execute inference processing. By changing this selection parameter by the user, it is possible to switch between a mode in which inference processing is executed and a mode in which inference processing is not executed. The selection parameter may be, for example, a selection parameter for "speed priority mode". When the 'speed priority mode' is selected by the user, the machine is operated in a mode in which inference processing is not executed, and when the 'speed priority mode' is not selected, it is operated in a mode in which inference processing is executed. It should be noted that the inference processing may be automatically canceled when it is determined that the inference processing is unnecessary based on the information obtained by tuning.

図17Aは、上記第1の例のシーケンス例1を示すシーケンス図である。この図に示すように、第1~第4汎用コア21~24のうちの少なくとも1つの汎用コアが、第1デコード処理を実行している間に専用コア25が推論処理を実行する。汎用コアは、第1デコード処理が終了し、かつ、推論処理が終了すると、第2デコード処理を実行する。 FIG. 17A is a sequence diagram showing sequence example 1 of the first example. As shown in this figure, while at least one general-purpose core among the first to fourth general-purpose cores 21 to 24 is executing the first decoding process, the dedicated core 25 executes the inference process. The general-purpose core executes the second decoding process when the first decoding process ends and the inference process ends.

図17Bは、上記第1の例のシーケンス例2を示すシーケンス図である。この例では、第1汎用コア21が第1デコード処理と第2デコード処理とを別スレッドで並列的に実行する。具体的には、第1汎用コア21が第1デコード処理を実行する間に専用コア25が推論処理を実行する。第1汎用コア21は、推論処理が終了すると、第1デコード処理の終了を待つことなく、第1デコード処理とは別スレッドで第2デコード処理を実行する。 FIG. 17B is a sequence diagram showing sequence example 2 of the first example. In this example, the first general-purpose core 21 executes the first decoding process and the second decoding process in parallel in separate threads. Specifically, the dedicated core 25 executes the inference processing while the first general-purpose core 21 executes the first decoding processing. When the inference processing ends, the first general-purpose core 21 executes the second decoding processing in a different thread from the first decoding processing without waiting for the end of the first decoding processing.

図17Cは、上記第1の例のシーケンス例3を示すシーケンス図である。この例では、第1汎用コア21が第1デコード処理を実行し、第2汎用コア22が第2デコード処理を実行する。具体的には、第1汎用コア21が第1デコード処理を実行する間に専用コア25が推論処理を実行する。第2汎用コア22は、推論処理が終了すると、第1デコード処理の終了を待つことなく、第2デコード処理を実行する。これにより、第1デコード処理と第2デコード処理とをそれぞれ別の汎用コアで実行できるので、処理がより一層高速になる。 FIG. 17C is a sequence diagram showing sequence example 3 of the first example. In this example, the first general-purpose core 21 executes the first decoding process, and the second general-purpose core 22 executes the second decoding process. Specifically, the dedicated core 25 executes the inference processing while the first general-purpose core 21 executes the first decoding processing. When the inference processing ends, the second general-purpose core 22 executes the second decoding processing without waiting for the end of the first decoding processing. As a result, the first decoding process and the second decoding process can be executed by different general-purpose cores, so that the processing speed is further increased.

(第2の例)
図18は、第1デコード処理と推論処理とを並列的に実行する場合の第2の例を示すフローチャートであり、この第2の例では、コード候補領域が複数抽出された場合を示す。このフローチャートのスタート後のステップSF1では、抽出部20gがカメラ5により生成された読取画像の中からコードが存在する可能性が高いコード候補領域を抽出する抽出処理を実行する。これにより、複数のコード候補領域からなる候補領域群が抽出される。複数のコード候補領域は、1枚の読取画像の中から抽出されており、実際にはコードが含まれていない領域が混在していることもある。
(Second example)
FIG. 18 is a flowchart showing a second example in which the first decoding process and the inference process are executed in parallel. This second example shows a case where a plurality of code candidate regions are extracted. In step SF1 after the start of this flow chart, the extracting unit 20g executes an extracting process of extracting code candidate areas in which codes are likely to exist from the read image generated by the camera 5. FIG. As a result, a candidate region group consisting of a plurality of code candidate regions is extracted. A plurality of code candidate areas are extracted from one read image, and in fact, there may be areas where no code is included.

ステップSF1を経た後、第1デコードシーケンス処理部による処理と、第2デコードシーケンス処理部による処理とに分かれる。第1デコードシーケンス処理部では、ステップSF2において、コード候補領域群の中から1つのコード候補領域を選択する。このとき、コードが存在する可能性が高い領域から低い領域に順番を付けておき、コードが存在する可能性が高い領域を優先して選択する。ステップSF3では、ステップSF2で選択したコード候補領域に対してデコード処理部20fが第1デコード処理を実行する。第1デコード処理後にステップSF4に進み、読み取りが成功したか否かを判定する。ステップSF4で読み取りが成功したと判定された場合には、デコード処理を終了する。 After step SF1, the processing is divided into the processing by the first decoding sequence processing section and the processing by the second decoding sequence processing section. In step SF2, the first decoding sequence processing section selects one code candidate area from the code candidate area group. At this time, an order is given to the regions with the highest probability that the code exists in descending order, and the region with the highest probability that the code exists is preferentially selected. At step SF3, the decoding processing unit 20f performs the first decoding process on the code candidate area selected at step SF2. After the first decoding process, the process proceeds to step SF4 to determine whether or not the reading is successful. If it is determined in step SF4 that the reading has succeeded, the decoding process is terminated.

一方、読み取りが成功しなければ、ステップSF2に戻り、コード候補領域群の中から第1デコード処理を実行していないコード候補領域を上記順番に従って1つだけ選択する。その後、ステップSF3に進んでステップSF2で選択したコード候補領域に対してデコード処理部20fが第1デコード処理を実行する。再び読み取りが成功しなければ、ステップSF2に戻る。読み取りが成功しなければ、これを繰り返して全てのコード候補領域に対してデコード処理部20fが第1デコード処理を実行する。読み取りが1つも成功しない場合であってもタイムアウトとなり、デコード処理を終了する。 On the other hand, if the reading is not successful, the process returns to step SF2, and only one code candidate area for which the first decoding process has not been executed is selected from the code candidate area group according to the above order. After that, the process proceeds to step SF3, and the decoding processing unit 20f executes the first decoding process on the code candidate area selected in step SF2. If reading is not successful again, the process returns to step SF2. If reading is not successful, this is repeated and the decoding processing unit 20f executes the first decoding process on all code candidate areas. Even if the reading is not successful, a time-out occurs and the decoding process is terminated.

一方、第2デコードシーケンス処理部では、ステップSF5において、ステップSF2と同様に、コード候補領域群の中から1つのコード候補領域を選択する。ステップSF6では、ステップSF5で選択したコード候補領域に対して推論処理部20jが推論処理を実行して理想画像を生成する。この理想画像の生成と、ステップSF3の第1デコード処理とは並行して実行される。ステップSF6で理想画像を生成した後、ステップSF7に進み、第2デコード処理、即ち、ステップSF6で生成した理想画像に対してデコード処理部20fがデコード処理を実行する。第2デコード処理後にステップSF8に進み、読み取りが成功したか否かを判定する。ステップSF8で読み取りが成功したと判定された場合には、デコード処理を終了する。 On the other hand, in step SF5, the second decoding sequence processing section selects one code candidate area from the code candidate area group, as in step SF2. In step SF6, the inference processing unit 20j performs inference processing on the code candidate region selected in step SF5 to generate an ideal image. The generation of this ideal image and the first decoding process in step SF3 are executed in parallel. After the ideal image is generated in step SF6, the process proceeds to step SF7, where the second decoding process, that is, the decoding process of the ideal image generated in step SF6 is performed by the decoding processing unit 20f. After the second decoding process, the process proceeds to step SF8 to determine whether or not the reading is successful. If it is determined in step SF8 that the reading has succeeded, the decoding process is terminated.

一方、読み取りが成功しなければ、ステップSF5に戻り、コード候補領域群の中から推論処理を実行していないコード候補領域を上記順番に従って1つだけ選択する。その後、ステップSF6に進んで理想画像を生成した後、ステップSF7に進む。ステップSF7では第2デコード処理を実行する。再び読み取りが成功しなければ、ステップSF5に戻る。読み取りが成功しなければ、これを繰り返して全てのコード候補領域に対して理想画像の生成及び第2デコード処理を実行する。読み取りが1つも成功しない場合もデコード処理を終了する。 On the other hand, if the reading is not successful, the process returns to step SF5, and only one code candidate area for which inference processing has not been executed is selected from the code candidate area group according to the above order. Then, after proceeding to step SF6 to generate an ideal image, the process proceeds to step SF7. In step SF7, a second decoding process is executed. If reading is not successful again, the process returns to step SF5. If the reading is not successful, this is repeated to generate the ideal image and execute the second decoding process for all code candidate areas. The decoding process is terminated even if none of the readings are successful.

図19は、第2の例のシーケンス例を示すシーケンス図である。この例では、第1汎用コア21及び第2汎用コア22が共に抽出処理を実行する。これにより、コード候補領域が複数存在していても、高速に抽出処理が完了する。この例では、コード候補領域1~8が抽出された場合について説明する。 FIG. 19 is a sequence diagram showing a sequence example of the second example. In this example, both the first general-purpose core 21 and the second general-purpose core 22 execute extraction processing. As a result, even if there are a plurality of code candidate regions, the extraction process can be completed quickly. In this example, a case where chord candidate regions 1 to 8 are extracted will be described.

抽出処理後、第1汎用コア21がコード候補領域1に対する第1デコード処理を実行する(第1デコード処理1)。また、第2汎用コア22がコード候補領域2に対する第1デコード処理を実行する(第1デコード処理2)。第1デコード処理1及び第1デコード処理2は並列的に実行される。また、専用コア25は、第1デコード処理1及び第1デコード処理2が実行されている間に、コード候補領域5に対して推論処理を実行する(推論処理1)。 After the extraction process, the first general-purpose core 21 executes the first decoding process on the code candidate area 1 (first decoding process 1). Also, the second general-purpose core 22 executes the first decoding process for the code candidate area 2 (first decoding process 2). The first decoding process 1 and the first decoding process 2 are executed in parallel. Also, the dedicated core 25 executes inference processing on the code candidate region 5 while the first decoding processing 1 and the first decoding processing 2 are being executed (inference processing 1).

第1汎用コア21は、第1デコード処理1が終了すると、コード候補領域3に対する第1デコード処理を実行する(第1デコード処理3)。また、第2汎用コア22は、第1デコード処理2が終了すると、コード候補領域4に対する第1デコード処理を実行する(第1デコード処理4)。第1デコード処理3及び第1デコード処理4の実行中に専用コア25が推論処理1を終了すると、専用コア25はコード候補領域7に対して推論処理を実行する(推論処理2)。 After completing the first decoding process 1, the first general-purpose core 21 executes the first decoding process on the code candidate area 3 (first decoding process 3). Further, when the first decoding process 2 ends, the second general-purpose core 22 executes the first decoding process on the code candidate area 4 (first decoding process 4). When the dedicated core 25 completes the inference processing 1 during execution of the first decoding processing 3 and the first decoding processing 4, the dedicated core 25 performs inference processing on the code candidate region 7 (inference processing 2).

第1汎用コア21は、第1デコード処理3が終了すると、推論処理1が既に終了しているので、推論処理1によって生成された理想画像(コード候補領域5に対応する画像)に対して第2デコード処理を実行する(第2デコード処理5)。一方、第2汎用コア22は、第1デコード処理4が終了すると、推論処理2が終了していないので、コード候補領域6に対する第1デコード処理を実行する(第1デコード処理6)。 When the first decoding process 3 ends, the first general-purpose core 21 performs the first decoding on the ideal image (image corresponding to the code candidate region 5) generated by the inference process 1, because the inference process 1 has already ended. 2 decoding processing is executed (second decoding processing 5). On the other hand, when the first decoding process 4 ends, the second general-purpose core 22 executes the first decoding process on the code candidate region 6 because the inference process 2 has not ended (first decoding process 6).

第2デコード処理5及び第1デコード処理6の実行中に専用コア25が推論処理2を終了する。第1汎用コア21は、第1デコード処理5が終了すると、推論処理2が既に終了しているので、推論処理2によって生成された理想画像(コード候補領域7に対応する画像)に対して第2デコード処理を実行する(第2デコード処理7)。一方、第2汎用コア22は、第1デコード処理6が終了すると、コード候補領域8に対する第1デコード処理を実行する(第1デコード処理8)。このように、第1汎用コア21及び第2汎用コア22は、専用コア25による推論処理で理想画像が生成された場合、現在実行している第1デコード処理が完了すると、次の第1デコード処理を実行することなく、当該次の第1デコード処理に優先して第2デコード処理を実行するように構成されている。 The dedicated core 25 ends the inference processing 2 while the second decoding processing 5 and the first decoding processing 6 are being executed. When the first decoding process 5 ends, the first general-purpose core 21 performs the first decoding on the ideal image (image corresponding to the code candidate region 7) generated by the inference process 2, because the inference process 2 has already ended. 2 decoding processing is executed (second decoding processing 7). On the other hand, after completing the first decoding process 6, the second general-purpose core 22 executes the first decoding process on the code candidate area 8 (first decoding process 8). In this way, when the ideal image is generated by the inference processing by the dedicated core 25, the first general-purpose core 21 and the second general-purpose core 22 perform the next first decoding when the currently executing first decoding processing is completed. It is configured to execute the second decoding process with priority over the next first decoding process without executing the process.

複数ある汎用コア21~24のうち、例えば第1汎用コア21が抽出処理を実行し、第2汎用コア22が第1デコード処理を実行し、第3汎用コア23が第2デコード処理を実行してもよい。また、第4コア24が、カメラ5の撮像制御や照明部4の制御を実行してもよい。このように複数種の処理を各汎用コア21~24に分担することで、処理をより一層高速化できる。 Among the plurality of general-purpose cores 21 to 24, for example, the first general-purpose core 21 executes the extraction process, the second general-purpose core 22 executes the first decoding process, and the third general-purpose core 23 executes the second decoding process. may Further, the fourth core 24 may perform imaging control of the camera 5 and control of the lighting section 4 . By allocating a plurality of types of processing to the general-purpose cores 21 to 24 in this manner, the processing speed can be further increased.

(第3の例)
図20は、第1デコード処理と推論処理とを並列的に実行する場合の第3の例を示すフローチャートである。この第3の例では、コード候補領域が複数抽出された場合に、デコードが済んでいるコード候補領域であるか否かの判定ステップを経た後、デコードが済んでいないと判定されると第1デコード処理を行うようにしている。
(Third example)
FIG. 20 is a flowchart showing a third example of parallel execution of the first decoding process and the inference process. In this third example, when a plurality of code candidate regions are extracted, after the step of determining whether or not the code candidate region has been decoded, if it is determined that the decoding has not been completed, the first code candidate region is extracted. I am trying to do the decoding process.

このフローチャートでは、スタート後、第1デコードシーケンス処理部による処理と、第2デコードシーケンス処理部による処理とに分かれる。第1デコードシーケンス処理部のステップSG1では、抽出部20gがカメラ5により生成された読取画像の中からコードが存在する可能性が高いコード候補領域を抽出する第1抽出処理を実行する。一方、第2デコードシーケンス処理部のステップSG7では、抽出部20gがカメラ5により生成された読取画像の中からコードが存在する可能性が高いコード候補領域を抽出する第2抽出処理を実行する。 In this flowchart, after starting, the processing is divided into the processing by the first decoding sequence processing section and the processing by the second decoding sequence processing section. In step SG1 of the first decoding sequence processing section, the extraction section 20g executes a first extraction process of extracting a code candidate area in which a code is likely to exist from the read image generated by the camera 5. FIG. On the other hand, in step SG7 of the second decoding sequence processing section, the extraction section 20g executes a second extraction process of extracting a code candidate area in which a code is likely to exist from the read image generated by the camera 5. FIG.

ステップSG1の第1抽出処理と、ステップSG7の第2抽出処理とは、抽出の条件が異なっており、後述するように、第1抽出処理で抽出されたコード候補領域に対しては第1デコード処理を実行し(ステップSG4)、第2抽出処理で抽出されたコード候補領域に対しては推論処理を実行する(ステップSG14)。このように第1抽出処理と第2抽出処理とで抽出の条件を変えている理由は、第1デコードシーケンス処理部では読み取りが簡単な画像を高速に捉えて高速に読み取ることが狙いである一方、第2デコードシーケンス処理部では、第1デコードシーケンス処理部で失敗する可能性が高く、読み取りが難しい画像を精度良く捉えて正確に読み取ることが狙いとなっているからである。 The first extraction process of step SG1 and the second extraction process of step SG7 have different extraction conditions. Processing is executed (step SG4), and inference processing is executed for the code candidate regions extracted in the second extraction processing (step SG14). The reason why the extraction conditions are changed between the first extraction process and the second extraction process is that the first decoding sequence processing unit can quickly capture and read an image that is easy to read. This is because, in the second decoding sequence processing section, there is a high possibility that the first decoding sequence processing section will fail, and the aim is to accurately capture and accurately read an image that is difficult to read.

例えば、第1抽出処理は、コード候補領域を高速に抽出可能にする第1の所定条件で抽出する一方、第2抽出処理は、コード候補領域を前記第1の所定条件よりも精度の高い抽出を可能にする第2の所定条件で抽出する。言い換えると、第1の所定条件は第2の所定条件よりも抽出の精度が低い分、高速な抽出処理が可能になるので、第1の所定条件は、第2の所定条件よりも高速な抽出を可能にする条件である。 For example, the first extraction process extracts the code candidate region under a first predetermined condition that enables high-speed extraction, while the second extraction process extracts the code candidate region with higher accuracy than the first predetermined condition. is extracted under a second predetermined condition that enables In other words, since the accuracy of extraction is lower under the first predetermined condition than under the second predetermined condition, high-speed extraction processing is possible. is a condition that enables

具体的な条件設定としては、第1の所定条件の抽出閾値を第2の所定条件の抽出閾値よりも低くすること、第1の所定条件を構成する抽出条件の数を第2の所定条件を構成する抽出条件の数よりも少なくする等である。また、第1の所定条件を構成する抽出条件に別の抽出条件を組み合わせて第2の所定条件を構成してもよい。 As specific condition settings, the extraction threshold for the first predetermined condition is set to be lower than the extraction threshold for the second predetermined condition, and the number of extraction conditions constituting the first predetermined condition is set to be lower than the second predetermined condition. For example, the number of extraction conditions is set to be less than the number of constituent extraction conditions. Alternatively, the second predetermined condition may be configured by combining another extraction condition with the extraction condition that configures the first predetermined condition.

ステップSG1で高速な抽出処理を実行した後、ステップSG2に進み、コード候補領域群の中から1つのコード候補領域を選択する。その後、ステップSG3に進み、ステップSG2で選択したコード候補領域が既にデコード処理されたコード候補領域であるか否かを判定する。ステップSG3でYESと判定されて既にデコード処理されたコード候補領域である場合には、ステップSG2に戻ってコード候補領域群の中から別のコード候補領域を選択してステップSG3に進む。 After high-speed extraction processing is executed in step SG1, the process proceeds to step SG2 to select one chord candidate region from the chord candidate region group. After that, the process proceeds to step SG3, and it is determined whether or not the code candidate area selected in step SG2 is already decoded. If YES is determined in step SG3 and the code candidate area has already been decoded, the process returns to step SG2, another code candidate area is selected from the code candidate area group, and the process proceeds to step SG3.

ステップSG3でYESと判定された場合には、ステップSG2で選択したコード候補領域が未だデコード処理されていないということであるので、ステップSG4に進み、ステップSG2で選択したコード候補領域に対してデコード処理部20fが第1デコード処理を実行する。第1デコード処理後にステップSG5に進み、読み取りが成功したか否かを判定する。ステップSG5で読み取りが成功したと判定された場合には、ステップSG6に進み、読み取りが終了したか否かを判定する。ステップSG5による第1デコード処理で読み取りが終了した場合には、このフローを終了するが、読み取りが終了していない場合には、ステップSG2に戻ってコード候補領域群の中から別のコード候補領域を選択してステップSG3に進む。また、ステップSG5で読み取りが成功しなければ、ステップSG2に戻る。 If it is determined YES in step SG3, it means that the code candidate area selected in step SG2 has not been decoded yet. The processing unit 20f executes the first decoding process. After the first decoding process, the process proceeds to step SG5 to determine whether or not the reading is successful. If it is determined in step SG5 that the reading has succeeded, the process proceeds to step SG6 to determine whether or not the reading has been completed. If the reading is completed in the first decoding process in step SG5, this flow is terminated. If the reading is not completed, the process returns to step SG2 to select another code candidate area from the code candidate area group. is selected and the process proceeds to step SG3. Also, if the reading is not successful in step SG5, the process returns to step SG2.

一方、第2デコードシーケンス処理部のステップSG7を経てステップSG8に進むと、コード候補領域群の中から1つのコード候補領域を選択する。ステップSG9~SG12は、上記ステップSG3~SG6と同様なステップである。 On the other hand, when proceeding to step SG8 via step SG7 of the second decoding sequence processing section, one code candidate area is selected from the code candidate area group. Steps SG9 to SG12 are steps similar to steps SG3 to SG6.

また、ステップSG7を経てステップSG13に進むと、コード候補領域群の中から1つのコード候補領域を選択する。ステップSG14では、ステップSG13で選択したコード候補領域に対して推論処理部20jが推論処理を実行して理想画像を生成する。この理想画像の生成と、ステップSG4及び/またはステップSG10の第1デコード処理とは並行して実行される。ステップSG14で理想画像を生成した後、ステップSG15に進み、第2デコード処理を実行する。第2デコード処理後にステップSG16に進み、読み取りが成功したか否かを判定する。ステップSG16で読み取りが成功したと判定された場合には、ステップSG17で読み取りが終了したか否かを判定する。ステップSG4、SG10による第1デコード処理やステップSG15による第2デコード処理で読み取りが終了した場合には、このフローを終了するが、読み取りが終了していない場合には、ステップSG13に戻ってコード候補領域群の中から別のコード候補領域を選択してステップSG14に進む。また、ステップSG16で読み取りが成功しなければ、ステップSG13に戻る。 Further, when proceeding to step SG13 through step SG7, one chord candidate area is selected from the chord candidate area group. In step SG14, the inference processing unit 20j performs inference processing on the code candidate region selected in step SG13 to generate an ideal image. The generation of this ideal image and the first decoding process of step SG4 and/or step SG10 are executed in parallel. After generating the ideal image in step SG14, the process proceeds to step SG15 to execute the second decoding process. After the second decoding process, the process proceeds to step SG16 to determine whether or not the reading is successful. If it is determined in step SG16 that the reading has succeeded, it is determined in step SG17 whether or not the reading has been completed. If reading has been completed by the first decoding processing in steps SG4 and SG10 or by the second decoding processing in step SG15, this flow ends. Another code candidate area is selected from the area group, and the process proceeds to step SG14. Also, if the reading is not successful in step SG16, the process returns to step SG13.

図21は、第3の例のシーケンス例を示すシーケンス図である。この例では、第1汎用コア21が比較的高速な第1抽出処理を実行し、第2汎用コア22が比較的高精度な第2抽出処理を実行するので、第2抽出処理の時間が第1抽出処理の時間よりも長くなっている。また、この例では、第1抽出処理及び第2抽出処理により、コード候補領域1~9が抽出された場合について説明する。 FIG. 21 is a sequence diagram showing a sequence example of the third example. In this example, the first general-purpose core 21 executes the relatively high-speed first extraction process, and the second general-purpose core 22 executes the relatively high-precision second extraction process. It is longer than the time for one extraction process. Also, in this example, the case where code candidate regions 1 to 9 are extracted by the first extraction process and the second extraction process will be described.

第1抽出処理後、第1汎用コア21は、コード候補領域1に対する第1デコード処理を実行する(第1デコード処理1)。第1汎用コア21は、第1デコード処理1が終了すると、コード候補領域2に対する第1デコード処理を実行する(第1デコード処理2)。また、第2抽出処理後、第2汎用コア22は、コード候補領域3に対する第1デコード処理を実行する(第1デコード処理3)。第1デコード処理2及び第1デコード処理3は並列的に実行される。また、第2抽出処理後、専用コア25は、第1デコード処理2及び第1デコード処理3が実行されている間に、コード候補領域6(第2抽出処理で抽出されたコード候補領域)に対して推論処理を実行する(推論処理1)。 After the first extraction process, the first general-purpose core 21 executes the first decoding process on the code candidate region 1 (first decoding process 1). After completing the first decoding process 1, the first general-purpose core 21 executes the first decoding process on the code candidate area 2 (first decoding process 2). After the second extraction process, the second general-purpose core 22 executes the first decoding process on the code candidate area 3 (first decoding process 3). The first decoding process 2 and the first decoding process 3 are executed in parallel. After the second extraction process, the dedicated core 25 extracts the code candidate area 6 (the code candidate area extracted in the second extraction process) while the first decoding process 2 and the first decoding process 3 are being executed. Inference processing is executed with respect to (inference processing 1).

また、第1汎用コア21は、第1デコード処理2が終了すると、コード候補領域4に対する第1デコード処理を実行する(第1デコード処理4)。第2汎用コア22は、第1デコード処理3が終了すると、コード候補領域5に対する第1デコード処理を実行する(第1デコード処理5)。第1デコード処理4及び第1デコード処理5の実行中に専用コア25が推論処理1を終了すると、専用コア25はコード候補領域8に対して推論処理を実行する(推論処理2)。 Further, when the first decoding process 2 ends, the first general-purpose core 21 executes the first decoding process on the code candidate area 4 (first decoding process 4). After completing the first decoding process 3, the second general-purpose core 22 executes the first decoding process on the code candidate area 5 (first decoding process 5). When the dedicated core 25 completes the inference processing 1 during the execution of the first decoding processing 4 and the first decoding processing 5, the dedicated core 25 performs the inference processing on the code candidate region 8 (inference processing 2).

第1汎用コア21は、第1デコード処理4が終了すると、推論処理1が既に終了しているので、推論処理1によって生成された理想画像(コード候補領域6に対応する画像)に対して第2デコード処理を実行する(第2デコード処理6)。一方、第2汎用コア22は、第1デコード処理5が終了すると、推論処理2が終了していないので、コード候補領域7に対する第1デコード処理を実行する(第1デコード処理7)。 When the first decoding process 4 ends, the first general-purpose core 21 performs the first decoding on the ideal image (image corresponding to the code candidate region 6) generated by the inference process 1, because the inference process 1 has already ended. 2 decoding processing is executed (second decoding processing 6). On the other hand, when the first decoding process 5 ends, the second general-purpose core 22 executes the first decoding process on the code candidate region 7 because the inference process 2 has not ended (first decoding process 7).

第2デコード処理6及び第1デコード処理7の実行中に専用コア25が推論処理2を終了する。第1汎用コア21は、第2デコード処理6が終了すると、推論処理2が既に終了しているので、推論処理2によって生成された理想画像(コード候補領域8に対応する画像)に対して第2デコード処理を実行する(第2デコード処理8)。一方、第2汎用コア22は、第1デコード処理7が終了すると、コード候補領域9に対する第1デコード処理を実行する(第1デコード処理9)。 The dedicated core 25 ends the inference processing 2 while the second decoding processing 6 and the first decoding processing 7 are being executed. When the second decoding process 6 ends, the first general-purpose core 21 performs the first decoding on the ideal image (image corresponding to the code candidate region 8) generated by the inference process 2, because the inference process 2 has already ended. 2 decoding processing is executed (second decoding processing 8). On the other hand, after completing the first decoding process 7, the second general-purpose core 22 executes the first decoding process on the code candidate area 9 (first decoding process 9).

(タスクシーケンスの説明)
図22は、第1デコード処理で読み取りが成功した場合のタスクシーケンス図である。この図では、制御タスク、第1デコード処理タスク、第2デコード処理タスク及び推論処理タスクを示しており、制御タスクが第1デコード処理タスクに読み取り実行命令1を出すと、第1デコード処理を開始する。第1デコード処理で読み取りが成功した段階で読み取り成功通知2を制御タスクに出す。制御タスクは、読み取り成功通知2を受けると、処理終了命令3を第1デコード処理タスクに出し、第1デコード処理タスクは処理終了通知4を制御タスクに出す。
(Description of task sequence)
FIG. 22 is a task sequence diagram when reading is successful in the first decoding process. This diagram shows a control task, a first decoding task, a second decoding task, and an inference processing task. When the control task issues a read execution instruction 1 to the first decoding task, the first decoding process is started. do. When reading is successful in the first decoding process, read success notification 2 is issued to the control task. When the control task receives the read success notification 2, it issues a processing end instruction 3 to the first decoding processing task, and the first decoding processing task issues a processing end notification 4 to the control task.

また、制御タスクは、第2デコード処理タスクに読み取り実行命令5を出すと、第2デコード処理タスクは、推論処理タスクに推論開始命令6を出す。推論処理タスクは推論処理が完了すると推論完了通知7を第2デコード処理タスクに出す。その後、第2デコード処理タスクは、推論処理タスクに次の推論開始命令8を出す。その後、処理終了通知4が制御タスクに出されたので、制御タスクは、処理終了命令9を第2デコード処理タスクに出す。第2デコード処理タスクは、推論処理タスクに推論終了命令10を出し、推論処理タスクは推論終了通知11を第2デコード処理タスクに出す。次いで、第2デコード処理タスクは、処理終了通知12を制御タスクに出して読み取りを終了する。つまり、プロセッサ20は、第1デコード処理でデコードに成功した場合は、推論処理部20jによる推論処理が完了していなくても、推論処理を途中で終了させるように構成されている。これにより、次の推論処理を早期に開始できる。 Also, when the control task issues a read execution instruction 5 to the second decoding task, the second decoding task issues an inference start instruction 6 to the inference process task. When the inference processing task is completed, the inference processing task issues an inference completion notification 7 to the second decoding processing task. After that, the second decode processing task issues the next inference start instruction 8 to the inference processing task. After that, since the processing end notification 4 is issued to the control task, the control task issues the processing end instruction 9 to the second decoding processing task. The second decode processing task issues an inference end instruction 10 to the inference processing task, and the inference processing task issues an inference end notification 11 to the second decode processing task. The second decoding task then issues a process end notification 12 to the control task to end the reading. In other words, the processor 20 is configured to end the inference processing in the middle even if the inference processing by the inference processing unit 20j is not completed when decoding is successful in the first decoding processing. This allows the next inference process to start early.

図23は、第2デコード処理で読み取りが成功した場合のタスクシーケンス図である。制御タスクが第1デコード処理タスクに読み取り実行命令1を出し、第2デコード処理タスクに読み取り実行命令2を出す。第2デコード処理タスクは、推論処理タスクに推論開始命令3を出す。推論処理タスクは推論処理が完了すると推論完了通知4を第2デコード処理タスクに出す。その後、第2デコード処理タスクは、推論処理タスクに次の推論開始命令5を出す。 FIG. 23 is a task sequence diagram when reading is successful in the second decoding process. The control task issues a read execute command 1 to the first decoding task and a read execute command 2 to the second decode processing task. The second decode processing task issues an inference start instruction 3 to the inference processing task. When the inference processing task is completed, the inference processing task issues an inference completion notification 4 to the second decoding processing task. After that, the second decode processing task issues the next inference start instruction 5 to the inference processing task.

第2デコード処理タスクは、推論完了通知4を受けて第2デコード処理を開始する。第2デコード処理で読み取りが成功し、第2デコード処理タスクが制御タスクに読み取り成功通知6を出すと、制御タスクは第2デコード処理タスクに処理終了命令7を出す。このとき、制御タスクは第1デコード処理タスクにも処理終了命令8を出す。 The second decoding task receives the inference completion notification 4 and starts the second decoding process. When the second decoding process succeeds in reading and the second decoding task issues a reading success notification 6 to the control task, the control task issues a process end instruction 7 to the second decoding process task. At this time, the control task also issues a processing end instruction 8 to the first decoding processing task.

第2デコード処理タスクが処理終了命令7を受けると、推論処理タスクに推論終了命令9を出し、推論処理タスクは第2デコード処理タスクに推論終了通知10を出す。また、第1デコード処理タスクは制御タスクに処理終了通知11を出す。また、第2デコード処理タスクは制御タスクに処理終了通知12を出す。この例では、第2デコード処理でデコードに成功した場合に、推論処理部20jによる推論処理を終了させることができる。 When the second decode processing task receives the processing end instruction 7, it issues an inference end instruction 9 to the inference processing task, and the inference processing task issues an inference end notification 10 to the second decode processing task. Also, the first decoding processing task issues a processing end notification 11 to the control task. Also, the second decoding processing task issues a processing end notification 12 to the control task. In this example, the inference processing by the inference processing unit 20j can be terminated when decoding is successful in the second decoding processing.

図24は、第1デコード処理と第2デコード処理で読み取りが成功した場合のタスクシーケンス図である。制御タスクが第1デコード処理タスクに読み取り実行命令1を出し、第2デコード処理タスクに読み取り実行命令2を出す。第2デコード処理タスクは、推論処理タスクに推論開始命令3を出す。第1デコード処理タスクは、第1デコード処理を開始する。第1デコード処理で読み取りが成功し、第1デコード処理タスクが制御タスクに読み取り成功通知4を出すと、制御タスクは第2デコード処理タスクに処理終了命令5を出す。第2デコード処理タスクは制御タスクに処理終了通知6を出す。 FIG. 24 is a task sequence diagram when reading is successful in the first decoding process and the second decoding process. The control task issues a read execute command 1 to the first decoding task and a read execute command 2 to the second decode processing task. The second decode processing task issues an inference start instruction 3 to the inference processing task. The first decoding task starts the first decoding process. When reading is successful in the first decoding process and the first decoding process task issues a read success notification 4 to the control task, the control task issues a process end instruction 5 to the second decoding process task. The second decoding processing task issues a processing end notification 6 to the control task.

一方、推論処理タスクは推論処理が完了すると推論完了通知7を第2デコード処理タスクに出す。その後、第2デコード処理タスクは、推論処理タスクに次の推論開始命令8を出す。第2デコード処理タスクは、推論完了通知7を受けて第2デコード処理を開始する。第2デコード処理で読み取りが成功し、第2デコード処理タスクが制御タスクに読み取り成功通知9を出すと、制御タスクは第2デコード処理タスクに処理終了命令10を出す。 On the other hand, the inference processing task issues an inference completion notification 7 to the second decoding processing task when the inference processing is completed. After that, the second decode processing task issues the next inference start instruction 8 to the inference processing task. The second decoding task receives the inference completion notification 7 and starts the second decoding process. When the second decoding process succeeds in reading and the second decoding task issues a reading success notification 9 to the control task, the control task issues a process end instruction 10 to the second decoding task.

第2デコード処理タスクが処理終了命令10を受けると、推論処理タスクに推論終了命令11を出し、推論処理タスクは第2デコード処理タスクに推論終了通知12を出す。第2デコード処理タスクは推論終了通知12を受け取った後、制御タスクに処理終了通知13を出す。この例では、第1デコード処理及び第2デコード処理の両方でデコードに成功した場合に、推論処理部20jによる推論処理を終了させることができる。 When the second decode processing task receives the processing end instruction 10, it issues an inference end instruction 11 to the inference processing task, and the inference processing task issues an inference end notification 12 to the second decode processing task. After receiving the inference end notification 12, the second decoding processing task issues a processing end notification 13 to the control task. In this example, if the decoding is successful in both the first decoding process and the second decoding process, the inference process by the inference processor 20j can be terminated.

図25は、第2デコード処理で2回読み取りが成功した場合のタスクシーケンス図である。制御タスクが第1デコード処理タスクに読み取り実行命令1を出し、第2デコード処理タスクに読み取り実行命令2を出す。第2デコード処理タスクは、推論処理タスクに推論開始命令3を出す。推論処理タスクは推論処理が完了すると推論完了通知4を第2デコード処理タスクに出す。その後、第2デコード処理タスクは、推論処理タスクに次の推論開始命令5を出す。第2デコード処理タスクは、推論完了通知4を受けて第2デコード処理を開始する。第2デコード処理で読み取りが成功し、第2デコード処理タスクが制御タスクに読み取り成功通知6を出す。 FIG. 25 is a task sequence diagram when reading is successful twice in the second decoding process. The control task issues a read execute command 1 to the first decoding task and a read execute command 2 to the second decode processing task. The second decode processing task issues an inference start instruction 3 to the inference processing task. When the inference processing task is completed, the inference processing task issues an inference completion notification 4 to the second decoding processing task. After that, the second decode processing task issues the next inference start instruction 5 to the inference processing task. The second decoding task receives the inference completion notification 4 and starts the second decoding process. The second decoding process succeeds in reading, and the second decoding task issues a read success notification 6 to the control task.

その後、推論処理タスクでは2回目の推論処理が完了して2回目の推論完了通知7を第2デコード処理タスクに出す。第2デコード処理タスクは、2回目の推論完了通知7を受けて2回目の第2デコード処理を開始する。2回目の第2デコード処理でも読み取りが成功し、第2デコード処理タスクが制御タスクに読み取り成功通知8を出す。この間、第1デコード処理タスクでは読み取りが成功していないので、第1デコード処理タスクから読み取り成功通知は出されない。 Thereafter, the inference processing task completes the second inference processing and issues a second inference completion notification 7 to the second decoding processing task. The second decoding task receives the second inference completion notification 7 and starts the second second decoding process. The second decoding process also succeeds in reading, and the second decoding task issues a read success notification 8 to the control task. During this time, the first decoding task does not successfully read, so the first decoding task does not issue a read success notification.

制御タスクは第2デコード処理タスクに処理終了命令9を出す。第2デコード処理タスクが処理終了命令9を受けると、推論処理タスクに推論終了命令10を出し、推論処理タスクは第2デコード処理タスクに推論終了通知11を出す。第2デコード処理タスクは推論終了通知11を受け取った後、制御タスクに処理終了通知12を出す。また、制御タスクは第1デコード処理タスクに処理終了命令13を出すと、第1デコード処理タスクは制御タスクに処理終了通知14を出す。この例では、1回目の第2デコード処理及び2回目の第2デコード処理の両方でデコードに成功した場合に、推論処理部20jによる推論処理を終了させることができる。 The control task issues a processing end instruction 9 to the second decoding processing task. When the second decode processing task receives the processing end instruction 9, it issues an inference end instruction 10 to the inference processing task, and the inference processing task issues an inference end notification 11 to the second decode processing task. After receiving the inference end notification 11, the second decoding processing task issues a processing end notification 12 to the control task. Further, when the control task issues a process end instruction 13 to the first decoding task, the first decoding process task issues a process end notification 14 to the control task. In this example, if decoding is successful in both the first second decoding process and the second second decoding process, the inference process by the inference processor 20j can be terminated.

(カメラによる連続撮影)
図1に示すように、複数のワークWが連続して流れてくる現場で光学的情報読取装置1を使用した場合、ある時間間隔でコードがカメラ5の前を順に通過することになる。このため、カメラ5が所定の短い間隔で連続撮影して読取画像を順に取得し、光学的情報読取装置1は、決められた時間内で読み取りを終了させる必要がある。
(Continuous shooting with camera)
As shown in FIG. 1, when the optical information reader 1 is used at a site where a plurality of workpieces W are continuously delivered, the code passes in front of the camera 5 in sequence at certain time intervals. For this reason, it is necessary for the camera 5 to continuously capture images at predetermined short intervals to sequentially obtain the read images, and for the optical information reader 1 to finish reading within a predetermined time.

図26は、読取開始トリガ信号を受信してから一定時間は撮影とデコード処理を繰り返す場合の読み取りシーケンス図である。1回のデコード処理時間は予め設定されており、これをデコードタイムアウト時間とする。また、トータルの読み取り制限時間はデコードタイムアウト時間とは別に予め設定されており、これをタクトタイムアウト時間とする。また、デコード処理を強制的に終了したいタイミングとしては、デコード処理が成功したタイミング(タイミング1)、読み取りを開始してからデコードタイムアウト時間が経過した時点(タイミング2)読み取りを開始してからタクトタイムアウト時間が経過した時点(タイミング3)の3つがある。例えば、読み取り処理の強制終了命令に対する応答速度を10msec程度とした場合、デコード処理も同程度の時間内に終了応答可能にするのがよい場合がある。 FIG. 26 is a reading sequence diagram when photographing and decoding are repeated for a certain period of time after receiving a reading start trigger signal. The time for one decoding process is set in advance, and this time is set as the decoding timeout time. In addition, the total reading limit time is set in advance separately from the decode timeout time, and this is set as the tact timeout time. In addition, when you want to forcibly end the decoding process, the timing when the decoding process is successful (timing 1), the timing when the decoding timeout time has passed after the reading is started (timing 2), and the takt timeout after the reading is started (timing 2). There are three points of time (timing 3) when time has passed. For example, if the response speed to a forced termination instruction of the reading process is set to about 10 msec, it may be preferable to allow the decoding process to respond within about the same time.

一方、推論処理は専用コア25での実行で、数十msec~数百msec程度の処理時間を要することがあるため、推論処理を途中で終了する機能、または、推論処理の途中で新たな推論処理を開始する機能のどちらか一方または両方の機能を備えているのが好ましい場合がある。 On the other hand, the inference processing is executed by the dedicated core 25 and may require a processing time of several tens to several hundred milliseconds. It may be preferable to have either or both functions to initiate processing.

図27は、連続撮影時のデコード処理シーケンス図である。このデコード処理シーケンス図は、図19に示すシーケンス図と同様であるが、推論処理の途中で、上記タイミング1~3のいずれかが到来して推論処理を中断した例を示している。 FIG. 27 is a sequence diagram of decoding processing during continuous shooting. This decode processing sequence diagram is similar to the sequence diagram shown in FIG. 19, but shows an example in which the inference processing is interrupted when one of the above timings 1 to 3 arrives during the inference processing.

(実施形態の作用効果)
以上説明したように、この実施形態によれば、光学的情報読取装置1、1Aの運用時に、カメラ5により生成された読取画像をニューラルネットワークに入力すると、推論処理によって理想画像が生成される。この推論処理後の理想画像に対してデコード処理が実行されるので、読み取り精度が高まる。
(Action and effect of the embodiment)
As described above, according to this embodiment, when the optical information reader 1 or 1A is in operation, inputting the read image generated by the camera 5 to the neural network generates an ideal image through inference processing. Since decoding processing is executed on the ideal image after this inference processing, reading accuracy is enhanced.

また、読取画像がコードの読取に適している場合には、カメラ5により生成された読取画像を推論処理することなく、デコード処理する。上記推論処理と、推論処理をせずにデコードするデコード処理とが並列的に実行されるので、推論処理が必要な読取画像に対する推論処理の実行中に、推論処理が不要な別の読取画像に対するデコード処理を実行すること、または、推論処理が不要な読取画像に対するデコード処理の実行中に、推論処理が必要な別の読取画像に対する推論処理を実行することができる。これにより、処理時間が短縮される。 Further, when the read image is suitable for reading the code, the read image generated by the camera 5 is decoded without inference processing. Since the above-mentioned inference processing and decoding processing for decoding without inference processing are executed in parallel, during execution of inference processing for a read image that requires inference processing, another read image that does not require inference processing It is possible to perform decoding processing, or to perform inference processing for another read image that requires inference processing while decoding processing is being performed for a read image that does not require inference processing. This shortens the processing time.

(その他の実施形態)
図28は、その他の実施形態に係る光学的情報読取装置1の運用時における処理の手順の一例を説明する図である。この実施形態では、プロセッサ20により、前記推論処理部(画像修復部)20jの他に、前処理部200と、後処理部201と、第1デコード処理部202と、第2デコード処理部203とが構成されている。前処理部200は、上記フィルタ処理部20cと同様に、カメラ5により生成された読取画像に対してノイズ除去フィルタ、コントラスト補正フィルタ、平均化フィルタ等を実行する部分である。
(Other embodiments)
FIG. 28 is a diagram for explaining an example of a processing procedure during operation of the optical information reader 1 according to another embodiment. In this embodiment, the processor 20 includes a preprocessing unit 200, a postprocessing unit 201, a first decoding processing unit 202, and a second decoding processing unit 203 in addition to the inference processing unit (image restoration unit) 20j. is configured. The preprocessing section 200 is a section that executes a noise removal filter, a contrast correction filter, an averaging filter, etc. on the read image generated by the camera 5, similarly to the filter processing section 20c.

第1デコード処理部202は、カメラ5により生成された読取画像に対するデコード処理を実行する部分であり、この第1デコード処理部202によるデコード処理を第1デコード処理ともいう。プロセッサ20が複数のコア(N個のコア)を有している場合、そのうちのコア0~コアiによって第1デコード処理部202が構成される。1つのコアで第1デコード処理部202が構成されていてもよい。 The first decoding processing unit 202 is a part that performs decoding processing on the read image generated by the camera 5, and the decoding processing by the first decoding processing unit 202 is also called first decoding processing. When the processor 20 has a plurality of cores (N cores), the first decoding processing unit 202 is composed of the cores 0 to i. The first decoding processing unit 202 may be configured with one core.

また、第2デコード処理部203は、推論処理部20jが生成した修復画像に対するデコード処理を実行する部分であり、この第2デコード処理部203によるデコード処理を第2デコード処理ともいう。プロセッサ20がN個のコアを有している場合、そのうちのコアi+1~コアN-1によって第2デコード処理部203が構成される。1つのコアで第2デコード処理部203が構成されていてもよい。 The second decoding processing unit 203 is a part that performs decoding processing on the restored image generated by the inference processing unit 20j, and the decoding processing by the second decoding processing unit 203 is also called second decoding processing. When the processor 20 has N cores, the second decoding processing unit 203 is composed of the cores i+1 to N−1. The second decoding processing unit 203 may be composed of one core.

図29にも示すように、コア0~コアiによって第1デコード処理部202が構成されている場合、コア0~コアiの各々がカメラ5により生成された読取画像の中からコードが存在する可能性が高いコード候補領域を抽出した後、コードの輪郭やコードを構成しているモジュールの位置決め処理を実行し、その後、コードを構成している各モジュールが白であるか、黒であるかを判別し、デコード処理を実行する。処理結果は後処理部201に出力される。 As shown in FIG. 29, when the first decoding processing unit 202 is composed of core 0 to core i, each of core 0 to core i has a code in the read image generated by the camera 5. After extracting the code candidate regions with high probability, the code outline and positioning of the modules that compose the code are performed, and then each module that composes the code is white or black. is determined and decode processing is executed. A processing result is output to the post-processing unit 201 .

一方、図29に示すように、コアi+1~コアN-1によって第2デコード処理部203が構成されている場合、コアi+1~コアN-1の各々が、読取画像からコードが存在する可能性が高いコード候補領域を修復用コード領域として抽出するとともに、推論処理部20jに対し、推論処理を実行するようトリガ信号を送出する。この図29では、2つのコアによって1つのタスクを実行するように記載しているが、任意の1つ以上のコアによって1つのタスクを実行すればよい。 On the other hand, as shown in FIG. 29, when the second decoding processing unit 203 is composed of core i+1 to core N−1, each of core i+1 to core N−1 may detect the presence of a code from the read image. A code candidate region with a high value is extracted as a repair code region, and a trigger signal is sent to the inference processing unit 20j so as to execute inference processing. In FIG. 29, it is described that one task is executed by two cores, but one task may be executed by any one or more cores.

具体的には、第2デコード処理部203を構成しているコアN-2及びコアN-1が修復用コード候補領域を抽出すると、トリガ信号(トリガ1)を推論処理部20jに出力し、推論処理部20jに対して推論処理を実行させる。推論処理部20jは、コアN-2及びコアN-1から送出されたトリガ信号(トリガ1)を受信すると、コアN-2及びコアN-1が抽出した修復用コード候補領域に対応する部分画像をニューラルネットワークに入力し、当該部分画像を修復した修復画像を生成する推論処理を実行する(画像修復1)。画像修復1で生成した修復画像は、コアN-2及びコアN-1へ送られる。コアN-2及びコアN-1は、画像修復1で生成した修復画像に基づいてコードの各セル位置を示すグリッド位置を決定し、決定したグリッド位置に基づいて当該修復画像のデコード処理を実行する。 Specifically, when the cores N-2 and N-1 constituting the second decoding processing unit 203 extract the repair code candidate region, they output a trigger signal (trigger 1) to the inference processing unit 20j, It causes the inference processing unit 20j to execute inference processing. When the inference processing unit 20j receives the trigger signal (trigger 1) sent from the core N-2 and the core N-1, the part corresponding to the repair code candidate region extracted by the core N-2 and the core N-1 An image is input to a neural network, and an inference process is executed to generate a restored image obtained by restoring the partial image (image restoration 1). The restored image generated in image restoration 1 is sent to core N-2 and core N-1. Core N-2 and core N-1 determine the grid position indicating each cell position of the code based on the restored image generated in the image restoration 1, and execute decoding processing of the restored image based on the determined grid position. do.

一方、第2デコード処理部203を構成しているコアi+1及びコアi+2が修復用コード候補領域を抽出すると、トリガ信号(トリガ2)を推論処理部20jに出力し、推論処理部20jに対して推論処理を実行させる。推論処理部20jは、コアi+1及びコアi+2から送出されたトリガ信号(トリガ2)を受信すると、コアi+1及びコアi+2が抽出した修復用コード候補領域に対応する部分画像をニューラルネットワークに入力し、当該部分画像を修復した修復画像を生成する推論処理を実行する(画像修復2)。画像修復2で生成した修復画像は、コアi+1及びコアi+2へ送られる。コアi+1及びコアi+2は、画像修復2で生成した修復画像に基づいてコードの各セル位置を示すグリッド位置を決定し、決定したグリッド位置に基づいて当該修復画像のデコード処理を実行する。 On the other hand, when the cores i+1 and i+2 constituting the second decoding processing unit 203 extract the repair code candidate region, they output a trigger signal (trigger 2) to the inference processing unit 20j, and the inference processing unit 20j Let the inference process run. When the inference processing unit 20j receives the trigger signal (trigger 2) sent from the core i+1 and the core i+2, it inputs a partial image corresponding to the repair code candidate region extracted by the core i+1 and the core i+2 to the neural network, An inference process is executed to generate a restored image obtained by restoring the partial image (image restoration 2). The restored image generated in image restoration 2 is sent to core i+1 and core i+2. Core i+1 and core i+2 determine grid positions indicating the positions of each cell of the code based on the restored image generated in image restoration 2, and decode the restored image based on the determined grid positions.

以下、同様にして、コアN-2及びコアN-1から送出されたトリガ信号(トリガ3)により画像修復3が実行され、コアi+1及びコアi+2から送出されたトリガ信号(トリガ4)により画像修復4が実行され、コアN-2及びコアN-1から送出されたトリガ信号(トリガ5)により画像修復5が実行され、コアi+1及びコアi+2から送出されたトリガ信号(トリガ6)により画像修復6が実行され、コアN-2及びコアN-1から送出されたトリガ信号(トリガ7)により画像修復7が実行される。 Thereafter, in the same manner, image restoration 3 is executed by trigger signals (trigger 3) sent from core N-2 and core N-1, and image restoration 3 is performed by trigger signals (trigger 4) sent from core i+1 and core i+2. Restoration 4 is executed, image restoration 5 is executed by a trigger signal (trigger 5) sent from core N-2 and core N-1, and image restoration is performed by a trigger signal (trigger 6) sent from core i+1 and core i+2. Restoration 6 is executed, and image restoration 7 is executed by a trigger signal (trigger 7) sent from core N-2 and core N-1.

このタイムチャートに示すように、推論処理部20jによる推論処理と第1デコード処理部202による第1デコード処理とは並列的に実行される。例えば、第1デコード処理部202がコード領域抽出、グリッド位置決め、デコード処理を継続して行う間、推論処理部20jによる推論処理が1回または複数回実行される。また、第1デコード処理部202がコード領域抽出、グリッド位置決め、デコード処理を継続して行う間、第2デコード処理部203による修復用コード領域の抽出、トリガ信号の出力、グリッド位置決め、第2デコード処理が実行される。このように、推論処理部20jは、修復用コード候補領域に対応する部分画像の修復に特化すればよいので、推論処理速度を高速化できる。 As shown in this time chart, the inference processing by the inference processing unit 20j and the first decoding processing by the first decoding processing unit 202 are executed in parallel. For example, while the first decoding processing unit 202 continuously performs code region extraction, grid positioning, and decoding processing, the inference processing by the inference processing unit 20j is executed once or multiple times. Further, while the first decoding processing unit 202 continues the code region extraction, grid positioning, and decoding processing, the second decoding processing unit 203 extracts the recovery code region, outputs the trigger signal, grid positioning, and performs the second decoding. Processing is performed. In this way, the inference processing unit 20j can specialize in restoration of the partial image corresponding to the restoration code candidate area, so that the inference processing speed can be increased.

第2デコード処理部が第2デコード処理を実行している期間の少なくとも一部は、推論処理部20jによる推論処理が実行されない休止期間を有している。すなわち、図29に示すように、推論処理部20jの画像修復1の終了後、第2デコード処理部203が第2デコード処理を開始するのであるが、推論処理部20jが次の画像修復2を開始するまでの間に、所定の期間が設けられており、この所定の期間は、推論処理部20jが画像修復を行わない休止期間とされている。この休止期間は推論処理部20jが推論処理を行わない期間であり、休止期間を設けることにより、推論処理部20jの負荷を低減して、AIチップ23の発熱を抑制できる。なお、グリッド位置決めの処理時間は、処理対象の修復画像によって長い場合や短い場合が存在する。図29では各コアの処理が交互に実行される例を記載しているが、グリッド位置決めの処理時間によっては、各コアの処理は必ずしも交互に実行されない。すなわち、処理が空いているコアから順にトリガ発出や、グリッド位置決めを実行してもよい。 At least part of the period during which the second decoding processing section executes the second decoding processing has a rest period during which the inference processing is not executed by the inference processing section 20j. That is, as shown in FIG. 29, after the image restoration 1 of the inference processing unit 20j is completed, the second decoding processing unit 203 starts the second decoding processing. A predetermined period is provided before the start, and this predetermined period is a rest period during which the inference processing unit 20j does not perform image restoration. This idle period is a period in which the inference processing unit 20j does not perform inference processing. Note that the grid positioning processing time may be long or short depending on the restoration image to be processed. Although FIG. 29 shows an example in which the processing of each core is alternately executed, the processing of each core is not necessarily alternately executed depending on the processing time of grid positioning. In other words, trigger generation and grid positioning may be executed in order from the cores that are idle for processing.

上述したように、設定部20eは、「画像修復フィルタの適用」と「画像修復フィルタの非適用」との一方をユーザが選択可能に構成されている。画像修復フィルタを適用するということは、画像修復を行うということであり、また、画像修復フィルタを非適用にするということは、画像修復を行わないということなので、設定部20eは、第2デコード処理部203が第2デコード処理を実行するか否かを設定する部分にも相当する。この設定はユーザによって実行されるので、設定部20eはユーザによる操作を受け付けることができるように構成されている。画像修復フィルタの適用、非適用という設定形態に限定されるものではなく、例えば推論処理(修復処理)の適用、非適用、AIによる処理の適用、非適用といった設定形態であってもよい。ユーザによる操作は、例えばユーザインターフェース画面に表示したボタン等の操作を挙げることができる。 As described above, the setting unit 20e is configured so that the user can select one of "application of the image restoration filter" and "non-application of the image restoration filter". Applying the image restoration filter means performing image restoration, and not applying the image restoration filter means not performing image restoration. It also corresponds to a part for setting whether or not the processing unit 203 executes the second decoding process. Since this setting is performed by the user, the setting unit 20e is configured to be able to receive the operation by the user. The setting form is not limited to the application or non-application of the image restoration filter, and may be, for example, the application or non-application of inference processing (restoration processing) or the application or non-application of processing by AI. The operation by the user can be, for example, the operation of a button or the like displayed on the user interface screen.

光学的情報読取装置1では、露光時間やゲインなどの撮像条件、画像処理フィルタなどの設定をあらかじめ決定するチューニング処理行ってから運用される。例えばワークWがラベルのような場合では、コードが鮮明に印字されているので、チューニング処理により適切な条件設定がなされれば、高い読み取り率を実現できる。しかし、金属や樹脂などのワークWにおいては、チューニング処理時の最適な条件が設定されるものの、微弱な外乱光による読取画像の変化などが原因で読み取りにくい状態になったり、そもそも光学設計とアルゴリズム設計上、超低コントラストで読み取れないケースが発生してしまうことがある。 The optical information reading device 1 is operated after performing a tuning process for predetermining imaging conditions such as exposure time and gain, and settings such as an image processing filter. For example, when the workpiece W is a label, the code is clearly printed, so if appropriate conditions are set by the tuning process, a high reading rate can be achieved. However, in the case of workpieces W such as metal and resin, although optimal conditions are set for the tuning process, it may become difficult to read due to changes in the read image due to weak ambient light, etc. Due to the design, there may be cases where reading is not possible due to ultra-low contrast.

本例の推論処理部20jが実行する画像修復アルゴリズムを、画像修復しないでデコード処理する場合と並列に実施することで、従来の読み取り性能を維持しながら金属や樹脂などのワークWに対しての読み取り性能を向上させ、読み取り安定性を高めることができる。また、従来の光学設計とアルゴリズムでは読めないワークWに対しても、画像修復アルゴリズムを適用することにより読み取りが可能になる。 By executing the image restoration algorithm executed by the inference processing unit 20j of this example in parallel with the case where the decoding process is performed without image restoration, it is possible to read the work W such as metal or resin while maintaining the conventional reading performance. Reading performance can be improved and reading stability can be enhanced. In addition, the work W that cannot be read by conventional optical design and algorithms can be read by applying the image restoration algorithm.

具体例を示すと、ある工場で箱に付されたシール上に印字されたコードを読み取る工程で、光学的情報読取装置1の設置条件に制約がなく、最適な設置が可能な場合においては、従来の読み取り性能でも安定した運用が可能であることから、画像修復フィルタを非適用にしてタクトを優先することができる。 To give a specific example, in the process of reading a code printed on a sticker attached to a box in a certain factory, if there are no restrictions on the installation conditions of the optical information reader 1 and optimal installation is possible, Since stable operation is possible even with conventional reading performance, priority can be given to takt time by not applying the image restoration filter.

また、ある工場において、金属にはっきりと印字されたコードを読み取る工程があり、読み取り設定時のチューニング処理においては最適な条件が決定されるものの、実際に運用してみると、金属表面の傷、読み取り位置・角度のばらつき、周囲環境の明るさ変化などで読み取りが不安定になるケースがある。このようなケースでは、画像修復フィルタを適用して、画質改善することで、上記のような条件のばらつきに強くなり、読み取り性能が向上する。 Also, in a certain factory, there is a process to read codes clearly printed on metal, and although the optimum conditions are determined in the tuning process at the time of reading setting, when actually operating, scratches on the metal surface, In some cases, reading may become unstable due to variations in reading position/angle, changes in the brightness of the surrounding environment, etc. In such a case, by applying an image restoration filter to improve the image quality, it becomes resistant to the above-described variations in conditions, and the reading performance is improved.

また、一部のワークでは、従来のアルゴリズムでの読み取りが不可能であるが、そのようなケースでは画像修復フィルタを適用することで、読み取りができるようになるケースがある。例えば、コードの損傷が著しかったり、コントラストが明確でない場合でも、画像修復フィルタを適用することによって、コントラストや傷を修復し、読み取りが可能になる。 Also, some workpieces cannot be read by the conventional algorithm, but in such cases, applying an image restoration filter may make it possible to read them. For example, even if the code is severely damaged or the contrast is not clear, by applying an image restoration filter, the contrast and flaws can be restored and the code can be read.

画像修復フィルタを適用した場合に実行される第2デコード処理は、修復画像に対してデコード処理を実行するため、通常の読取画像のデコード処理を実行する第1デコード処理に比べて処理にかかる時間が長い場合が多い。したがって、第1デコード処理部202は、第2デコード処理部203による第2デコード処理にかかる時間よりも短い時間で第1デコード処理を実行可能である。本例では、このことを前提とし、デコード処理の制限時間である、デコードタイムアウト時間を設定部20eが変更可能になっている。 Since the second decoding process executed when the image restoration filter is applied executes the decoding process on the restored image, it takes longer time than the first decoding process which executes the decoding process of the normal read image. is often long. Therefore, the first decoding processing section 202 can execute the first decoding processing in a shorter time than the time required for the second decoding processing by the second decoding processing section 203 . In this example, on the premise of this, the setting unit 20e can change the decode timeout time, which is the time limit for the decoding process.

具体的には、設定部20eは、第2デコード処理を実行すると設定されている場合は、第2デコード処理の実行に必要な時間よりも長いデコードタイムアウト時間を設定可能に構成されるとともに、第2デコード処理を実行しないと設定されている場合は、第2デコード処理の実行に必要な時間よりも短いデコードタイムアウト時間を設定可能に構成されている。これにより、運用時には、第2デコード処理を実行する場合、一般的な第2デコード処理の実行に必要な時間よりも長いデコードタイムアウト時間を設定することができるので、修復画像に対するデコード処理を確実に実行できる。一方、第2デコード処理を実行しないと設定されている場合は、一般に第2デコード処理よりも短い時間でデコード処理が可能な第1デコード処理のみを実行することになるので、第1デコード処理に対応した短いデコードタイムアウト時間を設定できる。このようにデコードタイムアウト時間を変更することで、第1デコード処理及び第2デコード処理のそれぞれに対応したデコードタイムアウト時間にすることができる。 Specifically, when the setting unit 20e is set to execute the second decoding process, the setting unit 20e is configured to be able to set a decoding timeout time longer than the time required to execute the second decoding process. When it is set that the second decoding process is not to be executed, a decoding timeout period shorter than the time required to execute the second decoding process can be set. As a result, during operation, when executing the second decoding process, it is possible to set a decoding timeout time longer than the time normally required for executing the second decoding process. can run. On the other hand, if it is set not to execute the second decoding process, generally only the first decoding process that can be decoded in a shorter time than the second decoding process is executed. A corresponding short decode timeout period can be set. By changing the decode timeout time in this way, it is possible to set the decode timeout time corresponding to each of the first decoding process and the second decoding process.

また、図29では、第1デコード処理部202と第2デコード処理部203とを別にしているが、図30に示すように、第1デコード処理部202と第2デコード処理部203とをまとめてデコード処理部210としてもよい。デコード処理部210は、カメラ5により生成された読取画像に対する第1デコード処理と並列に、修復画像に対する第2デコード処理を実行する。このようにデコード処理を実行する部分は、ハードウエア上で任意に分けることもできるし、統合することもできる。以下、デコード処理を実行する部分を1つに統合した例で説明するが、これに限らず、複数に分けた場合にも同様に適用できる。 29, the first decoding processing unit 202 and the second decoding processing unit 203 are separated, but as shown in FIG. 30, the first decoding processing unit 202 and the second decoding processing unit 203 are integrated. may be the decode processing unit 210 . The decoding processing unit 210 performs a second decoding process on the restored image in parallel with the first decoding process on the read image generated by the camera 5 . The part that executes the decoding process in this way can be arbitrarily divided on the hardware, or can be integrated. Hereinafter, an example in which the part that executes the decoding process is integrated into one will be described, but the present invention is not limited to this, and can be similarly applied to a case where the part is divided into a plurality of parts.

デコード処理部210は、設定部20eにより第2デコード処理を実行しないと設定されている場合には、第2デコード処理に使われる処理のリソースを第1デコード処理に振り分け、第2デコード処理を実行すると設定されている場合に比べ、第1デコード処理を高速化するように構成されている。処理のリソースとは、例えばメモリの使用領域や、マルチコアCPUを構成しているコア等である。具体的には、第2デコード処理を実行しないと設定されている場合には、第2デコード処理を実行すると設定されている場合に比べて、第1デコード処理を受け持つコアの数を多くする。また、第2デコード処理を実行しないと設定されている場合には、第2デコード処理を実行すると設定されている場合に比べて、第1デコード処理で使用するメモリの領域を拡大する。コアの数を多くすることと、メモリの領域を拡大することとは、併用してもよいし、いずれか一方のみ実行してもよい。これにより、マルチコアCPUの性能を最大限に引き出して第1デコード処理を高速化できる。 When the setting unit 20e sets not to execute the second decoding process, the decoding processing unit 210 allocates processing resources used for the second decoding process to the first decoding process, and executes the second decoding process. Then, it is configured to speed up the first decoding process compared to the case where it is set. The resources for processing are, for example, memory usage areas, cores constituting a multi-core CPU, and the like. Specifically, when it is set not to execute the second decoding process, the number of cores in charge of the first decoding process is increased compared to when it is set to execute the second decoding process. Further, when it is set not to execute the second decoding process, the memory area used in the first decoding process is expanded compared to when it is set to execute the second decoding process. Increasing the number of cores and expanding the memory area may be used in combination, or only one of them may be performed. As a result, the performance of the multi-core CPU can be maximized and the speed of the first decoding process can be increased.

デコード処理部210は、画像修復に先立ち、読取画像からコードが存在する可能性が高いコード候補領域を抽出する。すなわち、ニューラルネットワークを用いた画像修復時に当該ニューラルネットワークに入力する画像が大きいと演算時間が長時間化してしまうという問題がある。また、処理の高速化の観点からは、デコードの試行回数もできるだけ少なくしたい。これらのことに対し、本例では、コード候補領域を多少時間がかかっても確実に抽出可能にするために、ラインサーチベースではなく、ヒートマップベースのサーチ手法を採用している。例えば、デコード処理部210は、コードの特徴量を定量化し、特徴量の大きさを各画素値に割り当てたヒートマップを生成し、当該ヒートマップ上で、コードが存在する可能性が高いコード候補領域を抽出する。具体例としては、ヒートマップにおいて相対的に熱く(特徴量が大きく)示されている領域で2次元コードの特徴部分(例:ファインダパターン等)を取得する方法がある。特徴部分が複数取得された場合には、優先づけをして抽出し、RAM41や記憶部30等に記憶させておくことができる。 The decoding processing unit 210 extracts a code candidate area in which a code is likely to exist from the read image prior to image restoration. That is, there is a problem that if the image to be input to the neural network is large during image restoration using the neural network, the computation time becomes long. Also, from the viewpoint of speeding up the processing, it is desirable to reduce the number of decoding attempts as much as possible. On the other hand, in this example, a heat map-based search method is adopted instead of a line search-based method in order to ensure that the code candidate region can be extracted even if it takes some time. For example, the decoding processing unit 210 quantifies the feature amount of the code, generates a heat map in which the magnitude of the feature amount is assigned to each pixel value, and displays code candidates that are highly likely to exist on the heat map. Extract regions. As a specific example, there is a method of acquiring a characteristic portion (eg, finder pattern, etc.) of a two-dimensional code in an area that is relatively hot (having a large characteristic amount) in the heat map. When a plurality of characteristic portions are acquired, they can be extracted with priority and stored in the RAM 41, the storage unit 30, or the like.

デコード処理部210がコード候補領域を抽出した後、抽出したコード候補領域に対応する部分画像を推論処理部20jに出力する。推論処理部20jは、デコード処理部210が抽出したコード候補領域に対応する部分画像をニューラルネットワークに入力し、当該部分画像を修復した修復画像を生成する推論処理を実行する。これにより、演算時間を短縮できる。 After the decoding processing section 210 extracts the code candidate area, it outputs a partial image corresponding to the extracted code candidate area to the inference processing section 20j. The inference processing unit 20j inputs the partial image corresponding to the code candidate region extracted by the decoding processing unit 210 to the neural network, and performs inference processing to generate a restored image by restoring the partial image. Thereby, the calculation time can be shortened.

また、デコード処理部210は、上述したチューニング処理により設定された読取対象のコードを包含できるサイズで、かつ読取画像の中でコードが存在する可能性が高いコード候補領域を抽出し、当該抽出された画像を、予め定められたサイズとなるように縮小又は拡大してからニューラルネットワークに入力し、当該ニューラルネットワークで修復した修復画像をデコードするように構成されていてもよい。抽出された画像を予め定められたサイズの画像に拡大・縮小してニューラルネットワークに入力することで、ニューラルネットワークに入力されるコード画像のPPCを所定の範囲内に収めることができ、ニューラルネットワークによる画像修復効果を安定的に引き出すことができる。また、読取対象のコードサイズは様々であることが考えられるが、最終的にニューラルネットワークに入力されるコードのサイズを固定できるので、処理の高速性とデコードのし易さのバランスを一定以上に保つことができる。 Further, the decoding processing unit 210 extracts a code candidate area having a size that can contain the code to be read set by the tuning process described above and having a high possibility that the code exists in the read image. The image may be reduced or enlarged to a predetermined size and then input to a neural network, and the restored image restored by the neural network may be decoded. By enlarging/reducing the extracted image to an image of a predetermined size and inputting it to the neural network, the PPC of the code image input to the neural network can be kept within a predetermined range. The image restoration effect can be drawn out stably. In addition, although the size of the code to be read may vary, since the size of the code that is finally input to the neural network can be fixed, the balance between high speed processing and ease of decoding can be achieved. can keep.

以下、第1デコード処理及び第2デコード処理のフローチャートについて、図31に基づいて詳細に説明する。スタート後のステップSE1では、プロセッサ20がカメラ5に読取画像を生成させ、読取画像を取得する。ステップSE1で取得された読取画像は、デコード処理部210に入力される。ステップSE2では、ステップSE1で取得された読取画像に対して画像修復を施すことなく、第1デコード処理を実行する。第1デコード処理が成功すれば、ステップSE4に進んで終了処理、即ちデコード結果の出力処理を実行する。ステップSE2で第1デコード処理が失敗すれば、ステップSE2に戻り、第1デコード処理を再度実行する。所定のデコードタイムアウト時間が経過すると、当該読取画像に対する第1デコード処理を中止する。 Flowcharts of the first decoding process and the second decoding process will be described in detail below with reference to FIG. At step SE1 after the start, the processor 20 causes the camera 5 to generate a read image and acquires the read image. The read image acquired in step SE1 is input to the decoding processing section 210. FIG. At step SE2, a first decoding process is executed without performing image restoration on the read image acquired at step SE1. If the first decoding process succeeds, the process advances to step SE4 to execute end processing, that is, decoding result output processing. If the first decoding process fails in step SE2, the process returns to step SE2 and the first decoding process is executed again. When a predetermined decode timeout time elapses, the first decoding process for the read image is stopped.

一方、ステップSE1からステップSE5に進むルートでは、デコード処理部210が読取画像から修復用コード領域を抽出する。具体的には、チューニング処理により設定された読取対象のコードを包含できるサイズで、かつ読取画像の中でコードが存在する可能性が高いコード候補領域を抽出する。このとき、修復用コード領域が複数抽出された場合には、候補領域R1、R2、…として一時的に保存しておく。抽出された修復用コード領域の一例を図32に示す。その後、ステップSE6に進み、kの値を1にしておく。 On the other hand, in the route from step SE1 to step SE5, the decode processing section 210 extracts the restoration code area from the read image. Specifically, a code candidate area having a size that can contain the code to be read set by the tuning process and having a high possibility that the code exists in the read image is extracted. At this time, if a plurality of restoration code regions are extracted, they are temporarily stored as candidate regions R1, R2, . An example of the extracted repair code region is shown in FIG. After that, the process proceeds to step SE6 and sets the value of k to 1.

ステップSE7では、候補領域Rkに対応する部分画像に対してリサイズ処理を実行する。リサイズ処理は、ステップSE5で抽出された修復用コード領域に対応する部分画像を、予め定められたサイズとなるように縮小又は拡大する処理である。このリサイズ処理により、後述するニューラルネットワークに入力する画像の大きさを予め所定の大きさにしておくことができる。図32に示す例では、ニューラルネットワークに入力する部分画像の大きさが256ピクセル×256ピクセルである場合について示しているが、部分画像の大きさはこれに限られるものではなく、処理速度等を勘案して任意の大きさにリサイズすることができる。 At step SE7, the partial image corresponding to the candidate area Rk is resized. The resizing process is a process of reducing or enlarging the partial image corresponding to the restoration code area extracted in step SE5 to a predetermined size. With this resizing process, the size of an image to be input to a neural network, which will be described later, can be set to a predetermined size in advance. The example shown in FIG. 32 shows the case where the size of the partial image to be input to the neural network is 256 pixels×256 pixels, but the size of the partial image is not limited to this, and the processing speed and the like are not limited to this. You can resize it to any size you want.

ステップSE8では、白黒反転設定が「両方」になっているか否かを判定する。すなわち、画像修復は、数学的には写像を行っているだけであり、白から黒、黒から白、黒から黒、白から白の写像を単一のニューラルネットワークで実現することは難易度が高い場合がある。そのため、白地に黒印字された画像となるようにプロパティに基づいて白黒反転処理を実行する。ニューラルネットワークの学習のさせ方によっては、黒地に白印字された画像であってもよい。白黒反転処理の一例を図32に示す。白黒反転処理の詳細については後述する。 At step SE8, it is determined whether or not the black/white reversal setting is "both". In other words, image inpainting is only a mapping mathematically, and it is difficult to realize white-to-black, black-to-white, black-to-black, and white-to-white mappings with a single neural network. can be expensive. Therefore, black-and-white reversal processing is executed based on the property so that the image is printed in black on a white background. Depending on how the neural network is trained, the image may be printed in white on a black background. FIG. 32 shows an example of black-and-white reversal processing. Details of the black-and-white reversal processing will be described later.

ステップSE8でYESと判定されて白黒反転設定が「両方」になっている場合にはステップSE9に進み、リサイズ処理後の画像を推論処理部20jに入力して画像修復を実行する。その後、ステップSE10に進み、デコード処理部210が修復後の画像に対して第2デコード処理を実行する。ステップSE10で第2デコード処理が成功すれば、ステップSE4に進んで終了処理を実行する。ステップSE10で第2デコード処理が失敗すれば、ステップSE11に進み、リサイズ処理後の画像を白黒反転処理する。その後、ステップSE11で白黒反転処理後の画像を推論処理部20jに入力して画像修復を実行する(図32参照)。次いで、ステップSE13に進み、デコード処理部210が修復後の画像に対して第2デコード処理を実行する。ステップSE13で第2デコード処理が成功すれば、ステップSE4に進んで終了処理を実行する。ステップSE13で第2デコード処理が失敗すれば、ステップSE14に進む。ステップSE14では、ステップSE5で抽出した候補領域がまだあるか否かを判定し、候補領域がない場合にはステップSE4に進んで終了処理を実行する。 If YES is determined in step SE8 and the white/black inversion setting is set to "both", the process proceeds to step SE9 to input the resized image to the inference processing unit 20j to restore the image. After that, the process proceeds to step SE10, and the decoding processing unit 210 executes the second decoding process on the restored image. If the second decoding process succeeds in step SE10, the process proceeds to step SE4 to execute the end process. If the second decoding process fails in step SE10, the process proceeds to step SE11, and black and white reversal processing is performed on the resized image. After that, in step SE11, the image after black-and-white reversal processing is input to the inference processing unit 20j to execute image restoration (see FIG. 32). Next, proceeding to step SE13, the decoding processing unit 210 performs the second decoding processing on the restored image. If the second decoding process succeeds in step SE13, the process proceeds to step SE4 to execute the end process. If the second decoding process fails in step SE13, the process proceeds to step SE14. At step SE14, it is determined whether or not the candidate area extracted at step SE5 is still present.

一方、ステップSE8でNOと判定されて白黒反転設定が「両方」になっていない場合にはステップSE15に進み、白黒反転設定が「OFF」になっているか否かを判定する。ステップSE15でNOと判定されて白黒反転設定が「OFF」になっていない場合には、ステップSE16に進んでリサイズ処理後の画像を白黒反転する処理する。その後、ステップSE17で白黒反転処理後の画像を推論処理部20jに入力して画像修復を実行する。次いで、ステップSE18に進み、デコード処理部210が修復後の画像に対して第2デコード処理を実行する。ステップSE18で第2デコード処理が成功すれば、ステップSE4に進んで終了処理を実行する。ステップSE18で第2デコード処理が失敗すれば、ステップSE14に進む。ステップSE14で候補領域がまだあるか否かを判定し、候補領域がない場合にはステップSE4に進んで終了処理を実行する。 On the other hand, if NO is determined in step SE8 and the black/white inversion setting is not "both", the process proceeds to step SE15 to determine whether or not the black/white inversion setting is "OFF". If NO is determined in step SE15 and the black/white inversion setting is not "OFF", the process proceeds to step SE16 to invert the black/white of the resized image. After that, in step SE17, the image after black-and-white inversion processing is input to the inference processing unit 20j to execute image restoration. Next, proceeding to step SE18, the decoding processing unit 210 performs the second decoding processing on the restored image. If the second decoding process succeeds in step SE18, the process proceeds to step SE4 to execute the end process. If the second decoding process fails in step SE18, the process proceeds to step SE14. At step SE14, it is determined whether or not there are still candidate areas, and if there are no candidate areas, the process proceeds to step SE4 to execute end processing.

ステップSE14で候補領域がまだあると判定された場合には、ステップSE19に進み、kの値に1を加えてステップSE7に進む。ステップSE7では、前回のフローからkの値が1つ増えているので、次の候補領域Rkに対応する部分画像に対して同様にリサイズ処理を実行する。ステップSE8以降は上述したとおりである。つまり、第1デコード処理または第2デコード処理の一方でデコードが成功すれば、成功した時点でデコード結果を出力して他の候補領域に対するデコード処理は行わず、次のワークWを撮像した読取画像を取得し、同様な処理を実行する。 If it is determined in step SE14 that there is still a candidate area, the process proceeds to step SE19, adds 1 to the value of k, and proceeds to step SE7. At step SE7, since the value of k is increased by one from the previous flow, the partial image corresponding to the next candidate region Rk is similarly resized. Step SE8 and subsequent steps are as described above. That is, if the decoding is successful in either the first decoding process or the second decoding process, the decoding result is output at the time of success, and the decoding process is not performed for the other candidate areas, and the read image of the next work W is picked up. and perform similar processing.

図32に示す後処理部201は、リサイズ処理後に画像修復していない部分画像と、リサイズ処理後に推論処理部20jが画像修復した部分画像とを合成する処理を実行する。すなわち、ニューラルネットワークを用いた画像修復では、修復前のコードが人間の目視で確認できるのに、画像修復がうまくいかないことや、画像修復するとセルが丸くなることが起こり得る。これらのことに対して、画像修復していない部分画像と、画像修復した部分画像とを適切な割合で重ね合わせると、その後のデコード処理が容易になる場合がある。画像修復していない部分画像と、画像修復した部分画像とを重ね合わせる割合は、所定の固定値であってもよいし、固定値以外であってもよく、例えば推論処理部20jによるの修復の安定度に基づいて、読み取り時に動的に、あるいは事前評価(チューニング)で最適化して決定してもよい。例えば事前評価において、その割合をユーザがスケールバー等で調整可能にし、合成後の画像をユーザに提示しながら調整が行えるようにしてもよい。 The post-processing unit 201 shown in FIG. 32 executes a process of synthesizing a partial image that has not been restored after resizing and a partial image that has been restored by the inference processing unit 20j after resizing. That is, in image restoration using a neural network, even though the code before restoration can be visually confirmed by humans, the image restoration may not go well or the cells may become rounded after the image restoration. For these reasons, if a partial image that has not been restored and a partial image that has been restored are superimposed at an appropriate ratio, subsequent decoding processing may be facilitated. The ratio of superimposing the partial image that has not been image-repaired and the partial image that has been image-repaired may be a predetermined fixed value or may be a value other than the fixed value. Based on the degree of stability, it may be determined dynamically at the time of reading or optimized by pre-evaluation (tuning). For example, in the preliminary evaluation, the user may be allowed to adjust the ratio using a scale bar or the like so that the adjustment can be made while presenting the synthesized image to the user.

(バンク切り替え機能)
本実施形態では、例えばカメラ5の撮像条件を構成するパラメータ及びデコード処理部210における処理条件等を構成するパラメータがセットになったパラメータセットを上記パラメータセット記憶部30cに記憶することができるように構成されている。パラメータセットは、バンクと呼ぶことができる。バンクは複数設けられており、それぞれに異なるパラメータが記憶されている。例えば、パラメータセット記憶部30cには、チューニング実行部20dにより設定された第1の撮像条件及びコード条件と、第2の撮像条件及びコード条件とを含む複数の撮像条件及びコード条件とがそれぞれ別のパラメータセットとして記憶されている。
(Bank switching function)
In the present embodiment, for example, the parameter set storage unit 30c can store a parameter set including parameters that configure the imaging conditions of the camera 5 and parameters that configure the processing conditions in the decoding processing unit 210. It is configured. A parameter set can be called a bank. A plurality of banks are provided, and different parameters are stored in each bank. For example, in the parameter set storage unit 30c, a plurality of imaging conditions and code conditions including the first imaging condition and code condition set by the tuning execution unit 20d and the second imaging condition and code condition are separately stored. is stored as a parameter set of

この光学的情報読取装置1では、パラメータセット記憶部35cに記憶されている複数のパラメータセットのうち、第1の撮像条件及びコード条件を含む一のパラメータセットから、第2の撮像条件及びコード条件を含む他のパラメータセットへ切り替えることや、その反対の切り替えができるように構成されている。パラメータセットの切替は、プロセッサ20が行うことや、ユーザが行うこともできるし、PLC101等の外部制御装置からの切替信号によって行うように構成することもできる。パラメータセットの切替をユーザが行う場合には、例えばユーザインターフェースに組み込まれているパラメータセット切替部を操作すればよい。パラメータセット切替部を「有効」にすることで、そのバンクのパラメータセットが光学的情報読取装置1の運用時に使用され、また、パラメータセット切替部を「無効」にすることで、そのバンクのパラメータセットが光学的情報読取装置1の運用時に使用されないようになる。つまり、パラメータセット切替部は、一のパラメータセットから他のパラメータセットに切り替えるためのものである。 In this optical information reading device 1, from among the plurality of parameter sets stored in the parameter set storage unit 35c, one parameter set including the first imaging condition and the code condition is used to obtain the second imaging condition and the code condition. and vice versa. The parameter set switching can be performed by the processor 20, by the user, or can be configured to be performed by a switching signal from an external control device such as the PLC 101. FIG. When the user switches the parameter set, the user may operate a parameter set switching unit incorporated in the user interface, for example. By enabling the parameter set switching unit, the parameter set of the bank is used during operation of the optical information reader 1, and by disabling the parameter set switching unit, the parameter set of the bank is used. The set is not used when the optical information reader 1 is operated. That is, the parameter set switching unit is for switching from one parameter set to another parameter set.

本例のデコード処理部210は、一のパラメータセットを使用して運用している時に、修復画像に対する第2デコード処理に失敗すると、他のパラメータセットに切り替えてから、別の条件で撮像された読取画像に対して画像修復、第2デコード処理を実行する。例えば、デコード処理部210が第2デコード処理に失敗したことを検出すると、現在しているパラメータセット以外のパラメータセットに切り替えた後、画像修復、第2デコード処理を実行し、このパラメータセットでも第2デコード処理に失敗したことを検出すると、これまで使用していない他のパラメータセットに切り替えた後、画像修復、第2デコード処理を実行する。パラメータセットを切り替えると、カメラ5の撮像条件だけなく、読取対象のコードサイズも変更される場合があり、この場合にはコードが存在する可能性が高いコード候補領域を抽出する際のサイズも変わることになる。その結果、ニューラルネットワークに入力する画像の縮小率又は拡大率も変わり、画像修復の結果も変わることになる。 When the decoding processing unit 210 of this example fails the second decoding processing for the restored image while operating using one parameter set, the decoding processing unit 210 switches to another parameter set, and then the image is captured under another condition. Image restoration and second decoding processing are performed on the read image. For example, when the decoding processing unit 210 detects that the second decoding process has failed, it switches to a parameter set other than the currently used parameter set, then executes image restoration and the second decoding process. When it detects that the second decoding process has failed, it switches to another parameter set that has not been used before, and then executes image restoration and second decoding process. When the parameter set is switched, not only the imaging condition of the camera 5 but also the code size to be read may be changed. In this case, the size when extracting the code candidate area where the code is likely to be present also changes. It will be. As a result, the reduction ratio or enlargement ratio of the image input to the neural network also changes, and the result of image restoration also changes.

(白黒反転対応)
次に、図33及び図34に基づいてコードの白黒反転対応について説明する。図33は、2つのニューラルネットワーク、即ち、白地に黒印字のコードで学習したニューラルネットワークと、黒地に白印字のコードで学習したニューラルネットワークとを用いてコードの白黒反転に対応する場合について説明する図である。FIG.33Aは、読取画像(左端の画像)を、白地に黒印字のコードで学習したニューラルネットワークと、黒地に白印字のコードで学習したニューラルネットワークとにそれぞれ入力し、各ニューラルネットワークからデコード結果を出力させる方式を示しており、この方式を並行実施方式と呼ぶ。読取画像は、白地に黒印字のコードを撮像した画像なので、白地に黒印字のコードで学習したニューラルネットワークによる修復画像ではデコード処理に成功するが、黒地に白印字のコードで学習したニューラルネットワークによる修復画像ではデコード処理に失敗する。
(Supports black and white inversion)
Next, correspondence to black/white inversion of codes will be described with reference to FIGS. 33 and 34. FIG. FIG. 33 illustrates a case where two neural networks, namely, a neural network trained with a code printed in black on a white background and a neural network trained with a code printed in white on a black background, are used to handle black-and-white inversion of a code. It is a diagram. FIG. 33A inputs the read image (image on the left end) to a neural network trained with a code printed in black on a white background and a neural network trained with a code printed in white on a black background, and outputs decoding results from each neural network. This method is called a parallel execution method. Since the read image is an image of a black-printed code on a white background, decoding is successful in the restored image by a neural network trained with a black-printed code on a white background, but the decoded image is successfully decoded by a neural network trained with a white-printed code on a black background. Decoding fails on the restored image.

FIG.33Bは、読取画像(左端の画像)を、まず、黒地に白印字のコードで学習したニューラルネットワークのみに入力し、修復画像のデコード処理を試みる。デコード処理に失敗した場合のみ、読取画像を、白地に黒印字のコードで学習したニューラルネットワークに入力して修復画像を生成する。この方式は、失敗後に別ネットワークを使用する方式である。 FIG. 33B first inputs the read image (image at the left end) only to the neural network trained with the white-on-black code, and attempts to decode the restored image. Only when the decoding process fails, the read image is input to a neural network that has been trained with black-on-white code to generate a restored image. This method is a method of using another network after a failure.

FIG.33Cは、ユーザによる設定に基づいて、読取画像を入力するニューラルネットワークを選択する方式である。左側に示すケースは、読取画像が白地に黒印字のコードを撮像した画像であると設定されている場合である。この場合、ネットワーク選択モジュールが白地に黒印字のコードで学習したニューラルネットワークを選択する。そして、読取画像(左端の画像)を白地に黒印字のコードで学習したニューラルネットワークに入力する。一方、右側に示すケースは、読取画像が黒地に白印字のコードを撮像した画像であると設定されている場合である。この場合、ネットワーク選択モジュールが黒地に白印字のコードで学習したニューラルネットワークを選択する。そして、読取画像(左端の画像)を黒地に白印字のコードで学習したニューラルネットワークに入力する。 FIG. 33C is a method of selecting a neural network for inputting a read image based on user settings. The case shown on the left side is a case where the read image is set to be an image of a black-printed code on a white background. In this case, the network selection module selects a neural network trained with black-on-white code. Then, the read image (image at the left end) is input to a neural network that has been trained with black-printed codes on a white background. On the other hand, the case shown on the right side is a case where the read image is set to be an image of a white-printed code on a black background. In this case, the network selection module selects a neural network trained with white-on-black code. Then, the read image (image at the left end) is input to a neural network that has been trained with white-printed code on a black background.

図34は、1つのニューラルネットワークのみを用いてコードの白黒反転に対応する場合について説明する図である。FIG.34Aでは、読取画像(左端の画像)を白黒反転処理することにより、白黒反転画像を生成する場合について示している。白黒反転処理しない画像と、白黒反転処理した画像とをそれぞれ白地に黒印字のコードで学習したニューラルネットワークに入力する。読取画像は、黒地に白印字のコードを撮像した画像なので、白地に黒印字のコードで学習したニューラルネットワークによる修復画像ではデコード処理に失敗するが、白黒反転処理した後の画像を使用することで、デコード処理に成功する。 FIG. 34 is a diagram for explaining a case where only one neural network is used to handle black/white inversion of a code. FIG. 34A shows a case where a black-and-white inverted image is generated by subjecting the read image (image at the left end) to black-and-white inversion processing. An image without white-black reversal processing and an image with black-white reversal processing are input to a neural network that has been trained with a code for black printing on a white background, respectively. Since the read image is an image of a white-printed code on a black background, the decoding process fails with the restored image by the neural network trained with the black-printed code on a white background. , the decoding process succeeds.

FIG.34Bの上に示す例では、読取画像(左端の画像)が黒地に白印字されたコードの画像であるため、白地に黒印字のコードで学習したニューラルネットワークに入力すると、デコード処理に失敗する。その後、白黒反転処理した画像を生成して白地に黒印字のコードで学習したニューラルネットワークに入力すると、デコード処理に成功する。 FIG. In the example shown above in 34B, the read image (leftmost image) is an image of a code printed in white on a black background, so if it is input to a neural network trained with a code printed in black on a white background, the decoding process fails. After that, a black-and-white reversed image is generated and input to a neural network that has learned black-on-white code, and the decoding process succeeds.

FIG.34Bの下に示す例では、読取画像(左端の画像)が白地に黒印字されたコードの画像であるため、黒地に白印字のコードで学習したニューラルネットワークに入力すると、デコード処理に失敗する。その後、白黒反転処理した画像を生成して黒地に白印字のコードで学習したニューラルネットワークに入力すると、デコード処理に成功する。 FIG. In the example shown below 34B, the read image (leftmost image) is an image of a code printed in black on a white background, so if it is input to a neural network trained with a code printed in white on a black background, the decoding process fails. After that, a black-and-white reversed image is generated and input to a neural network that has learned a white-on-black code, and the decoding process succeeds.

FIG.34Cは、ユーザによる設定に基づいて、白黒反転処理を実行するか否かを決定する方式である。上側に示すケースは、読取画像が白地に黒印字のコードを撮像した画像であると設定されている場合である。この場合、白黒反転処理モジュールが白黒反転処理を実行することなく、そのまま白地に黒印字のコードで学習したニューラルネットワークに入力する。一方、下側に示すケースは、読取画像が黒地に白印字のコードを撮像した画像であると設定されている場合である。この場合、白黒反転処理モジュールが白黒反転処理を実行する。そして、白黒反転処理した画像を白地に黒印字のコードで学習したニューラルネットワークに入力する。 FIG. 34C is a method for determining whether or not to execute black/white reversal processing based on user settings. The case shown on the upper side is a case where the read image is set to be an image of a black-printed code on a white background. In this case, the black-and-white reversal processing module does not perform the black-and-white reversal processing, but directly inputs to the neural network that has learned the code for black printing on a white background. On the other hand, the case shown on the lower side is a case where the read image is set to be an image of a white-printed code on a black background. In this case, the black-and-white reversal processing module performs the black-and-white reversal processing. Then, the black-and-white reversed image is input to a neural network that has been trained with black-printed code on a white background.

(コントラストとマッチングレベルの関係)
マッチングレベルは、例えばチューニング時のスコアとして使用したり、運用時の印字品質/読み取り性能の管理に使用される。例えば、マッチングレベルは0~100の正の整数値で定義されており、50以上では読み取り率テストを実施した場合に読み取り率100%になるように設計することができる。また、マッチングレベル0は読み取れない場合、マッチングレベル1は読み取れる場合の最低値である。
(Relationship between contrast and matching level)
The matching level is used, for example, as a score during tuning, or for managing print quality/reading performance during operation. For example, the matching level is defined as a positive integer value from 0 to 100, and if it is 50 or higher, it can be designed so that the read rate is 100% when a read rate test is performed. Also, matching level 0 is the lowest value when reading is impossible, and matching level 1 is the lowest value when reading is possible.

図35は、コントラストとマッチングレベルの関係を示すグラフであり、実線は推論処理部20jにより画像修復された画像(修復画像)のコントラストとマッチングレベルの関係を示し、また、破線は推論処理部20jにより画像修復していない画像(読取画像)のコントラストとマッチングレベルの関係を示している。このグラフから明らかなように、修復画像のマッチングレベルは読取画像のマッチングレベルよりも全体的に高くなっているが、ある一定以上画質が悪化すると、マッチングレベルが急激に低下してしまう。 FIG. 35 is a graph showing the relationship between the contrast and the matching level. The solid line shows the relationship between the contrast of the image restored by the inference processing unit 20j (restored image) and the matching level. shows the relationship between the contrast of an image (read image) without image restoration and the matching level. As is clear from this graph, the matching level of the repaired image is generally higher than the matching level of the read image.

(マッチングレベルの算出処理)
マッチングレベルはアルゴリズムごとに設定されており、一般的には1コード種につき、1つのアルゴリズムである。しかしながら、本実施形態では、画像修復機能の搭載により、1つのコード種で2つのアルゴリズム(画像修復するアルゴリズムと、画像修復しないアルゴリズム)が実行される。この2つのアルゴリズムのうち、デコード処理が早く成功した方の結果が出力されるため、仮に、2つのアルゴリズムで交互にデコード処理に成功するケースにおいてはマッチングレベルの値が不安定になるおそれがある。また、画像修復を実行することで読み取りやすい画像になるため、従来と類似したマッチングレベルの算出方法ではマッチングレベルが既存のものと比較して高くなりやすい。これらのことに対し、本実施形態では、2つのアルゴリズムのマッチングレベルの重みづけ和をとり、マッチングレベルの値を調整するようにした。以下、具体例について、図36に示すフローチャートに基づいて説明する。
(Matching level calculation process)
The matching level is set for each algorithm, generally one algorithm per code type. However, in this embodiment, two algorithms (an image restoration algorithm and an image restoration algorithm not executed) are executed with one code type by installing the image restoration function. Of these two algorithms, the result of the one whose decoding process succeeds earlier is output, so if the decoding process succeeds alternately with the two algorithms, the value of the matching level may become unstable. . In addition, since the image can be easily read by executing the image restoration, the matching level is likely to be higher than the existing one in the matching level calculation method similar to the conventional one. For these reasons, in the present embodiment, the weighted sum of the matching levels of the two algorithms is calculated, and the value of the matching level is adjusted. A specific example will be described below based on the flowchart shown in FIG.

スタート後のステップSF1では読取画像をデコード処理部210に入力する。ステップSF2では、画像修復することなく、デコード処理部210が第1デコード処理を実行する。ステップSF3では、第1デコード処理によるマッチングレベルA(MLA)を算出する。一方、ステップSF4では、読取画像を推論処理部20jに入力して画像修復処理を実行する。その後、ステップSF5に進み、修復画像に対してデコード処理部210が第2デコード処理を実行する。ステップSF6では、第2デコード処理によるマッチングレベルB(MLB)を算出する。尚、ステップSF2でデコードに成功しなかった場合にはMLA=0となり、またステップSF5でデコードに成功しなかった場合にはMLB=0となる。 In step SF1 after the start, the read image is input to the decode processing section 210. FIG. In step SF2, the decoding processing unit 210 executes the first decoding process without restoring the image. At step SF3, a matching level A (MLA) is calculated by the first decoding process. On the other hand, in step SF4, the read image is input to the inference processing section 20j and image restoration processing is executed. After that, the process proceeds to step SF5, and the decode processing unit 210 executes the second decoding process on the restored image. At step SF6, a matching level B (MLB) is calculated by the second decoding process. If the decoding is not successful in step SF2, MLA=0, and if the decoding is not successful in step SF5, MLB=0.

ステップSF7では、例えば平均化関数等を用いてMLAとMLBの値を調整する。また、ステップSF2、SF5のどちらでデコードに成功しても、MLAの値に重みを付ける処理を行う。 In step SF7, the values of MLA and MLB are adjusted using, for example, an averaging function. Further, even if the decoding is successful in either step SF2 or SF5, a process of weighting the value of MLA is performed.

(ユーザインターフェースの例)
図37は、表示部6に表示されるユーザインターフェース300の例を示す図である。プロセッサ20は、ユーザインターフェース300を生成し、表示部6に表示させる。ユーザインターフェース300には、カメラ5で現在撮像されている画像(ライブビュー画像)が表示される第1画像表示領域301と、読取画像が表示される第2画像表示領域302と、推論処理部20jにより修復された修復画像が表示される第3表示領域303とが設けられている。これにより、読取画像と修復画像とを比較可能な形態でユーザに提示できる。また、デコード処理が実行される画像、またはデコード処理が実行された後の画像がどのような画像であるかをユーザが把握できる。
(Example of user interface)
FIG. 37 is a diagram showing an example of the user interface 300 displayed on the display unit 6. As shown in FIG. The processor 20 generates the user interface 300 and causes the display unit 6 to display it. The user interface 300 includes a first image display area 301 in which an image (live view image) currently captured by the camera 5 is displayed, a second image display area 302 in which a read image is displayed, and an inference processing unit 20j. A third display area 303 is provided in which the restored image restored by is displayed. Accordingly, the read image and the restored image can be presented to the user in a form that enables comparison. Also, the user can grasp what kind of image the image on which the decoding process is executed or the image after the decoding process is executed.

(AIチップ付き撮像素子の例)
図38は、AIチップ付き撮像素子5aを用いた例を示す図であり、各図に示すようにカメラ5の撮像素子5aを構成することができる。FIG.38Aは、撮像素子5aに画像修復を実行するAIチップを設けてパッケージ化した場合を示す図であり、読取画像を画像修復した後に、プロセッサ20に出力する。また、FIG.38Bは、撮像素子5aに、修復用コード領域の抽出と、画像修復とを実行するAIチップを設けてパッケージ化した場合を示す図であり、読取画像の中から修復用コード領域を抽出した後、当該領域に対応する部分画像を画像修復した後に、プロセッサ20に出力する。また、FIG.38Cは、撮像素子5aに、修復用コード領域の抽出を実行するAIチップを設けてパッケージ化した場合を示す図であり、読取画像の中から修復用コード領域を抽出した後、当該領域に対応する部分画像をプロセッサ20に出力する。
(Example of image sensor with AI chip)
FIG. 38 is a diagram showing an example using an AI chip-equipped image sensor 5a, and the image sensor 5a of the camera 5 can be configured as shown in each figure. FIG. 38A is a diagram showing a case in which an AI chip for performing image restoration is provided in the imaging element 5a and packaged, and the read image is output to the processor 20 after image restoration. Also, FIG. 38B is a diagram showing a case in which an AI chip for executing restoration code area extraction and image restoration is provided in the imaging device 5a and packaged. , the partial image corresponding to the region is output to the processor 20 after image restoration. Also, FIG. 38C is a diagram showing a case in which an AI chip for extracting a repair code area is provided in the imaging device 5a and packaged. The partial image to be processed is output to the processor 20 .

また、FIG.38Aに示す例において、撮像素子5aで取得した読取画像をプロセッサ20に出力するとともに、AIチップによって画像修復を実行し、修復画像をプロセッサ20に出力してもよい。FIG.38B,FIG.38Cに示す例についても同様である。 Also, FIG. In the example shown in 38A, the read image acquired by the imaging element 5a may be output to the processor 20, and the AI chip may perform image restoration, and the restored image may be output to the processor 20. FIG. FIG. 38B, FIG. The same is true for the example shown in 38C.

(偏光フィルタアタッチメント3)
本実施形態では、図2に示すように、少なくともコードを照明する照明光を発生する光源として複数の発光ダイオードからなる第1照明部4a及び第2照明部4bを備えている。偏光フィルタアタッチメント3は、第2照明部4bを構成する発光ダイオードで発生した光のうち、第1の偏光成分の光を通過させる第1偏光板3aと、第1の偏光成分と略直交する第2の偏光成分の光を通過させる第2偏光板3bとを備えている。第1偏光板3a及び第2偏光板3bは、図2中、斜線を引いた範囲にそれぞれ設けることができ、例えば、第1偏光板3aは、第2照明部4bを覆うように配置され、また、第2偏光板3bは、カメラ5の光学系5bを光の入射側から覆うように配置されている。
(Polarizing filter attachment 3)
In the present embodiment, as shown in FIG. 2, a first illumination section 4a and a second illumination section 4b, which are composed of a plurality of light-emitting diodes, are provided as light sources for generating illumination light for illuminating at least the cord. The polarizing filter attachment 3 includes a first polarizing plate 3a that passes light of a first polarization component out of the light generated by the light emitting diodes that constitute the second lighting unit 4b, and a second polarization plate that is substantially perpendicular to the first polarization component. and a second polarizing plate 3b for passing light of two polarization components. The first polarizing plate 3a and the second polarizing plate 3b can be provided in the hatched areas in FIG. The second polarizing plate 3b is arranged to cover the optical system 5b of the camera 5 from the light incident side.

したがって、カメラ5は、第1偏光板3aを通過し、ワークWの表面(コード)から反射した光を、第2偏光板3bを介して受光する。これにより、ワークWの正反射成分が除去され、第1偏光板3a及び第2偏光板3bを介さない場合に比べて低コントラストな読取画像をカメラ5が生成する。この低コントラストな読取画像をプロセッサ20が取得する。プロセッサ20は、低コントラストな読取画像をニューラルネットワークに入力することにより、入力前に比べて高コントラストな修復画像に変換し、当該修復画像に対してデコード処理を実行する。 Therefore, the camera 5 receives the light that passes through the first polarizing plate 3a and is reflected from the surface (code) of the workpiece W via the second polarizing plate 3b. As a result, the regular reflection component of the workpiece W is removed, and the camera 5 generates a read image with a lower contrast than when the first polarizing plate 3a and the second polarizing plate 3b are not interposed. The processor 20 acquires this low-contrast read image. By inputting the low-contrast read image into the neural network, the processor 20 converts it into a restored image with a higher contrast than before the input, and executes decoding processing on the restored image.

すなわち、偏光板3a、3bを使用することで、ワークWの正反射成分が除去されるので、正反射成分の影響が軽減された読取画像を取得できる。例えば金属ワークを撮像した場合のように正反射成分が多くなる画像に偏光板3a、3bは適しているものの、光量の低下によって読取画像が暗くなり、コントラストが低下することがある。このような場合に、ニューラルネットワークの推論処理によって高コントラストな修復画像に変換することで、読取性能が向上する。 That is, by using the polarizing plates 3a and 3b, the specular reflection component of the workpiece W is removed, so that a read image with reduced influence of the specular reflection component can be acquired. For example, the polarizing plates 3a and 3b are suitable for images with many specular reflection components, such as when an image of a metal workpiece is captured, but the read image may become dark due to a decrease in the amount of light, resulting in a decrease in contrast. In such a case, reading performance is improved by converting the image into a high-contrast restored image through neural network inference processing.

上述の実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内のものである。 The above-described embodiments are merely examples in all respects and should not be construed in a restrictive manner. Furthermore, all modifications and changes within the equivalent scope of claims are within the scope of the present invention.

以上説明したように、本発明に係る光学的情報読取装置は、例えばワークに付されたコードを読み取る場合に利用することができる。 INDUSTRIAL APPLICABILITY As described above, the optical information reader according to the present invention can be used, for example, to read a code attached to a work.

1 定置式の光学的情報読取装置
1A 手持ち式の光学的情報読取装置
5 カメラ
20 プロセッサ
20f デコード処理部
20j 推論処理部(画像修復部)
21~24 第1~第4汎用コア
25 専用コア(推論処理専用コア)
40 ROM
40d ニューラルネットワーク記憶部
41 RAM
1 stationary optical information reading device 1A handheld optical information reading device 5 camera 20 processor 20f decoding processing unit 20j inference processing unit (image restoration unit)
21 to 24 1st to 4th general-purpose cores 25 Dedicated cores (dedicated cores for inference processing)
40 ROMs
40d neural network storage unit 41 RAM

Claims (20)

ワークに付されたコードを読み取る光学的情報読取装置であって、
コードを撮影し、読取画像を生成するカメラと、
前記カメラにより生成された読取画像に対応する理想画像を推定するためのニューラルネットワークの構造及びパラメータを記憶する記憶部と、
前記記憶部に記憶された構造及びパラメータで構成されたニューラルネットワークに前記カメラにより生成された読取画像を入力し、前記読取画像に対応する理想画像を生成する推論処理を実行する推論処理部と、前記カメラにより生成された読取画像をデコードする第1デコード処理と前記推論処理部が生成した理想画像をデコードする第2デコード処理とを実行するデコード処理部とを有するプロセッサとを備え、
前記プロセッサは、前記推論処理部による推論処理と前記デコード処理部による第1デコード処理とを並列的に実行するとともに、前記推論処理部による推論処理の完了後に、前記デコード処理部による前記第2デコード処理を実行するように構成されている光学的情報読取装置。
An optical information reader that reads a code attached to a work,
a camera that captures the code and produces a read image;
a storage unit that stores the structure and parameters of a neural network for estimating an ideal image corresponding to the read image generated by the camera;
an inference processing unit that inputs a read image generated by the camera to a neural network configured with the structure and parameters stored in the storage unit and executes inference processing for generating an ideal image corresponding to the read image; a processor having a decoding processing unit that executes a first decoding process for decoding the read image generated by the camera and a second decoding process for decoding the ideal image generated by the inference processing unit;
The processor executes inference processing by the inference processing unit and first decoding processing by the decoding processing unit in parallel, and after the inference processing by the inference processing unit is completed, the second decoding by the decoding processing unit. An optical information reader configured to perform processing.
請求項1に記載の光学的情報読取装置において、
前記デコード処理部は、前記第1デコード処理と前記第2デコード処理とを別スレッドで並列的に実行するコアを有している光学的情報読取装置。
The optical information reader according to claim 1,
The optical information reading device, wherein the decoding processing section has a core that executes the first decoding processing and the second decoding processing in parallel in separate threads.
請求項1に記載の光学的情報読取装置において、
前記デコード処理部は、前記第1デコード処理と前記第2デコード処理とを異なるコアで実行可能なマルチコアで構成されている光学的情報読取装置。
The optical information reader according to claim 1,
The optical information reading device, wherein the decoding processing section is composed of multi-cores capable of executing the first decoding processing and the second decoding processing with different cores.
請求項1から3のいずれか1つに記載の光学的情報読取装置において、
前記デコード処理部は、前記カメラにより生成された読取画像の中からコードが存在する可能性が高いコード候補領域を抽出する抽出処理と、当該抽出処理により読取画像の中から抽出された部分画像をデコードする前記第1デコード処理とを実行する汎用コアを有し、
前記推論処理部は、抽出処理により読取画像の中から抽出された部分画像を入力し、当該読取画像に対応する理想画像を生成する推論処理を実行する推論処理専用コアを有している光学的情報読取装置。
In the optical information reader according to any one of claims 1 to 3,
The decoding processing unit performs an extraction process for extracting a code candidate area in which a code is likely to exist from the read image generated by the camera, and extracts a partial image extracted from the read image by the extraction process. Having a general-purpose core that executes the first decoding process for decoding,
The inference processing unit receives a partial image extracted from the read image by extraction processing, and has an inference processing dedicated core that executes inference processing for generating an ideal image corresponding to the read image. Information reader.
請求項4に記載の光学的情報読取装置において、
前記汎用コアは、前記推論処理専用コアによる推論処理で生成された理想画像をデコードする第2デコード処理を実行する光学的情報読取装置。
In the optical information reader according to claim 4,
The general-purpose core is an optical information reader that executes second decoding processing for decoding an ideal image generated by the inference processing performed by the inference processing dedicated core.
請求項4または5に記載の光学的情報読取装置において、
前記汎用コアは、前記抽出処理を実行する第1コアと、前記第1デコード処理を実行する第2コアと、前記第2デコード処理を実行する第3コアとを有している光学的情報読取装置。
The optical information reader according to claim 4 or 5,
The general-purpose core has a first core that executes the extraction process, a second core that executes the first decoding process, and a third core that executes the second decoding process for optical information reading. Device.
請求項4から6のいずれか1つに記載の光学的情報読取装置において、
前記汎用コアは、前記推論処理専用コアによる推論処理で理想画像が生成された場合、前記第1デコード処理に優先して前記理想画像をデコードする前記第2デコード処理を実行する光学的情報読取装置。
In the optical information reader according to any one of claims 4 to 6,
The general-purpose core is an optical information reader that executes the second decoding process of decoding the ideal image prior to the first decoding process when an ideal image is generated by the inference processing performed by the dedicated inference processing core. .
請求項5から7のいずれか1つに記載の光学的情報読取装置において、
前記推論処理専用コアは、前記汎用コアによる抽出処理の結果、複数の前記部分画像が抽出された場合、複数の前記部分画像に対して所定の順番に従って推論処理を実行し、
前記汎用コアは、前記抽出処理の結果、複数の前記部分画像が抽出された場合、複数の前記部分画像に対して所定の順番に従って前記第1デコード処理を実行する光学的情報読取装置。
In the optical information reader according to any one of claims 5 to 7,
When the plurality of partial images are extracted as a result of the extraction processing by the general-purpose core, the inference processing dedicated core performs inference processing on the plurality of partial images according to a predetermined order,
The general-purpose core is an optical information reading device configured to, when a plurality of partial images are extracted as a result of the extraction processing, perform the first decoding processing on the plurality of partial images in accordance with a predetermined order.
請求項8に記載の光学的情報読取装置において、
前記プロセッサは、前記第1デコード処理でデコードに成功した場合は、前記推論処理部による推論処理を終了させるように構成されている光学的情報読取装置。
In the optical information reader according to claim 8,
The optical information reading device, wherein the processor terminates the inference processing by the inference processing unit when decoding is successful in the first decoding processing.
請求項4から9のいずれか1つに記載の光学的情報読取装置において、
前記汎用コアは、前記コード候補領域を第1の所定条件で抽出する第1抽出処理と、前記コード候補領域を前記第1の所定条件よりも精度の高い抽出を可能にする第2の所定条件で抽出する第2抽出処理と、前記第1抽出処理により読取画像の中から抽出された部分画像をデコードする前記第1デコード処理とを実行し、
前記推論処理専用コアは、前記第2抽出処理により読取画像の中から抽出された部分画像を入力し、当該読取画像に対応する理想画像を生成する推論処理を実行する光学的情報読取装置。
In the optical information reader according to any one of claims 4 to 9,
The general-purpose core performs a first extraction process for extracting the code candidate region under a first predetermined condition, and a second predetermined condition for enabling extraction of the code candidate region with higher accuracy than the first predetermined condition. and the first decoding process for decoding the partial image extracted from the read image by the first extraction process,
The inference processing dedicated core receives a partial image extracted from the read image by the second extraction processing, and performs inference processing for generating an ideal image corresponding to the read image.
請求項4から10のいずれか1つに記載の光学的情報読取装置において、
前記抽出処理により読取画像の中から抽出された部分画像が記憶されており、前記汎用コア及び前記推論処理専用コアが共にアクセス可能なメモリを備えている光学的情報読取装置。
In the optical information reader according to any one of claims 4 to 10,
An optical information reader comprising a memory that stores a partial image extracted from the read image by the extraction process and that can be accessed by both the general-purpose core and the inference process core.
請求項4から11のいずれか1つに記載の光学的情報読取装置において、
前記汎用コア及び前記推論処理専用コアが同一の基板上に実装されており、
前記推論処理専用コアは、ニューラルネットワークによる推論処理専用の専用コアで構成されている光学的情報読取装置。
The optical information reader according to any one of claims 4 to 11,
The general-purpose core and the inference processing dedicated core are mounted on the same substrate,
The inference processing dedicated core is an optical information reading device composed of a dedicated core dedicated to inference processing by a neural network.
請求項1から12のいずれか1つに記載の光学的情報読取装置において、
前記記憶部に記憶された構造及びパラメータで構成されたニューラルネットワークに前記カメラにより生成された読取画像を入力し、前記読取画像を修復した修復画像を生成する推論処理を実行する画像修復部と、
前記カメラにより生成された読取画像に対する第1デコード処理を実行する第1デコード処理部と、
前記画像修復部が生成した修復画像に対する第2デコード処理を実行する第2デコード処理部と、をさらに備え、
前記第2デコード処理部は、前記読取画像からコードが存在する可能性が高いコード候補領域を抽出するとともに、前記画像修復部に対し、推論処理を実行するようトリガ信号を送出し、
前記画像修復部は、前記第2デコード処理部から送出されたトリガ信号を受信すると、前記第2デコード処理部が抽出した前記コード候補領域に対応する部分画像を前記ニューラルネットワークに入力し、当該部分画像を修復した修復画像を生成する推論処理を実行し、
前記第2デコード処理部は、前記修復画像に基づいてコードの各セル位置を示すグリッド位置を決定し、決定したグリッド位置に基づいて当該修復画像のデコード処理を実行する光学的情報読取装置。
The optical information reader according to any one of claims 1 to 12,
an image restoration unit that inputs the read image generated by the camera to a neural network configured with the structure and parameters stored in the storage unit, and executes inference processing for generating a restored image obtained by restoring the read image;
a first decoding processing unit that executes a first decoding process on the read image generated by the camera;
a second decoding processing unit that executes a second decoding process on the restored image generated by the image restoration unit;
The second decoding processing unit extracts a code candidate area in which a code is likely to exist from the read image, and sends a trigger signal to the image restoration unit to execute inference processing,
When receiving the trigger signal sent from the second decoding processing unit, the image restoration unit inputs a partial image corresponding to the code candidate region extracted by the second decoding processing unit to the neural network, and restores the partial image to the neural network. Execute an inference process that generates a repaired image that is a repaired image,
The second decoding processing unit determines a grid position indicating each cell position of the code based on the restored image, and executes decoding processing of the restored image based on the determined grid position.
請求項13に記載の光学的情報読取装置において、
前記画像修復部による推論処理と前記第1デコード処理部による第1デコード処理は並列に実行され、前記第2デコード処理部が第2デコード処理を実行している期間の少なくとも一部は前記画像修復部による推論処理が実行されない休止期間を有する光学的情報読取装置。
14. The optical information reader according to claim 13,
The inference processing by the image restoration unit and the first decoding processing by the first decoding processing unit are executed in parallel, and at least part of the period during which the second decoding processing unit is executing the second decoding processing is the image restoration. An optical information reader having a rest period during which inference processing by the unit is not performed.
請求項1から12のいずれか1つに記載の光学的情報読取装置において、
前記記憶部に記憶された構造及びパラメータで構成されたニューラルネットワークに前記カメラにより生成された読取画像を入力し、前記読取画像を修復した修復画像を生成する推論処理を実行する画像修復部と、
前記カメラにより生成された読取画像に対する第1デコード処理を実行する第1デコード処理部と、
前記画像修復部が生成した修復画像に対する第2デコード処理を実行する第2デコード処理部と、
前記第2デコード処理を実行するか否かを設定する設定部と、をさらに備え、
前記第1デコード処理部は、前記第2デコード処理にかかる時間よりも短い時間で前記第1デコード処理を実行可能であり、
前記設定部は、前記第2デコード処理を実行すると設定されている場合は、前記第2デコード処理の実行に必要な時間よりも長いデコードタイムアウト時間を設定されるとともに、前記第2デコード処理を実行しないと設定されている場合は、前記第2デコード処理の実行に必要な時間よりも短いデコードタイムアウト時間を設定可能に構成されている光学的情報読取装置。
The optical information reader according to any one of claims 1 to 12,
an image restoration unit that inputs the read image generated by the camera to a neural network configured with the structure and parameters stored in the storage unit, and executes inference processing for generating a restored image obtained by restoring the read image;
a first decoding processing unit that executes a first decoding process on the read image generated by the camera;
a second decoding processing unit that performs a second decoding process on the restored image generated by the image restoration unit;
a setting unit that sets whether to execute the second decoding process,
The first decoding processing unit is capable of executing the first decoding processing in a time shorter than the time required for the second decoding processing,
When the setting unit is set to execute the second decoding process, the setting unit sets a decoding timeout period longer than the time required to execute the second decoding process, and executes the second decoding process. An optical information reader configured to be able to set a decoding time-out period shorter than the time required for executing the second decoding process when it is set not to do so.
請求項1から12のいずれか1つに記載の光学的情報読取装置において、
前記記憶部に記憶された構造及びパラメータで構成されたニューラルネットワークに前記カメラにより生成された読取画像を入力し、前記読取画像を修復した修復画像を生成する推論処理を実行する画像修復部と、
前記カメラにより生成された読取画像に対する第1デコード処理と、前記第1デコード処理と並列に、前記画像修復部が生成した修復画像に対する第2デコード処理を実行するデコード処理部と、
前記第2デコード処理を実行するか否かを設定する設定部と、をさらに備え、
前記デコード処理部は、前記設定部により前記第2デコード処理を実行しないと設定されている場合は、前記第2デコード処理に使われる処理のリソースを前記第1デコード処理に振り分け、前記第2デコード処理を実行すると設定されている場合に比べ、前記第1デコード処理を高速化する光学的情報読取装置。
The optical information reader according to any one of claims 1 to 12,
an image restoration unit that inputs the read image generated by the camera to a neural network configured with the structure and parameters stored in the storage unit, and executes inference processing for generating a restored image obtained by restoring the read image;
a first decoding process on the read image generated by the camera; and a decoding processing unit that, in parallel with the first decoding process, performs a second decoding process on the restored image generated by the image restoration unit;
a setting unit that sets whether to execute the second decoding process,
When the setting unit sets not to execute the second decoding processing, the decoding processing unit allocates processing resources used for the second decoding processing to the first decoding processing, and performs the second decoding processing. An optical information reader that speeds up the first decoding process compared to when the process is set to be executed.
請求項1から12のいずれか1つに記載の光学的情報読取装置において、
前記記憶部に記憶された構造及びパラメータで構成されたニューラルネットワークに前記カメラにより生成された読取画像を入力し、前記読取画像を修復した修復画像を生成する推論処理を実行する画像修復部と、
前記画像修復部が生成した修復画像に対するデコード処理を実行するデコード処理部と、をさらに備え、
前記デコード処理部は、前記読取画像からコードが存在する可能性が高いコード候補領域を抽出し、
前記画像修復部は、前記デコード処理部が抽出した前記コード候補領域に対応する部分画像を前記ニューラルネットワークに入力し、当該部分画像を修復した修復画像を生成する推論処理を実行し、
前記デコード処理部は、前記修復画像に基づいてコードの各セル位置を示すグリッド位置を決定し、決定したグリッド位置に基づいて当該修復画像のデコードを実行する光学的情報読取装置。
The optical information reader according to any one of claims 1 to 12,
an image restoration unit that inputs the read image generated by the camera to a neural network configured with the structure and parameters stored in the storage unit, and executes inference processing for generating a restored image obtained by restoring the read image;
a decoding processing unit that performs decoding processing on the restored image generated by the image restoration unit;
The decoding processing unit extracts a code candidate area in which a code is likely to exist from the read image,
The image restoration unit inputs a partial image corresponding to the code candidate region extracted by the decoding processing unit to the neural network, and performs an inference process for generating a restored image obtained by restoring the partial image,
The decoding processing unit determines a grid position indicating each cell position of a code based on the restored image, and decodes the restored image based on the determined grid position.
請求項1から12のいずれか1つに記載の光学的情報読取装置において、
前記記憶部に記憶された構造及びパラメータで構成されたニューラルネットワークに前記カメラにより生成された読取画像を入力し、前記読取画像を修復した修復画像を生成する推論処理を実行する画像修復部と、
前記画像修復部が生成した修復画像に対するデコード処理を実行するデコード処理部と、
前記カメラの撮像条件及び前記デコード処理のデコード条件を変化させて、撮像及びデコード処理を繰り返し、各撮像条件及びデコード条件にて算出されたコードの読み取りのしやすさを示すマッチングレベルに基づいて、最適な撮像条件及びデコード条件を決定するとともに、読取対象のコードの大きさを設定するチューニング処理を実行するチューニング実行部と、を更に備え、
前記デコード処理部は、
前記チューニング処理により設定された読取対象のコードを包含できるサイズで、かつ前記読取画像の中でコードが存在する可能性が高いコード候補領域を抽出し、当該抽出された画像を、予め定められたサイズとなるように縮小又は拡大してから前記ニューラルネットワークに入力し、当該ニューラルネットワークで修復した修復画像をデコードする光学的情報読取装置。
The optical information reader according to any one of claims 1 to 12,
an image restoration unit that inputs the read image generated by the camera to a neural network configured with the structure and parameters stored in the storage unit, and executes inference processing for generating a restored image obtained by restoring the read image;
a decoding processing unit that performs decoding processing on the restored image generated by the image restoration unit;
Repeating the imaging and decoding processes by changing the imaging conditions of the camera and the decoding conditions of the decoding process, and based on the matching level indicating the readability of the code calculated under each imaging condition and decoding condition, a tuning execution unit that determines optimum imaging conditions and decoding conditions and executes tuning processing for setting the size of a code to be read;
The decoding processing unit
A code candidate area having a size capable of containing the code to be read set by the tuning process and having a high possibility that the code exists in the read image is extracted, and the extracted image is subjected to a predetermined An optical information reading device that reduces or enlarges the size of the image, inputs it to the neural network, and decodes the restored image that has been restored by the neural network.
請求項1から12のいずれか1つに記載の光学的情報読取装置において、
少なくともコードを照明する照明光を発生する複数の光源と、
前記光源で発生した光のうち、第1の偏光成分の光を通過させる第1偏光板と、
前記第1の偏光成分と略直交する第2の偏光成分の光を通過させる第2偏光板と、をさらに備え、
前記カメラは、前記第1偏光板を通過し、コードから反射した光を前記第2偏光板を介して受光し、前記ワークの正反射成分を除去することにより、前記第1偏光板及び前記第2偏光板を介さない場合に比べて低コントラストな読取画像を生成し、
前記プロセッサは、前記低コントラストな読取画像を前記ニューラルネットワークに入力することにより、入力前に比べて高コントラストな修復画像に変換し、当該修復画像に対してデコード処理を実行する光学情報読取装置。
The optical information reader according to any one of claims 1 to 12,
a plurality of light sources that generate illumination light that illuminates at least the code;
a first polarizing plate for passing light of a first polarization component out of the light generated by the light source;
a second polarizing plate that passes light of a second polarization component substantially orthogonal to the first polarization component,
The camera receives light that has passed through the first polarizing plate and is reflected from the code via the second polarizing plate, and removes specular reflection components of the work, thereby obtaining the first polarizing plate and the second polarizing plate. Generating a low-contrast read image compared to the case where two polarizing plates are not interposed,
The optical information reading device, wherein the processor inputs the low-contrast read image to the neural network to convert it into a restored image with a higher contrast than before the input, and executes decoding processing on the restored image.
請求項1から12のいずれか1つに記載の光学的情報読取装置において、
前記記憶部に記憶された構造及びパラメータで構成されたニューラルネットワークに前記カメラにより生成された読取画像を入力し、前記読取画像を修復した修復画像を生成する推論処理を実行する画像修復部と、
前記画像修復部が生成した修復画像に対するデコード処理を実行するデコード処理部と、
前記カメラの撮像条件を変化させて、撮像及びデコード処理を繰り返し、各撮像条件にて算出されたコードの読み取りのしやすさを示すマッチングレベルに基づいて、前記撮像条件及び読取対象のコードのコード条件を複数設定可能なチューニング実行部と、を更に備え、
前記記憶部は、前記チューニング実行部により設定された第1の撮像条件及びコード条件と第2の撮像条件及びコード条件とを含む複数の撮像条件及びコード条件を記憶し、
前記デコード処理部は、前記記憶部に記憶されている複数の読取条件の内、前記第1の撮像条件及びコード条件で生成された読取画像を前記ニューラルネットワークに入力して修復画像を生成し、当該修復画像のデコード処理に失敗した場合は前記第2の撮像条件及びコード条件で生成された読取画像を前記ニューラルネットワークに入力して修復画像を生成し、当該修復画像のデコードを実行する光学情報読取装置。
The optical information reader according to any one of claims 1 to 12,
an image restoration unit that inputs the read image generated by the camera to a neural network configured with the structure and parameters stored in the storage unit, and executes inference processing for generating a restored image obtained by restoring the read image;
a decoding processing unit that performs decoding processing on the restored image generated by the image restoration unit;
The imaging conditions of the camera are changed to repeat imaging and decoding processing, and the imaging conditions and the code of the code to be read are calculated based on the matching level indicating the readability of the code calculated under each imaging condition. a tuning execution unit capable of setting a plurality of conditions,
The storage unit stores a plurality of imaging conditions and code conditions including a first imaging condition and code condition and a second imaging condition and code condition set by the tuning execution unit,
The decoding processing unit inputs to the neural network a read image generated under the first imaging condition and the code condition among the plurality of reading conditions stored in the storage unit to generate a restored image, optical information for generating a restored image by inputting the read image generated under the second imaging condition and the code condition into the neural network when decoding of the restored image fails, and executing decoding of the restored image; reader.
JP2021164236A 2021-03-03 2021-10-05 Optical information reader Pending JP2022135893A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/542,538 US11694048B2 (en) 2021-03-03 2021-12-06 Optical information reading device
US18/198,322 US12039400B2 (en) 2021-03-03 2023-05-17 Optical information reading device
US18/731,499 US20240320455A1 (en) 2021-03-03 2024-06-03 Optical information reading device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021033619 2021-03-03
JP2021033619 2021-03-03

Publications (1)

Publication Number Publication Date
JP2022135893A true JP2022135893A (en) 2022-09-15

Family

ID=83231268

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021164236A Pending JP2022135893A (en) 2021-03-03 2021-10-05 Optical information reader

Country Status (1)

Country Link
JP (1) JP2022135893A (en)

Similar Documents

Publication Publication Date Title
CA2288758C (en) Optical scanner and image reader for reading images and decoding optical information including one and two dimensional symbologies at variable depth of field
US8950673B2 (en) Imaging system for reading target with multiple symbols
CN102369539B (en) Exposure control for multi-imaging scanner
JP4586026B2 (en) Hand-supportable imaging-based barcode symbol reader that supports narrow and wide modes of illumination and image capture
US20240320455A1 (en) Optical information reading device
US9147095B2 (en) Optical code scanner optimized for reading 2D optical codes
US10057498B1 (en) Light field vision system camera and methods for using the same
JP2024054253A (en) Optical Reader
JP2022135893A (en) Optical information reader
CN112804795B (en) Apparatus and method for flicker control
JP2022111039A (en) Optical information reader
JP2022111040A (en) Optical information reader
JP2022111038A (en) Optical information reader
JP2022134482A (en) Optical information reader
US9104935B1 (en) Mark reader configured to prioritize images
US11854163B2 (en) Optical information reading device
JP2023079346A (en) Optical information reading device
JP2023079345A (en) Optical information reading device
JP7430553B2 (en) optical reader
EP3862921A1 (en) Unsupervised anchor handling for machine vision system
US8025234B2 (en) Arrangement for and method of enhancing performance of an imaging reader
JP7289703B2 (en) handheld optical information reader
JP7306930B2 (en) Optical information reader
EP1916557B1 (en) Optical scanner and image reader for reading images and decoding optical information including one and two dimensional symbologies at variable depth of field
KR20230064213A (en) Apparatus and method for recognizing a barcode

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240912