(57)【要約】【課題】エッジコードに基づくパターンマッチングをより小さい回路構成で、かつ比較的高速に実現可能な画像処理装置および画像処理方法を提供する。【解決手段】本実施の形態に従う画像処理装置においては、有効区間がもつ情報量をエッジコード画像全体に拡散させる。すなわち、各画素に割当てるビット数を低減するとともに、各画素に割当てたビット数を全体として有効に利用することで、エッジコード画像全体に用いられる情報量を圧縮する。エッジコード値のプロファイルにおいて、エッジＥＤＧ１についての有効区間、それに引き続く無効なエッジコード値が連続する無効区間、およびそれに引き続くエッジＥＤＧ２についての有効区間が表れた場合に、エッジＥＤＧ１についての有効区間に含まれるエッジコード値からエッジＥＤＧ２についての有効区間に含まれるエッジコード値までの増減情報を、無効区間に対応する要素に割当てる。【選択図】図９
2010217990.tif 000002
【特許請求の範囲】
【請求項１】
入力画像の濃淡値に基づいてエッジコード画像を生成する生成部を備え、前記エッジコード画像に含まれる各要素は、エッジコード値と当該エッジコード値の有効／無効を示す情報とを有し、
その有するエッジコード値が無効である要素に対して、その有するエッジコード値が有効である要素についての当該エッジコード値を表わす情報を割当てることで、前記エッジコード画像を圧縮する圧縮部と、
圧縮後の前記エッジコード画像を順次記憶する記憶部と、
前記記憶部に記憶される前記圧縮後のエッジコード画像を復元する復元部と、
前記復元部により復元されたエッジコード画像と予め定められたモデル画像との類似度を算出する比較部とを備える、画像処理装置。
【請求項２】
前記生成部には、前記入力画像に含まれる各画素の濃淡値が所定順序で入力され、
前記生成部は、濃淡値の入力毎に前記エッジコード値を順次生成し、
前記圧縮部は、その有するエッジコード値が有効である要素より先に生成され、かつその有するエッジコード値が無効である、要素に対応付けて、当該有効なエッジコード値を特定するための情報を出力する、請求項１に記載の画像処理装置。
【請求項３】
前記圧縮部は、順次出力される前記エッジコード値のプロファイルにおいて、有効なエッジコード値が連続する第１の区間、前記第１の区間に引き続く無効なエッジコード値が連続する第２の区間、および前記第２の区間に引き続く有効なエッジコード値が連続する第３の区間が表れた場合に、前記第１の区間に含まれるエッジコード値から前記第３の区間に含まれるエッジコード値までの増減情報を、前記第２の区間に対応する要素に対応付けて出力する、請求項１または２に記載の画像処理装置。
【請求項４】
前記圧縮部は、
前記生成部により生成される前記エッジコード値が所定周期で順次入力される直列接続された複数の第１の遅延素子と、
前記生成部により生成される前記エッジコード値の有効／無効を示す情報が前記所定周期で順次入力される直列接続された複数の第２の遅延素子と、
前記複数の第２の遅延素子に保持されている前記エッジコード値の有効／無効を示す情報のうち、有効を示す情報が格納されている第２の遅延素子の位置を特定する位置特定部と、
前記複数の第１の遅延素子に保持されている前記エッジコード値のうち、前記位置特定部によって特定された位置に対応する第１の遅延素子に保持されているエッジコード値を抽出する抽出部と、
前回の周期において前記抽出部が抽出したエッジコード値と、今回の周期において前記抽出部が抽出したエッジコード値との差分を増減情報として順次出力する差分算出部とを含む、請求項１〜３のいずれか１項に記載の画像処理装置。
【請求項５】
前記復元部は、順次出力される前記増減情報を積算する積算部を含む、請求項４に記載の画像処理装置。
【請求項６】
前記復元部は、
前記記憶部の所定位置に保持されるエッジコード値が前記所定周期で順次入力される直列接続された複数の第３の遅延素子と、
前記複数の第３の遅延素子のうち、前記モデル画像に含まれる相対位置情報に応じた遅延素子に保持されるエッジコード値を前記積算部へ出力する選択部とを含む、請求項５に記載の画像処理装置。
【請求項７】
前記モデル画像は、前記類似度の算出を行なうための評価位置におけるエッジコード値と、当該評価位置と他の評価位置との間の相対的な位置の差を示す前記相対位置情報とを含む、請求項６に記載の画像処理装置。
【請求項８】
前記生成部は、
前記入力画像の各画素におけるエッジ強度を検出する検出部と、
前記検出部で検出されたエッジ強度が所定値を超える場合に、対応するエッジコード値が有効であることを示す情報を出力する判定部とを含む、請求項１〜７のいずれか１項に記載の画像処理装置。
【請求項９】
入力画像の濃淡値に基づいてエッジコード画像を生成するステップを備え、前記エッジコード画像に含まれる各要素は、エッジコード値と当該エッジコード値の有効／無効を示す情報とを有し、
その有するエッジコード値が無効である要素に対して、その有するエッジコード値が有効である要素についての当該エッジコード値を表わす情報を割当てることで、前記エッジコード画像を圧縮するステップと、
圧縮後の前記エッジコード画像を順次記憶するステップと、
記憶される前記圧縮後のエッジコード画像を復元するステップと、
復元されたエッジコード画像と予め定められたモデル画像との類似度を算出するステップとを備える、画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、パターンマッチング処理等を行なうための画像処理装置および画像処理方法に関するものである。
【背景技術】
【０００２】
従来から、ＦＡ（Factory Automation）分野などにおいては、対象物（以下、「対象ワーク」とも称す。）を撮像した入力画像に対して、予め登録された標準パターン（以下、「モデル画像」とも称す。）に基づくパターンマッチング処理が用いられている。このようなパターンマッチング処理により、対象ワークに現れるキズやゴミなどの欠陥を検出したり、モデル画像と類似している対象ワーク上の部分を探し出したりすることができる。
【０００３】
このようなパターンマッチング処理では、対象ワークを撮像することで得られる入力画像にウィンドウを設定し、このウィンドウ内の部分画像（画像情報）と予め登録されたモデル画像とを比較する必要がある。一方、撮像装置からは、各画素の画像情報（典型的には、８ｂｉｔの濃淡値）が所定の走査方向に沿って順次出力される。すなわち、設定するウィンドウに含まれる画素の画像情報は、同じタイミングではなく、遅延時間をもって時系列に出力されることになる。
【０００４】
そのため、このような時間的なずれを解消するために、所定量（典型的には、１画面分）のバッファメモリを用意しておき、このバッファメモリに撮像装置からの画像情報を順次記憶するとともに、記憶した画像情報に対してパターンマッチング処理を実行する。そのため、パターンマッチング処理を行なう画像処理装置では、回路構成が大型化および複雑化するという課題がある。
【０００５】
このような課題に対して、国際公開第９３／１８４７１号パンフレット（特許文献１）には、ハードウェアの小型化を図ることのできる画像処理装置などが開示されている。この画像処理装置においては、１画素当り第１の所定ビット数で表される入力画像データを第１の所定ビット数よりも少ない第２の所定ビット数で表される擬似中間調画像データに変換した上でライン・メモリに格納する。これにより、ハードウェアの小型化を実現する。
【０００６】
ところで、パターンマッチング処理の新たな方法として、入力画像において濃淡値（明るさ）の変化がある部分（以下、「エッジ（部分）」とも称す。）を抽出するとともに、エッジの変化方向を示す値（以下、「エッジコード」もしくは「ＥＣ（Edge Code）」とも称す。）に基づいてパターンマッチングを行なうことが開示されている（たとえば、特開２００２−２３０５４９号公報（特許文献２））。このようなエッジコードを用いることで、入力画像の撮像時における影響（たとえば、影の映り込みや照明ムラ）があっても、モデル画像と類似する部分を的確に探し出すことができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第９３／１８４７１号パンフレット
【特許文献２】特開２００２−２３０５４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述の国際公開第９３／１８４７１号パンフレット（特許文献１）に開示される画像処理装置は、入力画像の濃淡値に基づいてパターンマッチング処理を行なう構成であり、エッジコードに基づくパターンマッチングに向けられたものではなかった。そのため、上述のようなエッジコードに基づくパターンマッチング処理を行なうためには、回路構成が大型化および複雑化してしまうという課題があった。また、プロセッサを用いたソフトウェア処理で実現した場合には、ハードウェアに比較して処理時間が長くなるという課題もある。
【０００９】
そこで、この発明は、かかる問題を解決するためになされたものであり、その目的は、エッジコードに基づくパターンマッチングをより小さい回路構成で、かつ比較的高速に実現可能な画像処理装置および画像処理方法を提供することである。
【課題を解決するための手段】
【００１０】
この発明のある局面に従う画像処理装置は、入力画像の濃淡値に基づいてエッジコード画像を生成する生成部を含む。ここで、エッジコード画像に含まれる各要素は、エッジコード値と当該エッジコード値の有効／無効を示す情報とを有する。画像処理装置は、さらに、その有するエッジコード値が無効である要素に対して、その有するエッジコード値が有効である要素についての当該エッジコード値を表わす情報を割当てることで、エッジコード画像を圧縮する圧縮部と、圧縮後のエッジコード画像を順次記憶する記憶部と、記憶部に記憶される圧縮後のエッジコード画像を復元する復元部と、復元部により復元されたエッジコード画像と予め定められたモデル画像との類似度を算出する比較部とを含む。
【００１１】
好ましくは、生成部には、入力画像に含まれる各画素の濃淡値が所定順序で入力され、生成部は、濃淡値の入力毎にエッジコード値を順次生成し、圧縮部は、その有するエッジコード値が有効である要素より先に生成され、かつその有するエッジコード値が無効である、要素に対応付けて、当該有効なエッジコード値を特定するための情報を出力する。
【００１２】
好ましくは、圧縮部は、順次出力されるエッジコード値のプロファイルにおいて、有効なエッジコード値が連続する第１の区間、第１の区間に引き続く無効なエッジコード値が連続する第２の区間、および第２の区間に引き続く有効なエッジコード値が連続する第３の区間が表れた場合に、第１の区間に含まれるエッジコード値から第３の区間に含まれるエッジコード値までの増減情報を、第２の区間に対応する要素に対応付けて出力する。
【００１３】
好ましくは、圧縮部は、生成部により生成されるエッジコード値が所定周期で順次入力される直列接続された複数の第１の遅延素子と、生成部により生成されるエッジコード値の有効／無効を示す情報が所定周期で順次入力される直列接続された複数の第２の遅延素子と、複数の第２の遅延素子に保持されているエッジコード値の有効／無効を示す情報のうち、有効を示す情報が格納されている第２の遅延素子の位置を特定する位置特定部と、複数の第１の遅延素子に保持されているエッジコード値のうち、位置特定部によって特定された位置に対応する第１の遅延素子に保持されているエッジコード値を抽出する抽出部と、前回の周期において抽出部が抽出したエッジコード値と、今回の周期において抽出部が抽出したエッジコード値との差分を増減情報として順次出力する差分算出部とを含む。
【００１４】
さらに好ましくは、復元部は、順次出力される増減情報を積算する積算部を含む。
さらに好ましくは、復元部は、記憶部の所定位置に保持されるエッジコード値が所定周期で順次入力される直列接続された複数の第３の遅延素子と、複数の第３の遅延素子のうち、モデル画像に含まれる相対位置情報に応じた遅延素子に保持されるエッジコード値を積算部へ出力する選択部とを含む。
【００１５】
さらに好ましくは、モデル画像は、類似度の算出を行なうための評価位置におけるエッジコード値と、当該評価位置と他の評価位置との間の相対的な位置の差を示す相対位置情報とを含む。
【００１６】
好ましくは、生成部は、入力画像の各画素におけるエッジ強度を検出する検出部と、検出部で検出されたエッジ強度が所定値を超える場合に、対応するエッジコード値が有効であることを示す情報を出力する判定部とを含む。
【００１７】
この発明の別の局面に従う画像処理方法は、入力画像の濃淡値に基づいてエッジコード画像を生成するステップを含む。エッジコード画像に含まれる各要素は、エッジコード値と当該エッジコード値の有効／無効を示す情報とを有する。この画像処理方法は、さらに、その有するエッジコード値が無効である要素に対して、その有するエッジコード値が有効である要素についての当該エッジコード値を表わす情報を割当てることで、エッジコード画像を圧縮するステップと、圧縮後のエッジコード画像を順次記憶するステップと、記憶される圧縮後のエッジコード画像を復元するステップと、復元されたエッジコード画像と予め定められたモデル画像との類似度を算出するステップとを含む。
【発明の効果】
【００１８】
この発明によれば、エッジコードに基づくパターンマッチングをより小さい回路構成で、かつ比較的高速に実行できる。
【図面の簡単な説明】
【００１９】
【図１】この発明の実施の形態１に従うパターンマッチング処理システム１の全体構成を示す概略図である。
【図２】この発明の実施の形態に従うエッジコードに基づくパターンマッチング処理の概要を説明するための図である。
【図３】この発明の実施に従うエッジコードの算出手順を説明するための図である。
【図４】この発明の実施の形態に従うパターンマッチング処理（サーチ処理）の概要を説明するための図である。
【図５】この発明の実施の形態に従う撮像装置から出力される入力画像の順序を示す図である。
【図６】この発明の実施に従う撮像装置からの入力画像の出力に用いられるタイミング信号を示す図である。
【図７】この発明の実施の形態に従う画像処理装置における動作概要を説明するための原理図である。
【図８】この発明の実施の形態に従うエッジコードの圧縮／復元処理を説明するための図である。
【図９】図８に示す入力画像のＩＸ−ＩＸ線に沿ってエッジコード抽出処理の結果を示す図である。
【図１０】この発明の実施の形態に従うパターンマッチング処理システムのハードウェア構成を示す概略図である。
【図１１】図１０に示すＥＣ画像生成回路のより詳細な構成を示すブロック図である。
【図１２】図１０に示す微分画像生成回路のより詳細な構成を示すブロック図である。
【図１３】図１０に示す画像復元回路のより詳細な構成を示すブロック図である。
【図１４】この発明の実施の形態に従う画像処理装置において登録されるモデル画像の一例を示す模式図である。
【図１５】図１３に示す遅延器のより詳細な構成を示すブロック図である。
【図１６】図１３に示す復元器のより詳細な構成を示すブロック図である。
【図１７】図１０に示す差分演算回路のより詳細な構成を示すブロック図である。
【図１８】図１０に示すモデル保持部で保持されるデータ構造の一例を示す図である。
【図１９】図１８に示すエッジコード値の示す角度を模式的に示す図である。
【図２０】この発明の実施の形態に従うモデル登録の処理手順を示すフローチャートである。
【図２１】この発明の実施の形態に従うパターンマッチング処理システムにおける処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２０】
この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２１】
（全体構成）
図１は、この発明の実施の形態１に従うパターンマッチング処理システム１の全体構成を示す概略図である。図１を参照して、パターンマッチング処理システム１は、画像処理装置１００と撮像装置２００とを含む。このパターンマッチング処理システム１は、代表的に生産ラインなどに組込まれ、対象ワーク２に対して、予め登録されたモデル画像（但し、後述するように「エッジコード画像」が用いられる）に基づくパターンマッチング処理を実行する。
【００２２】
パターンマッチング処理システム１においては、対象ワーク２は、ベルトコンベヤなどの搬送機構６によって搬送され、搬送された対象ワーク２は、撮像装置２００によって所定タイミングで撮像される。撮像装置２００によって撮像されて得られる画像（以下、「入力画像」とも称す。）は、画像処理装置１００へ出力される。画像処理装置１００は、この撮像装置２００から受けた入力画像に対してパターンマッチング処理を実行し、その結果を自身に搭載された表示部において表示したり、その結果を外部装置へ出力したりする。
【００２３】
（エッジコードに基づくパターンマッチング処理）
図２は、この発明の実施の形態に従うエッジコードに基づくパターンマッチング処理の概要を説明するための図である。図２（ａ）には、入力画像の一例を示し、図２（ｂ）には、図２（ａ）に示す入力画像から得られるエッジコード画像を視覚化した一例を示す。
【００２４】
図２（ａ）には、ほぼ均一な背景上にアルファベット「Ａ」を示す領域が存在している。この図２（ａ）に示す入力画像に対してエッジ抽出処理がなされると、エッジ強度の高い部分として、図２（ｂ）に示すようなアルファベット「Ａ」の輪郭に相当する部分（図２（ｂ）の白色の領域）が抽出される。そして、この抽出されたエッジの変化方向を示す値が、当該エッジ位置におけるエッジコード値（ＥＣ値）として算出される。本実施の形態においては、エッジの変化方向を示す値の一例として、エッジの存在する方向（すなわち、図２（ｂ）に示す矢印の向き（角度））がエッジコードとして算出される。
【００２５】
図３は、この発明の実施に従うエッジコードの算出手順を説明するための図である。図３に示すような画像に対して、Ｂ方向に走査してエッジ抽出処理を行なった場合を考える。なお、エッジ抽出処理では、Ｂ方向に存在する各画素について、当該画素の濃淡値およびその周辺の画素の濃淡値に基づいてエッジ強度を検出し、Ｂ方向に対するエッジ強度のプロファイルにおける極大値がエッジとして抽出される。
【００２６】
図３に示す場合には、エッジＥＤＧの一部として座標Ｅ（ｘ，ｙ）が抽出される。そして、抽出された座標Ｅ（ｘ，ｙ）の周辺画素の濃淡値などに基づいて、いずれの方向にエッジＥＤＧが続いているのかが判断される。概略すれば、エッジＥＤＧの座標Ｅ（ｘ，ｙ）における接線ベクトルＣが算出される。そして、この接線ベクトルＣと基準ベクトル（図３に示す例では、Ｂ方向）とのなす角度Ｅｃ（ｘ，ｙ）をエッジコードとして算出する。なお、この角度Ｅｃ（ｘ，ｙ）は、０°〜３６０°を有効範囲として定義してもよいし、０°〜１８０°を有効範囲として定義してもよい。後者の場合には、接線ベクトルＣと基準ベクトルとのなす相対的な角度差となる。
【００２７】
なお、代替の方法として、抽出されたエッジにおける濃淡の変化方向をエッジコードとして算出してもよい。この場合には、図３に示す接線ベクトルＣと直交する方向がエッジコードとなる。
【００２８】
上述のように、エッジとして抽出される各点の位置および対応するエッジコードの大きさとの組み合わせを「エッジコード画像」もしくは「ＥＣ画像」とも称す。すなわち、エッジコード画像を構成する各要素は、入力画像の各座標に対応付けられたエッジコード値を含む。さらに、このエッジコード画像を構成する各要素には、後述するように、有効なエッジコード値の有効／無効を示す情報（典型的には、後述する「有効／無効フラグ」）をさらに含む。すなわち、すべての座標においてエッジが検出されるわけではないので、このような場合には、「有効なエッジコード値ではない」という情報を付与するために、エッジ抽出が試みられた座標に対応付けられた有効／無効フラグの値は、有効なエッジコードが抽出されなかったことを示す値に設定される。
【００２９】
本実施の形態に従う画像処理装置１００においては、パターンマッチング処理に用いられるモデル画像についても、上述のようなエッジコード画像が予め作成されて登録されている。そして、この登録されたモデルについてのエッジコード画像と、入力画像から生成されたエッジコード画像とを比較することで、両者の類似度が算出される。そして、この算出された類似度に基づいて、モデル画像と最も類似する部分がサーチされる。
【００３０】
なお、パターンマッチング処理には、入力画像の全体の大きさより小さい部分画像についてのモデル画像が用いられる。すなわち、予め登録されたモデル画像に相当する大きさのウィンドウが入力画像上に順次設定され、この順次設定される各ウィンドウ内の部分画像のうち、モデル画像との間で最も類似度が高い部分画像の位置がサーチされ、そのサーチにより得られた位置が結果として出力される。
【００３１】
図４は、この発明の実施の形態に従うパターンマッチング処理（サーチ処理）の概要を説明するための図である。図４を参照して、撮像装置２００による撮像によって取得される入力画像ＩＭＧが互いに直交するＸ方向およびＹ方向の２次元に配置されるとする。なお、入力画像ＩＭＧは、Ｈ画素×Ｗ画素のサイズを有するものとする。そして、予め登録されたモデル画像の大きさに相当するウィンドウＷＮを入力画像ＩＭＧの所定方向に沿って順次設定するとともに、それぞれ設定した各ウィンドウＷＮに含まれる部分画像に対して、パターンマッチング処理を順次実行する。ウィンドウＷＮは、典型的には、最も原点に近い頂点の座標を（ｘ，ｙ）として、Ｍ画素×Ｎ画素の範囲に設定される。
【００３２】
このようなウィンドウＷＮを用いたサーチ処理を実行することで、入力画像ＩＭＧにおいて、モデル画像と最も類似する位置（領域）が特定される。
【００３３】
（入力画像の出力処理）
上述した撮像装置２００からは、入力画像を示す画像信号が所定の走査方向に沿って、時系列で順次出力される。以下、この画像信号の出力について、図５および図６を参照して説明する。
【００３４】
図５は、この発明の実施の形態に従う撮像装置２００から出力される入力画像の順序を示す図である。図６は、この発明の実施に従う撮像装置２００からの入力画像の出力に用いられるタイミング信号を示す図である。
【００３５】
図５を参照して、典型的に、撮像装置２００は、水平走査（Ｘ方向に走査）および垂直走査（Ｙ方向に走査）を組み合わせて、入力画像ＩＭＧの各画素を表わす画素情報（濃淡値）を順次出力する。すなわち、撮像装置２００は、まず、入力画像ＩＭＧの１ライン目を水平走査した画素情報を出力する。続いて、撮像装置２００は、２ライン目を水平走査した画素情報を出力する。以下、同様にして、垂直方向に隣接するラインについて水平走査を繰返す。なお、インターレース（飛び越し走査）を行なう場合には、１ライン（もしくは、複数のライン）おきに水平走査を行なう。
【００３６】
図６を参照して、上述のような画素情報の出力（読出し）は、クロック信号ＣＬに同期して行なわれる。すなわち、１周期分のクロック信号ＣＬに対応して、入力画像に含まれる１画素分の画素情報が出力される。
【００３７】
撮像装置２００からは、上述のような水平走査を制御するために、水平同期信号ＨＤが出力される。この水平同期信号ＨＤの１周期の長さは、入力画像ＩＭＧの１ライン分の水平走査を行なう期間と次のラインの水平走査を行なうための準備期間（以下、「水平ブランク期間」とも称す。）とを合算した期間に相当する。なお、水平ブランク期間は、テレビ信号における「水平帰線期間」に相当する。図６に示す例においては、水平同期信号ＨＤが「Ｈｉ」から「Ｌｏ」に変化したタイミングで、対応するラインの水平走査が開始される。すなわち、水平同期信号ＨＤは、１画面分の入力画像を出力する期間において、入力画像に含まれるライン数だけ「Ｈｉ」から「Ｌｏ」に変化することになる。
【００３８】
全ラインに対する水平走査が完了すると、１画面分の入力画像の出力が完了したことになる。このとき、水平走査の開始位置を１ライン目に復帰させる必要がある。そのため、撮像装置２００からは、水平同期信号ＨＤに加えて、上述のような垂直走査を制御するために、垂直同期信号ＶＤが出力される。図６に示す例においては、垂直同期信号ＶＤが「Ｈｉ」から「Ｌｏ」に変化したタイミングで、１ライン目の水平走査が開始されて、新たな入力画像の入力が開始される。すなわち、垂直同期信号ＶＤは、１画面分の入力画像を出力する期間において、１回だけ「Ｈｉ」から「Ｌｏ」に変化することになる。
【００３９】
（処理動作概要）
次に、図７を参照して、本実施の形態に従う画像処理装置１００における処理動作について説明する。本実施の形態に従う画像処理装置１００は、１枚の入力画像に対するパターンマッチング処理に要する時間が、当該１枚の入力画像の撮像装置２００から画像処理装置１００への入力に要する時間とほぼ等しくなるように、動作する。なお、このような処理を「リアルタイム処理」とも称す。すなわち、１枚の入力画像に含まれる１つの画素の画像情報が画像処理装置１００に入力される毎に、ある位置に設定されたウィンドウにおけるパターンマッチング処理を同期実行する。
【００４０】
図７は、この発明の実施の形態に従う画像処理装置１００における動作概要を説明するための原理図である。図７を参照して、画像処理装置１００は、撮像装置２００から与えられる各画素の画像情報をＦＩＦＯ（First In First Out）で順次格納するラインバッファ３００を含む。このラインバッファ３００の所定位置に対応付けて、Ｍ個の遅延器３０２が設けられる。遅延器３０２の各々は、ラインバッファ３００上の所定位置にある連続するＮ画素に対してエッジコードを算出する。ここで、Ｍ個の遅延器３０２同士の相対的な位置関係は、図４に示すウィンドウＷＮの大きさ（Ｍ画素×Ｎ画素）に対応するように定められる。典型的には、ある遅延器３０２と隣接する遅延器３０２との間は、図４に示すあるライン上のウィンドウＷＮの端から隣接する次のライン上のウィンドウ右端までに相当する画素数だけ離れている。
【００４１】
それぞれの遅延器３０２からはエッジコード値が並列出力される。パターンマッチング回路３０４は、これらの遅延器３０２から並列出力されるエッジコード値を一括して評価することで、入力画像のある位置に設定されたウィンドウＷＮにおけるパターンマッチング処理を行なう。
【００４２】
さらに、撮像装置２００から与えられる入力画像に含まれる各画素の画像情報は、ラインバッファ３００の紙面左側から順次入力され、時間の経過とともに、全体的に紙面右側に移動していく。ここで、ラインバッファ３００に対する遅延器３０２の位置関係は固定であるので、入力画像が全体的に移動することによって、入力画像に対するウィンドウＷＮの位置が実質的に順次移動することとなる。
【００４３】
したがって、本実施の形態に従う画像処理装置１００では、それぞれの遅延器３０２によるエッジコードの出力およびパターンマッチング回路３０４によるパターンマッチング処理を、入力画像に含まれる各画素の画像情報の入力周期で同期実行することで、上述したようなリアルタイム処理を実現する。
【００４４】
（エッジコード画像の圧縮／復元）
後述するように、本実施の形態に従う画像処理装置１００では、エッジコード画像を圧縮した上で記憶部に順次記憶するとともに、記憶した圧縮後のエッジコード画像の一部を復元し、その復元されたエッジコード画像に基づいてパターンマッチング処理を行なう。このようなエッジコード画像の圧縮／復元処理を用いることで、回路構成をコンパクト化する。なお、本実施の形態において「エッジコード画像の圧縮」とは、エッジコード画像に含まれる有効な情報を維持したままその情報量を低減する処理を意味する。
【００４５】
本実施の形態においては、エッジコード画像に含まれる各要素は、エッジコード値および当該エッジコード値の有効／無効を示す有効／無効フラグを含む。すなわち、エッジコード画像には、有効なエッジコード値と無効なエッジコード値とが混在することとなる。そこで、本実施の形態に従う画像処理装置１００は、その有するエッジコード値が無効である要素に対して、その有するエッジコード値が有効である要素についての当該エッジコード値を表わす情報を割当てることで、エッジコード画像を圧縮する。以下の説明では、このような圧縮の具体的な実現例として、一連のエッジコード値に対する微分（差分）を用いて圧縮を行なう構成について例示する。なお、上述のような原理を用いるものであれば、これ以外の任意の方法を採用することができる。
【００４６】
以下、このエッジコード画像の圧縮／復元処理について説明する。
図８は、この発明の実施の形態に従うエッジコードの圧縮／復元処理を説明するための図である。図９は、図８に示す入力画像ＩＭＧのＩＸ−ＩＸ線に沿ってエッジコード抽出処理の結果を示す図である。
【００４７】
まず、図８に示すような対象ワークを撮像した入力画像ＩＭＧを考える。この図８に示す入力画像ＩＭＧ上のＩＸ−ＩＸ線に沿ってエッジコード抽出処理を実行すると、３つのエッジＥＤＧ１，ＥＤＧ２，ＥＤＧ３の近傍で有効なエッジコード値が取得される。その結果、図９に示すような、ＩＸ−ＩＸ線上のエッジコード値によって構成されるエッジコード画像が得られる。言い換えれば、入力画像ＩＭＧ上のエッジＥＤＧ１，ＥＤＧ２，ＥＤＧ３から離れた部分では、エッジコード値は無効となる。
【００４８】
一般的に、対象ワークはある程度の物理的な大きさを有しているので、対象ワークを撮像して得られる入力画像においては、少ない画素間隔でエッジコード値が大きく変化することは少ない。すなわち、エッジコード値が大きく変化するためには、エッジの向き、すなわち対象ワークの輪郭やその表面の構造など物理的に変化している必要があるが、その変化量はおのずから制限される。
【００４９】
そのため、図９に示すエッジコード値のプロファイルのうち、エッジＥＤＧ１，ＥＤＧ２，ＥＤＧ３の近傍のみが有効なエッジコード値をもち、それ以外の区間は無効なエッジコード値をもつ。すなわち、図９に示すエッジコード画像のプロファイルでは、エッジコード値の有効区間（実線部分）とエッジコード値の無効区間（一点鎖線部分）とが交互に現れることになる。このエッジコード画像のプロファイルについて考えると、有効区間にのみ集中的に情報量が割当てられ、無効区間には実質的に情報量が存在しない。そのため、有効区間および無効区間のいずれについても、各画素あたり同じビット数を割当ててしまうと、無効区間に割当てられたビット数が無駄になる。
【００５０】
そのため、本実施の形態に従う画像処理装置１００においては、有効区間がもつ情報量をエッジコード画像全体に拡散させる。すなわち、各画素に割当てるビット数を低減するとともに、各画素に割当てたビット数を全体として有効に利用することで、エッジコード画像全体に用いられる情報量を圧縮する。
【００５１】
言い換えれば、本実施の形態に従う画像処理装置１００は、順次出力されるエッジコード値のプロファイルにおいて、有効なエッジコード値が連続するエッジＥＤＧ１についての有効区間、エッジＥＤＧ１についての有効区間に引き続く無効なエッジコード値が連続する無効区間、および無効区間に引き続く有効なエッジコード値が連続するエッジＥＤＧ２についての有効区間が表れた場合に、エッジＥＤＧ１についての有効区間に含まれるエッジコード値からエッジＥＤＧ２についての有効区間に含まれるエッジコード値までの増減情報を、無効区間に対応する要素に割当てる。
【００５２】
すなわち、有効なエッジコード値を有する要素より先に生成され、かつ無効なエッジコード値を有する要素に対応付けて、当該有効なエッジコード値を特定するための情報が割当てられる。
【００５３】
このように、有効区間がもつ情報量をエッジコード画像全体に拡散させる方法としては、種々の方法を採用することができるが、本実施の形態では、エッジコード画像のプロファイルを微分（差分）することで得られる増減情報（微分画像）を用いる。すなわち、エッジコード画像を構成する一連の要素について、隣接する要素間の変化分だけを情報として保持しておき、パターンマッチング処理を行なう場合に、必要な部分のエッジコード画像に復元する。
【００５４】
より具体的には、エッジコード画像の隣接要素間におけるエッジコード値の差分を順次算出することで、図９に示すような微分画像を生成する。この微分画像は、ある位置の要素におけるエッジコード値が１つの前に位置する要素のエッジコード値に対して増大しているか、あるいは減少しているかを示す。このような微分画像を用いた場合、各要素に割当てる情報量は１ｂｉｔで済む。そのため、この微分画像をメモリに格納しておき、パターンマッチング処理を行なう際に、微分画像の入力順に沿って積分することで、図９に示すような復元画像に復元する。そして、この復元画像に基づいてパターンマッチング処理を実行する。
【００５５】
圧縮前のエッジコード画像のプロファイルと、復元後の復元画像のプロファイルとを比較すると、エッジコード値が無効である区間においてその波形が異なったものとなる。しかしながら、パターンマッチング処理には、基本的に、エッジコード値が有効である区間（画素）の情報が用いられるので、マッチング精度には影響を及ぼさない。
【００５６】
（ハードウェア構成）
次に、上述のようなエッジコードの圧縮／復元処理を含むパターンマッチング処理を行なうためのハードウェア構成について説明する。
【００５７】
図１０は、この発明の実施の形態に従うパターンマッチング処理システム１のハードウェア構成を示す概略図である。
【００５８】
図１０を参照して、まず、撮像装置２００について説明する。撮像装置２００は、レンズ２１と、撮像素子２２と、Ａ／Ｄ（Analog to Digital）変換器２３と、制御回路２４とを含み、対象ワークを撮像して得られる入力画像（画像信号）を出力する。
【００５９】
レンズ２１は、撮像素子２２に入射する光軸上に配置され、被写体からの反射光を光学的に調整した上で、撮像素子２２に導く。撮像素子２２は、典型的には、ＣＣＤ（Coupled Charged Device）やＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサなどからなり、入射光の強度に応じた画像信号を出力する。Ａ／Ｄ変換器２３は、撮像素子２２からの画像信号（アナログ信号）をデジタル信号に変換する。典型的には、Ａ／Ｄ変換器２３は、撮像素子２２からの画像信号を所定ビット数の分解能でサンプリングして、対応するデジタル値を出力する。制御回路２４は、撮像装置２００における撮像処理の全体制御を司る。制御回路２４は、所定周期をもつクロック信号ＣＬを発生するクロック信号発生回路２５を含む。このクロック信号発生回路２５が発生するクロック信号ＣＬに従って、撮像素子２２からの画像信号の読出し、およびＡ／Ｄ変換器２３におけるＡ／Ｄ変換処理が周期的に実行される。すなわち、制御回路２４は、クロック信号ＣＬに従って、検出された画像信号を所定の走査方向に沿って出力するように、撮像素子２２へ制御指令を与える。したがって、Ａ／Ｄ変換器２３からは、画像信号として、入力画像に含まれる各画素の画像情報が所定の走査方向に沿って時系列に出力される。制御回路２４は、Ａ／Ｄ変換器２３から出力される画像信号を画像処理装置１００へ出力する。また、制御回路２４は、クロック信号発生回路２５が発生するクロック信号ＣＬについても画像処理装置１００へ出力する。
【００６０】
なお、入力画像は、モノクロ（グレイスケール）画像およびカラー画像のいずれであってもよい。モノクロ画像の場合には、各画素を示す画像信号として、所定ビット数（典型的には、８ビット）で表した濃淡値が出力される。また、カラー画像の場合には、各画素を示す画像信号として、基本色（典型的には、赤（Ｒ），緑（Ｇ），青（Ｂ））の濃淡値をそれぞれ所定ビット数（典型的には、８ビット）で表した情報が出力される。代替的に、光の三原色の補色であるシアン（Ｃ），マゼンダ（Ｍ），黄色（Ｙ）の濃淡値を表した情報を用いてもよい。また、撮像装置２００がより多くのバンド数（感度波長）を有する場合には、そのバンド数に応じた数の濃淡値を出力するようにしてもよい。
【００６１】
次に、画像処理装置１００は、ＥＣ（Edge Code）画像生成回路１１と、微分画像生成回路１２と、画像復元回路１３と、差分演算回路１４と、ピークホールド回路１５と、画像メモリ１６と、モデル保持部１７と、ＣＰＵ（Central Processing Unit）１８と、Ｉ／Ｏ（Input/Output）ポート１９と、表示部２０とを含み、撮像装置２００により取得された入力画像に対してパターンマッチング処理を実行する。なお、ＥＣ画像生成回路１１、微分画像生成回路１２、画像復元回路１３、差分演算回路１４、およびピークホールド回路１５は、クロック信号ＣＬに従って互いに同期して動作する。
【００６２】
ＥＣ画像生成回路１１は、撮像装置２００から受けた入力画像の濃淡値に基づいて、エッジ抽出処理（後述する）を実行することで、エッジ抽出および抽出したエッジの変化方向の特定を行なう。そして、ＥＣ画像生成回路１１は、この特定されたエッジの変化方向をエッジコード値として出力する。より具体的には、ＥＣ画像生成回路１１は、入力画像についての各画素の濃淡値が入力される毎に、「エッジコード値（ＥＣ値）」および「有効／無効フラグ」を順次生成する。本実施の形態においては、一例として、ＥＣ値（０°≦ＥＣ値＜３６０°）を６ｂｉｔ（６４階調）で表わす場合について例示する。また、「有効／無効フラグ」は、対応のエッジコードが有効なものであるか、あるいは無効なものであるかを示す１ｂｉｔの情報とする。すなわち、対応する位置において有効なエッジコード値が抽出された場合（言い換えれば、対応する位置に十分に大きいエッジ強度が現れる場合）には、有効な値を示す「１」が「有効／無効フラグ」の値として出力されるとともに、抽出されたエッジコード値が「ＥＣ値」として出力される。一方、対応する位置において有効なエッジコード値が抽出されなかった場合（言い換えれば、対応する位置のエッジ強度が小さい場合）には、無効な値を示す「０」が「有効／無効フラグ」の値として出力されるとともに、「ＥＣ値」としては不定値が出力される。
【００６３】
微分画像生成回路１２は、ＥＣ画像生成回路１１から連続出力される一連のエッジコード値および有効／無効フラグ（あわせて、エッジコード画像）に基づいて、図９に示すような微分画像を生成する。この微分画像は、入力画像と同数の要素を有することになるが、各要素に割当てられる情報量は６ｂｉｔから１ｂｉｔに圧縮される。また、微分画像生成回路１２は、後述するように、圧縮後のエッジコード画像（微分値および有効／無効フラグ）を順次記憶する記憶部を有する。この記憶部に記憶された圧縮後のエッジコード画像の一部は、画像復元回路１３へ順次出力。
【００６４】
画像復元回路１３は、後述するように、時系列に入力される圧縮後のエッジコード画像（微分値および有効／無効フラグ）を所定要素分だけ保持するととも、保持する圧縮後のエッジコード画像をエッジコード画像に復元する。そして、画像復元回路１３は、復元したエッジコード画像を差分演算回路１４へ与える。
【００６５】
差分演算回路１４は、画像復元回路１３から受けた復元されたエッジコード画像に対して、パターンマッチング処理を行なう。すなわち、差分演算回路１４は、復元されたエッジコード画像と予め定められたモデル画像との類似度を算出する。より具体的には、差分演算回路１４は、予め登録された標準パターン（モデル画像）を表すエッジコード画像（座標ならびに各座標におけるエッジコード値および有効／無効フラグ）をモデル保持部１７から読出し、この読出したモデル画像のエッジコード画像と、差分演算回路１４から与えられる復元されたエッジコード画像とを比較する。さらに、差分演算回路１４は、両者を比較することで算出される類似度をピークホールド回路１５へ出力する。
【００６６】
ピークホールド回路１５は、差分演算回路１４から出力される類似度のうち、最も高い値（ピーク値）を保持する。このとき、ピークホールド回路１５は、クロック信号ＣＬに基づいて、ピーク値が表れたタイミングに対応する、入力画像上のウィンドウ位置を関連付けて保持する。後述するように、入力画像に含まれる１画素分の新たな画像信号が画像処理装置１００に入力される毎に、入力画像上に設定されるウィンドウＷＮ（図４）の位置は実質的に１画素ずつ移動することになる。そのため、ピーク値が表れたタイミングに対応する、入力画像上のウィンドウ位置を特定することで、モデル画像と類似度の高い、すなわち最も一致する部分を特定することができる。
【００６７】
ＣＰＵ１８は、画像処理装置１００における全体制御を司る。ＣＰＵ１８は、プログラムを格納するＲＯＭ（Read Only Memory）および作業用のＲＡＭ（Random Access Memory）（いずれも、図示しない）を利用可能である。そして、ＣＰＵ１８は、ＲＯＭから読出したプログラムをＲＡＭ上に展開して処理を実行する。
【００６８】
画像メモリ１６は、撮像装置２００から出力される入力画像を一時的に蓄える記憶領域であり、この画像メモリ１６に蓄えられた入力画像は、典型的には、ピークホールド回路１５において特定された位置と合わせて、表示部２０上にパターンマッチング処理の結果として表示される。
【００６９】
Ｉ／Ｏポート１９は、画像処理装置１００と接続された外部装置とＣＰＵ１８との間のデータ授受を仲介する。
【００７０】
表示部２０は、画像処理装置１００におけるパターンマッチング処理の結果を表示もしくは通知する。典型的には、表示部２０は、液晶ディスプレイやＬＥＤ（Light Emitting Diode）などからなる。
【００７１】
以下、図１０に示す各回路の詳細な構成について説明する。
（ＥＣ画像生成回路）
図１１は、図１０に示すＥＣ画像生成回路１１のより詳細な構成を示すブロック図である。図１１を参照して、ＥＣ画像生成回路１１は、水平エッジ強度検出器１１１と、垂直エッジ強度検出器１１２と、ＥＣ値算出器１１３と、量子化器１１４と、エッジ強度算出器１１５と、しきい値処理器１１６とを含む。
【００７２】
水平エッジ強度検出器１１１は、撮像装置２００（図１０）から与えられる入力画像に含まれる各画素について、隣接する画素の濃淡値に基づいて、水平方向のエッジ強度を算出する。同様に、垂直エッジ強度検出器１１２は、撮像装置２００（図１０）から与えられる入力画像に含まれる各画素について、隣接する画素の濃淡値に基づいて、垂直方向のエッジ強度を算出する。このようなエッジ強度を算出する構成としては、公知の方法を採用することができるが、たとえば、隣接する画素間における濃淡値の差の最大値をエッジ強度とすることができる。なお、水平エッジ強度検出器１１１および垂直エッジ強度検出器１１２は、クロック信号ＣＬに従って作動して、入力画像に含まれる新たな１画素分が入力される毎にエッジ強度をそれぞれ算出し、その結果をＥＣ値算出器１１３およびエッジ強度算出器１１５へ出力する。
【００７３】
ＥＣ値算出器１１３は、水平エッジ強度検出器１１１および垂直エッジ強度検出器１１２においてそれぞれ算出される水平エッジ強度および垂直エッジ強度に基づいて、エッジコード値に対応するエッジの変化方向（角度θ）を算出する。より具体的には、水平エッジ強度検出器１１１により算出される水平エッジ強度を「Ａ」とし、垂直エッジ強度検出器１１２により算出される垂直エッジ強度を「Ｂ」とすると、ＥＣ値算出器１１３は、以下に示す（１）式に従って、角度θを算出する。
【００７４】
角度θ＝ｔａｎ−１（Ｂ／Ａ）  ・・・（１）
ＥＣ値算出器１１３は、算出した角度θを量子化器１１４へ出力する。なお、ＥＣ値を０°〜１８０°の範囲で定義する場合には、以下に示す（１’）式を用いてもよい。
【００７５】
角度θ＝ｔａｎ−１｜Ｂ／Ａ｜  ・・・（１’）
量子化器１１４は、ＥＣ値算出器１１３から与えられる角度θを６ｂｉｔに量子化し、エッジコード値として出力する。
【００７６】
なお、図１１には、水平エッジ強度検出器１１１および垂直エッジ強度検出器１１２に、各画素あたり８ｂｉｔの濃淡値（２５６階調）をもつモノクロ画像が与えられる場合を示すが、カラー画像が与えられるようにしてもよい。より多くのビット数を有するカラー画像が与えられたとしても、エッジコード値の情報量としては、モノクロ画像の場合と同じビット数に抑えることができる。
【００７７】
また、エッジ強度算出器１１５およびしきい値処理器１１６については、算出されたエッジコードが有効なものであるか否かを判断する。すなわち、エッジ強度に基づいて、入力画像の対象位置において十分なエッジに強いが存在するか否かが判断され、所定の強度をもつエッジが存在している場合に限って、そのタイミングで算出されたエッジコード値を有効なものとする。
【００７８】
すなわち、エッジ強度算出器１１５は、水平エッジ強度検出器１１１により算出される水平エッジ強度Ａと、垂直エッジ強度検出器１１２により算出される垂直エッジ強度Ｂとに基づいて、入力画像の各画素におけるエッジ強度を以下に示す（２）式に従って算出する。
【００７９】
エッジ強度＝√（Ａ２＋Ｂ２）  ・・・（２）
しきい値処理器１１６は、エッジ強度算出器１１５によって算出されるエッジ強度を予め設定されたしきい値ＴＨ１と比較する。そして、しきい値処理器１１６は、算出されたエッジ強度がしきい値ＴＨ１を超えていれば、有効な値を示す「１」を有効／無効フラグとして出力し、算出されたエッジ強度がしきい値ＴＨ１を超えていなければ、無効な値を示す「０」を有効／無効フラグとして出力する。
【００８０】
（微分画像生成回路）
図１２は、図１０に示す微分画像生成回路１２のより詳細な構成を示すブロック図である。図１２を参照して、微分画像生成回路１２は、フリップフロップ（ＦＦ）１２１−１〜１２１−４，１２５，１２６−１〜１２６−４と、有効ＥＣ値抽出器１２２と、差分器１２３と、加算器１２４と、有効画素位置特定器１２７とを含む。
【００８１】
フリップフロップ１２１−１〜１２１−４は、直列接続された遅延素子の典型例であり、クロック信号ＣＬに従って同期してデータを順次シフトする。フリップフロップ１２１−４の入力端には、ＥＣ画像生成回路１１（図１０）により生成されたエッジコード値が順次入力される。また、フリップフロップ１２１−１の出力端は、有効ＥＣ値抽出器１２２に接続される。さらに、フリップフロップ１２１−１〜１２１−４の各入力端におけるエッジコード値についても、有効ＥＣ値抽出器１２２へ入力される。
【００８２】
ここで、ＥＣ画像生成回路１１（図１０）が時刻ｔにおいて生成するエッジコード値をＥＣ（ｔ）と表し、クロック信号ＣＬの１周期分の時間をＤｃとする。時刻ｔにおいては、フリップフロップ１２１−１からはＥＣ（ｔ−４Ｄｃ）が出力され、フリップフロップ１２１−２からはＥＣ（ｔ−３Ｄｃ）が出力され、フリップフロップ１２１−３からはＥＣ（ｔ−２Ｄｃ）が出力され、フリップフロップ１２１−４からはＥＣ（ｔ−Ｄｃ）が出力される。すなわち、フリップフロップ１２１−１〜１２１−４は、異なるタイミングで入力される連続する複数のエッジコード値についてのタイミングを一致させる。
【００８３】
有効ＥＣ値抽出器１２２は、フリップフロップ１２１−１〜１２１−４にそれぞれ保持されるＥＣ値（ＥＣ（ｔ），ＥＣ（ｔ−Ｄｃ），ＥＣ（ｔ−２Ｄｃ），ＥＣ（ｔ−３Ｄｃ），ＥＣ（ｔ−４Ｄｃ））のうち、後述する有効画素位置特定器１２７によって特定された有効画素位置Ｘに従って、対応する１つのエッジコード値を差分器１２３へ出力する。図９に示すように、２つのエッジコード値の有効区間が無効区間を挟んで存在している場合には、有効区間が終了し、次の有効区間が現れるまでの間に、次に現れる有効区間のエッジコード値を予想する必要がある。すなわち、図９の復元画像が示すように、ある有効区間の終了後、次の有効区間が現れる前に、予めエッジコード値を変化させておく必要がある。そこで、有効画素位置特定器１２７は、次の有効区間がいずれの位置に現れるかを先読みする。具体的には、有効画素位置特定器１２７は、一連のフリップフロップ１２１−１〜１２１−４のうち、有効なエッジコード値を保持する最もＸの値が小さいものを有効画素位置Ｘとして出力する。有効ＥＣ値抽出器１２２は、この抽出された有効画素位置Ｘに従って、対応するフリップフロップ１２１に保持されているエッジコード値を出力する。
【００８４】
フリップフロップ１２６−１〜１２６−４は、直列接続された遅延素子の典型例であり、クロック信号ＣＬに従って同期してデータを順次シフトする。フリップフロップ１２６−４の入力端には、ＥＣ画像生成回路１１（図１０）により生成された有効／無効フラグ値が順次入力される。また、フリップフロップ１２６−１の出力端は、有効画素位置特定器１２７に接続される。さらに、フリップフロップ１２６−１〜１２６−４の各入力端における有効／無効フラグ値についても、有効画素位置特定器１２７へ入力される。
【００８５】
上述したように、有効画素位置特定器１２７は、入力される有効／無効フラグ値のうち、その値が有効を示す「１」であるもののうち、対応する有効画素位置Ｘの値が最も小さいものを特定する。そして、特定したＸの値を有効ＥＣ値抽出器１２２へ出力する。なお、入力される有効／無効フラグ値のいずれもが「０」であれば、有効画素位置特定器１２７は、有効画素位置Ｘとして「４」を出力する。
【００８６】
差分器１２３は、クロック信号ＣＬの各周期において、有効ＥＣ値抽出器１２２から出力されるエッジコード値（今回値）と、当該周期より１周期前におけるエッジコード値（前回値）との大小関係を比較し、その差分に基づく微分値（１ｂｉｔ）を増減情報として出力する。すなわち、差分器１２３は、エッジコード値（今回値）がエッジコード値（前回値）より大きければ、微分値として増加を意味する「１」を出力し、エッジコード値（今回値）がエッジコード値（前回値）より大きくなければ、微分値として減少を意味する「０」を出力する。
【００８７】
加算器１２４およびフリップフロップ１２５は、エッジコード値（前回値）を算出するための回路である。加算器１２４は、差分器１２３から出力される微分値に応じて、フリップフロップ１２５から出力されているエッジコード値（前回値）に「１ｂｉｔ」を加算もしくは減算することで、新たなエッジコード値（前回値）を算出する。そして、加算器１２４が算出した新たなエッジコード値（前回値）は、フリップフロップ１２５へ与えられて保持される。この加算器１２４からフリップフロップ１２５へ与えられた新たなエッジコード値（前回値）は、次のクロック周期におけるエッジコード値（前回値）として用いられる。
【００８８】
なお、図１２に示すフリップフロップ１２１および１２６の接続段数は、次に現れる有効区間を先読みするための要素数（画素数）に相当する。したがって、先読み量を多くして、本来のエッジコード画像における有効なエッジコード値についての情報を高精度に圧縮／復元を行なうことができるように、より多くの段数（たとえば、１６段もしくは３２段）を設けることが好ましい。なお、増減情報である微分値（微分画像）により多くの情報量を割当てることで、先読み精度が相対的に低くとも、エッジコード画像をより正確に圧縮することができる。
【００８９】
（画像復元回路）
図１３は、図１０に示す画像復元回路１３のより詳細な構成を示すブロック図である。図１３を参照して、画像復元回路１３は、シフトレジスタ１３１と、遅延器１３２と、復元器１３３とを含む。
【００９０】
複数のシフトレジスタ１３１は、一連に直列接続されており、微分画像生成回路１２（図１０）から与えられる微分値および有効／無効フラグをＦＩＦＯで順次格納する。典型的には、１つのシフトレジスタ１３１は、１つの水平ライン分の微分値および有効／無効フラグを格納する記憶容量をもつ。すなわち、入力画像がＷ画素×Ｈラインの大きさであるとすると、シフトレジスタ１３１の各々は、２×Ｗ×Ｈ［ｂｉｔ］のメモリ容量を有する。このシフトレジスタ１３１を入力画像のライン数と同じ数だけ用意することで、１枚の入力画像についての微分画像（各要素についての微分値および有効／無効フラグ）を一時的に格納することができる。上述の例のように、各画素が８ｂｉｔの濃淡値で定義されるモノクロ画像をそのまま記憶した場合に比較して、単純計算で、シフトレジスタ１３１の記憶容量を１／４に低減できる。
【００９１】
遅延器１３２および復元器１３３のセットは、入力画像に設定したウィンドウ内においてパターンマッチング処理を行なう評価位置の数だけ設けられる。すなわち、遅延器１３２および復元器１３３のセットの各々において、エッジコードに基づくパターンマッチング処理が行なわれる。
【００９２】
図１３には、遅延器１３２および復元器１３３のセットが水平方向にｎ個配置されるとともに、遅延器１３２および復元器１３３のセットが垂直方向にｍ個配置される。これは、ウィンドウ内にｍ個の評価ラインを設定でき、各評価ライン上にｎ箇所の評価位置を設定できることを意味する。
【００９３】
なお、図１３においては、各評価ラインに対応する遅延器１３２および復元器１３３のセットが、３個おきにシフトレジスタ１３１に接続されている構成を示す。これは、入力画像に設定されるウィンドウ内に含まれる水平ラインのすべてではなく、一部を間引いて評価する構成に相当する。もちろん、ウィンドウ内に含まれるすべての水平ラインを評価対象としてもよい。この場合には、各シフトレジスタ１３１の出力端に遅延器１３２が接続されることになる。
【００９４】
（モデル画像）
遅延器１３２および復元器１３３について理解を容易にするために、先に、本実施の形態に従うパターンマッチング処理に用いられるモデル画像について説明する
図１４は、この発明の実施の形態に従う画像処理装置において登録されるモデル画像の一例を示す模式図である。
【００９５】
図１４を参照して、パターンマッチング処理の基準となる標準ワークを撮像して入力画像ＩＭＧが取得されたものとする。この入力画像ＩＭＧのうち、モデル画像とすべき範囲にウィンドウＷＮを設定する。そして、このウィンドウＷＮ内の部分画像からパターンマッチング処理に用いられる複数のエッジコードが抽出される。
【００９６】
より具体的には、ウィンドウＷＮに対して、ｍ個の評価ラインＬ０，Ｌ１，・・・，Ｌ（ｍ−１）を設定し、各評価ライン上でエッジコードを算出する。たとえば、図１４に示すモデル画像（アルファベット「Ａ」を示す領域）において、評価ラインＬ０上で、座標Ｐ１において有効なエッジコードが抽出され、評価ラインＬ１上で、座標Ｐ２およびＰ３において有効なエッジコードが抽出されたものとする。なお、図１４に示すように、残りの評価ライン上においても、有効なエッジコードが抽出されたものとする。このように抽出されたエッジコードのうち、たとえば、評価ラインＬ１上について見ると、座標Ｐ１は、ウィンドウＷＮの左端から距離ｄ１だけ離れた位置にあり、座標Ｐ２は、座標Ｐ１から距離ｄ２だけ離れた位置にある。
【００９７】
本実施の形態に従うエッジコードに基づくパターンマッチング処理においては、有効なエッジコードが抽出されたそれぞれの座標において、類似度（相関値）を評価すればよい。言い換えれば、ある評価ラインのうち、有効なエッジコードが抽出されなかった画素の位置（座標）については評価対象とする必要がない。したがって、各評価ライン上において、いずれの位置においてエッジコードとの類似度を評価すべきかを予め登録しておく必要がある。
【００９８】
そこで、本実施の形態に従う画像処理装置１００においては、同一の評価ライン上にある隣接する評価位置の間の相対的な位置の差を示す相対位置情報を用いて、モデル画像を定義する。この相対位置情報としては、隣接する評価位置の間に存在する要素数を示す「遅延数」を用いる。同一の評価ライン上でこの「遅延数」だけ離れた座標における微分値（あるいは、復元すべきエッジコード値）を抽出するための構成が、図１３に示す遅延器１３２である。そして、この遅延器１３２を介して、予め登録された各評価位置における微分値が復元器１３３へ出力されることになる。そして、復元器１３３において各評価位置における微分値からエッジコード値が復元される。
【００９９】
（遅延器および復元器）
図１５は、図１３に示す遅延器１３２のより詳細な構成を示すブロック図である。図１５を参照して、遅延器１３２は、フリップフロップ（ＦＦ）１３２１−１，１３２１−２〜１３２１−ｋと、セレクタ（ＳＥＬ）１３２２とを含む。
【０１００】
フリップフロップ１３２１−１〜１３２１−ｋは直列接続された遅延素子の典型例であり、クロック信号ＣＬに従って同期してデータを順次シフトする。フリップフロップ１３２１−１の入力端には、シフトレジスタ１３１（図１３）の所定位置（隣接するシフトレジスタ１３１のある接続ノード）に保持される微分値および有効／無効フラグと同じ値が順次入力される。また、フリップフロップ１３２１−１〜１３２１−ｋのそれぞれの出力端は、セレクタ１３２２に接続される。
【０１０１】
セレクタ１３２２は、典型的にはマルチプレクサで構成される。セレクタ１３２２は、後述するモデル保持部１７に格納された対応する遅延数に従って、フリップフロップ１３２１−１〜１３２１−ｋの出力のうちいずれか１つを、後段に接続された遅延器１３２および対応する復元器１３３へ出力する。
【０１０２】
たとえば遅延数が「１」に設定された場合には、セレクタ１３２２は、フリップフロップ１３２１−１の出力を選択する。すると、対象の遅延器１３２とその前段に接続された遅延器１３２との間の遅延量は、１画素分となる。したがって、前段に接続された遅延器１３２および復元器１３３のセットが対象とする評価位置から、入力画像上の対象の評価ライン上において１画素だけ離れた座標が評価位置に設定される。同様にして、モデル画像に応じて遅延数を設定することで、同一の評価ライン上の対象となる評価位置を自在に設定することができる。
【０１０３】
図１６は、図１３に示す復元器１３３のより詳細な構成を示すブロック図である。図１６を参照して、復元器１３３は、加算器１３３１と、フリップフロップ（ＦＦ）１３３２と、タイミング調整器１３３３とを含む。
【０１０４】
加算器１３３１およびフリップフロップ１３３２は、微分値からエッジコード復元値を算出するための積算回路である。加算器１３３１は、対応する遅延器１３２（図１５）から出力される微分値に応じて、フリップフロップ１３３２から出力されているエッジコード復元値（前回値）に「＋１」もしくは「−１」することで、エッジコード復元値（今回値）を算出する。そして、加算器１３３１が算出したエッジコード復元値（今回値）は、フリップフロップ１３３２へ与えられて保持されるとともに、後段に配置された差分演算回路１４へ出力される。このフリップフロップ１３３２へ与えられたエッジコード復元値（今回値）は、次のクロック周期におけるエッジコード復元値（前回値）として用いられる。
【０１０５】
タイミング調整器１３３３は、予め定められたタイミングでフリップフロップ１３３２をリセットする。典型的には、エッジコード復元値は、入力画像の水平ライン毎に算出されるため、ある水平ラインについてのエッジコード復元値の算出が完了後、次の水平ラインについてのエッジコード復元値の算出へ影響を与えないようにする必要がある。そこで、タイミング調整器１３３３は、水平ブランク期間のタイミングでフリップフロップ１３３２へリセット信号を出力し、フリップフロップ１３３２が保持する積分値をゼロクリアする。なお、入力画像を１つの水平ライン上の画素集合として取扱う場合には、タイミング調整器１３３３によりリセットは必ずしも必要ない。
【０１０６】
以上のようにして、遅延器１３２および復元器１３３のセットの各々からは、対応する評価位置についての「エッジコード（ＥＣ）復元値」および「有効／無効フラグの値」が出力される。
【０１０７】
（差分演算回路およびモデル保持部）
図１７は、図１０に示す差分演算回路１４のより詳細な構成を示すブロック図である。図１８は、図１０に示すモデル保持部１７で保持されるデータ構造の一例を示す図である。図１９は、図１８に示すエッジコード値の示す角度を模式的に示す図である。
【０１０８】
図１７を参照して、差分演算回路１４は、複数の差分器１４１と、それぞれの差分器１４１と対応付けられた判定器１４２と、加算器１４３とを含む。
【０１０９】
差分器１４１および判定器１４２のセットの各々は、前段に配置された復元器１３３（図１６）から与えられるエッジコード復元値および有効／無効フラグと、モデル保持部１７から読出された対応するエッジコード値および有効／無効フラグの値とを比較して、評価位置におけるパターンマッチングの成否を判断する。そして、加算器１４３は、差分器１４１および判定器１４２のセットの各々から出力される結果を集計して、その集計結果をパターンマッチングによる類似度として、ピークホールド回路１５（図１０）へ出力する。
【０１１０】
より具体的には、差分器１４１の各々は、前段に配置された復元器１３３からエッジコード復元値と、モデル保持部１７から読出された対応するエッジコード値との差分値（Ｌ１，Ｌ２，・・・，Ｌｉ）を算出する。判定器１４２の各々は、（１）前段に配置された差分器１４１から与えられる差分値の絶対値がしきいＴＨ２より小さいこと、かつ（２）モデル保持部１７から読出された対応する有効／無効フラグが「１」であること、のいずれもが満足されると、対応する評価位置におけるマッチング成功を意味する「１」を加算器１４３へ出力する。これに対して、上記（１）または（２）が満足されないと、対応する評価位置におけるマッチング失敗を意味する「０」を加算器１４３へ出力する。
【０１１１】
すなわち、上記（１）の条件は、入力画像上に設定されたウィンドウ内の評価位置におけるエッジコードの値が、モデル画像の対応する評価位置におけるエッジコードの値に同一もしくは近似している場合に限って、マッチング成功と判断するための条件である。また、上記（２）の条件は、後述するように、モデル保持部１７には、本来の評価位置ではない位置が評価位置として設定されることもあるため、このような本来の評価位置ではない座標について算出された結果を除外するための条件である。
【０１１２】
図１８（ａ）を参照して、モデル保持部１７には、モデル画像上に設定される各評価位置についての「有効／無効フラグ」、「エッジコード（ＥＣ）値」、「遅延数」の３つのパラメータが格納される。なお、図１８（ａ）に示す設定値は、図１４に示すモデル画像に対応している。
【０１１３】
図１８（ｂ）に示すように、「有効／無効フラグ」には、対応する評価位置が無効であることを示す「０」、または有効であることを示す「１」のいずれかが設定される。「ＥＣ値」には、対応する評価位置におけるエッジコードの値が６ｂｉｔに量子化された値（すなわち、０〜６３）で設定される。「遅延数」には、図１５に示す遅延器１３２に含まれるフリップフロップ１３２１−１，１３２１−２〜１３２１−ｋの段数を最大値とする正の整数が設定される。なお、図１８には、遅延器１３２が８段に直列接続されたフリップフロップ１３２１を含む場合について例示する。すなわち、遅延器１３２に含まれるフリップフロップ１３２１の段数が設定し得る遅延数の最大値となる。
【０１１４】
なお、エッジコードの値を６ｂｉｔに量子化すると、対応するエッジコードの値（角度）と量子化された値とは、図１９に示すような関係となる。すなわち、量子化されたエッジコード値が「１５」である場合には、エッジコードは「９０°」となり、量子化されたエッジコード値が「３１」である場合には、エッジコードは「１８０°」となり、量子化されたエッジコード値が「４７」である場合には、エッジコードは「２７０°」となる。
【０１１５】
再度図１４を参照して、評価ラインＬ１について考えてみる。この評価ラインＬ１において、ウィンドウＷＮの左端から座標Ｐ２までの遅延数ｄ１が「２０」であり、座標Ｐ２から座標Ｐ３までの遅延数ｄ２が「１６」であったとする。上述したように、遅延器１３２を構成するフリップフロップ１３２１が８段であれば、１つの遅延器１３２に対して設定可能な最大の遅延数も「８」となる。この場合には、複数の遅延器１３２を用いることで、必要な遅延数「２０」を実現する。
【０１１６】
より具体的には、最も前段の遅延器１３２に対して遅延数「８」を設定し（図１８（ａ）のテーブルにおけるＬ１とＸ０との交点）、それに引き続く２段目の遅延器１３２に対しても遅延数「８」を設定し（図１８（ａ）のテーブルにおけるＬ１とＸ１との交点）、さらにそれに引き続く３段目の遅延器１３２に対して遅延数「４」を設定する（図１８（ａ）のテーブルにおけるＬ１とＸ２との交点）。このうち、１段目および２段目の遅延器１３２については、本来の評価位置ではないので、対応するそれぞれのパラメータのうち、有効／無効フラグを「０」に設定する。一方、３段目の遅延器１３２については、本来の評価位置であるので、対応するパラメータのうち、有効／無効フラグを「１」に設定するとともに、抽出されたエッジコード値を設定する。
【０１１７】
以下同様にして、モデル画像の特徴を表わすパラメータをモデル保持部１７に登録する。なお、図１８に示すテーブルのうち、ハッチングを付したセルが図１４に示す評価位置に対応する。
【０１１８】
（モデル登録処理）
以下、図１８（ａ）に示すようなモデル保持部にモデル登録を行なうための処理手順を説明する。
【０１１９】
図２０は、この発明の実施の形態に従うモデル登録の処理手順を示すフローチャートである。なお、図２０に示す処理手順は、図１０に示すＣＰＵ１８がプログラムを実行することで実現される。あるいは、本実施の形態に従う画像処理装置１００とは別体の画像処理装置で実行するようにしてもよい。
【０１２０】
図２０を参照して、ＣＰＵ１８は、標準ワークを撮像して得られた入力画像を受付ける（ステップＳ１００）。続いて、ＣＰＵ１８は、入力画像上に設定されるモデル画像として抽出すべきウィンドウの設定を受付ける（ステップＳ１０２）。さらに、ＣＰＵ１８は、設定されたウィンドウ内に含まれる部分画像にｍ本の評価ライン（ライン番号０〜（ｍ−１））を設定し（ステップＳ１０４）、ライン番号変数ｋを初期化（ｋ＝０）する（ステップＳ１０６）。
【０１２１】
ＣＰＵ１８は、ライン番号変数ｋに対応する評価ライン上のエッジ強度のプロファイルを算出する（ステップＳ１０８）。すなわち、ＣＰＵ１８は、評価ライン上の各画素の位置におけるエッジ強度を算出する。さらに、ＣＰＵ１８は、算出したエッジ強度のプロファイルにおける極大点を抽出する（ステップＳ１１０）とともに、各極大点におけるエッジコード値を算出する（ステップＳ１１２）。ここで、ｎ個の極大点が抽出されたとして、それぞれの極大点における座標およびエッジコード値を（ｘ０，ｙ０；ｃ０），（ｘ２，ｙ２；ｃ２），・・・，（ｘ（ｎ−１），ｙ（ｎ−１）；ｃ（ｎ−１））とする。また、Ｘ軸上の原点位置に近いものから、極大点番号を０〜（ｎ−１）に割当てる。
【０１２２】
続いて、ＣＰＵ１８は、モデル画像のカラム番号変数ｉ、現在のＸ軸上の位置を示す座標変数ｘ、抽出した極大点の番号変数ｊを初期化（ｉ＝０，ｘ＝０，ｊ＝０）する（ステップＳ１１４）。続いて、ＣＰＵ１８は、極大点と現在のＸ軸上の位置との距離差に基づいて、遅延数Ｄｘを算出する（ステップＳ１１６）。具体的には、遅延数Ｄｘ＝ｘｊ−ｘの演算を実行する。さらに、ＣＰＵ１８は、ステップＳ１１４において算出した遅延数Ｄｘが遅延器１３２によって提供可能な最大遅延数（図２０に示す例においては、「８」とする）以下であるか否かを判断する（ステップＳ１１８）。上述したように、この最大遅延数は、遅延器１３２に含まれるフリップフロップの段数に相当する。
【０１２３】
遅延数Ｄｘが８を越える場合（ステップＳ１１８においてＮＯの場合）には、ＣＰＵ１８は、ｉ番目の内容として、（０，０，８）を登録する（ステップＳ１２０）。すなわち、ＣＰＵ１８は、有効／無効フラグ＝「０」、エッジコード値＝「０」、遅延数＝「８」を登録する。そして、ＣＰＵ１８は、現在の座標変数ｘに最大遅延数（この場合には、「８」）を加算して新たな座標変数ｘに更新するとともに、カラム番号変数ｉに「１」を加算して新たなカラム番号変数ｉに更新する（ステップＳ１２２）。そして、処理はステップＳ１１８へ戻る。
【０１２４】
これに対して、遅延数Ｄｘが８以下である場合（ステップＳ１１８においてＹＥＳの場合）には、ＣＰＵ１８は、ｉ番目の内容として、（１，ｃｉ，Ｄｘ）を登録する（ステップＳ１２４）。すなわち、ＣＰＵ１８は、有効／無効フラグ＝「１」、エッジコード値＝「ｉ番目の極大点におけるエッジコード値」、遅延数＝「ステップＳ１１６において算出した遅延数Ｄｘ」を登録する。そして、ＣＰＵ１８は、現在の座標変数ｘに遅延数Ｄｘを加算して新たな座標変数ｘに更新し、カラム番号変数ｉに「１」を加算して新たなカラム番号変数ｉに更新し、番号変数ｊに「１」を加算して新たな番号変数ｊに更新する（ステップＳ１２６）。さらに、ＣＰＵ１８は、更新後の番号変数ｊが抽出された極大点の個数であるｎ未満であるか否かを判断する（ステップＳ１２８）。番号変数ｊがｎ未満である場合（ステップＳ１２８においてＹＥＳの場合）には、処理はステップＳ１１６へ戻る。
【０１２５】
これに対して、番号変数ｊがｎ以上である場合（ステップＳ１２８においてＮＯの場合）には、ＣＰＵ１８は、ライン番号変数ｋに「１」を加算して新たなライン番号変数ｋに更新する（ステップＳ１３０）。さらに、ＣＰＵ１８は、更新後のライン番号変数ｋが設定された評価ラインの数であるｍ未満であるか否かを判断する（ステップＳ１３２）。ライン番号変数ｋがｍ未満である場合（ステップＳ１３２においてＹＥＳの場合）には、処理はステップＳ１０８へ戻る。
【０１２６】
これに対して、ライン番号変数ｋがｍ以上である場合（ステップＳ１３２においてＮＯの場合）には、登録処理は終了する。
【０１２７】
（全体処理手順）
上述した本実施の形態に従う画像処理装置１００における処理手順をまとめると、図２１に示すようなフローチャートとなる。
【０１２８】
図２１は、この発明の実施の形態に従うパターンマッチング処理システム１における処理手順を示すフローチャートである。図２１に示す処理は、クロック信号ＣＬの周期で繰返し実行される。
【０１２９】
図２１を参照して、撮像装置２００は、撮像することで得られた入力画像に含まれる１つの画素についての画像情報（濃淡値）を画像処理装置１００へ出力する（ステップＳ２）。
【０１３０】
画像処理装置１００の水平エッジ強度検出器１１１および垂直エッジ強度検出器１１２（図１１）がそれぞれ水平方向および垂直方向のエッジ強度を算出する（ステップＳ４）。なお、エッジ強度は、対象の画素とその周辺の画素における濃淡値に基づいて算出する必要があるので、周辺の画素が入力されていなければ、ステップＳ４の処理はスキップされる。
【０１３１】
そして、画像処理装置１００のＥＣ値算出器１１３（図１１）がステップＳ４において算出された水平方向および垂直方向のエッジ強度に基づいて、エッジの変化方向を示す角度θを算出する（ステップＳ６）。続いて、画像処理装置１００のＥＣ値算出器１１３（図１１）が算出された角度θを量子化することで、エッジコード値を算出する（ステップＳ８）。
【０１３２】
ステップＳ６およびステップＳ８の処理と並行して、画像処理装置１００のエッジ強度算出器１１５（図１１）がステップＳ４において算出された水平方向および垂直方向のエッジ強度に基づいて、対象となる画素についてのエッジ強度を算出する（ステップＳ１０）。続いて、画像処理装置１００のしきい値処理器１１６（図１１）が算出されたエッジ強度としきい値ＴＨ１とを比較することで、有効／無効フラグの値を決定する（ステップＳ１２）。
【０１３３】
続いて、微分画像生成回路１２は、ステップＳ８において算出されたエッジコード値をフリップフロップ１２１−４（図１２）に与えて、フリップフロップ１２１−１〜１２１−４の保持するデータをシフトするとともに、ステップＳ１２において決定された有効／無効フラグの値をフリップフロップ１２６−４（図１２）に与えて、フリップフロップ１２６−１〜１２６−４の保持するデータをシフトする（ステップＳ１４）。続いて、微分画像生成回路１２の有効画素位置特定器１２７（図１２）が、フリップフロップ１２６−１〜１２６−４のうち有効／無効フラグ値が「１」をもつフリップフロップの位置を、有効画素位置Ｘとして特定する（ステップＳ１６）。さらに、微分画像生成回路１２の有効ＥＣ値抽出器１２２（図１２）が、フリップフロップ１２１−１〜１２１−４のうちステップＳ１６において特定された有効画素位置Ｘに応じたフリップフロップが保持するエッジコード値を抽出する（ステップＳ１８）。さらに、微分画像生成回路１２の差分器１２３（図１２）が、ステップＳ１８において抽出されたエッジコード値（今回値）と、前回の処理周期において抽出されたエッジコード値（前回値）との差分に基づいて、微分値を算出する（ステップＳ２０）。
【０１３４】
続いて、画像復元回路１３（図１３）は、ステップＳ２０において算出されたエッジコード値、およびステップＳ１４においてシフトされた後の有効／無効フラグの値をシフトレジスタ１３１に与えて、シフトレジスタ１３１の保持するデータをシフトする（ステップＳ２２）。
【０１３５】
ステップＳ２２の処理と並行して、遅延器１３２の各々は、接続先のシフトレジスタ１３１におけるシフト後に保持されているエッジコード値および有効／無効フラグの値を、フリップフロップ１３２１−１（図１５）に与えて、フリップフロップ１３２１−１〜１３２１−ｋの保持するデータをシフトする（ステップＳ２４）。続いて、各遅延器１３２のセレクタ１３２２は、モデル保持部１７に格納された対応する遅延数に従って、フリップフロップ１３２１−１〜１３２１−ｋのうちいずれか１つを選択してその保持する値を出力する（ステップＳ２６）。
【０１３６】
画像復元回路１３の復元器１３３（図１６）の各々は、ステップＳ２６において対応する遅延器１３２のセレクタ１３２２から出力された微分値（今回値）と、前回の処理周期において算出されたエッジコード復元値（前回値）とを加算して、エッジコード復元値（今回値）を算出する（ステップＳ２８）。
【０１３７】
続いて、差分演算回路１４は、ステップＳ２８において画像復元回路１３の複数の復元器１３３がそれぞれ算出したエッジコード復元値を受けて、予め定められたモデル画像との類似度を算出し、ピークホールド回路１５（図１０）へ出力する（ステップＳ３０）。そして、今回のクロック周期における処理を終了する。
【０１３８】
さらに、次のクロック周期が到来すると、ステップＳ２以下の処理を再度実行する。
（作用効果）
この発明の実施の形態によれば、入力画像の濃淡値に基づいて生成されたエッジコード画像を圧縮した上でラインバッファに順次格納するので、エッジコード画像をそのままラインバッファに格納する場合に比較して、必要な記憶領域を低減することができる。そのため、エッジコードに基づくパターンマッチングをより小さい回路構成で実現することができる。
【０１３９】
また、この発明の実施の形態によれば、エッジコード画像における隣接する要素間のエッジコード値の増減情報（すなわち、微分値）を用いて圧縮するので、この微分値を時系列に積分するだけでエッジコード値に復元することができる。すなわち、１つのクロック周期内にエッジコード画像に復元できるため。そのため、圧縮したエッジコード画像を復元するための回路構成を簡素化できるとともに、復元処理を短時間に行なうことができる。その結果、すなわち１つの入力画像の取得に要する時間とほぼ同様の時間でパターンマッチング処理を完了する、リアルタイム処理を実現することができる。
【０１４０】
（変形例）
上述の実施の形態においては、微分画像をエッジコード画像に復元してモデルとのパターンマッチング処理を行なう構成について例示したが、微分画像に対応するモデル画像を予め登録しておき、入力画像を微分画像に圧縮した状態でパターンマッチング処理を行なうようにしてもよい。
【０１４１】
また、上述の実施の形態においては、エッジコード画像の各要素がエッジコード値と有効／無効フラグとを独立に有するデータ構造について例示したが、これを統合した形のデータ構造を採用してもよい。たとえば、エッジコード画像の各要素に７ｂｉｔのデータを割当て、この７ビットのデータの取り得る範囲を、たとえば（−１〜１２６）の範囲に設定し、「−１」の場合に、無効であることを示すようにしてもよい。
【０１４２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１４３】
１  パターンマッチング処理システム、２  対象ワーク、６  搬送機構、１１  ＥＣ画像生成回路、１２  微分画像生成回路、１３  画像復元回路、１４  差分演算回路、１５  ピークホールド回路、１６  画像メモリ、１７  モデル保持部、１８  ＣＰＵ、１９  Ｉ／Ｏポート、２０  表示部、２１  レンズ、２２  撮像素子、２３  Ａ／Ｄ変換器、２４  制御回路、２５  クロック信号発生回路、１００  画像処理装置、１１１  水平エッジ強度検出器、１１２  垂直エッジ強度検出器、１１３  ＥＣ値算出器、１１４  量子化器、１１５  エッジ強度算出器、１１６  しきい値処理器、１２１  フリップフロップ、１２２  有効ＥＣ値抽出器、１２３  差分器、１２４  加算器、１２５，１２６，１３２１，１３３２  フリップフロップ、１２７  有効画素位置特定器、１３１  シフトレジスタ、１３２  遅延器、１３３  復元器、１４１  差分器、１４２  判定器、１４３  加算器、２００  撮像装置、３００  ラインバッファ、３０２  遅延器、３０４  パターンマッチング回路、１３２２  セレクタ（ＳＥＬ）、１３３１  加算器、１３３３  タイミング調整器。
【図１】
2010217990.tif 000003
【図３】
2010217990.tif 000004
【図４】
2010217990.tif 000005
【図５】
2010217990.tif 000006
【図６】
2010217990.tif 000007
【図７】
2010217990.tif 000008
【図９】
2010217990.tif 000009
【図１０】
2010217990.tif 000010
【図１１】
2010217990.tif 000011
【図１２】
2010217990.tif 000012
【図１３】
2010217990.tif 000013
【図１５】
2010217990.tif 000014
【図１６】
2010217990.tif 000015
【図１７】
2010217990.tif 000016
【図１８】
2010217990.tif 000017
【図１９】
2010217990.tif 000018
【図２０】
2010217990.tif 000019
【図２１】
2010217990.tif 000020
【図２】
2010217990.tif 000021
【図８】
2010217990.tif 000022
【図１４】
2010217990.tif 000023