(57)【要約】【課題】ハードウェア回路を大型化することなく、画像処理の実行時間の増加を抑制しつつ認識率を向上させる。【解決手段】制御部（４１０）は、前処理回路が第１の入力画像に対して第１の前処理を実行した第１の画像データを出力し、第１の画像データに対して認識処理が実行されている間に、前処理回路の処理内容を第１の前処理から第２の前処理に変更する。前処理回路は、第１の画像データに対する認識処理が実行されている期間において、第１の入力画像に対して第２の前処理の実行を開始する。画像処理制御部（４２０）は、第１の画像データに対する認識処理に失敗した場合に、前処理回路から出力された第２の画像データに対して認識処理を行う。画像処理制御部が第１の画像データに対する認識処理に成功した場合に、制御部は、前処理回路の処理内容を第２の前処理から第１の前処理に変更する。第２の入力画像に対して前処理回路が第１の前処理を実行する。【選択図】図１
2020181599.tif 000002
【特許請求の範囲】
【請求項１】
外部の撮像装置によって撮像された光学コードを含む入力画像に対して前処理を行い、画像データを出力する前処理回路と、
前記前処理回路から出力された画像データに基づいて光学コードの認識処理を行う認識処理部と、
前記前処理回路の再構成を実行する回路構成制御部と、を備え、
前記前処理回路は、プログラマブル論理回路に構成されており、
前記回路構成制御部は、前記前処理回路が第１の入力画像に対して第１の前処理を実行した第１の画像データを出力した後に、前記第１の画像データに対して認識処理が実行されている期間において、前記前処理回路の処理内容を前記第１の前処理から第２の前処理に変更する再構成を実行し、
前記前処理回路は、前記第１の画像データに対する認識処理が実行されている期間において、前記第１の入力画像に対して前記第２の前処理の実行を開始し、
前記認識処理部は、前記第１の画像データに対する前記認識処理に失敗した場合に、前記第１の入力画像に対して前記第２の前処理を実行して前記前処理回路から出力された第２の画像データに対して前記認識処理を行い、
前記認識処理部が前記第１の画像データに対する前記認識処理に成功した場合に、
前記回路構成制御部は、前記前処理回路の処理内容を前記第２の前処理から前記第１の前処理に変更する再構成を実行し、
前記撮像装置によって撮像された次の前記入力画像である第２の入力画像に対して、前記前処理回路が前記第１の前処理を実行することを特徴とする画像処理装置。
【請求項２】
前記認識処理部が前記認識処理に成功した場合に、成功した認識処理時に用いられた前記前処理回路の処理内容と対応付けて履歴が記録され、
前記回路構成制御部は、前記履歴に基づいて前記認識処理の成功率が最も高い処理内容を前記第１の前処理とするように、前記前処理回路の再構成を実行することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記回路構成制御部は、前記履歴に基づいて前記認識処理の成功率が高い処理内容を前記第２の前処理とするように、前記前処理回路の再構成を実行することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記認識処理部は、前記第２の画像データについて、前記第１の画像データに対する前記認識処理とは異なる内容の認識処理を行うことを特徴とする請求項１〜３のいずれか一項に記載の画像処理装置。
【請求項５】
前記前処理回路の処理内容と、前記認識処理の内容との組合せを複数種類記憶する組合せ記憶部をさらに備え、
前記認識処理部は、前記組合せ記憶部を参照して、前記回路構成制御部によって設定された前記前処理回路の処理内容に対応する前記認識処理の内容を実行することを特徴とする請求項１〜４のいずれか一項に記載の画像処理装置。
【請求項６】
撮像装置と、
前記撮像装置から入力画像を取得する請求項１〜５のいずれか一項に記載の画像処理装置とを備えることを特徴とする光学コード読取装置。
【請求項７】
外部の撮像装置によって撮像された光学コードを含む入力画像に対して前処理を行う前処理回路から出力された画像データに基づいて光学コードの認識処理を行う認識処理ステップと、
前記前処理回路の再構成を実行する回路構成制御ステップと、を有し、
前記前処理回路は、プログラマブル論理回路に構成されており、
前記回路構成制御ステップにおいて、前記前処理回路が第１の入力画像に対して第１の前処理を実行した第１の画像データを出力した後に、前記第１の画像データに対して認識処理が実行されている期間において、前記前処理回路の処理内容を前記第１の前処理から第２の前処理に変更する再構成を実行し、
前記認識処理ステップにおいて、前記前処理回路は、前記第１の画像データに対する認識処理が実行されている期間に、前記第１の入力画像に対して前記第２の前処理の実行を開始し、
前記認識処理ステップにおいて、前記第１の画像データに対する前記認識処理に失敗した場合に、前記第１の入力画像に対して前記第２の前処理を実行して前記前処理回路から出力された第２の画像データに対して前記認識処理を行い、
前記認識処理ステップにおいて、前記第１の画像データに対する前記認識処理に成功した場合、前記前処理回路の処理内容を前記第２の前処理から前記第１の前処理に変更する再構成を実行し、前記撮像装置によって撮像された次の前記入力画像である第２の入力画像に対して、前記前処理回路が前記第１の前処理を実行することを特徴とする画像処理方法。
【請求項８】
請求項１〜５のいずれか一項に記載の画像処理装置としてコンピュータを機能させるための情報処理プログラムであって、前記各部としてコンピュータを機能させるための情報処理プログラム。
【請求項９】
請求項８に記載の情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置等に関するものであり、詳細には、プログラマブル論理回路を備えた画像処理装置等に関するものである。
【背景技術】
【０００２】
従来、商品等の対象物のバーコードや２次元コード等の光学コードを読み取って、対象物の識別や管理等を行うコードリーダが知られている。コードリーダは、使用条件（照明条件や汚れ等）が安定していない環境下では読み取りを失敗することが多く、読み取りの精度（認識率）を向上させるための技術が提案されてきた。
【０００３】
例えば、特許文献１に開示された電子部品装着装置は、プリント基板に貼付けされた２次元コードの認識率を向上させるため、複数の照明条件で対象物を撮像し、撮像した結果の中で読み取りエラーとならない画像を取得した時の輝度データを用いて照明を制御することにより、鮮明な画像を得るようになっている。
【０００４】
また、特許文献２に開示された光学コード読取装置は、対象物や環境に応じた画像特徴量を抽出して、カメラ撮影のシャッタースピードを自動調整するようになっている。この光学コード読取装置は、画像特徴量の認識失敗時に、シャッタースピードの自動調整を実行することで、撮影対象物や撮影環境に対応して認識率を向上させている。
【０００５】
これらの技術は、画像取得時の条件を変更することによって、認識率の高い画像を取得するものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１８２２８０号公報（２００９年８月１３日公開）
【特許文献２】特開２００４−１９４１７２号公報（２００４年７月８日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、光学コード読み取りの認識率を向上させるためには、カメラが画像を取得する際の条件を変更して画像を再取得する以外に、以下のような方法を用いることもできる。
【０００８】
すなわち、光学コードの読み取りに失敗した場合に、読み取りのアルゴリズムを変更することによって、又は、読み取りのアルゴリズムの変更を繰り返すことによって認識率を向上させることができる。
【０００９】
また、読み取りのアルゴリズムにて光学コードの読み取りを実行する前には、カメラが取得した画像に対して前処理が行われる。よって、光学コードの読み取りに失敗した場合に、この前処理を変更することによっても認識率を向上させることができる。
【００１０】
しかしながら、光学コード読取装置等において、前処理は高速な処理が要求されるため、前処理回路は、物理的な回路を用いてハードウェアで実現することが一般的であった。このような構成の場合には、取得した画像に応じて前処理内容を変更して認識率を向上させるためには、複数種類の物理的な前処理回路をハードウェアに組み込んでおく必要があり、ハードウェア回路の大型化、コスト高を招来するという問題があった。
【００１１】
一方、マイクロプロセッサ等が実行するソフトウェアによって前処理を実行する場合には、前処理を容易に変更することはできるが、前処理の実行時間がハードウェアと比較して大幅にかかるため、画像処理時間が長くなり、実用的でないという問題があった。
【００１２】
本発明は、前記の問題点に鑑みてなされたものであり、その目的は、ハードウェア回路を大型化することなく、画像処理の実行時間の増加を抑制しつつ認識率を向上させることのできる画像処理を実現することにある。
【課題を解決するための手段】
【００１３】
上記の課題を解決するために、本発明の一態様における画像処理装置は、外部の撮像装置によって撮像された光学コードを含む入力画像に対して前処理を行い、画像データを出力する前処理回路と、前記前処理回路から出力された画像データに基づいて光学コードの認識処理を行う認識処理部と、前記前処理回路の再構成を実行する回路構成制御部と、を備え、前記前処理回路は、プログラマブル論理回路に構成されており、前記回路構成制御部は、前記前処理回路が第１の入力画像に対して第１の前処理を実行した第１の画像データを出力した後に、前記第１の画像データに対して認識処理が実行されている期間において、前記前処理回路の処理内容を前記第１の前処理から第２の前処理に変更する再構成を実行し、前記前処理回路は、前記第１の画像データに対する認識処理が実行されている期間において、前記第１の入力画像に対して前記第２の前処理の実行を開始し、前記認識処理部は、前記第１の画像データに対する前記認識処理に失敗した場合に、前記第１の入力画像に対して前記第２の前処理を実行して前記前処理回路から出力された第２の画像データに対して前記認識処理を行い、前記認識処理部が前記第１の画像データに対する前記認識処理に成功した場合に、前記回路構成制御部は、前記前処理回路の処理内容を前記第２の前処理から前記第１の前処理に変更する再構成を実行し、前記撮像装置によって撮像された次の前記入力画像である第２の入力画像に対して、前記前処理回路が前記第１の前処理を実行する。
【００１４】
前記の構成によれば、回路構成制御部が、前処理回路が認識処理部に画像データを出力した後に、前記前処理回路の処理内容を変更する再構成を実行する。そのため、複数種類の物理的な前処理回路をハードウェアに組み込んでおく必要なく、前処理の内容を変更することができる。その結果、ハードウェア回路が大型化することがない。
【００１５】
また、認識処理部が認識処理に失敗した場合に、前記再構成が行われた前処理回路から出力された画像データに基づいて、認識処理部は認識処理を行う。そのため、前処理回路の処理内容を変更して、認識処理部は認識処理を行うことができる。その結果、認識率を向上させることができる。ここで、この再構成された前処理回路は、マイクロプロセッサ等が実行するソフトウェアによって前処理を実行する場合と比較して高速な処理を行うことができる。そのため、画像処理の実行時間の増加を抑制することができる。
【００１６】
したがって、ハードウェア回路を大型化することなく、画像処理の実行時間の増加を抑制しつつ認識率を向上させることのできる画像処理を実現することができる。
【００１７】
好ましくは、前記認識処理部が前記認識処理に成功した場合に、成功した認識処理時に用いられた前記前処理回路の処理内容と対応付けて履歴が記録され、
前記回路構成制御部は、前記履歴に基づいて前記認識処理の成功率が最も高い処理内容を前記第１の前処理とするように、前記前処理回路の再構成を実行する。
【００１８】
前記の構成によれば、成功した認識処理時に用いられた前記前処理回路の処理内容の履歴が蓄積されていく。そのため、前記履歴に基づいて成功率が最も高い前記処理内容となるように前記前処理回路の再構成を実行することにより、認識率を向上させることができる。
【００１９】
好ましくは、前記回路構成制御部は、前記履歴に基づいて前記認識処理の成功率が高い処理内容を前記第２の前処理とするように、前記前処理回路の再構成を実行する。
【００２０】
前記の構成によれば、回路構成制御部が、履歴に基づいて成功率が高い処理内容から順に前記前処理回路の再構成を実行する。そのため、入力画像の認識が成功する可能性が高いと推定される処理内容にて前処理を順に行うことができる。その結果、認識率を向上させることができる。
【００２１】
好ましくは、前記認識処理部は、前記第２の画像データについて、前記第１の画像データに対する前記認識処理とは異なる内容の認識処理を行う。
【００２２】
前記の構成によれば、認識処理部は、種々の内容の認識処理を実行する。そのため、認識率を向上させることができる。
【００２３】
好ましくは、前記前処理回路の処理内容と、前記認識処理の内容との組合せを複数種類記憶する組合せ記憶部をさらに備え、前記認識処理部は、前記組合せ記憶部を参照して、前記回路構成制御部によって設定された前記前処理回路の処理内容に対応する前記認識処理の内容を実行する。
【００２４】
前記の構成によれば、認識処理部は、前処理回路の処理内容と認識処理の内容との組み合わせに基づいて、前処理回路の処理内容に対応した内容にて認識処理を行う。そのため、認識率を向上させることができる。
【００２５】
また、上記の課題を解決するために、本発明の一態様における光学コード読取装置は、撮像装置と、前記撮像装置から入力画像を取得する前記画像処理装置とを備える。
【００２６】
前記の構成によれば、ハードウェア回路を大型化することなく、画像処理の実行時間の増加を抑制しつつ認識率を向上させることのできる光学コード読取装置を提供することができる。
【００２７】
また、上記の課題を解決するために、本発明の一態様における画像処理方法は、外部の撮像装置によって撮像された光学コードを含む入力画像に対して前処理を行う前処理回路から出力された画像データに基づいて光学コードの認識処理を行う認識処理ステップと、前記前処理回路の再構成を実行する回路構成制御ステップと、を有し、前記前処理回路は、プログラマブル論理回路に構成されており、前記回路構成制御ステップにおいて、前記前処理回路が第１の入力画像に対して第１の前処理を実行した第１の画像データを出力した後に、前記第１の画像データに対して認識処理が実行されている期間において、前記前処理回路の処理内容を前記第１の前処理から第２の前処理に変更する再構成を実行し、前記認識処理ステップにおいて、前記前処理回路は、前記第１の画像データに対する認識処理が実行されている期間に、前記第１の入力画像に対して前記第２の前処理の実行を開始し、前記認識処理ステップにおいて、前記第１の画像データに対する前記認識処理に失敗した場合に、前記第１の入力画像に対して前記第２の前処理を実行して前記前処理回路から出力された第２の画像データに対して前記認識処理を行い、前記認識処理ステップにおいて、前記第１の画像データに対する前記認識処理に成功した場合、前記前処理回路の処理内容を前記第２の前処理から前記第１の前処理に変更する再構成を実行し、前記撮像装置によって撮像された次の前記入力画像である第２の入力画像に対して、前記前処理回路が前記第１の前処理を実行する。
【００２８】
前記の構成によれば、回路構成制御ステップは、前処理回路が認識処理部に画像データを出力した後に、前記前処理回路の処理内容を変更する再構成を実行する。
【００２９】
また、認識処理ステップにおいて、認識処理に失敗した場合に、前記再構成が行われた前処理回路から出力された画像データに基づいて、再度認識処理を行う。そのため、前処理回路の処理内容を変更して、認識処理ステップにて認識処理を行うことができる。その結果、認識率を向上させることができる。
【００３０】
したがって、ハードウェア回路を大型化することなく、画像処理の実行時間の増加を抑制しつつ認識率を向上させることのできる画像処理方法を提供することができる。
【発明の効果】
【００３１】
本発明は、ハードウェア回路を大型化することなく、画像処理の実行時間の増加を抑制しつつ認識率を向上させることのできる画像処理を実現することができるという効果を奏する。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施形態における画像処理装置の概略的な構成を示すブロック図である。
【図２】前記画像処理装置を含む光学コード読取装置の概要を示す図である。
【図３】（ａ）は、従来の画像処理装置における画像処理を模式的に示す図であり、（ｂ）は、本発明の実施形態における画像処理装置における画像処理を模式的に示す図である。
【図４】前記画像処理装置の画像処理における各部の動作を模式的に示すシーケンス図である。
【図５】前記画像処理装置が実行する画像処理において、認識処理のための、再構成部に実行する回路再構成処理の流れを示すフローチャートである。
【図６】前記画像処理装置における前処理制御処理の流れを示すフローチャートである。
【図７】前記画像処理装置が実行する、再構成部の回路再構成処理の流れを示すフローチャートである。
【図８】前記画像処理装置における認識処理制御処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００３３】
以下、本発明の実施形態について、図１から図８に基づいて説明する。図中同一または相当部分には同一符号を付してその説明は繰返さない。本発明の一態様における画像処理装置１００についての理解を容易にするために、先ず、画像処理装置１００を含む光学コード読取装置１の概要を、図２を用いて説明する。
【００３４】
（光学コード読取装置の概要）
図２は、本実施の形態の画像処理装置１００を含む光学コード読取装置１の概要を示す図である。図２に示すように、光学コード読取装置１は、撮像装置としてのカメラ２と、画像処理装置１００とを含んでいる。
【００３５】
光学コード読取装置１は、カメラ２が撮像した光学コードを含む画像を、画像処理装置１００が画像処理することによって、光学コードを読み取る、換言すれば光学コードを認識するものである。この光学コードとしては、例えば、バーコードまたは２次元コード等が挙げられるが、とくに限定されるものではない。
【００３６】
カメラ２は、画像情報をアナログ・ディジタル変換するデジタルカメラであり、光電変換用の撮像素子としてＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサを備えている。撮像素子はＣＣＤ（Charge Coupled Device）センサであってもよく、その他のセンサであってもよい。
【００３７】
画像処理装置１００は、システムバス１０１に接続された、ＣＰＵ１１０、ＲＯＭ１２０、ＲＡＭ１３０、ＤＤＲ１４０、ユーザ設定用インターフェース（以下、ユーザ設定用Ｉ／Ｆと記す。）１５０、ネットワークＩ／Ｆ１６０、およびＦＰＧＡ２００を含む。
【００３８】
ＣＰＵ１１０は、画像処理装置１００全体の動作を制御する中央演算装置であり、主要な画像処理を行う。ＲＯＭ１２０は不揮発性メモリであり、ＣＰＵ１１０を起動させるためのブートプログラムが格納されている。また、このＲＯＭ１２０には、後述するＦＰＧＡ２００をコンフィギュレーションするための各種データが格納されている。
【００３９】
ＲＡＭ１３０は揮発性のメモリであり、ＣＰＵ１１０の作業領域として機能する。また、ＤＤＲ１４０も揮発性のメモリであり、ＦＰＧＡ２００の回路再構成時に作業領域として機能する。ＤＤＲ１４０は、ＲＯＭ１２０よりも高速にデータを読み出すことができるので、ＦＰＧＡ２００の回路再構成時にＲＯＭ１２０に格納されたデータの一部をＤＤＲ１４０へ転送して格納しておくことにより、回路再構成処理をより高速に行うことが可能となる。
【００４０】
ユーザ設定用Ｉ／Ｆ１５０は、ユーザが画像処理装置１００に対する動作指示の入力、および、ユーザに対する情報の提示出力のインターフェースとして機能するものである。ユーザ設定用Ｉ／Ｆ１５０は、例えばディスプレイ、タッチパネルなどの画像表示装置、および、キーボード、マウス、ボタンなどの入力装置などに対する入出力を制御する。
【００４１】
ネットワークＩ／Ｆ１６０は、画像処理装置１００が画像処理した後の各種データを、ＬＡＮやインターネット等のネットワーク回線を介して、図示しない外部のサーバ装置や記憶装置へ送信するためのインターフェースである。このネットワーク回線としては、例えばEtherCAT（登録商標）が適用されてもよい。また、ネットワークＩ／Ｆ１６０は、ネットワーク回線を介して、画像処理装置１００の外部から各種データを受信するためのインターフェースでもある。
【００４２】
ＦＰＧＡ２００は、プログラマブル論理回路の一種であり、カメラ２が撮像した光学コードを含む画像を前処理する前処理回路として機能する。このＦＰＧＡ２００について、詳しくは後述する。本実施の形態の画像処理装置１００はＦＰＧＡ２００を含んでいるが、ＦＰＧＡ以外のその他のプログラマブル論理回路が前処理回路となっていてもよい。
【００４３】
ここで、画像の前処理とは、カメラ２が撮像した光学コードを含む画像について、光学コードの認識処理を実行する前に行われる様々な処理のことを意味している。前処理は、光学コードを含む画像について、例えば、膨張若しくは収縮する補正、平滑化する補正、台形補正、収差補正、位置補正、または明度補正、等を実行する処理を含む。或いは、前処理は、光学コードを含む画像について、例えば、背景カット、色補正、圧縮、二値化、等を実行する処理を含む。また、前処理は、これらの処理、およびこれら以外の様々な処理を組み合わせて行われ得る。
【００４４】
前記の各部はシステムバス１０１によって相互に接続されており、高速でデータのやりとりができるようになっている。
【００４５】
以上に概要を説明した本実施の形態の画像処理装置１００について、次に、図１、図３、および図４を用いて、その詳細を説明していく。
【００４６】
（本発明の一態様における画像処理装置）
図１は、本実施の形態の画像処理装置１００の概略的な構成を示すブロック図である。
【００４７】
図１に示すように、画像処理装置１００は、記憶部３００と、制御部４００と、ＦＰＧＡ２００とを備えている。
【００４８】
記憶部３００は、ＣＰＵ１１０を起動させるためのＣＰＵブートデータ３１０と、ＦＰＧＡ２００の初期コンフィグレーションに用いる初期コンフィグレーションデータ３２０と、ＦＰＧＡ２００の回路再構成に用いるＦＰＧＡ再構成データ３３０とを格納している。また、記憶部３００は、後述する認識処理の結果に関する認識処理結果データ３４０と、前処理と認識処理との組み合わせに関する処理組合せデータ３５０と、をさらに含んでいてもよい。これら認識処理結果データ３４０および処理組合せデータ３５０について、詳しくは後述する。記憶部３００は、ＲＯＭ１２０（図２参照）に対応する。
【００４９】
ＦＰＧＡ再構成データ３３０は、ＦＰＧＡ２００の回路再構成に用いるためのデータであって、複数種類の回路再構成データ（回路再構成１データ３３１、回路再構成２データ３３２、回路再構成３データ３３３、・・・）を含んでいる。
【００５０】
制御部４００は、ユーザ設定用Ｉ／Ｆ１５０（図２参照）と、コンフィグレーション制御部４１０と、画像処理制御部４２０とを備えている。コンフィグレーション制御部４１０および画像処理制御部４２０は、例えば、ＣＰＵ１１０（図２参照）によって動作するソフトウェアとして実現される。
【００５１】
コンフィグレーション制御部４１０は、先ず、画像処理装置１００が電源ＯＮされた起動時に、前記初期コンフィグレーションデータ３２０を用いて、ＦＰＧＡ２００に初期コンフィグレーションを実行する。これは、画像処理装置１００の電源を切ることにより、ＦＰＧＡ２００のデータが消えてしまうためである。この初期コンフィグレーションによって、ＦＰＧＡ２００に前処理回路が構成される。なお、初期コンフィグレーションは、他の方法で行われてもよく、初期コンフィグレーション方法は特に限定されない。
【００５２】
前記前処理回路は、画像処理装置１００が行う画像処理における前処理を実行する。本明細書において、以下では、初期コンフィグレーションが実行された状態（前処理回路が構成された状態）のＦＰＧＡ２００について説明する。
【００５３】
また、コンフィグレーション制御部４１０は、画像処理制御部４２０からの指令に基づいて、記憶部３００に格納されているＦＰＧＡ再構成データ３３０から選択した回路再構成データを用いて、前記前処理回路の回路再構成を実行する。
【００５４】
画像処理制御部４２０は、ＦＰＧＡ２００にて前処理された、光学コードを含む画像データに対して、読み取りのアルゴリズムを用いて、光学コードを読み取る。この光学コードを読み取る処理は認識処理ともいう。つまり、画像処理制御部４２０は、光学コードの認識処理を行う認識処理部である。前記読み取りのアルゴリズムは、特定のものに限定されるものではなく、画像処理制御部４２０は、種々の読み取りのアルゴリズムを用いて、前記認識処理を実行することができる。
【００５５】
読み取りのアルゴリズムのバリエーション例としては、画像データをモノクロ化または二値化を行う、画像認識における部分画像の抽出処理をループさせる回数を変更する、部分画像のサイズを変更する、粗サーチおよび詳細サーチの各種パラメータを変更する、パターンマッチングの手法および順番を変更する、等が挙げられる。
【００５６】
また、読み取りのアルゴリズムは、例えば、画像データの明るさ（平均値など）に応じて変更されるようになっていてもよい。
【００５７】
また、画像処理制御部４２０は、ＦＰＧＡ２００に対して、前処理を行うように指令を出す。また、画像処理制御部４２０は、コンフィグレーション制御部４１０に対して、前処理の内容を変更するために、ＦＰＧＡ２００の回路再構成を実行するように指令を出す、または、ＦＰＧＡ２００に対して、回路再構成後の前処理回路にて、同一の画像について前処理を再度行うように指示を出す等、画像処理装置１００における画像処理の主要な制御を行う。
【００５８】
ここで、制御部４００は、図示しないメモリ転送制御部としてのダイレクトメモリアクセスコントローラ（ＤＭＡＣ）を備えていることが好ましい。この場合には、ＦＰＧＡ２００の回路再構成処理時に、記憶部３００からＤＤＲ１４０へ、ＦＰＧＡ再構成データ３３０をＤＭＡＣが転送する。また、ＤＭＡＣが、記憶部３００からＤＤＲ１４０へ、前記認識処理結果データ３４０および処理組合せデータ３５０を転送する。ＣＰＵ１１０からの指令に基づいてＤＭＡＣがデータの転送を行うことにより、ＣＰＵ１１０の負担が低減する。
【００５９】
この場合、コンフィグレーション制御部４１０は、ＦＰＧＡ再構成データ３３０、認識処理結果データ３４０、および処理組合せデータ３５０をＤＤＲ１４０から読み出すことにより、データ転送速度を大幅に（例えば、４倍程度）早くすることができる。
【００６０】
次に、初期コンフィグレーションが実行されて前処理回路が構成された、プログラマブル論理回路としてのＦＰＧＡ２００について、以下に詳細に説明する。
【００６１】
（プログラマブル論理回路）
前処理回路が構成された、プログラマブル論理回路としてのＦＰＧＡ２００は、画像取得部２１０と、データ制御部２２０と、前処理実行部２３０と、コンフィグレーションＩ／Ｆ２４０と、割り込み制御部２５０とを含む。
【００６２】
画像取得部２１０は、カメラ２が撮像した光学コードを含む画像を取得し、データ制御部２２０に転送する。データ制御部２２０は、画像取得部２１０から転送されたデータを、後述する前処理実行部２３０へ制御しながら転送する。また、データ制御部２２０は、画像処理制御部４２０から転送されたデータを、後述する前処理実行部２３０へ制御しながら転送してもよい。
【００６３】
前処理実行部２３０は、例えば３個の再構成部２３１・２３２・２３３を有している。前記再構成部には、例えば、演算変換回路としての画像フィルタが構成されており、画像フィルタによって、画像の前処理が行われる。前処理実行部２３０が有する再構成部の数は、特に限定されるものではない。
【００６４】
前処理実行部２３０は、データ制御部２２０から転送された画像データに対して、前処理を実行して、前処理後のデータを画像処理制御部４２０に出力する。ここで、前処理実行部２３０における前処理の内容は固定されたものではなく、コンフィグレーション制御部４１０が、前記記憶部３００に格納された複数種類の回路再構成データを用いて、ＦＰＧＡ２００の回路再構成を実行することにより、前処理実行部２３０は所望の前処理が実行されるように回路再構成される。なお、この回路再構成は、部分再構成であってもよい。
【００６５】
コンフィグレーションＩ／Ｆ２４０は、コンフィグレーション制御部４１０からの指示を受けて、前処理実行部２３０を回路再構成する。割り込み制御部２５０は、コンフィグレーションＩ／Ｆ２４０から、回路再構成に成功したか否かの情報を受け取り、それに基づいて、制御部４００としてのＣＰＵ１１０に対して割り込みを発生させる。
【００６６】
このような構成の本実施の形態の画像処理装置１００における画像処理の流れについて、図３および図４に基づいて、以下に説明する。
【００６７】
（本発明の一態様における画像処理装置が実行する画像処理）
先ず、プログラマブル論理回路を備える従来の画像処理装置９００における画像処理の流れについて説明し、次に、本実施の形態の画像処理装置１００における画像処理の流れを説明する。
【００６８】
図３の（ａ）は、比較例としての画像処理装置９００における画像処理を模式的に示す図である。図３の（ｂ）は、本実施の形態の画像処理装置１００における画像処理を模式的に示す図である。図３の（ａ）および（ｂ）において、時間の流れは左から右である。
【００６９】
図３の（ａ）に示すように、比較例としての画像処理装置９００は、先ず、光学コードを含む画像を、前処理回路が構成されたＦＰＧＡに外部から取り込む。次に、該前処理回路にて、前処理Ａを行う。前処理Ａが行われたデータを用いて、画像処理装置９００のＣＰＵは、認識処理を行う。認識処理が失敗した場合には、画像処理装置９００のＣＰＵは、認識処理のリトライを繰り返して、具体的にはリトライ１認識処理、リトライ２認識処理を行う。
【００７０】
ここで、本明細書において、リトライとは、以下のことを意味する。すなわち、或る瞬間に、前処理回路が外部から取り込んだ光学コードを含む画像を画像Ｉ１とする。この画像Ｉ１に対して前処理を行ったデータについて１回目の認識処理を行い、認識に失敗した場合に、画像Ｉ１に基づくデータについて行う２回目の認識処理を、リトライ１認識処理と表現する。また、リトライ１認識処理を用いて認識に失敗した場合に、画像Ｉ１に基づくデータについてさらに行う３回目の認識処理を、リトライ２認識処理と表現する。そして、前処理回路が外部から「次に」取り込んだ光学コードを含む画像を画像Ｉ２とすれば、画像Ｉ２に対する初めての認識処理については、１回目の認識処理と表現する。
【００７１】
前記比較例としての画像処理装置９００とは異なり、本実施の形態の画像処理装置１００は、以下のように画像処理を行う。
【００７２】
図３の（ｂ）に示すように、本実施の形態の画像処理装置１００は、先ず、カメラ２が撮像した光学コードを含む画像Ｉ１を、ＦＰＧＡ２００に取り込む。ＦＰＧＡ２００は、この画像Ｉ１について、前処理Ａを実行する。
【００７３】
前処理Ａが実行された画像Ｉ１のデータについて、画像処理制御部４２０をソフトウェアとして動作するＣＰＵ１１０は、１回目の認識処理を行う。
【００７４】
このとき、ＣＰＵ１１０が認識処理に用いる読み取りのアルゴリズムは、前記前処理Ａに対応する読み取りのアルゴリズムＡであることが好ましい。この前処理の内容と、認識処理の内容（読み取りのアルゴリズムの内容）との互いの組み合わせは、処理組合せデータ３５０（図１参照）として記憶部３００に格納されている。この前処理の内容と認識処理の内容との組合せのバリエーションは、認識結果が良好となる組合せのパターンとして複数記憶されていることが好ましい。なお、処理組合せデータ３５０は、記憶部３００ではなく、別の記憶部に格納されていてもよい。
【００７５】
ＣＰＵ１１０は、この処理組合せデータ３５０に基づいて、前処理の内容に対応する読み取りのアルゴリズムを用いて、１回目の認識処理を実行する。この場合、前処理の内容に応じて、ＣＰＵ１１０が実行する読み取りのアルゴリズムが変更されるため、光学コードの認識率が向上する。
【００７６】
ＦＰＧＡ２００は、前処理Ａが実行された画像Ｉ１のデータをＣＰＵ１１０に転送した後、回路再構成が実行される。そして、回路再構成後の前処理回路によって、画像Ｉ１について前処理Ｂを実行する。
【００７７】
ＣＰＵ１１０による認識処理が失敗した場合、ＣＰＵ１１０は、前処理Ｂが実行された画像Ｉ１のデータについて、リトライ１認識処理を行う。ここで、ＣＰＵ１１０がリトライ１認識処理に用いる読み取りのアルゴリズムは、前記認識処理と同じであってもよいし、変更されていてもよい。
【００７８】
また、前記したことと同様の理由により、ＣＰＵ１１０がリトライ１認識処理に用いる読み取りのアルゴリズムは、前処理Ｂの内容に対応したものであることが好ましい。
【００７９】
ここで、前記ＦＰＧＡ２００の回路再構成は、ＣＰＵ１１０による認識処理と並行して行われることが好ましい。そして、前処理Ｂが、ＣＰＵ１１０による認識処理と並行して行われることがさらに好ましい。これらのことによれば、ＣＰＵ１１０による認識処理が失敗した場合、ＣＰＵ１１０がリトライ１認識処理を開始するまでの時間を短くすることができる。
【００８０】
そして、ＦＰＧＡ２００は、前処理Ｂが実行された画像Ｉ１のデータをＣＰＵ１１０に転送した後、回路再構成が実行される。その後、回路再構成後の前処理回路によって、画像Ｉ１について前処理Ｃを実行する。
【００８１】
ＣＰＵ１１０によるリトライ１認識処理が失敗した場合、ＣＰＵ１１０は、前処理Ｃが実行された画像Ｉ１のデータについて、リトライ２認識処理を行う。前記したことと同様の理由により、ＣＰＵ１１０がリトライ２認識処理に用いる読み取りのアルゴリズムは、前処理Ｃの内容に対応したものであることが好ましい。
【００８２】
その後、リトライ２認識処理によって認識処理が成功したという認識判定を得た場合には、本実施の形態の画像処理装置１００が実行する画像処理は、さらに以下のように進行する。
【００８３】
すなわち、上述の画像Ｉ１に対する一連の画像処理をＮ回目の画像処理とすれば、Ｎ＋１回目の画像処理において、カメラ２から取り込んだ次の画像Ｉ２について、ＦＰＧＡ２００は、前処理Ｃを実行する。つまり、Ｎ回目の画像処理において、認識処理に成功したときに実行した前処理の内容にて、ＦＰＧＡ２００は前処理を実行するようになっている。つまり、ここでは、ＦＰＧＡ２００は、前処理Ｃの内容を実行するように回路再構成され、画像Ｉ２について、前処理Ｃを実行する。これによれば、次の画像Ｉ２について、１回目の認識処理の成功率を向上させることができる。なお、Ｎ回目の画像処理とＮ＋１回目の画像処理の間において、装置の電源がＯＦＦされていてもよい。
【００８４】
上記の説明において、前処理Ａ、前処理Ｂ、前処理Ｃとは、前処理として実行される処理の内容が変更されていることを意味している。
【００８５】
また、ＣＰＵ１１０による認識処理が成功した場合、当該認識処理に用いた前処理の内容および読み取りのアルゴリズムについての情報を、記憶部３００の認識処理結果データ３４０に記憶させるようになっていることが好ましい。
【００８６】
認識処理結果データ３４０は、ＣＰＵ１１０が認識処理に成功した場合に、そのときのＦＰＧＡ２００の前処理の内容を履歴として記録するものである。なお、認識処理結果データ３４０は、ＣＰＵ１１０が認識処理に成功した場合の前処理の内容と、認識処理に用いた読み取りのアルゴリズムとを対応づけて履歴として記録してもよい。
【００８７】
これによれば、画像処理装置１００が画像処理を行っている状況、すなわち画像処理装置１００の周辺環境に応じて、画像処理装置１００が多数の画像について画像処理を行っている間、成功した認識処理時に用いられた前記前処理回路の処理内容の履歴が蓄積されていく。つまり、画像処理装置１００が用いられている環境に適合する、前処理の内容、または、前処理の内容と認識処理に用いた読み取りのアルゴリズムとの組み合わせを、認識処理の成功率を指針として評価することができる。
【００８８】
コンフィグレーション制御部４１０は、この認識処理結果データ３４０に基づいて最も成功率が高い前処理内容となるように、ＦＰＧＡ２００を回路再構成して、ＦＰＧＡ２００は、前記前処理Ａを行うようになっていることが好ましい。これによれば、認識処理の成功率を向上させることができる。
【００８９】
また、ＣＰＵ１１０による認識処理において失敗が繰り返された場合、コンフィグレーション制御部４１０は、この認識処理結果データ３４０に基づいて、成功率が高い前処理内容から順に、ＦＰＧＡ２００を回路再構成して、ＦＰＧＡ２００は、前処理を行うようになっていることが好ましい。これによれば、入力画像の認識が成功する可能性が高いと推定される処理内容にて前処理を順に行うことができる。
【００９０】
以上に説明した本実施の形態の画像処理装置１００による画像処理の流れについて、図４を用いてさらに説明する。
【００９１】
図４は、本実施の形態の画像処理装置１００における各部の動作を模式的に示すシーケンス図である。図４において、ＣＰＵ１１１は、ＣＰＵ１１０において動作する複数のスレッドのうち１つに対応し、ＣＰＵ１１２も、ＣＰＵ１１０において動作する複数のスレッドのうち１つに対応する。なお、ＣＰＵ１１０が、このようにスレッドを分けておらず、１つのスレッドにて処理を行うようになっていてもよい。また、図４において、上から下に時間が流れる。
【００９２】
図４に示すように、先ず、ＣＰＵ１１２は、ＦＰＧＡ２００に対して、カメラ２から取り込んだ光学コードを含む画像Ｉ１について前処理を実行するように要求する（Ｓ１０）。このとき、ＦＰＧＡには、例えば、前処理Ａを実行する前処理回路Ａが構成されている。
【００９３】
ＦＰＧＡ２００は、前処理回路Ａによって、前処理Ａを実行する。前処理Ａが完了すると、ＦＰＧＡ２００は、前処理完了通知をＣＰＵ１１２に送信すると共に、前処理Ａを実行したデータをＣＰＵ１１１に転送する（Ｓ２０）。
【００９４】
このとき、ＣＰＵ１１１は、Ｓ２０にてＦＰＧＡ２００から受け取ったデータについて、認識処理を開始する。
【００９５】
次に、ＣＰＵ１１２は、ＤＤＲ１４０から回路再構成データを読み込む（Ｓ３０）。そして、この回路再構成データを読み込みながら、すでに読み込んだデータについては、ＦＰＧＡ２００に転送して、ＦＰＧＡ２００の回路再構成を開始する（Ｓ３２）。
【００９６】
ＤＤＲ１４０からの回路再構成データの読み込みが終了して（Ｓ３４）、読み込んだ回路再構成データを用いたＦＰＧＡ２００の回路再構成が終了すると、ＦＰＧＡ２００は、回路再構成終了通知をＣＰＵ１１２に送信する（Ｓ３６）。このとき、ＦＰＧＡ２００には、例えば、前処理Ｂを実行する前処理回路Ｂが構成されている。
【００９７】
次に、ＣＰＵ１１２は、ＦＰＧＡ２００に対して、画像Ｉ１について前処理を実行するように要求する（Ｓ３８）。
【００９８】
ＦＰＧＡ２００は、前処理回路Ｂによって、前処理Ｂを実行する。前処理Ｂが完了すると、ＦＰＧＡ２００は、前処理完了通知をＣＰＵ１１２に送信すると共に、前処理Ｂを実行したデータをＣＰＵ１１１に転送する（Ｓ４０）。
【００９９】
ここで、前記Ｓ２０〜Ｓ４０と並行して、ＣＰＵ１１１は、Ｓ２０にてＦＰＧＡ２００から受け取ったデータについて、１回目の認識処理を実行している。この１回目の認識処理に失敗した場合には、ＣＰＵ１１１は、Ｓ４０にてＦＰＧＡ２００から受け取ったデータについて、リトライ１認識処理を開始する。
【０１００】
その後、Ｓ３０、Ｓ３２、Ｓ３４、Ｓ３６、Ｓ３８、Ｓ４０と同様の動作が、Ｓ５０、Ｓ５２、Ｓ５４、Ｓ５６、Ｓ５８、Ｓ６０においてそれぞれ行われる。
【０１０１】
以上に構成の詳細等を説明してきた画像処理装置１００について、次に、画像処理装置１００が実行する処理の流れを、図５〜図８を用いて説明していく。なお、以下に説明することは、画像処理装置１００が実行する処理の流れの一例である。
【０１０２】
（本発明の一態様における画像処理装置が実行する処理）
図５は、本実施の形態の画像処理装置１００が実行する画像処理において、認識処理のための、再構成部に実行する回路再構成処理の流れを示すフローチャートである。
【０１０３】
図５に示すように、画像処理装置１００は、認識処理のための、ＦＰＧＡ２００の再構成部に対する回路再構成処理を開始する。ここでは、ＣＰＵ１１２（図４参照）が行う処理について、説明する。
【０１０４】
先ず、画像処理制御部４２０が、ＦＰＧＡ２００に前処理の実行を要求して、前処理制御処理が行われる（Ｓ１１０）。この前処理制御処理について、詳しくは図６を用いて後述する。
【０１０５】
画像処理制御部４２０は、前処理が行われた画像データを受け取り、該画像データに対する認識処理の実行を開始する（Ｓ１２０）。
【０１０６】
画像処理制御部４２０における認識処理の実行と並行して、または、認識処理の終了後、ＦＰＧＡ２００の再構成部の回路再構成処理が行われる（Ｓ１３０）。この再構成部の回路再構成処理について、詳しくは図７を用いて後述する。
【０１０７】
再構成部の回路再構成処理が終了した後、画像処理制御部４２０は、ＦＰＧＡ２００に前処理の実行を要求して、再び前処理制御処理が行われる（Ｓ１４０）。このＳ１３０およびＳ１４０と並行して、画像処理制御部４２０は認識処理を実行していることが好ましい。
【０１０８】
画像処理制御部４２０における認識処理が終了して、光学コードの認識に失敗した場合（Ｓ１５０でＮＯ）であって、光学コードの認識に失敗して認識処理をリトライした回数が規定回数未満である場合（Ｓ１６０でＮＯ）、画像処理制御部４２０は、Ｓ１４０にて前処理を行った画像データに対して、認識処理を実行して、Ｓ１２０からＳ１６０までの処理を繰り返す。なお、前記規定回数は、予め設定された回数であればよく、特に制限されない。
【０１０９】
画像処理制御部４２０における認識処理が終了し、光学コードの認識に成功した場合（Ｓ１５０でＹＥＳ）、または光学コードの認識に失敗して認識処理をリトライした回数が規定回数となった場合（Ｓ１６０でＹＥＳ）、制御部４００は、前処理成功率算出処理を行う（Ｓ１７０）。
【０１１０】
その後、認識処理のリトライの選択モードが、認識処理の成功率が高い前処理の設定を選択するモードになっている場合（Ｓ１８０でＹＥＳ）、コンフィグレーション制御部４１０は、記憶部３００の認識処理結果データから、認識処理の成功率が最も高い前処理の設定を読み出して、ＦＰＧＡ２００の再構成部の回路再構成処理を実行する（Ｓ１９０）。
【０１１１】
認識処理のリトライの選択モードが、認識処理の成功率が高い前処理の設定を選択するモードになっていない場合（Ｓ１８０でＮＯ）、または、Ｓ１９０の処理が終了した場合、画像処理装置１００は、認識処理のための、ＦＰＧＡ２００の再構成部に対する回路再構成処理を終了する。
【０１１２】
以下に、図６を用いて、上述した前処理制御処理の流れを説明する。
【０１１３】
図６は、本実施の形態の画像処理装置１００における前処理制御処理の流れを示すフローチャートである。
【０１１４】
図６に示すように、画像処理装置１００は、前処理制御処理を開始する。
【０１１５】
先ず、画像処理制御部４２０が、ＦＰＧＡ２００に前処理の実行を要求して、データ制御部２２０は再構成部２３１に画像データを転送し、前処理が実行される（Ｓ２１０）。
【０１１６】
前処理が全て終了していない場合（Ｓ２２０でＮＯ）は、前処理が継続して実行され、前処理が全て終了した場合（Ｓ２２０でＹＥＳ）、画像処理装置１００は、前処理制御処理を終了する。
【０１１７】
以下に、図７を用いて、上述した再構成部の回路再構成処理の流れを説明する。
【０１１８】
図７は、本実施の形態の画像処理装置１００が実行する、再構成部の回路再構成処理の流れを示すフローチャートである。
【０１１９】
図７に示すように、先ず、コンフィグレーション制御部４１０は、ＦＰＧＡ再構成データ３３０に含まれる複数種類の回路再構成データから選択した、所望の回路再構成データをＦＰＧＡ２００に送信する（Ｓ３１０）。
【０１２０】
コンフィグレーションＩ／Ｆ２４０は、コンフィグレーション制御部４１０から送信された回路再構成データに基づいて、所望の再構成部の回路再構成を行う。そして、割り込み制御部２５０は、コンフィグレーションＩ／Ｆ２４０から回路再構成に成功した旨の情報を受け取った場合に、制御部４００としてのＣＰＵ１１０に対して回路再構成の成功割り込みを発生させる（Ｓ３２０でＹＥＳ）。この場合、再構成部の回路再構成は終了する。
【０１２１】
一方で、回路再構成の成功割り込みが発生しない場合（Ｓ３２０でＮＯ）において、割り込み制御部２５０が、コンフィグレーションＩ／Ｆ２４０から回路再構成に失敗した旨の情報を受け取っていない場合（Ｓ３３０でＮＯ）は、コンフィグレーションＩ／Ｆ２４０は、所望の再構成部の回路再構成を再度実行する。
【０１２２】
割り込み制御部２５０が、コンフィグレーションＩ／Ｆ２４０から回路再構成に失敗した旨の情報を受け取った場合、割り込み制御部２５０は、制御部４００としてのＣＰＵ１１０に対して、回路再構成の失敗割り込みを発生させる（Ｓ３３０でＹＥＳ）。
【０１２３】
制御部４００としてのＣＰＵ１１０は、回路再構成の失敗割り込みが発生した場合に、回路再構成の失敗が３回連続している場合（Ｓ３４０でＹＥＳ）、再構成部の回路再構成に異常が生じた旨の回路再構成異常処理を実行する（Ｓ３５０）。
【０１２４】
回路再構成の失敗が３回連続未満の場合（Ｓ３４０でＮＯ）は、再度、コンフィグレーション制御部４１０が所望の回路再構成データをＦＰＧＡ２００に送信して、Ｓ３１０からＳ３４０までの処理を繰り返す。
【０１２５】
以下に、図８を用いて、認識処理制御処理の流れについて説明する。
【０１２６】
図８は、本実施の形態の画像処理装置１００における認識処理制御処理の流れを示すフローチャートである。
【０１２７】
図８に示すように、画像処理装置１００は認識処理の制御を開始する。ここでは、ＣＰＵ１１１（図４参照）が行う処理について、説明する。
【０１２８】
先ず、ＣＰＵ１１１は、前処理が終了していない場合（Ｓ４１０でＮＯ）、前処理が終了するまで待機する。
【０１２９】
ＣＰＵ１１１は、前処理が終了した場合（Ｓ４１０でＹＥＳ）に、認識処理を開始する（Ｓ４２０）。
【０１３０】
認識処理が失敗した場合（Ｓ４３０でＮＯ）であって、リトライの規定回数が終了していない場合（Ｓ４４０でＮＯ）は、回路再構成されたＦＰＧＡ２００による前処理が終了するまで待機して、回路再構成されたＦＰＧＡ２００にて前処理を行った画像データに対して、認識処理を実行して、Ｓ４２０からの処理を行う。
【０１３１】
認識処理が成功した場合（Ｓ４３０でＹＥＳ）、ＣＰＵ１１１の認識処理の制御は終了する。
【０１３２】
このように、本実施の形態の画像処理装置１００は、外部のカメラ２によって撮像された光学コードを含む入力画像に対して前処理を行い、画像データを出力する前処理回路としてのＦＰＧＡ２００と、ＦＰＧＡ２００から出力された画像データに基づいて光学コードの認識処理を行う画像処理制御部４２０と、ＦＰＧＡ２００の再構成を実行するコンフィグレーション制御部４１０と、を備えている。コンフィグレーション制御部４１０は、ＦＰＧＡ２００が画像処理制御部４２０に前処理後の画像データを出力した後に、ＦＰＧＡ２００の処理内容を変更する再構成を実行するとともに、画像処理制御部４２０が前記認識処理に失敗した場合に、前記再構成が行われたＦＰＧＡ２００から出力された画像データに基づいて、再度前記認識処理を行う。
【０１３３】
つまり、コンフィグレーション制御部４１０は、ＦＰＧＡ２００が画像処理制御部４２０に前処理後の画像データを出力した後に、前処理回路を回路再構成して、前処理の内容を変更することができる。そのため、複数種類の物理的な前処理回路をハードウェアに組み込んでおく必要なく、前処理の内容を変更することができる。その結果、ハードウェア回路が大型化することがない。
【０１３４】
また、画像処理制御部４２０が認識処理に失敗した場合に、前記再構成が行われたＦＰＧＡ２００から出力された画像データに基づいて、画像処理制御部４２０は認識処理を行う。そのため、前処理回路の処理内容を変更して、認識処理部は認識処理を行うことができる。その結果、認識率を向上させることができる。ここで、この再構成された前処理回路は、マイクロプロセッサ等が実行するソフトウェアによって前処理を実行する場合と比較して高速な処理を行うことができる。そのため、画像処理の実行時間の増加を抑制することができる。
【０１３５】
したがって、ハードウェア回路を大型化することなく、画像処理の実行時間の増加を抑制しつつ認識率を向上させることのできる画像処理を実現することができる。
【０１３６】
以上に詳細を説明した、画像処理装置１００の実行する画像処理方法は、以下のように整理することができる。すなわち、画像処理装置１００の実行する画像処理方法は、外部の撮像装置によって撮像された光学コードを含む入力画像に対して前処理を行う前処理回路から出力された画像データに基づいて光学コードの認識処理を行う認識処理ステップと、前記前処理回路の再構成を実行する回路構成制御ステップと、を有し、前記回路構成制御ステップにおいて、前記前処理回路が画像データを出力した後に、前記前処理回路の処理内容を変更する再構成を実行するとともに、前記認識処理ステップにおいて、前記認識処理に失敗した場合に、前記再構成が行われた前記前処理回路から出力された画像データに基づいて、再度前記認識処理を行う。
【０１３７】
前記の構成によれば、回路構成制御ステップは、前処理回路が認識処理部に画像データを出力した後に、前記前処理回路の処理内容を変更する再構成を実行する。
【０１３８】
また、認識処理ステップにおいて、認識処理に失敗した場合に、前記再構成が行われた前処理回路から出力された画像データに基づいて、再度認識処理を行う。そのため、前処理回路の処理内容を変更して、認識処理ステップにて認識処理を行うことができる。その結果、認識率を向上させることができる。
【０１３９】
したがって、ハードウェア回路を大型化することなく、画像処理の実行時間の増加を抑制しつつ認識率を向上させることのできる画像処理方法を提供することができる。
【０１４０】
なお、本明細書におけるコンフィグレーションという用語は、プログラマブル論理回路の中でＦＰＧＡに対して専ら用いられるものである、そのため、画像処理装置がＦＰＧＡ以外のプログラマブル論理回路を備える場合には、コンフィグレーションに対応する用語に置き換えて、本明細書の内容を理解することができる。
【０１４１】
〔ソフトウェアによる実現例〕
画像処理装置１００の制御ブロックは、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。
【０１４２】
後者の場合、画像処理装置１００は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）などを備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０１４３】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【０１４４】
〔各構成の別の表現〕
＜態様１＞
本発明の一態様における画像処理装置は、外部の撮像装置によって撮像された光学コードを含む入力画像に対して前処理を行い、画像データを出力する前処理回路と、前記前処理回路から出力された画像データに基づいて光学コードの認識処理を行う認識処理部と、前記前処理回路の再構成を実行する回路構成制御部と、を備え、前記回路構成制御部が、前記前処理回路が前記認識処理部に画像データを出力した後に、前記前処理回路の処理内容を変更する再構成を実行するとともに、前記認識処理部が前記認識処理に失敗した場合に、前記再構成が行われた前記前処理回路から出力された画像データに基づいて、再度前記認識処理を行う。
【０１４５】
前記の構成によれば、回路構成制御部が、前処理回路が認識処理部に画像データを出力した後に、前記前処理回路の処理内容を変更する再構成を実行する。そのため、複数種類の物理的な前処理回路をハードウェアに組み込んでおく必要なく、前処理の内容を変更することができる。その結果、ハードウェア回路が大型化することがない。
【０１４６】
また、認識処理部が認識処理に失敗した場合に、前記再構成が行われた前処理回路から出力された画像データに基づいて、認識処理部は認識処理を行う。そのため、前処理回路の処理内容を変更して、認識処理部は認識処理を行うことができる。その結果、認識率を向上させることができる。ここで、この再構成された前処理回路は、マイクロプロセッサ等が実行するソフトウェアによって前処理を実行する場合と比較して高速な処理を行うことができる。そのため、画像処理の実行時間の増加を抑制することができる。
【０１４７】
したがって、ハードウェア回路を大型化することなく、画像処理の実行時間の増加を抑制しつつ認識率を向上させることのできる画像処理を実現することができる。
【０１４８】
＜態様２＞
好ましくは、前記回路構成制御部が、前記前処理回路が前記認識処理部に画像データを出力した後に、前記認識処理が実行されている期間において、前記前処理回路の処理内容を変更する再構成を実行する。
【０１４９】
前記の構成によれば、認識処理部が認識処理に失敗した場合に、前記再構成が行われた前処理回路から出力された画像データに基づいて認識処理部が認識処理を開始するまでの時間を短くすることができる。そのため、画像処理の実行時間の増加を抑制することができる。
【０１５０】
＜態様３＞
好ましくは、前記前処理回路が、前記前処理回路の処理内容を変更する再構成が行われた後に、前記認識処理が実行されている期間において前記前処理を行う。
【０１５１】
前記の構成によれば、認識処理部が認識処理に失敗した場合に、前記再構成が行われた前処理回路から出力された画像データに基づいて認識処理部が認識処理を開始するまでの時間をより一層短くすることができる。そのため、画像処理の実行時間の増加を抑制することができる。
【０１５２】
＜態様４＞
好ましくは、前記認識処理部が前記認識処理に成功した場合に、前記回路構成制御部が、成功した認識処理時に用いられた処理内容となるように前記前処理回路の再構成を実行し、次回の前記入力画像に対する最初の前処理が行われる。
【０１５３】
前記の構成によれば、成功した認識処理時に用いられた処理内容によって、次回の前記入力画像に対する最初の前処理が行われる。そのため、次の入力画像の認識が成功する可能性を高いものとすることができる。その結果、認識率をより一層向上させることができる。
【０１５４】
＜態様５＞
好ましくは、前記認識処理部が前記認識処理に成功した場合に、成功した認識処理時に用いられた前記前処理回路の処理内容と対応付けて履歴を記録するとともに、前記回路構成制御部が、前記履歴に基づいて成功率が最も高い前記処理内容となるように前記前処理回路の再構成を実行し、前記入力画像に対する最初の前処理が行われる。
【０１５５】
前記の構成によれば、成功した認識処理時に用いられた前記前処理回路の処理内容の履歴が蓄積されていく。そのため、前記履歴に基づいて成功率が最も高い前記処理内容となるように前記前処理回路の再構成を実行することにより、認識率を向上させることができる。
【０１５６】
＜態様６＞
好ましくは、前記認識処理部が前記認識処理に成功した場合に、成功した認識処理時に用いられた前記前処理回路の処理内容と対応付けて履歴を記録するとともに、前記認識処理部による前記認識処理の失敗が繰り返された場合に、前記回路構成制御部が、前記履歴に基づいて成功率が高い処理内容から順に前記前処理回路の再構成を実行する。
【０１５７】
前記の構成によれば、回路構成制御部が、履歴に基づいて成功率が高い処理内容から順に前記前処理回路の再構成を実行する。そのため、入力画像の認識が成功する可能性が高いと推定される処理内容にて前処理を順に行うことができる。その結果、認識率を向上させることができる。
【０１５８】
＜態様７＞
好ましくは、前記認識処理部が前記認識処理に失敗した場合に、前記再構成が行われた前記前処理回路から出力された画像データに基づいて、前記失敗した認識処理とは異なる内容の認識処理を行う。
【０１５９】
前記の構成によれば、認識処理部は、種々の内容の認識処理を実行する。そのため、認識率を向上させることができる。
【０１６０】
＜態様８＞
好ましくは、前記前処理回路の処理内容と、前記認識処理の内容との組合せを複数種類記憶する組合せ記憶部をさらに備え、前記認識処理部は、前記組合せ記憶部を参照して、前記回路構成制御部によって設定された前記前処理回路の処理内容に対応する前記認識処理の内容を実行する。
【０１６１】
前記の構成によれば、認識処理部は、前処理回路の処理内容と認識処理の内容との組み合わせに基づいて、前処理回路の処理内容に対応した内容にて認識処理を行う。そのため、認識率を向上させることができる。
【０１６２】
＜態様９＞
また、上記の課題を解決するために、本発明の一態様における光学コード読取装置は、撮像装置と、前記撮像装置から入力画像を取得する前記画像処理装置とを備える。
【０１６３】
前記の構成によれば、ハードウェア回路を大型化することなく、画像処理の実行時間の増加を抑制しつつ認識率を向上させることのできる光学コード読取装置を提供することができる。
【０１６４】
＜態様１０＞
また、本発明の一態様における画像処理方法は、外部の撮像装置によって撮像された光学コードを含む入力画像に対して前処理を行う前処理回路から出力された画像データに基づいて光学コードの認識処理を行う認識処理ステップと、前記前処理回路の再構成を実行する回路構成制御ステップと、を有し、前記回路構成制御ステップにおいて、前記前処理回路が画像データを出力した後に、前記前処理回路の処理内容を変更する再構成を実行するとともに、前記認識処理ステップにおいて、前記認識処理に失敗した場合に、前記再構成が行われた前記前処理回路から出力された画像データに基づいて、再度前記認識処理を行う。
【０１６５】
前記の構成によれば、回路構成制御ステップは、前処理回路が認識処理部に画像データを出力した後に、前記前処理回路の処理内容を変更する再構成を実行する。
【０１６６】
また、認識処理ステップにおいて、認識処理に失敗した場合に、前記再構成が行われた前処理回路から出力された画像データに基づいて、再度認識処理を行う。そのため、前処理回路の処理内容を変更して、認識処理ステップにて認識処理を行うことができる。その結果、認識率を向上させることができる。
【０１６７】
したがって、ハードウェア回路を大型化することなく、画像処理の実行時間の増加を抑制しつつ認識率を向上させることのできる画像処理方法を提供することができる。
【符号の説明】
【０１６８】
１            光学コード読取装置
２            カメラ（撮像装置）
３５０            処理組合せデータ（組合せ記憶部）
４１０          コンフィグレーション制御部（回路構成制御部）
４２０            画像処理制御部（認識処理部）
【図１】
2020181599.tif 000003
【図２】
2020181599.tif 000004
【図３】
2020181599.tif 000005
【図４】
2020181599.tif 000006
【図５】
2020181599.tif 000007
【図６】
2020181599.tif 000008
【図７】
2020181599.tif 000009
【図８】
2020181599.tif 000010