(57)【特許請求の範囲】
【請求項１】
複数の入力画像を順次または並列に対象画像として繰り返し処理を行う画像処理装置であって、
前記複数の入力画像の処理順序の決定を行なう処理制御部と、
前記処理制御部で決定された前記処理順序に従って、処理単位が前記対象画像内に存在する被写体を特定するための識別情報の認識処理を行い、当該認識処理結果と前記対象画像との紐付けを行う第一の画像処理を、前記複数の入力画像に対して非同期で行う一枚処理部と、
前記処理単位が、
前記対象画像に対する前記第一の画像処理と、当該対象画像と前記処理順序の前または後に連続して位置する参照画像に対する前記第一の画像処理がすべて終了したか否かを判定し、
前記第一の画像処理がすべて終了したと判定された場合であって、前記一枚処理部で処理された前記対象画像内に前記識別情報が紐付けられていない被写体が存在する場合に、前記対象画像と前記参照画像との類似度の比較を行い、当該比較結果に基づいて前記参照画像のいずれか１つに紐付けられた識別情報を前記対象画像に紐付ける第二の画像処理を行う一方、
前記第一の画像処理が終了していないと判定された場合には、前記第二の画像処理の実行を待機する複数枚処理部と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記処理制御部は、事前に設定された処理数または動的に決定された処理数に応じて、前記第一の画像処理の実行単位または／および前記第二の画像処理の実行単位を一または複数生成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記一枚処理部は、前記第一の画像処理の実行単位が前記入力画像の前記処理単位よりも少ない場合であって、前記対象画像が当該実行単位で前記第一の画像処理が終了していないと判定された場合には、当該対象画像と前記処理順序の後に連続して位置する前記参照画像に対する前記第一の画像処理の実行を待機することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記複数枚処理部は、前記第二の画像処理の実行単位が前記入力画像の前記処理単位よりも少ない場合であって、当該対象画像と前記処理順序の後に連続して位置する前記参照画像に対する前記第一の画像処理の実行または前記第二の画像処理の実行を待機すること特徴とする請求項２または請求項３に記載の画像処理装置。
【請求項５】
前記複数枚処理部は、前記第二の画像処理の処理結果に基づき最適化されたパラメータを算出し、前記処理制御部が生成する前記実行単位へ当該パラメータを反映させる最適パラメータ算出部をさらに備えることを特徴とする請求項２乃至請求項４の何れか１項に記載の画像処理装置。
【請求項６】
複数の入力画像を順次または並列に対象画像として繰り返し処理を行う画像処理装置の画像処理方法であって、
前記複数の入力画像の処理順序の決定を行なう処理制御ステップと、
前記処理制御ステップで決定された前記処理順序に従って、処理単位が前記対象画像内に存在する被写体を特定するための識別情報の認識処理を行い、当該認識処理結果と前記対象画像との紐付けを行う第一の画像処理を、前記複数の入力画像に対して非同期で行う一枚処理ステップと、
前記処理単位が、
前記対象画像に対する前記第一の画像処理と、当該対象画像と前記処理順序の前または後に連続して位置する参照画像に対する前記第一の画像処理がすべて終了したか否かを判定し、
前記第一の画像処理がすべて終了したと判定された場合であって、前記一枚処理ステップで処理された前記対象画像内に前記識別情報が紐付けられていない被写体が存在する場合に、前記対象画像と前記参照画像との類似度の比較を行い、当該比較結果に基づいて前記参照画像のいずれか１つに紐付けられた識別情報を前記対象画像に紐付ける第二の画像処理を行う一方、
前記第一の画像処理が終了していないと判定された場合には、前記第二の画像処理の実行を待機する複数枚処理ステップと、
を備えることを特徴とする画像処理方法。
【請求項７】
請求項１乃至請求項５の何れか１項に記載の各手段をコンピュータに機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マラソン大会などのイベントで撮影された写真の画像処理方法に関するものである。
【背景技術】
【０００２】
テーマパークやイベント会場などで来園者やイベント参加者などの人物画像をカメラで撮影してデータベースに登録し、来園者やイベント参加者などがデータベースを検索し、所望の人物画像を選択して購入できる画像注文システムがある。
【０００３】
本出願人は、この様な画像注文システムにおいて、人物画像からイベント参加者のゼッケン番号の認識精度を向上させる目的で、入力画像から人物を検出し、検出した人物の顔位置からゼッケンが存在する領域を推定し、推定した領域からゼッケン番号を含む領域を検出することで、検出した領域に対して画像処理を行い、画像処理後の画像からゼッケン番号の文字認識を行い、認識結果と入力画像との紐付けを行う画像処理装置を提案している（特許文献１参照）。
【０００４】
さらに、本出願人は、ゼッケン番号が不明確な場合に複数の入力画像間で画像を比較することにより被写体とゼッケン番号の紐付けを行う画像処理装置を提案している（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特願２０１４−２５９２５８
【特許文献２】特願２０１５−０７５１８５
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、出願人自らが先に提案した特許文献１および特許文献２の画像処理装置をさらに拡張・発展させ、大量の撮影画像を処理する画像処理装置において、画像処理の並列化および同期を行うことで従来と比較し処理速度を向上させ、ゼッケン番号の認識精度を向上させた画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、請求項１に記載の画像処理装置は、複数の入力画像を順次または並列に対象画像として繰り返し処理を行う画像処理装置であって、前記複数の入力画像の処理順序の決定を行なう処理制御部と、前記処理制御部で決定された前記処理順序に従って、処理単位が前記対象画像内に存在する被写体を特定するための識別情報の認識処理を行い、当該認識処理結果と前記対象画像との紐付けを行う第一の画像処理を、前記複数の入力画像に対して非同期で行う一枚処理部と、前記処理単位が、前記対象画像に対する前記第一の画像処理と、当該対象画像と前記処理順序の前または後に連続して位置する参照画像に対する前記第一の画像処理がすべて終了したか否かを判定し、前記第一の画像処理がすべて終了したと判定された場合であって、前記一枚処理部で処理された前記対象画像内に前記識別情報が紐付けられていない被写体が存在する場合に、前記対象画像と前記参照画像との類似度の比較を行い、当該比較結果に基づいて前記参照画像のいずれか１つに紐付けられた識別情報を前記対象画像に紐付ける第二の画像処理を行う一方、前記第一の画像処理が終了していないと判定された場合には、前記第二の画像処理の実行を待機する複数枚処理部と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、撮影画像へのゼッケン番号の紐付け処理を高速に、かつ高精度に行うことが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施形態による画像処理装置１００の一例を示すブロック図である。
【図２】画像処理装置１００が、並列処理を行いながらゼッケン番号と対象画像との紐付けを行うまでを説明するための処理状態図である。
【図３】画像処理装置１００が、並列処理を行いながらゼッケン番号と対象画像との紐付けを行うまでを説明するためのフローチャートである。
【図４】画像処理装置１００が、顔の特徴量に基づいてゼッケン番号と人物画像との紐付けを行うまでの実施形態の画像である。
【図５】画像処理装置１００が、ゼッケン番号と対象画像との紐付けを行うまでを説明するための本発明の第２の実施形態における処理状態図である。
【図６】画像処理装置１００が、ゼッケン番号と対象画像との紐付けを行うまでを説明するための本発明の第２の実施形態におけるフローチャートである。
【図７】本発明の第３の実施形態による画像処理装置６００の一例を示すブロック図である。
【図８】画像処理装置６００が、ゼッケン番号と対象画像との紐付けを行うまでを説明するための処理状態図である。
【図９】画像処理装置６００が、ゼッケン番号と対象画像との紐付けを行うまでを説明するためのフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態による画像処理装置の一例について図面を参照して説明する。
【００１１】
［第1の実施形態］
＜画像処理装置１００の構成＞
図１は、本発明の第１の実施形態による画像処理装置１００の一例を示すブロック図である。
【００１２】
図示の画像処理装置１００は、パーソナルコンピュータ（ＰＣ）などの装置である。携帯電話や、ＰＤＡ、スマートフォンやタブレット端末などの装置でもよい。
【００１３】
画像処理装置１００は、ハードウェア構成として、ＣＰＵ、メモリ、通信部、および記憶部（ともに不図示）を備えている。なお、メモリは、後述する各スレッドの処理時にグローバルメモリとして使用される。
【００１４】
ＣＰＵは画像処理装置１００の全体の制御を司る。メモリはＲＡＭおよびＲＯＭなどである。
【００１５】
通信部はＬＡＮ、無線通信路およびシリアルインターフェースなどに接続するためのインターフェースであって、撮影装置から撮影画像を受信するための機能部である。
【００１６】
記憶部には、ソフトウェアであるオペレーティングシステム（以下、ＯＳと呼ぶ：不図示）、画像読み込み部１０１、画像ソート部１０２、一枚処理部１１０、複数枚処理部１２０、処理制御部１３０および他の機能に係るソフトウェアが記憶されている。なお、これらのソフトウェアはメモリに読み出されて、ＣＰＵの制御に従い動作する。
【００１７】
以下、各機能部が備える機能について詳述していく。
【００１８】
画像読み込み部１０１は、撮影画像およびディスプレイ描画などを入力画像としてメモリから読み込み、画像処理装置１００のメモリ上に展開させる。具体的には、ＪＰＥＧファイルなどの圧縮されたイメージファイルを解凍し、各画素単位のＲＧＢ値順に配列したラスターイメージに展開し、ＰＣ内のメモリ上に展開させる。このとき、読み込んだ入力画像の画素数が十分に大きくない場合は、被写体検出部１１１における被写体の検出や、画像処理部１１４、文字認識部１１５での認識精度を十分に保つため、画素間を補間し、十分な画素数に拡大してもよい。また、必要以上に画素数が大きい場合は、処理を高速化させるために、画素を間引いて、縮小してもよい。また、入力画像の縦横関係を補正するために、必要に応じて撮影画像を回転させてもよい。
【００１９】
画像ソート部１０２は、画像処理装置１００のメモリ上に展開された入力画像を所定の順序でソートする。例えば、入力画像の更新時間・作成時間または入力画像内に記録されたイメージの撮影時間を取得し、時系列で入力画像をソートする。ここで、入力画像のファイルフォーマットは例えばＪＰＥＧであり、入力画像が数万枚以上と膨大になる場合には、ソート処理に膨大な時間がかかるため、数十枚単位で区分するなどソートする単位を変更してもよい。
【００２０】
一枚処理部１１０は、被写体検出部１１１、ゼッケン領域推定部１１２、ゼッケン文字領域検出部１１３、画像処理部１１４および文字認識部１１５を備え、画像ソート部１０２でソートされた順に入力画像を一枚ずつ処理する機能部である。例えば、時系列に早い順または遅い順で並んだ入力画像を処理する。
【００２１】
被写体検出部１１１は、入力画像内に存在するそれぞれの被写体領域を検出する。被写体の検出方法は、例えば、被写体が人物である場合、人物の顔、口や目などの器官の特徴による検出方法や、頭部の形状特徴による検出方法、人物の肌領域などの色相による検出などがあり、これに限定したものではなく、複数の検出方法を組み合わせてもよい。以下、被写体を人物として説明する。
【００２２】
ゼッケン領域推定部１１２は、被写体検出部１１１により検出された入力画像内の人物領域から、顔の位置や肩幅のサイズに基づき、顔より下方向の胴体部分にゼッケン文字領域が存在していると推測する。なお、ゼッケンだけに限定したものではなく、ユニフォームの背番号や被写体の一部に直接書かれた識別情報などでもよい。また、下方向に限定し推測するものではなく、人物の姿勢や撮影画像の構図によって適宜変更可能である。
【００２３】
ゼッケン文字領域検出部１１３は、ゼッケン領域推定部１１２により推定された各領域に対して、文字となりうる領域を検出する。ここで文字は、数字、アルファベット、平仮名、片仮名、漢字、数字および記号やバーコードのパターンなど被写体を一意に識別できる識別子のことである。
【００２４】
画像処理部１１４は、ゼッケン文字領域検出部１１３の各領域に対して、文字認識を行うための前処理となる画像処理を行う。
【００２５】
文字認識部１１５は、画像処理部１１４が処理した入力画像に対して、候補となる文字の画像特徴を記載した辞書データベース（不図示）に基づき、文字認識を行い、その認識結果を人物画像と紐付ける。人物画像とは、入力画像中の人物が存在する部分である。
【００２６】
複数枚処理部１２０は、特徴量算出部１２１、特徴量比較部１２２、文字紐付け部１２３を備えており、一枚処理部１１０の処理結果に基づき、対象とする入力画像を時間的に前後する画像を参照して処理するための機能部である。
【００２７】
特徴量算出部１２１は、入力画像内に存在する各人物や人物領域を検出し、人物の顔、口や目などの器官の特徴量や、人物領域の色相や、画像に対する人物の構図などを基にした特徴量を算出する。ここで、一つの特徴から特徴量としてもよいし、複数の特徴量を組み合わせて、入力画像の特徴量としてもよい。
【００２８】
特徴量比較部１２２は、特徴量算出部１２１により算出された入力画像内の特徴量に対し、複数枚間での比較を行う。このとき対象とする入力画像を対象画像とし、画像ソート部１０２より撮影時間等でソートされた前後ｎ枚ずつの入力画像を参照画像とする。ここで、前後ｎ枚ずつの入力画像の枚数は、イベント状況や撮影画像の撮影間隔などによって変化させてもよい。また、入力画像（例えばＪＰＥＧ画像）内の撮影時刻などに基づいて一定時間内に撮影された入力画像という条件で可変することも可能である。加えて、参照画像は必ずしも対象画像の前後の参照画像ではなく、前のみの参照画像、後のみの参照画像または前後の参照画像がない場合もある。 
【００２９】
文字紐付け部１２３は、特徴量比較部１２２の結果にて、対象画像と参照画像の類似度が高い場合に、参照画像に紐付けられたゼッケン番号を対象画像に紐付ける。ここで、紐付ける対象は、対象画像内の被写体としてもよいし、撮影画像そのものに紐付けてもよい。
【００３０】
処理制御部１３０は、画像読み込み部１０１から文字紐付け部１２３まで全体の処理プロセスの順番付けを決定し、各プロセスの生成と破棄を行う。各プロセスの生成において、各処理が遅延しないようプロセス数を決定し、１または複数のプロセスを生成する。生成するプロセス数は、事前に定義された固定数でもよいし、動作環境のコンピュータのメモリ容量や入力画像のサイズ等に基づき、動的にプロセス数を決定してもよい。
【００３１】
ここでプロセスとは、関連する実行ファイルおよび設定情報等がコンピュータメモリ上に読み込まれ、何らかのまとまった処理を実行するアプリケーションプログラムであり、処理の実行単位に相当する。
【００３２】
＜画像処理装置１００の処理状態＞
図２は、図１に示す画像処理装置１００が、並列処理を行いながら、ゼッケン番号と対象画像との紐付けを行うまでを説明するための第１の実施形態における処理状態図である。
【００３３】
一枚処理２００は画像読み込み部１０１、画像ソート部１０２および一枚処理部１１０が実行する各処理を表している。画像読み込み部１０１および画像ソート部１０２が処理する画像生成処理２０２、被写体検出部１１１が処理する人物検出処理２０３、ゼッケン領域推定部１１２およびゼッケン文字領域検出部１１３が処理する文字領域検出処理２０４、画像処理部１１４および文字認識部１１５が処理する文字認識処理２０５、文字認識部１１５が処理する文字紐付け処理２０６から構成される。複数枚処理２０１は複数枚処理部１２０が実行する処理を表している。特徴量算出部１２１、特徴量比較部１２２および文字紐付け部１２３が処理する特徴量算出比較処理２０７からなる。
【００３４】
入力画像Ａ用スレッド２１０〜入力画像I用スレッド２１８（以降「スレッド２１０〜スレッド２１８」と記載）は、画像ソート部１０２にて撮影時間等でソートされた画像Ａ〜画像Ｉを読み込んだスレッドである。ここで、入力画像の順番は、撮影時間の古い順に画像Ａから画像Ｉとして説明するが、必ずしも古い順である必要はなく、新しい順に処理を行ってもよい。ここでスレッドとは、処理制御部１３０内で生成される並列可能な処理単位を示しており、一枚処理部１１０および複数枚処理部１２０の各処理を実行するものである。処理制御部１３０は各入力画像に対して一つのスレッドを割り当て、各処理を行うプロセスをスレッドが呼び出して、対象画像を処理させるものである。
【００３５】
ここで、スレッド２１０〜スレッド２１８は、並列で画像生成処理２０２〜特徴量算出比較処理２０７によって処理されている。画像ソート部１０２によってソートされたソート順に画像生成処理２０２〜特徴量算出比較処理２０７によって処理され、スレッド２１０〜スレッド２１８の順で時系列に処理されていることを示している。各スレッドはグローバルメモリに記録され、他のスレッドの状態を監視することができる。ここで、グローバルメモリとは、全てのスレッドから読み書きができるメモリである。
【００３６】
状態２２０〜状態２２８は、スレッド２１０〜スレッド２１８が、画像生成処理２０２〜特徴量算出比較処理２０７によって処理されている状態を示す。ここで、状態２２３、状態２２４、状態２２５、状態２２６および状態２２７は、各スレッドの画像が対応する一枚処理２００で処理中であることを表す（黒丸にて表記）。状態２２０および状態２２２は、各スレッドの画像が対応する一枚処理２００または複数枚処理２０１で処理完了の状態であることを表す（白丸にて表記）。また、状態２２１および状態２２８は、各スレッドの画像が対応する一枚処理２００または複数枚処理２０１で関連する処理が完了するまでの待ちの状態であることを表す（網掛け丸にて表記）。スレッド２１１では、特徴量算出比較処理２０７におけるスレッド２１２を監視して、処理待ち状態であり、スレッド２１８では同じ画像生成処理２０２のスレッド２１７を監視して、処理の完了待ち状態である。
【００３７】
画像生成処理２０２〜特徴量算出比較処理２０７にて、処理可能な画像は一つであるため、処理中の状態（黒丸）は、各処理に一つまたはなしである。スレッド２１８は、入力画像Ｈのスレッド２１７の画像生成処理２０２の処理が終了するまで待機する必要があり、処理待ち（網掛け丸）の状態にある。スレッド２１７の処理が完了すれば、スレッド２１８は処理中（黒丸）に移行する。
【００３８】
スレッド２１２は、入力画像Ｃの文字紐付け処理２０６が完了した状態である（白丸）。やがて、次の特徴量算出比較処理２０７に移り、処理待ちまたは処理中の状態に移行する。
【００３９】
一枚処理２００の画像生成処理２０２〜文字紐付け処理２０６の機能に対して、各スレッドは干渉せず、前の処理が終了すれば、順次処理状態へ移行する。
【００４０】
一方、複数枚処理２０１の特徴量算出比較処理２０７を実行するスレッド２１１は、対象画像となる入力画像Ｂと参照画像となる前の入力画像Ａと後の入力画像Ｃの間で同期をとる必要がある。ここで、入力画像Ａは少なくとも文字紐付け処理２０６が終了しているが、入力画像Ｃは文字紐付け処理２０６が終了していない場合があるためである。その場合、同期をとらないで特徴量算出比較処理２０７を行うと、文字紐付け処理２０６が終了していない場合に、適切な紐付けがされていない参照画像との比較を行うことで対象画像と前後の参照画像を使用した文字紐付け部１２３のゼッケン番号の紐付けが適切に行われない。そのため、入力画像Ｂの特徴量算出比較処理２０７は、入力画像Ｃの文字紐付け処理２０６が終了するまで待機する。複数枚処理２０１で前後の参照画像との同期を取ることにより、ゼッケン番号を紐付ける精度の向上が可能である。
【００４１】
＜画像処理装置１００の処理フロー＞
図３は、図１に示す画像処理装置１００が、並列処理を行いながらゼッケン番号と対象画像との紐付けを行うまでを説明するためのフローチャートである。
【００４２】
以下の説明において、対象とする入力画像を対象画像、ソートによって対象画像と連続し、時間的に連続した前後ｎ枚ずつの入力画像を参照画像とする。ここで、前後ｎ枚ずつの入力画像の枚数は、イベント状況や撮影画像の撮影間隔などによって変化させてもよい。また、入力画像（例えばＪＰＥＧ画像）内の撮影時刻などに基づいて一定時間内に撮影された入力画像という条件で可変することも可能である。加えて、参照画像は必ずしも対象画像の前後の参照画像ではなく、前のみの参照画像、後のみの参照画像または前後の参照画像がない場合もある。
【００４３】
まず、撮影画像全体の処理について図３Ａのフローチャートを用いて説明する。
【００４４】
画像生成処理２０２を行う。具体的には、画像読み込み部１０１が入力画像として対象画像および前後ｎ枚ずつの（２ｎ＋１）枚の読み込みを行い処理を開始し、画像ソート部１０２が読み込んだ（２ｎ＋１）枚を撮影時間などに基づき時間的に連続した画像としてソートを行う（ステップＳ３０１）。ここで画像読み込み部１０１は、画像が圧縮されている場合に圧縮画像の解凍を行う。また、解凍したイメージを回転補正してもよい。ソートすることによって、顔認証した場合に、時系列で前後する他の入力画像内に対象人物が写っている場合が多くなるためである。
【００４５】
一枚処理部１１０および複数枚処理部１２０が、入力画像として読み込んだ（２ｎ＋１）枚について図２で説明したように並列で処理を行う（ステップＳ３０２）。詳細は図３Ｂで後述する。
【００４６】
複数枚処理部１２０が、すべての撮影画像について処理が完了したか判断する（ステップＳ３０３）。処理が完了した場合（ステップＳ３０３でＹｅｓ）は、処理フローを終了する。すべての撮影画像について処理が完了していない場合（ステップＳ３０３でＮｏ）は、ステップＳ３０１へ戻り次の入力画像として（２ｎ＋１）枚を読み込む。
【００４７】
次に、ステップＳ３０２の処理について図３Ｂのフローチャートを用いて説明する。
【００４８】
ステップＳ３１１〜ステップＳ３１８までは一枚処理部１１０が行う処理であり、ステップＳ３１９〜ステップＳ３２７は複数枚処理部１２０が行う処理である。
【００４９】
まず、人物検出処理２０３を行う。被写体検出部１１１が読み込んだ対象画像のラスターイメージ全体をスキャンし、人物の可能性のある画像領域が存在するか判断する（ステップＳ３１１）。
【００５０】
対象画像内に人物の可能性がある画像領域が存在する場合（ステップＳ３１１でＹｅｓ）は、ステップＳ３１２へ進む。対象画像内に人物の可能性がある画像領域が存在しない場合（ステップＳ３１１でＮｏ）は、処理フローを終了する。
【００５１】
被写体検出部１１１が対象画像内の人物の可能性がある画像領域から人物を検出する（ステップＳ３１２）。
【００５２】
ステップＳ３１３〜ステップＳ３１５は文字領域検出処理２０４である。
【００５３】
ゼッケン領域推定部１１２は、被写体検出部１１１が検出した人物領域毎にゼッケン文字領域が含まれていると推定してスキャンする領域を決定する（ステップＳ３１３）。スキャンする領域は、入力画像の上下および人物領域の幅より決定し、人物の顔より下方向の領域に設定する。ここで、被写体検出部１１１が用いる検出方法によってスキャンする領域の上下サイズおよび幅を変更してもよい。
【００５４】
人物毎に決定されたスキャンする領域から、ゼッケン文字領域検出部１１３がゼッケン文字領域を検出する（ステップＳ３１４）。ゼッケン文字領域の候補として、数字や文字などのゼッケン番号と予想される画像領域を検出し、一文字または複数文字を含む画像領域を検出する。ここでゼッケン番号と表現しているが、数字に限定されるものではない。
【００５５】
対象画像内のすべての人物に対して、ゼッケン文字領域検出部１１３が画像領域を検出したかを判断し（ステップＳ３１５）、未検出の人物が存在する場合(ステップＳ３１５でＮｏ)は、ステップＳ３１３の処理に戻り、すべての人物に対してゼッケン文字領域の検出を行う。
【００５６】
ステップＳ３１６〜ステップＳ３１７は、文字認識処理２０５である。
【００５７】
対象画像内のすべての人物についてゼッケン文字領域の検出が終了(ステップＳ３１５でＹｅｓ)すると、検出した各ゼッケン文字領域に対して、画像処理部１１４が文字認識を行うための前処理となる画像処理を行う（ステップＳ３１６）。ここで画像処理とは、歪み補正、傾き補正、奥行き補正などである。詳細な処理の説明は、本出願人が先に提出した特願２０１４−２５９２５８にて説明している。
【００５８】
すべてのゼッケン文字領域の画像処理が終了すると、各ゼッケン文字領域に対して、文字認識部１１５が文字認識を行う（ステップＳ３１７）。
【００５９】
文字紐付け処理２０６を行う。文字認識部１１５が文字認識の結果を人物画像に対して紐付ける（ステップＳ３１８）。
【００６０】
すべてのゼッケン文字領域の文字認識が終了すると１枚の入力画像（ここでは対象画像）の処理を終了する。
【００６１】
同様に前後ｎ枚ずつの参照画像においても、ステップＳ３１１〜ステップＳ３１８の人物検出と文字認識を行い、人物画像に対して紐付けられた文字の結果を得ることができる。
【００６２】
ここまでの入力画像についての一枚処理２００に関するステップＳ３０１、ステップＳ３１１〜Ｓ３１８では、図２に示すように、各処理がそれぞれの画像と結び付けられたスレッドに対して、並列して動作し、先の処理が完了したことを確認して、それぞれのスレッドが処理を進める。
【００６３】
対象画像は、複数枚処理２０１である特徴量算出比較処理２０７へ移る。
【００６４】
複数枚処理部１２０を実行するスレッドが、対象画像と同様に参照画像について文字認識の結果について紐付けを終えているか判断する（ステップＳ３１９）。対象画像と参照画像について紐付けがすべて終わっている場合はステップＳ３２０へ進む。終わっていない場合はステップＳ３１９へ戻り、対象画像および参照画像の（２ｎ＋１）枚の紐付けが終わるまで待機し、複数のスレッド間で同期の処理を行う。同期の処理を行うことで文字認識の結果について紐付けが終わっている参照画像を利用した複数枚処理部１２０の処理を行うことができる。図２で説明したスレッド２１１の状態２２１が、この同期をとるための待機状態を示している。
【００６５】
文字認識部１１５が対象画像内で文字が紐付けられていない人物がいるか検出する（ステップＳ３２０）。対象画像内のすべての人物に適当な文字が紐付けられている場合（ステップＳ３２０でＮｏ）、処理フローを終了する。
【００６６】
何らかの文字が紐付けられていない人物がいる場合（ステップＳ３２０でＹｅｓ）、文字認識部１１５が前後ｎ枚ずつの参照画像内の何らかの文字が紐付けられた人物を検出する（ステップＳ３２１）。
【００６７】
参照画像内で何らかの文字が紐付けられた人物がいる場合（ステップＳ３２１でＹｅｓ）、特徴量算出部１２１が対象画像内の文字が紐付けられていない人物の特徴量を算出する（ステップＳ３２２）。参照画像内で何らかの文字が紐付けられた人物がいない場合（ステップＳ３２１でＮｏ）、処理フローを終了する。
【００６８】
次に、特徴量算出部１２１が参照画像内で何らかの文字が紐付けられた人物の特徴量を算出する（ステップＳ３２３）。
【００６９】
なお、対象画像と参照画像の特徴量の算出および文字の紐付けについて詳細な処理の説明は、本出願人が先に提出した特願２０１５−０７５１８５にて説明している。
【００７０】
特徴量比較部１２２が対象画像の文字が紐付けられていない人物の特徴量と、参照画像内で文字が紐付けられた人物の各特徴量において、それぞれの類似度を算出する（ステップＳ３２４）。類似度は、例えば値１００を持って規格化され、類似度が高いほどそれぞれの特徴量が酷似しており、同一人物である可能性が高い事を示している。
【００７１】
そしてステップＳ３２４で算出された類似度の中から、特徴量比較部１２２が、類似度の最大値を算出する（ステップＳ３２５）。
【００７２】
類似度の最大値が、事前に決定づけられた閾値以上あるかを判断する（ステップＳ３２６）。閾値以上の場合（ステップＳ３２６でＹｅｓ）は、文字紐付け部１２３が参照画像内の最大値にあたる特徴量に対応する人物に紐付けられた文字を、対象画像内の文字が紐付けられていない人物に紐付けする（ステップＳ３２７）。閾値未満の場合（ステップＳ３２６でＮｏ）は、処理フローを終了する。
【００７３】
ここで、類似度の閾値は、機械学習等によって算出された固定の値でもよく。また、顔向き毎に閾値を変えてもよい。また対象画像の解像度や状態等によって、動的に変化させることも可能である。
【００７４】
図４は、入力画像の一例であり、本図を使って、画像処理装置１００が、顔の特徴量に基づいてゼッケン番号と人物画像との紐付けを行うまでを説明する。
【００７５】
画像４０１および画像４０２は同じ人物を撮影した画像であり、画像ソート部１０２がソートした場合に時間的に連続する入力画像である。この画像４０１および画像４０２を用いて図３Ｂで説明したフローの各ステップを説明する。
【００７６】
画像４０１は、顔が正面を向いているが、胴体が横向きでありゼッケン番号の一部が隠れてしまい、ゼッケン番号を文字認識部１１５がすべて認識することができない。画像処理部１１４および文字認識部１１５にて、画像処理して数字を認識するが、正しく数字を認識できない結果となることがステップＳ３１１〜ステップＳ３１８を通して分かっているものとする。
【００７７】
また、画像４０２は、同様に顔が正面を向いており、ゼッケン番号を文字認識部１１５がすべて正しく認識することができることがステップＳ３１１〜ステップＳ３１８を通して分かっているものとする。
【００７８】
ステップＳ３１９において、複数枚処理部１２０が画像４０１と画像４０２の紐付けを終了したと判断し、ステップＳ３２０に進む。
【００７９】
ステップＳ３２０において、文字認識部１１５が画像４０１で人物検出したが、紐付けられている文字がないため、ステップＳ３２１にて文字認識部１１５が、連続した画像４０２に文字が紐付けられた人物がいるかを判断する。
【００８０】
ステップＳ３２２において、特徴量算出部１２１が画像４０１の人物の顔の特徴量を算出する。次にステップＳ３２３にて、特徴量算出部１２１が画像４０２の人物の顔特徴量を算出する。
【００８１】
ステップＳ３２４において、特徴量比較部１２２が、ステップＳ３２２およびステップＳ３２３で算出した顔の特徴量の類似度を算出する。
【００８２】
ステップＳ３２５において、特徴量比較部１２２が類似度の最大値を算出する。ステップＳ３２６にて、閾値と比較し、類似度の最大値が閾値以上であるので、ステップＳ３２７において文字紐付け部１２３が画像４０２の文字を画像４０１の人物に紐付ける。
【００８３】
以上、説明したとおり、本発明の第１の実施形態によれば、時間的に連続した他の入力画像の人物の特徴量を用いてゼッケンの文字を紐付ける場合に、入力画像の一枚処理を並列化し、さらに複数枚処理において一枚処理が終わるまで待機し同期をとることにより、処理を従来と比較し高速化し、ゼッケン番号の認識精度を向上させることが可能である。
【００８４】
［第２の実施形態］
続いて、本発明の第２の実施形態について説明する。第１の実施形態では、入力画像の各スレッドを並列化し処理を高速化すること説明した。第２の実施形態では、一枚処理２００および複数枚処理２０１の各処理の中でボトルネックとなる処理を多重化することで、さらに処理を高速化することを説明する。システム構成としては、図１と同等であるため、説明を省略する。
【００８５】
＜第２の実施形態の処理状態＞
図５は、図１に示す画像処理装置１００が、並列処理を行いながら、ゼッケン番号と対象画像との紐付けを行うまでを説明するための第２の実施形態の処理状態図である。
【００８６】
一枚処理２００は画像読み込み部１０１、画像ソート部１０２および一枚処理部１１０が実行する各処理を表している。画像読み込み部１０１および画像ソート部１０２が処理する画像生成処理２０２、被写体検出部１１１が処理する人物検出処理２０３、ゼッケン領域推定部１１２およびゼッケン文字領域検出部１１３が処理する文字領域検出処理２０４および文字領域検出処理５０４、画像処理部１１４および文字認識部１１５が処理する文字認識処理２０５、文字認識部１１５が処理する文字紐付け処理２０６から構成される。
【００８７】
複数枚処理２０１は複数枚処理部１２０が実行する処理を表している。特徴量算出部１２１、特徴量比較部１２２および文字紐付け部１２３が処理する特徴量算出比較処理２０７および特徴量算出比較処理５０７からなる。
【００８８】
ここで、文字領域検出処理２０４は多重化され、同じ処理である文字領域検出処理５０４が生成されている。特徴量算出比較処理２０７も多重化され、同じ処理である特徴量算出比較処理５０７が生成されている。プログラムとしては、文字領域検出処理２０４と同じ実行ファイルから、異なるメモリ上に読みこまれ、異なるプロセスとして、文字領域検出処理５０４が生成されている。したがって、文字領域検出処理２０４と文字領域検出処理５０４は、同等の処理を行うが、それぞれ干渉することなく動作することができる。
【００８９】
多重化する処理は、処理に時間がかかり並列処理においてボトルネックになる処理である。ここで、文字領域検出処理と特徴量算出比較処理をそれぞれ２つに多重化しているが、コンピュータ全体のメモリやＣＰＵの能力を考慮して、多重化する処理や多重化する数を変化させてもよい。
【００９０】
入力画像Ａ用スレッド５１０〜入力画像Ｉ用スレッド５１８（以降「スレッド５１０〜スレッド５１８」と記載）は、画像ソート部１０２にて撮影時間等でソートされた画像Ａ〜画像Ｉを読み込んだスレッドである。入力画像の順番は、撮影時間の古い順に画像Ａから画像Ｉとして説明するが、必ずしも古い順である必要はなく、新しい順に処理を行ってもよい。
【００９１】
ここで、スレッド５１０〜スレッド５１８は、並列で画像生成処理２０２〜特徴量算出比較処理５０７によって処理されている。画像ソート部１０２によってソートされたソート順に画像生成処理２０２〜特徴量算出比較処理５０７によって処理され、スレッド５１０〜スレッド５１８の順で時系列に処理されていることを示している。各スレッドはグローバルメモリに記録され、他のスレッドの状態を監視することができる。
【００９２】
状態５２０〜状態５２８は、スレッド５１０〜スレッド５１８が、画像生成処理２０２〜特徴量算出比較処理５０７によって処理されている状態を示す。ここで、状態５２０、状態５２１、状態５２３〜状態５２７、状態５２８は、各スレッドの画像が対応する一枚処理２００または複数枚処理２０１で処理中であることを表す（黒丸にて表記）。状態５２２は、各スレッドの画像が対応する処理で処理完了の状態であることを表す（白丸にて表記）。
【００９３】
画像生成処理２０２〜特徴量算出比較処理５０７にて、処理可能な画像は一つであるため、処理中の状態（黒丸）は、各処理に一つまたはなしである。多重化された文字領域検出処理５０４および特徴量算出比較処理５０７は、それぞれ文字領域検出処理２０４および特徴量算出比較処理２０７と並列して処理を行うことができる。
【００９４】
各スレッドにおいて多重化されている処理は、互いに干渉することなく、独立して動作することが可能であり、空き状態に変化した処理に対して実行することができる。
【００９５】
複数枚処理２０１である特徴量算出比較処理２０７および５０７を実行するスレッドは、前後の参照画像の文字紐付け処理２０６が終了するまで待機し同期をとる。同期をとらないで特徴量算出比較処理２０７を行うと、文字紐付け処理２０６が終了していない場合に、適切な紐付けがされていない参照画像との比較を行うことで対象画像と前後の参照画像を使用した文字紐付け部１２３のゼッケン番号の紐付けが適切に行われないためである。例えば、前後の参照画像の数がそれぞれ１の場合、スレッド５１０の対象画像Ａは、特徴量算出比較処理２０７にて、前の参照画像がないため後の参照画像Ｂと同期をとり、状態５２０の処理中の状態（黒丸）となる。また、スレッド５１１の対象画像Ｂは、多重化された特徴量算出比較処理５０７にて、参照画像Ａと参照画像Ｃと同期をとり、状態５２１の処理中の状態（黒丸）となる。
【００９６】
＜第２の実施形態の処理フロー＞
図６は、図１に示す画像処理装置１００が、並列処理を行いながらゼッケン番号と対象画像との紐付けを行うまでの第２の実施形態を説明するためのフローチャートである。
【００９７】
以下の説明において、第１の実施形態と同様に、対象とする入力画像を対象画像、ソートによって対象画像と連続し、時間的に連続した前後ｎ枚ずつの入力画像を参照画像とする。
【００９８】
撮影画像全体の処理は、第１の実施形態において図３Ａで説明したステップＳ３０１〜ステップＳ３０３と同様である。一枚処理部１１０と複数枚処理部１２０が、入力画像として読み込んだ（２ｎ＋１）枚について並列で行うステップＳ３０２の本実施形態における詳細について図６を用いて説明する。
【００９９】
ステップＳ６０１〜ステップＳ６０９までは一枚処理部１１０が行う処理であり、ステップＳ６１０〜ステップＳ６１９は複数枚処理部１２０が行う処理である。
【０１００】
まず、人物検出処理２０３を行う。被写体検出部１１１が読み込んだ対象画像のラスターイメージ全体をスキャンし、人物の可能性のある画像領域が存在するか判断する（ステップＳ６０１）。
【０１０１】
対象画像内に人物の可能性がある画像領域が存在する場合（ステップＳ６０１でＹｅｓ）は、ステップＳ６０２へ進む。対象画像内に人物の可能性がある画像領域が存在しない場合（ステップＳ６０１でＮｏ）は、処理フローを終了する。
【０１０２】
被写体検出部１１１が対象画像内の人物の可能性がある画像領域から人物を検出する（ステップＳ６０２）。
【０１０３】
ステップＳ６０３〜ステップＳ６０６は文字領域検出処理２０４および文字領域検出処理５０４である。
【０１０４】
ゼッケン領域推定部１１２は、被写体検出部１１１が検出した人物領域毎にゼッケン文字領域が含まれていると推定してスキャンする領域を決定する（ステップＳ６０３）。
【０１０５】
ステップＳ６０３で各人物位置を元にスキャンする領域を決定した後、処理制御部１３０によって多重化されている文字領域検出処理５０４において処理可能プロセスがあるかを判断する（ステップＳ６０４）。
【０１０６】
処理可能プロセスがない場合（ステップＳ６０４でＮｏ）、先のスレッドの処理が終了し、処理可能プロセスが存在するまで、待機する。処理可能プロセスがある場合（ステップＳ６０１でＹｅｓ）、ステップＳ６０５へ進む。
【０１０７】
人物毎に決定されたスキャンする領域から、ゼッケン文字領域検出部１１３がゼッケン文字領域を検出する（ステップＳ６０５）。ゼッケン文字領域の候補として、数字や文字などのゼッケン番号と予想される画像領域を検出し、一文字または複数文字を含む画像領域を検出する。
【０１０８】
対象画像内のすべての人物に対して、ゼッケン文字領域検出部１１３が画像領域を検出したかを判断し（ステップＳ６０６）、未検出の人物が存在する場合(ステップＳ６０６でＮｏ)は、ステップＳ６０３の処理に戻り、すべての人物に対してゼッケン文字領域の検出を行う。
【０１０９】
ステップＳ６０７〜ステップＳ６０８は、文字認識処理２０５である。
【０１１０】
対象画像内のすべての人物についてゼッケン文字領域の検出が終了(ステップＳ６０６でＹｅｓ)すると、検出した各ゼッケン文字領域に対して、画像処理部１１４が文字認識を行うための前処理となる画像処理を行う（ステップＳ６０７）。
【０１１１】
すべてのゼッケン文字領域の画像処理が終了すると、各ゼッケン文字領域に対して、文字認識部１１５が文字認識を行う（ステップＳ６０８）。
【０１１２】
文字紐付け処理２０６を行う。文字認識部１１５が文字認識の結果を人物画像に対して紐付ける（ステップＳ６０９）。
【０１１３】
すべてのゼッケン文字領域の文字認識が終了すると１枚の入力画像（ここでは対象画像）の処理を終了する。
【０１１４】
同様に前後ｎ枚ずつの参照画像においても、ステップＳ６０１〜ステップＳ６０９の人物検出と文字認識を行い、人物画像に対して紐付けられた文字の結果を得ることができる。
【０１１５】
ここまでの入力画像についての一枚処理２００に関する処理は、図２に説明した処理と同様に、各処理がそれぞれの画像と結び付けられたスレッドに対して、並列して動作し、先の処理が完了したことを確認して、それぞれのスレッドが処理を進める。
【０１１６】
対象画像は、複数枚処理２０１である特徴量算出比較処理２０７および特徴量算出比較処理５０７へ移る。
【０１１７】
複数枚処理部１２０を実行するスレッドが、対象画像と同様に参照画像について文字認識の結果について紐付けを終えているか判断する（ステップＳ６１０）。対象画像と参照画像について紐付けがすべて終わっている場合はステップＳ５１１へ進む。終わっていない場合はステップＳ５１０へ戻り、対象画像および参照画像の（２ｎ＋１）枚の紐付けが終わるまで待機し、複数のスレッド間で同期の処理を行う。同期の処理を行うことで文字認識の結果について紐付けが終わっている参照画像を利用した複数枚処理部１２０の処理を行うことができる。
【０１１８】
複数枚処理２０１においても、処理制御部１３０で多重化されている特徴量算出比較処理５０７において処理可能プロセスがあるかを判断する（ステップＳ６１１）。
【０１１９】
処理可能プロセスがない場合（ステップＳ６１１でＮｏ）、先のスレッドの処理が終了し、処理可能プロセスが存在するまで、待機する。処理可能プロセスがある場合（ステップＳ６１１でＹｅｓ）、ステップＳ６１２へ進む。
【０１２０】
文字認識部１１５が対象画像内で文字が紐付けられていない人物がいるか検出する（ステップＳ６１２）。対象画像内のすべての人物に適当な文字が紐付けられている場合（ステップＳ６１２でＮｏ）、処理フローを終了する。
【０１２１】
何らかの文字が紐付けられていない人物がいる場合（ステップＳ６１２でＹｅｓ）、文字認識部１１５が前後ｎ枚ずつの参照画像内の何らかの文字が紐付けられた人物を検出する（ステップＳ６１３）。
【０１２２】
参照画像内で何らかの文字が紐付けられた人物がいる場合（ステップＳ６１３でＹｅｓ）、特徴量算出部１２１が対象画像内の文字が紐付けられていない人物の特徴量を算出する（ステップＳ６１４）。参照画像内で何らかの文字が紐付けられた人物がいない場合（ステップＳ６１３でＮｏ）、処理フローを終了する。
【０１２３】
次に、特徴量算出部１２１が参照画像内で何らかの文字が紐付けられた人物の特徴量を算出する（ステップＳ６１５）。
【０１２４】
特徴量比較部１２２が対象画像の文字が紐付けられていない人物の特徴量と、参照画像内で文字が紐付けられた人物の各特徴量において、それぞれの類似度を算出する（ステップＳ６１６）。
【０１２５】
そしてステップＳ５１６で算出された類似度の中から、特徴量比較部１２２が、類似度の最大値を算出する（ステップＳ６１７）。
【０１２６】
類似度の最大値が、事前に決定づけられた閾値以上あるかを判断する（ステップＳ６１８）。閾値以上の場合（ステップＳ６１８でＹｅｓ）は、文字紐付け部１２３が参照画像内の最大値にあたる特徴量に対応する人物に紐付けられた文字を、対象画像内の文字が紐付けられていない人物に紐付けする（ステップＳ６１９）。閾値未満の場合（ステップＳ６１８でＮｏ）は、処理フローを終了する。
【０１２７】
以上、説明したとおり、本発明の第２の実施形態によれば、ボトルネックとなりうる処理を多重化することによって、スレッドが待ち状態になる回数を低減することが可能である。
【０１２８】
［第３の実施形態］
＜画像処理装置７００の構成＞
図７は、本発明の第３の実施形態による画像処理装置７００の一例を示すブロック図である。第３の実施形態では、複数枚処理２０１で最適な処理パラメータを算出し、その後の処理へ反映することで、さらに処理を高速化することを説明する
【０１２９】
画像読み込み部１０１〜文字紐付け部１２３および処理制御部１３０までは、画像処理装置１００と同様の構成であるため、説明を省略する。画像処理装置７００の複数枚処理部１２０は、画像処理装置１００の構成に加え、不適文字検出部１２４、最適パラメータ算出部１２５を備える。
【０１３０】
ゼッケンの一部が手などによって隠れている場合、ゼッケン番号を正しく読み取ることができない。不適文字検出部１２４は、複数枚の入力画像間で類似度を算出した際に、類似度が高い画像や被写体であるが、ゼッケン番号が同様ではない場合に、番号の一部が隠れている場合などと判断し、不適なゼッケン番号であると検出する。
【０１３１】
最適パラメータ算出部１２５は、不適文字検出部１２４の検出結果に基づいて、各種の最適な処理パラメータを算出する。例えば、ゼッケン文字領域検出部１１３において、手などによって隠れている領域を推定して、検出する領域を拡大させるなどの補正を行う。
【０１３２】
＜画像処理装置７００の処理状態＞
図８は、図７に示す画像処理装置７００が、並列処理を行いながら、ゼッケン番号と対象画像との紐付けを行うまでを説明するための第３の実施形態の処理状態図である。
【０１３３】
一枚処理２００は画像読み込み部１０１、画像ソート部１０２および一枚処理部１１０が実行する各処理を表している。画像読み込み部１０１および画像ソート部１０２が処理する画像生成処理２０２、被写体検出部１１１が処理する人物検出処理２０３、ゼッケン領域推定部１１２およびゼッケン文字領域検出部１１３が処理する文字領域検出処理２０４、画像処理部１１４および文字認識部１１５が処理する文字認識処理２０５、文字認識部１１５が処理する文字紐付け処理２０６から構成される。
【０１３４】
複数枚処理２０１は複数枚処理部１２０が実行する処理を表している。特徴量算出部１２１、特徴量比較部１２２および文字紐付け部１２３が処理する特徴量算出比較処理２０７、不適文字検出部１２４および最適パラメータ算出部１２５が処理する最適パラメータ算出処理８０８からなる。
【０１３５】
入力画像Ａ用スレッド８１０〜入力画像Ｉ用スレッド８１８（以降「スレッド８１０〜スレッド８１８」と記載）は、画像ソート部１０２にて撮影時間等でソートされた画像Ａ〜画像Ｉを読み込んだスレッドである。ここで、入力画像の順番は、撮影時間の古い順に画像Ａから画像Ｉとして説明するが、必ずしも古い順である必要はなく、新しい順に処理を行ってもよい。各スレッドはグローバルメモリに記録され、他のスレッドの状態を監視することができる。
【０１３６】
状態８２０〜状態８２８は、スレッド８１０〜スレッド８１８が、画像生成処理２０２〜特徴量算出比較処理２０７および最適パラメータ算出処理８０８によって処理されている状態を示す。ここで、状態８２２、状態８２４〜状態８２８は、各スレッドの画像が対応する一枚処理２００または複数枚処理２０１で処理中であることを表す（黒丸にて表記）。状態８２０〜状態８２１、状態８２３は、各スレッドの画像が対応する一枚処理２００または複数枚処理２０１で処理完了の状態であることを表す（白丸にて表記）
【０１３７】
ここで、状態８２４〜状態８２８は、スレッド８１０の最適パラメータ算出処理８０８の結果によって生成された最適化された処理パラメータを用いて、各処理を実行していることを黒丸または白丸のサイズを拡大して示す。また、状態８２３は、最適化された処理パラメータを用いて処理が完了したことを示す。
【０１３８】
＜画像処理装置７００の処理フロー＞
図９は、図７に示す画像処理装置７００が、並列処理を行いながらゼッケン番号と対象画像との紐付けを行うまでの第３の実施形態を説明するためのフローチャートである。
【０１３９】
以下の説明において、第１の実施形態と同様に、対象とする入力画像を対象画像、ソートによって対象画像と連続し、時間的に連続した前後ｎ枚ずつの入力画像を参照画像とする。
【０１４０】
まず、撮影画像全体の処理について図９Ａのフローチャートを用いて説明する。
【０１４１】
画像生成処理２０２を行う。具体的には、画像読み込み部１０１が処理パラメータを読み込み、入力画像として対象画像および前後ｎ枚ずつの（２ｎ＋１）枚の読み込みを行い処理を開始し、画像ソート部１０２が読み込んだ（２ｎ＋１）枚を撮影時間などに基づき時間的に連続した画像としてソートを行う（ステップＳ９０１）。ここで画像読み込み部１０１は、画像が圧縮されている場合に圧縮画像の解凍を行う。また、解凍したイメージを回転補正してもよい。
【０１４２】
一枚処理部１１０および複数枚処理部１２０が、入力画像として読み込んだ（２ｎ＋１）枚について図７で説明したように並列で処理を行う（ステップＳ９０２）。詳細は図８Ｂで後述する。
【０１４３】
複数枚処理部１２０が、すべての撮影画像について処理を完了したか判断する（ステップＳ９０３）。処理が完了した場合（ステップＳ９０３でＹｅｓ）は、処理フローを終了する。すべての撮影画像について処理が完了していない場合（ステップＳ９０３でＮｏ）は、ステップＳ９０４へ進む。
【０１４４】
不適文字検出部１２４が、特徴量の類似度が高い画像間で、同様のゼッケン番号が存在していない適切でないゼッケン番号を抽出する（ステップＳ９０４）。ここで、適切でないゼッケン番号とは、例えば、影などによって正しく数字が認識されなかったゼッケン番号などである。
【０１４５】
最適パラメータ算出部１２５が、不適文字検出部１２４の検出結果に基づいて最適な処理パラメータを算出する（ステップＳ９０５）。
【０１４６】
ステップＳ８０５で算出した新たな処理パラメータは、例えば、コンピュータのグローバルなメモリやファイルに書き込まれる（ステップＳ９０６）。ステップＳ９０１へ戻り次のスレッドは新たな処理パラメータに基づいて各処理を行う。
【０１４７】
次に、ステップＳ９０２の処理について図９Ｂのフローチャートを用いて説明する。
【０１４８】
ステップＳ９１１〜ステップＳ９１８までは一枚処理部１１０が行う処理であり、ステップＳ９１９〜ステップＳ９２７は複数枚処理部１２０が行う処理である。
【０１４９】
まず、人物検出処理２０３を行う。被写体検出部１１１が読み込んだ対象画像のラスターイメージ全体をスキャンし、人物の可能性がある画像領域が存在するか判断する（ステップＳ９１１）。
【０１５０】
対象画像内に人物の可能性がある画像領域が存在する場合（ステップＳ９１１でＹｅｓ）は、ステップＳ９１２へ進む。対象画像内に人物の可能性がある画像領域が存在しない場合（ステップＳ９１１でＮｏ）は、処理フローを終了する。
【０１５１】
被写体検出部１１１が対象画像内の人物の可能性がある画像領域から人物を検出する（ステップＳ９１２）。
【０１５２】
ステップＳ９１３〜ステップＳ９１５は文字領域検出処理２０４である。
【０１５３】
ゼッケン領域推定部１１２は、被写体検出部１１１が検出した人物領域毎にゼッケン文字領域が含まれていると推定してスキャンする領域を決定する（ステップＳ９１３）。スキャンする領域は、入力画像の上下および人物領域の幅より決定し、人物の顔より下方向の領域に設定する。ここで、被写体検出部１１１が用いる検出方法によってスキャンする領域の上下サイズおよび幅を変更してもよい。
【０１５４】
人物毎に決定されたスキャンする領域から、ゼッケン文字領域検出部１１３がゼッケン文字領域を検出する（ステップＳ９１４）。ゼッケン文字領域の候補として、数字や文字などのゼッケン番号と予想される画像領域を検出し、一文字または複数文字を含む画像領域を検出する。ここでゼッケン番号と表現しているが、数字に限定されるものではない。
【０１５５】
対象画像内のすべての人物に対して、ゼッケン文字領域検出部１１３が画像領域を検出したかを判断し（ステップＳ９１５）、未検出の人物が存在する場合(ステップＳ９１５でＮｏ)は、ステップＳ８１３の処理に戻り、すべての人物に対してゼッケン文字領域の検出を行う。
【０１５６】
ステップＳ９１６〜ステップＳ９１７は、文字認識処理２０５である。
【０１５７】
対象画像内のすべての人物についてゼッケン文字領域の検出が終了(ステップＳ９１５でＹｅｓ)すると、検出した各ゼッケン文字領域に対して、画像処理部１１４が文字認識を行うための前処理となる画像処理を行う（ステップＳ９１６）。
【０１５８】
すべてのゼッケン文字領域の画像処理が終了すると、各ゼッケン文字領域に対して、文字認識部１１５が文字認識を行う（ステップＳ９１７）。
【０１５９】
文字紐付け処理２０６を行う。文字認識部１１５が文字認識の結果を人物画像に対して紐付ける（ステップＳ９１８）。
【０１６０】
すべてのゼッケン文字領域の文字認識が終了すると１枚の入力画像（ここでは対象画像）の処理を終了する。
【０１６１】
同様に前後ｎ枚ずつの参照画像においても、ステップＳ９１１〜ステップＳ９１８の人物検出と文字認識を行い、人物画像に対して紐付けられた文字の結果を得ることができる。
【０１６２】
ここまでの入力画像についての一枚処理２００に関するステップＳ９０１、ステップＳ９１１〜Ｓ９１８では、各処理がそれぞれの画像と結び付けられたスレッドに対して、並列して動作し、先の処理が完了したことを確認して、それぞれのスレッドが処理を進める。
【０１６３】
対象画像は、複数枚処理２０１である特徴量算出比較処理２０７へ移る。
【０１６４】
複数枚処理部１２０を実行するスレッドが、対象画像と同様に参照画像について文字認識の結果について紐付けを終えているか判断する（ステップＳ９１９）。対象画像と参照画像について紐付けがすべて終わっている場合はステップＳ９２０へ進む。終わっていない場合はステップＳ８１９へ戻り、対象画像および参照画像の（２ｎ＋１）枚の紐付けが終わるまで待機し、複数のスレッド間で同期の処理を行う。同期の処理を行うことで文字認識の結果について紐付けが終わっている参照画像を利用した複数枚処理部１２０の処理を行うことができる。
【０１６５】
文字認識部１１５が対象画像内で文字が紐付けられていない人物がいるか検出する（ステップＳ９２０）。対象画像内のすべての人物に適当な文字が紐付けられている場合（ステップＳ９２０でＮｏ）、処理フローを終了する。
【０１６６】
何らかの文字が紐付けられていない人物がいる場合（ステップＳ９２０でＹｅｓ）、文字認識部１１５が前後ｎ枚ずつの参照画像内の何らかの文字が紐付けられた人物を検出する（ステップＳ９２１）。
【０１６７】
参照画像内で何らかの文字が紐付けられた人物がいる場合（ステップＳ９２１でＹｅｓ）、特徴量算出部１２１が対象画像内の文字が紐付けられていない人物の特徴量を算出する（ステップＳ９２２）。参照画像内で何らかの文字が紐付けられた人物がいない場合（ステップＳ９２１でＮｏ）、処理フローを終了する。
【０１６８】
次に、特徴量算出部１２１が参照画像内で何らかの文字が紐付けられた人物の特徴量を算出する（ステップＳ９２３）。
【０１６９】
特徴量比較部１２２が対象画像の文字が紐付けられていない人物の特徴量と、参照画像内で文字が紐付けられた人物の各特徴量において、それぞれの類似度を算出する（ステップＳ９２４）。類似度は、例えば値１００を持って規格化され、類似度が高いほどそれぞれの特徴量が酷似しており、同一人物である可能性が高い事を示している。
【０１７０】
そしてステップＳ９２４で算出された類似度の中から、特徴量比較部１２２が、類似度の最大値を算出する（ステップＳ９２５）。
【０１７１】
類似度の最大値が、事前に決定づけられた閾値以上あるかを判断する（ステップＳ９２６）。閾値以上の場合（ステップＳ９２６でＹｅｓ）は、文字紐付け部１２３が参照画像内の最大値にあたる特徴量に対応する人物に紐付けられた文字を、対象画像内の文字が紐付けられていない人物に紐付けする（ステップＳ９２７）。閾値未満の場合（ステップＳ９２６でＮｏ）は、処理フローを終了する。
【０１７２】
ここで、類似度の閾値は、機械学習等によって算出された固定の値でもよく。また、顔向き毎に閾値を変えてもよい。また対象画像の解像度や状態等によって、動的に変化させることも可能である。
【０１７３】
以上、説明したとおり、本発明の第３実施形態によれば、並列処理における先の処理結果に基づいて、最適にパラメータを生成し、その後の処理に反映させることにより、より精度の高い結果を算出することができる。
【０１７４】
以上、本発明について実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
【０１７５】
実施に当たっては、第１の実施形態〜第３の実施形態の何れかを用いてもよいし、何れか複数を組み合わせてもよい。
【０１７６】
以上のように第１の実施形態〜第３の実施形態によれば、イベント参加者の写真にゼッケン文字を紐付けするシステムにおいて、並列処理させ一枚処理では非同期で処理を行い、複数枚処理で一枚処理の終了を待機し同期をとることによって、従来の処理と比較し高速に処理することができ、ゼッケン番号の認識精度を向上させることが可能である。
【０１７７】
なお、上述した実施例では、スレッドが自スレッドに前後するスレッドの状態を監視し、処理の待機や同期をとるとしたが、これに限定したものではない。例えば、処理制御部１３０がスレッド全体を監視・管理することで、複数のスレッド間の非同期および同期をとることが可能である。
【０１７８】
また、本発明の目的は、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
【０１７９】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【０１８０】
また、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されるように構成してもよい。
【０１８１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【０１８２】
なお、プログラムコードを供給するため、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤやＤＶＤに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【０１８３】
１０１：画像読み込み部
１０２：画像ソート部
１１０：一枚処理部
１１１：被写体検出部
１１２：ゼッケン領域推定部
１１３：ゼッケン文字領域検出部
１１４：画像処理部
１１５：文字認識部
１２０：複数枚処理部
１２１：特徴量算出部
１２２：特徴量比較部
１２３：文字紐付け部
１２４：不適文字検出部
１２５：最適パラメータ算出部
１３０：処理制御部
【図１】
0006662582.tif 000002
【図２】
0006662582.tif 000003
【図３】
0006662582.tif 000004
【図４】
0006662582.tif 000005
【図５】
0006662582.tif 000006
【図６】
0006662582.tif 000007
【図７】
0006662582.tif 000008
【図８】
0006662582.tif 000009
【図９】
0006662582.tif 000010