(57)【要約】  複数の検査画像データを圧縮するための圧縮装置（１０）は、複数の検査画像データの同一座標の画素値を行列要素とする画素行列データを生成する画素行列生成部（２０１）と、画素行列データの各行列要素の中から最小値を有する最小要素を選定し、画素行列データの各行列要素から最小要素を減算した値を行列要素とする差分行列データを生成する差分行列生成部（２０３）と、差分行列データと、最小要素と、差分行列データの各行列要素を表現するための表現ビット数とに基づいて、画素行列データを圧縮する圧縮処理部（２０７）とを備える。
2020203191.tif 000002
【特許請求の範囲】
【請求項１】
複数の検査画像データを圧縮するための圧縮装置であって、
前記複数の検査画像データの同一座標の画素値を行列要素とする画素行列データを生成する画素行列生成部と、
前記画素行列データの各行列要素の中から最小値を有する最小要素を選定し、前記画素行列データの各行列要素から前記最小要素を減算した値を行列要素とする差分行列データを生成する差分行列生成部と、
前記差分行列データと、前記最小要素と、前記差分行列データの各行列要素を表現するための表現ビット数とに基づいて、前記画素行列データを圧縮する圧縮処理部とを備える、圧縮装置。
【請求項２】
前記差分行列データの各行列要素の中に異常要素が含まれているか否かを判定する異常判定部をさらに備え、
前記異常判定部は、
前記差分行列データの各行列要素の中に異常要素が含まれていないと仮定した場合に、予め定められた式と、前記差分行列データと、前記最小要素と、前記表現ビット数とに基づいて、前記画素行列データの第１圧縮率を算出し、
前記差分行列データの各行列要素のうち最大値を有する第１最大要素を異常要素として仮定し、前記第１最大要素を、基準値を有する要素に置換することによって第１仮差分行列データを生成し、
前記予め定められた式と、前記第１仮差分行列データと、前記最小要素と、前記表現ビット数とに基づいて、前記画素行列データの第２圧縮率を算出し、
前記第１圧縮率が前記第２圧縮率以上である場合、前記差分行列データの各行列要素の中に異常要素が含まれないと判定する、請求項１に記載の圧縮装置。
【請求項３】
前記差分行列データの各行列要素の中に異常要素が含まれない場合、前記圧縮処理部は、前記画素行列データを、前記差分行列データと前記最小要素と前記表現ビット数とを含む圧縮画像データに変換する、請求項２に記載の圧縮装置。
【請求項４】
前記異常判定部は、
前記第１圧縮率が前記第２圧縮率未満である場合、前記第１仮差分行列データの各行列要素のうち最大値を有する第２最大要素を異常要素として仮定し、前記第２最大要素を、前記基準値を有する要素に置換することによって第２仮差分行列データを生成し、
前記予め定められた式と、前記第２仮差分行列データと、前記最小要素と、前記表現ビット数とに基づいて、前記画素行列データの第３圧縮率を算出し、
前記第２圧縮率が前記第３圧縮率以上である場合、前記圧縮処理部は、前記画素行列データを、前記第１仮差分行列データと、前記最小要素と、前記表現ビット数と、前記異常要素に関する情報とを含む圧縮画像データに変換する、請求項２または３に記載の圧縮装置。
【請求項５】
前記基準値は０である、請求項２〜請求項４のいずれか１項に記載の圧縮装置。
【請求項６】
複数の検査画像データを圧縮するための圧縮方法であって、
前記複数の検査画像データの同一座標の画素値を行列要素とする画素行列データを生成するステップと、
前記画素行列データの各行列要素の中から最小値を有する最小要素を選定し、前記画素行列データの各行列要素から前記最小要素を減算した値を行列要素とする差分行列データを生成するステップと、
前記差分行列データと、前記最小要素と、前記差分行列データの各行列要素を表現するための表現ビット数とに基づいて、前記画素行列データを圧縮するステップとを含む、圧縮方法。
【請求項７】
複数の検査画像データを圧縮するための圧縮装置のコンピュータに実行させる圧縮プログラムであって、
前記圧縮プログラムは、前記コンピュータに、
前記複数の検査画像データの同一座標の画素値を行列要素とする画素行列データを生成するステップと、
前記画素行列データの各行列要素の中から最小値を有する最小要素を選定し、前記画素行列データの各行列要素から前記最小要素を減算した値を行列要素とする差分行列データを生成するステップと、
前記差分行列データと、前記最小要素と、前記差分行列データの各行列要素を表現するための表現ビット数とに基づいて、前記画素行列データを圧縮するステップとを実行させる、圧縮プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、検査画像データの圧縮装置、圧縮方法、および圧縮プログラムに関する。
【背景技術】
【０００２】
画像データを可逆圧縮する場合、ＰＮＧ（Portable  Network  Graphics）、Ｌｏｓｓｌｅｓｓ  ＪＰＥＧ（Joint  Photographic  Experts  Group）等の可逆圧縮アルゴリズムが用いられる。【０００３】
特開２０１０−１４１６９６号公報（特許文献１）は、画像データの圧縮装置を開示している。当該圧縮装置は、画像データを規定のブロックごとに分割し、各ブロック内における濃度に関する代表値を用いて当該ブロックの画像データを再現可能であるか否かを判断し、再現可能な場合には当該ブロックについての代表値を算出し、再現可能でない場合にはブロックをさらに細かい小ブロックに再分割する。また、この圧縮装置は、各小ブロック内における濃度に関する代表値を用いて当該小ブロックの画像データを再現可能であるか否かを判断し、再現可能の場合には当該小ブロックについての代表値を算出する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１４１６９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
検査対象物（例えば、基板）を撮像して得られた検査画像データは、トレーサビリティの観点から劣化させずに保存しておくことが求められる。一方、大量の検査画像データを圧縮せずに記憶装置に保存するとコストの増大を招くため、複数の検査画像データを効率よく保存するための可逆圧縮アルゴリズムが必要となる。特許文献１では、圧縮率の高い代表値圧縮を実現することを検討しているが、上記ニーズを満たすための技術は何ら教示ないし示唆されていない。【０００６】
本開示のある局面における目的は、複数の検査画像データをより効率よく可逆圧縮することである。
【課題を解決するための手段】
【０００７】
ある実施の形態に従うと、複数の検査画像データを圧縮するための圧縮装置が提供される。圧縮装置は、複数の検査画像データの同一座標の画素値を行列要素とする画素行列データを生成する画素行列生成部と、画素行列データの各行列要素の中から最小値を有する最小要素を選定し、画素行列データの各行列要素から最小要素を減算した値を行列要素とする差分行列データを生成する差分行列生成部と、差分行列データと、最小要素と、差分行列データの各行列要素を表現するための表現ビット数とに基づいて、画素行列データを圧縮する圧縮処理部とを備える。【０００８】
他の実施の形態に従うと、複数の検査画像データを圧縮するための圧縮方法が提供される。圧縮方法は、複数の検査画像データの同一座標の画素値を行列要素とする画素行列データを生成するステップと、画素行列データの各行列要素の中から最小値を有する最小要素を選定し、画素行列データの各行列要素から最小要素を減算した値を行列要素とする差分行列データを生成するステップと、差分行列データと、最小要素と、差分行列データの各行列要素を表現するための表現ビット数とに基づいて、画素行列データを圧縮するステップとを含む。【０００９】
さらに他の実施の形態に従うと、複数の検査画像データを圧縮するための圧縮装置のコンピュータに実行させる圧縮プログラムが提供される。圧縮プログラムは、コンピュータに、複数の検査画像データの同一座標の画素値を行列要素とする画素行列データを生成するステップと、画素行列データの各行列要素の中から最小値を有する最小要素を選定し、画素行列データの各行列要素から最小要素を減算した値を行列要素とする差分行列データを生成するステップと、差分行列データと、最小要素と、差分行列データの各行列要素を表現するための表現ビット数とに基づいて、画素行列データを圧縮するステップとを実行させる。
【発明の効果】
【００１０】
本開示によると、複数の検査画像データをより効率よく可逆圧縮することができる。
【図面の簡単な説明】
【００１１】
【図１】画像検査装置の全体構成の一例を示す図である。
【図２】検査画像データ群から画素行列データを生成する際のイメージ図である。
【図３】差分行列データの生成方式を説明するための図である。
【図４】画素行列データの各行列要素に異常要素が存在する場合の差分行列データの生成方式を説明するための図である。
【図５】圧縮画像データのデータ構造の一例を示す図である。
【図６】画像検査装置の機能構成を示す模式図である。
【図７】画像検査装置が実行する圧縮処理手順の一例を示すフローチャートである。
【図８】異常判定処理の処理手順の一例を示すフローチャートである。
【図９】圧縮検査情報データのデータ構造の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００１３】
＜全体構成＞
図１は、画像検査装置１０の全体構成の一例を示す図である。画像検査装置１０は、検査対象物を撮像した検査画像データを用いて、検査対象物を検査する機能を有している。例えば、画像検査装置１０は、工業製品の生産ラインなどにおいて、ステージ上に載置された検査対象物を撮像し、得られた画像を用いて検査対象物の外観検査を行なう。外観検査では、検査対象物の傷、汚れ、異物の有無等が検査される。検査対象物は、例えば、樹脂、金属、基板等の製品である。
【００１４】
また、画像検査装置１０は、大量の検査対象物の検査画像データを圧縮して保存する機能を有している。本実施の形態では、検査画像データを圧縮する「圧縮装置」が、画像検査装置１０であるとして説明する。ただし、「圧縮装置」は、画像検査装置１０以外の他の装置であってもよい。
【００１５】
図１を参照して、画像検査装置１０は、主要なコンポーネントとして、プロセッサ１０１と、ＲＡＭ１０３と、ＲＯＭ１０５と、撮像装置１０７と、記憶装置１０９とを含む。
【００１６】
プロセッサ１０１は、典型的には、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Multi  Processing  Unit）等といった演算処理部である。典型的には、プロセッサ１０１は、ＲＡＭ１０３、ＲＯＭ１０５等に記憶されたプログラムを読み出して実行することで、画像検査装置１０の各部の動作を制御する。より詳細にはプロセッサ１０１は、当該プログラムを実行することによって、後述する画像検査装置１０の処理（ステップ）の各々を実現する。
【００１７】
ＲＡＭ１０３は、プロセッサ１０１によって生成されたデータを一時的に保持する。ＲＯＭ１０５は、画像検査装置１０を構成するために予め入力された各種データを格納する。記憶装置１０９は、ハードディスクあるいはＳＳＤ（Solid  State  Drive）などの不揮発性記憶媒体であり、撮像装置１０７によって取得された検査画像データ、プロセッサ１０１によって用いられる各種情報等を記憶する。
【００１８】
撮像装置１０７は、一例として、レンズなどの光学系に加えて、ＣＣＤ（Coupled  Charged  Device）またはＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）センサといった、複数の画素に区画された撮像素子を含む。撮像装置１０７は、例えば、ラインスキャンカメラ、エリアスキャンカメラ等である。典型的には、撮像装置１０７は、搬送機構によって搬送される検査対象物を順次撮像する。
【００１９】
プロセッサ１０１は、撮像装置１０７によって取得された検査画像データに対して予め定められた検査処理を実行する。例えば、プロセッサ１０１は、検査画像データに対して２値化処理を実行して、検査対象物におけるクラック（例えば、ひび割れ）の有無を検査して、検査結果データを生成する。プロセッサ１０１は、当該検査画像データと当該検査結果データとを関連付けて記憶装置１０９に記憶する。この時点で記憶される検査画像データは、圧縮されていない（すなわち、非圧縮の）検査画像データである。
【００２０】
ここで、画像検査装置１０によって検査される各検査対象物は同じ製品であるため、寸法、形状等が同じであり外観的に類似している。そのため、各検査対象物を撮像して得られる各検査画像データは同じ特徴を有する。特徴は、例えば、エッジ、輝度勾配等であり、外観検査に用いられる物理量を含む。
【００２１】
プロセッサ１０１は、各検査画像データが同じ特徴を有することを利用して、非圧縮の各検査画像データに対して可逆圧縮処理を実行し、圧縮された各検査画像データを記憶装置１０９に記憶する。プロセッサ１０１は、圧縮された各検査画像データを記憶装置１０９に記憶した後、非圧縮の各検査画像データを削除する。
【００２２】
なお、画像検査装置１０は、検査画像データを表示するためのディスプレイ、ユーザの操作入力を受け付けるための入力装置（例えば、キーボード、マウス等）、他の装置と通信するための通信インターフェイス、プロセッサ１０１と外部の記録媒体との間のデータ伝送を仲介するメモリインターフェイス等をさらに有していてもよい。
【００２３】
＜圧縮方式＞
ここでは、本実施の形態に従う各検査画像データの圧縮方式について説明する。
【００２４】
（画素行列データの生成）
まず、画像検査装置１０は、検査画像データ群に含まれる各検査画像データを圧縮に適した構造に変換する。
【００２５】
図２は、検査画像データ群から画素行列データを生成する際のイメージ図である。ここでは、説明の容易化のため、検査画像データ群を、同じ特徴を有するｎ個（ただし、ｎは２以上の整数）の検査画像データの集合であるとする。また、各検査画像データの画素数はＨ×Ｖ個であり、ｎ個の検査画像データの各々にはインデックスが割当てられているものとする。なお、Ｈは水平方向の画素数であり、Ｖは垂直方向の画素数である。
【００２６】
画像検査装置１０は、ｎ個の検査画像データの同一位置（すなわち、同一座標）の画素における画素値を行列要素とする画素行列データを生成する。図３に示すように、座標（Ｘ，Ｙ）の画素に対応する画素行列データＬ（Ｘ，Ｙ）は、ｎ個の検査画像データの同一座標（Ｘ，Ｙ）における画素値を行列要素とする１×Ｎ行列のデータである。そのため、画素数分（すなわち、Ｈ×Ｖ組）の画素行列データＬ（Ｘ，Ｙ）が生成される。
【００２７】
ｎ個目の検査画像データの座標（Ｘ，Ｙ）における画素値をＰｎ（Ｘ，Ｙ）とする。この場合、画素行列データＬ（Ｘ，Ｙ）は、行列要素として画素値Ｐ１（Ｘ，Ｙ）〜Ｐｎ（Ｘ，Ｙ）を有する。そのため、画素値Ｐｎ（Ｘ，Ｙ）は行列要素Ｐｎ（Ｘ，Ｙ）とも称される。図３の例では、行列要素Ｐ１（Ｘ，Ｙ）が“１０”、行列要素Ｐ２（Ｘ，Ｙ）が“１０”、行列要素Ｐ３（Ｘ，Ｙ）が“１１”、・・・、行列要素Ｐｎ（Ｘ，Ｙ）が“１０”である。本実施の形態では、画素値は８ビットの階調で表現されており、０〜２５５の値をとるものとする。ただし、画素値は異なるビットの階調で表現されていてもよい。
【００２８】
検査画像データ群に含まれる各検査画像データは同じ特徴を有するため、各検査画像データの同一座標における画素値は高確率で類似した値をとる。すなわち、画素行列データＬ（Ｘ，Ｙ）の各行列要素Ｐ１（Ｘ，Ｙ）〜Ｐｎ（Ｘ，Ｙ）は、高確率で類似した値となる。画像検査装置１０は、このことを利用して、各検査画像データを効率よく圧縮する。
【００２９】
なお、検査画像データがカラー画像である場合のように、画素が単一の構成要素ではなく複数の構成要素を含む場合には、画素行列データＬ（Ｘ，Ｙ）は画素を構成する要素数分だけ生成される。例えば、検査画像データがＲ，Ｇ，Ｂの３チャネルで表現されており、各チャネルが８ビットの階調で０〜２５５の値をとる場合が考えられる。
【００３０】
この場合、画素がＲ要素、Ｇ要素、Ｂ要素の３つのサブ画素を有しており、Ｒ要素用の画素行列データＬｒ（Ｘ，Ｙ）、Ｇ要素用の画素行列データＬｇ（Ｘ，Ｙ）、Ｂ要素用の画素行列データＬｂ（Ｘ，Ｙ）の３つの画素行列データが生成される。画素行列データＬｒ（Ｘ，Ｙ）、Ｌｇ（Ｘ，Ｙ）、Ｌｂ（Ｘ，Ｙ）における行列要素（すなわち、画素値）は、８ビットで表現され、０〜２５５の値をとる。
【００３１】
（差分行列データの生成）
次に、画像検査装置１０は、画素行列データＬ（Ｘ，Ｙ）のデータ量を圧縮するために、差分行列データを生成する。
【００３２】
図３は、差分行列データの生成方式を説明するための図である。図３の例では、説明の容易化のため、検査画像データの個数ｎが“１０”であるとする。また、画素行列データＬ（Ｘ，Ｙ）の各行列要素は８ビットで表現されており、０〜２５５の値をとり得る。
【００３３】
図３を参照して、画像検査装置１０は、画素行列データＬ（Ｘ，Ｙ）の各行列要素Ｐ１（Ｘ，Ｙ）〜Ｐ１０（Ｘ，Ｙ）の中から最小値を有する最小要素Ｍｉｎ（Ｘ，Ｙ）を選定する。図３の例では、最小値“９”を有する行列要素Ｐ２（Ｘ，Ｙ）、Ｐ４（Ｘ，Ｙ）、Ｐ９（Ｘ，Ｙ）が最小要素Ｍｉｎ（Ｘ，Ｙ）として選定される。続いて、画像検査装置１０は、画素行列データＬ（Ｘ，Ｙ）の各行列要素から最小要素Ｍｉｎ（Ｘ，Ｙ）を減算して、減算後の値を行列要素とする差分行列データＬｄ（Ｘ，Ｙ）を生成する。これにより、Ｈ×Ｖ組の差分行列データＬｄ（Ｘ，Ｙ）が生成される。
【００３４】
差分行列データＬｄ（Ｘ，Ｙ）は、行列要素Ｐｄ１（Ｘ，Ｙ）〜Ｐｄ１０（Ｘ，Ｙ）を有している。例えば、行列要素Ｐｄ１（Ｘ，Ｙ）は、行列要素Ｐ１（Ｘ，Ｙ）の値“１０”から最小値“９”を減算した値“１”を有し、行列要素Ｐｄ２（Ｘ，Ｙ）は、行列要素Ｐ２（Ｘ，Ｙ）の値“９”から最小値“９”を減算した値“０”を有する。その他の行列要素Ｐｄ３（Ｘ，Ｙ）〜Ｐｄ１０（Ｘ，Ｙ）についても同様である。
【００３５】
画素行列データＬ（Ｘ，Ｙ）の最小要素Ｍｉｎ（Ｘ，Ｙ）を基準として生成された差分行列データＬｄ（Ｘ，Ｙ）の各行列要素は０〜３の値を有する。そのため、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素は２ビットで表現できる。ここで、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素のビット数、すなわち、各行列要素を表現するために必要なビット数を表現ビット数Ｒｂ（Ｘ，Ｙ）とする。図３の例では表現ビット数Ｒｂ（Ｘ，Ｙ）は“２”となる。表現ビット数Ｒｂ（Ｘ，Ｙ）は、各行列要素が８ビットで表現されていることから１〜８の値を取り得る。そのため、“表現ビット数”自体を表わすために必要なビット数は“３”となる。
【００３６】
また、画素行列データＬ（Ｘ，Ｙ）の各行列要素が８ビットで表現されていることから、画素行列データＬ（Ｘ，Ｙ）の最小要素Ｍｉｎ（Ｘ，Ｙ）の値（すなわち、最小値）は、０〜２５５を取り得る。そのため、最小要素Ｍｉｎ（Ｘ，Ｙ）を表現するために必要なビット数は“８”である。
【００３７】
元の画素行列データＬ（Ｘ，Ｙ）は、差分行列データＬｄ（Ｘ，Ｙ）と、最小要素Ｍｉｎ（Ｘ，Ｙ）と、差分行列データＬｄの各行列要素を表現するための表現ビット数Ｒｂ（Ｘ，Ｙ）とを含むデータＥ０を用いて復元できる。
【００３８】
ここで、画素行列データＬ（Ｘ，Ｙ）は、１０個の行列要素の各々が８ビットで表現されているため、データ量は“８０”（＝１０×８）ビットである。一方、差分行列データＬｄ（Ｘ，Ｙ）は１０個の行列要素の各々が２ビットで表現されているため、そのデータ量は“２０”（＝２×１０）ビットである。また、最小要素Ｍｉｎ（Ｘ，Ｙ）を表わすために必要なデータ量は８ビットであり、表現ビット数Ｒｂ（Ｘ，Ｙ）を表わすために必要なデータ量は３ビットである。そのため、データＥ０のデータ量は３１（＝２０＋８＋３）ビットとなる。このことから、画素行列データＬ（Ｘ，Ｙ）をデータＥ０に変換することによって、６１．２５％のデータ量が削減されている。
【００３９】
上述したように、データＥ０から画素行列データＬ（Ｘ，Ｙ）を復元することができるため、画素行列データＬ（Ｘ，Ｙ）からデータＥ０への変換処理は、データの実質的な性質である情報量を保ったままデータ量を削減する可逆圧縮処理に相当する。
【００４０】
各検査画像データの個数は“１０”、表現ビット数Ｒｂ（Ｘ，Ｙ）は“２”、最小要素Ｍｉｎ（Ｘ，Ｙ）を表わすために必要なビット数は“８”、表現ビット数Ｒｂ（Ｘ，Ｙ）自体を表わすために必要なビット数は“３”である。そのため、画素行列データＬ（Ｘ，Ｙ）からデータＥ０へ変換した場合の圧縮率Ｃ０は、画素の色深度Ｄｅを用いると、以下の式（１）のように表わされる。
【００４１】
Ｃ０＝１−（２×１０＋８＋３）／（１０×Ｄｅ）・・・（１）
本実施の形態では、色深度Ｄｅは８ビットであるため、式（１）を用いると圧縮率Ｃ０は６１．２５％と算出される。
【００４２】
（異常要素の判定）
典型的には、画素行列データＬ（Ｘ，Ｙ）からデータＥ０への変換によって、データ量を削減することができるが、画素行列データＬ（Ｘ，Ｙ）の行列要素に異常要素が存在する場合には、データ量が増大する場合がある。そこで、画像検査装置１０は、異常要素の存在の有無を判定しつつ、より効率的なデータ圧縮を実行するように構成されている。
【００４３】
図４は、画素行列データＬ（Ｘ，Ｙ）の各行列要素に異常要素が存在する場合の差分行列データの生成方式を説明するための図である。図４の例では、説明の容易化のため、検査画像データの個数ｎが“１０”であるとする。また、画素行列データＬ（Ｘ，Ｙ）の各行列要素は８ビットで表現されており、０〜２５５の値をとり得る。
【００４４】
図４を参照して、画素行列データＬ（Ｘ，Ｙ）の最小要素の値（すなわち、最小値）は“３１”である。画像検査装置１０は、図３で説明したように、画素行列データＬ（Ｘ，Ｙ）の各行列要素から最小要素を減算して、減算後の値を行列要素とする差分行列データＬｄ（Ｘ，Ｙ）を生成する。
【００４５】
差分行列データＬｄ（Ｘ，Ｙ）の各行列要素は０〜１０９の値をとるため、各行列要素は７ビットで表現できる。すなわち、図４の例では表現ビット数Ｒｂ（Ｘ，Ｙ）は“７”である。また、最小要素Ｍｉｎ（Ｘ，Ｙ）を表わすために必要なビット数は“８”、表現ビット数Ｒｂ（Ｘ，Ｙ）自体を表わすために必要なビット数は“３”である。
【００４６】
このことから、差分行列データＬｄ（Ｘ，Ｙ）と、最小要素Ｍｉｎ（Ｘ，Ｙ）と、表現ビット数Ｒｂ（Ｘ，Ｙ）とを含むデータＥ０のデータ量は“８１”（＝７×１０＋８＋３）となり、元の画素行列データＬ（Ｘ，Ｙ）のデータ量“８０”よりも大きくなる。これは、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素の中に極端に大きい値（すなわち、１０９）を有する行列要素Ｐｄ６（Ｘ，Ｙ）が存在するためである。
【００４７】
圧縮率の低下を防ぐため、画像検査装置１０は以下の処理をさらに実行する。具体的には、画像検査装置１０は、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素の中から最大値を有する最大要素を選定し、当該最大要素を異常要素として仮定する。図４の例では、最大値“１０９”を有する行列要素Ｐｄ６（Ｘ，Ｙ）が異常要素として仮定される。
【００４８】
続いて、画像検査装置１０は、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素における最大要素の値を基準値“０”に置換した仮差分行列データＬｄａ（Ｘ，Ｙ）を生成する。すなわち、仮差分行列データＬｄａ（Ｘ，Ｙ）は、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素における最大要素を基準値“０”に変更した差分行列データに相当する。なお、基準値は、予め設定された値であればよく、“０”以外の値であってもよい。
【００４９】
仮差分行列データＬｄａ（Ｘ，Ｙ）は、行列要素Ｐｄａ１（Ｘ，Ｙ）〜Ｐｄａ１０（Ｘ，Ｙ）を有する。行列要素Ｐｄａ６（Ｘ，Ｙ）は基準値“０”を有し、仮差分行列データＬｄａ（Ｘ，Ｙ）の他の各行列要素Ｐｄａ１（Ｘ，Ｙ）〜Ｐｄａ５（Ｘ，Ｙ），Ｐｄａ７（Ｘ，Ｙ）〜Ｐｄａ１０（Ｘ，Ｙ）は、それぞれ、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素Ｐｄ１（Ｘ，Ｙ）〜Ｐｄ５（Ｘ，Ｙ），Ｐｄ７（Ｘ，Ｙ）〜Ｐｄ１０（Ｘ，Ｙ）と同一である。
【００５０】
画像検査装置１０は、差分行列データＬｄ（Ｘ，Ｙ）の異常要素のインデックスＩと、当該インデックスＩに対応する画素行列データＬ（Ｘ，Ｙ）の行列要素の値（以下、「異常画素値」とも称する。）とを含む異常データＧ１（Ｘ，Ｙ）を生成する。インデックスＩは、行列データの先頭から１，２，・・・，ｎと割り振られるものとする。図４の例では、異常要素はＰｄ６（Ｘ，Ｙ）であるためインデックスＩは“６”であり、そのインデックスＩに対応する異常画素値は“１４０”である。
【００５１】
元の画素行列データＬ（Ｘ，Ｙ）は、仮差分行列データＬｄａ（Ｘ，Ｙ）と、最小要素Ｍｉｎ（Ｘ，Ｙ）と、表現ビット数Ｒｂ（Ｘ，Ｙ）と、異常データＧ１（Ｘ，Ｙ）（すなわち、インデックスＩおよび異常画素値）とを含むデータＥ１を用いて復元できる。
【００５２】
仮差分行列データＬｄａ（Ｘ，Ｙ）の各行列要素は０〜３の値を有するため、各行列要素は２ビットで表現できる。そのため、仮差分行列データＬｄａ（Ｘ，Ｙ）のデータ量は２０（＝２×１０）ビットである。また、最小要素Ｍｉｎ（Ｘ，Ｙ）を表わすために必要なビット数は“８”、表現ビット数Ｒｂ（Ｘ，Ｙ）自体を表わすために必要なビット数は“３”である。さらに、検査画像データの個数ｎは“１０”であるため、異常データＧ１に含まれるインデックスＩは４ビットで表現できる。異常データＧ１に含まれる異常画素値は画素の色深度と同じビット数（すなわち、８ビット）で表現できる。
【００５３】
このことから、データＥ１のデータ量は、４３（＝２０＋８＋３＋４＋８）ビットとなる。データＥ１のデータ量“４３”は、元の画素行列データＬ（Ｘ，Ｙ）のデータ量“８０”よりも小さい。画素行列データＬ（Ｘ，Ｙ）をデータＥ１に変換することによって、４６．２５％のデータ量が削減されている。
【００５４】
各検査画像データの個数をｎ、表現ビット数Ｒｂ（Ｘ，Ｙ）をＲｂ、最小要素Ｍｉｎ（Ｘ，Ｙ）を表わすために必要なビット数をＢｍ、表現ビット数Ｒｂ（Ｘ，Ｙ）自体を表わすために必要なビット数をＢｒ、画素の色深度をＤｅ、異常データの個数をｋとすると、異常データがｋ個のときの圧縮率Ｃｋは、以下の式（２）のように表わされる。
【００５５】
Ｃｋ＝１−[｛（Ｒｂ×ｎ＋Ｂｍ＋Ｂｒ）＋ｋ×（ｌｏｇ２ｎ＋Ｄｅ）｝／（ｎ×Ｄｅ）］・・・（２）
ここで、画素行列データＬ（Ｘ，Ｙ）からデータＥ１へ変換する場合、ｎは“１０”、Ｒｂは“２”、Ｂｍは“８”、Ｂｒは“３”、Ｄｅは“８”、ｋは“１”である。また、ｌｏｇ２ｎの値は小数点以下を切り上げたものとする。そのため、これらの値を式（２）に代入すると、圧縮率Ｃ１は４６．２５％と算出される。なお、式（１）は、式（２）においてｋ＝０とした場合に相当する式である。
【００５６】
画素行列データＬ（Ｘ，Ｙ）からデータＥ１への変換によりデータ量は圧縮されているが、より効率よくデータ量を圧縮するため、さらに、仮差分行列データＬｄａ（Ｘ，Ｙ）の各行列要素のうちの最大要素を異常要素として仮定して同様の処理を実行する。
【００５７】
具体的には、図４の例では、画像検査装置１０は、最大値“３”を有する行列要素Ｐｄａ８（Ｘ，Ｙ）を異常要素として仮定する。続いて、画像検査装置１０は、仮差分行列データＬｄａ（Ｘ，Ｙ）の各行列要素における最大要素の値を基準値“０”に置換した仮差分行列データＬｄｂ（Ｘ，Ｙ）を生成する。
【００５８】
仮差分行列データＬｄｂ（Ｘ，Ｙ）は、行列要素Ｐｄｂ１（Ｘ，Ｙ）〜Ｐｄｂ１０（Ｘ，Ｙ）を有している。行列要素Ｐｄｂ８（Ｘ，Ｙ）は基準値“０”を有し、仮差分行列データＬｄｂ（Ｘ，Ｙ）の他の行列要素Ｐｄｂ１（Ｘ，Ｙ）〜Ｐｄｂ７（Ｘ，Ｙ），Ｐｄｂ９（Ｘ，Ｙ），Ｐｄｂ１０（Ｘ，Ｙ）は、それぞれ、仮差分行列データＬｄａ（Ｘ，Ｙ）の各行列要素Ｐｄａ１（Ｘ，Ｙ）〜Ｐｄａ７（Ｘ，Ｙ），Ｐｄａ９（Ｘ，Ｙ），Ｐｄａ１０（Ｘ，Ｙ）と同一である。
【００５９】
画像検査装置１０は、異常データＧ２として、仮差分行列データＬｄａ（Ｘ，Ｙ）の異常要素に対応するインデックスＩと、当該インデックスＩに対応する異常画素値とを抽出する。図４の例では、異常要素はＰｄａ８（Ｘ，Ｙ）であるためインデックスＩは“８”であり、そのインデックスＩに対応する異常画素値は“３４”である。
【００６０】
元の画素行列データＬ（Ｘ，Ｙ）は、仮差分行列データＬｄｂ（Ｘ，Ｙ）と、最小要素Ｍｉｎ（Ｘ，Ｙ）と、表現ビット数Ｒｂ（Ｘ，Ｙ）と、２つの異常データＧ１，Ｇ２とを含むデータＥ２から復元することができる。
【００６１】
仮差分行列データＬｄｂ（Ｘ，Ｙ）の各行列要素は０〜２の値を有するため、各行列要素は２ビットで表現できる。そのため、仮差分行列データＬｄｂ（Ｘ，Ｙ）のデータ量は２０（＝２×１０）ビットである。また、最小要素Ｍｉｎ（Ｘ，Ｙ）を表わすために必要なビット数は“８”、表現ビット数Ｒｂ（Ｘ，Ｙ）自体を表わすために必要なビット数は“３”である。さらに、異常データは２つであり、ｎは“１０”であるためインデックスＩは８（＝２×４）で表現でき、異常画素値は１６（＝２×８）で表現できる。
【００６２】
このことから、データＥ２のデータ量は、５５（＝２０＋８＋３＋８＋１６）ビットとなる。データＥ２のデータ量“５５”は、元の画素行列データＬ（Ｘ，Ｙ）のデータ量“８０”よりも小さい。画素行列データＬ（Ｘ，Ｙ）をデータＥ２に変換することによって、３１．２５％のデータ量が削減されている。
【００６３】
ここで、画素行列データＬ（Ｘ，Ｙ）からデータＥ２へ変換する場合、ｎは“１０”、Ｒｂは“２”、Ｂｍは“８”、Ｂｒは“３”、Ｄｅは“８”、ｋは“２”である。また、ｌｏｇ２ｎの値は小数点以下を切り上げたものとする。そのため、これらの値を式（２）に代入すると、圧縮率Ｃ２は３１．２５％と算出される。
【００６４】
圧縮率Ｃ２は圧縮率Ｃ１よりも小さく圧縮効率が悪いことがわかる。したがって、画像検査装置１０は、圧縮率Ｃ１に対応する圧縮方式を選択して効率のよいデータ圧縮を実行する。具体的には、画像検査装置１０は、画素行列データＬ（Ｘ，Ｙ）をデータＥ１に変換することによって、画素行列データＬ（Ｘ，Ｙ）のデータ量を圧縮する。
【００６５】
なお、仮に、圧縮率Ｃ２が圧縮率Ｃ１よりも大きい場合には、画像検査装置１０は、さらに、仮差分行列データＬｄｂ（Ｘ，Ｙ）の各行列要素のうちの最大要素を異常要素として仮定して同様の処理を実行する。
【００６６】
（圧縮画像データの構造）
画像検査装置１０は、上述したデータＥ０あるいはデータＥ１を圧縮画像データとして生成し、記憶装置１０９に記憶する。ここでは、説明の容易化のため、データＥ０を圧縮画像データとして記憶する構成について説明する。
【００６７】
具体的には、画像検査装置１０は、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素を、表現ビット数Ｒｂ（Ｘ，Ｙ）（例えば、“２”）に従ってビットデータに変換したデータと、最小要素Ｍｉｎ（Ｘ，Ｙ）と、表現ビット数Ｒｂ（Ｘ，Ｙ）とを含む圧縮画像データ（すなわち、データＥ０）を生成する。
【００６８】
図５は、圧縮画像データのデータ構造３０１の一例を示す図である。図５の説明では、各最小要素Ｍｉｎ（Ｘ，Ｙ）を単に「最小要素データ」と称し、各表現ビット数Ｒｂ（Ｘ，Ｙ）を単に「表現ビット数データ」と称し、各差分行列データＬｄ（Ｘ，Ｙ）を単に「差分行列データ」と称する。
【００６９】
この場合、相対アドレス“０ｘ００００００００”は、最小要素データの先頭アドレスＭ＿ａｄｄｒを示し、相対アドレス“０ｘ０００００００４”は、最小要素データのサイズＭ＿ｓｉｚｅを示している。相対アドレス“０ｘ０００００００８”は、表現ビット数データの先頭アドレスＢ＿ａｄｄｒを示し、相対アドレス“０ｘ０００００００Ｃ”は、表現ビット数データのサイズＢ＿ｓｉｚｅを示している。相対アドレス“０ｘ００００００１０”は、差分行列データの先頭アドレスＤ＿ａｄｄｒを示し、相対アドレス“０ｘ００００００１４”は、差分行列データのサイズＤ＿ｓｉｚｅを示している。
【００７０】
そのため、最小要素データの末尾アドレスは“Ｍ＿ａｄｄｒ＋Ｍ＿ｓｉｚｅ”で表わされ、表現ビット数データの末尾アドレスは“Ｂ＿ａｄｄｒ＋Ｂ＿ｓｉｚｅ”で表わされ、差分行列データの末尾アドレスは“Ｄ＿ａｄｄｒ＋Ｄ＿ｓｉｚｅ”で表わされる。
【００７１】
図５に示すデータ構造３０１によると、相対アドレス“０ｘ００００００００”〜“０ｘ００００００１４”を読み込むことで、任意のメモリアドレスに存在する最小要素データ、表現ビット数データ、および差分行列データを参照することができる。
【００７２】
なお、画像検査装置１０は、以下のように、圧縮画像データから検査画像データを復元する。差分行列データＬｄ（Ｘ，Ｙ）は、ビット単位のデータとして記憶されている。そのため、画像検査装置１０は、表現ビット数Ｒｂ（Ｘ，Ｙ）単位で、圧縮画像データ内の差分行列データＬｄ（Ｘ，Ｙ）を相対アドレスＤ＿ａｄｄｒから読み出す。
【００７３】
次に、画像検査装置１０は、差分行列データＬｄ（Ｘ，Ｙ）、最小要素Ｍｉｎ（Ｘ，Ｙ）および表現ビット数Ｒｂ（Ｘ，Ｙ）に基づいて画素行列データＬ（Ｘ，Ｙ）を復元する。これにより、画像検査装置１０は、各座標（Ｘ，Ｙ）における画素行列データＬ（Ｘ，Ｙ）を復元する。画像検査装置１０は、復元されたすべての画素行列データＬ（Ｘ，Ｙ）に基づいて、各検査画像データを復元する。
【００７４】
なお、表現ビットデータ、差分行列データは１バイト未満の情報単位で構成されている。そのため、表現ビットデータ、差分行列データのサイズが整数バイトで表現できなかった場合、ビットのパディング、すなわち、データがバイト単位の情報になるように任意の値を持つビットを末尾に付加する。図５に示すデータ構造３０１によると、ビットのパディングが最小限で済むため、メモリの利用効率に優れている。ただし、最小要素データ、表現ビット数データ、および差分行列データの全てのデータを読み込み終えるまで各画素行列データＬ（Ｘ，Ｙ）の復元処理を開始できない。
【００７５】
また、Ｈ×Ｖ組の最小要素Ｍｉｎ（Ｘ，Ｙ）の集合は、各座標の最小要素をまとめた画像のように捉えることができる。そのため、最小要素データは、通常の画像としてＰＮＧあるいはＬｏｓｓｌｅｓｓ  ＪＰＥＧ等の一般的な可逆圧縮アルゴリズムで可逆圧縮することで検査画像データ群の圧縮率を向上させることができる。また、最小要素データを画像として可逆圧縮した場合には、その復元も行なう必要がある。
【００７６】
他の例として、差分行列データＬｄ（Ｘ，Ｙ）、最小値Ｍｉｎ（Ｘ，Ｙ）および表現ビット数Ｒｂ（Ｘ，Ｙ）の組を連続した領域に記憶するデータ構造であってもよい。この場合、差分行列データＬｄ（Ｘ，Ｙ）、最小値Ｍｉｎ（Ｘ，Ｙ）および表現ビット数Ｒｂ（Ｘ，Ｙ）の組毎にビットのパディングが発生するため、メモリの利用効率が悪化する。
【００７７】
しかし、データを先頭から読み込む場合、各検査画像データにおける座標（Ｘ，Ｙ）の画素行列データＬ（Ｘ，Ｙ）を復元する際には、差分行列データＬｄ（Ｘ，Ｙ）、最小値Ｍｉｎ（Ｘ，Ｙ）および表現ビット数Ｒｂ（Ｘ，Ｙ）の読み込み処理が完了したタイミングで復元処理を開始できる。そのため、読み込み処理と並行して、読み込みが完了した差分行列データＬｄ（Ｘ，Ｙ）、最小値Ｍｉｎ（Ｘ，Ｙ）および表現ビット数Ｒｂ（Ｘ，Ｙ）の組から逐次復元処理を開始することができる。これにより、各画素行列データＬ（Ｘ，Ｙ）の復元処理の高速化が期待できる。
【００７８】
上記では、データＥ０を圧縮画像データとして記憶する構成について説明したが、データＥ１についても同様である。例えば、データＥ１を圧縮画像データとして記憶する場合、各仮差分行列データＬｄａ（Ｘ，Ｙ）、各最小要素Ｍｉｎ（Ｘ，Ｙ）、各表現ビット数Ｒｂ（Ｘ，Ｙ）および各異常データＧ１が記憶装置１０９に記憶される。
【００７９】
＜機能構成＞
図６は、画像検査装置１０の機能構成を示す模式図である。ここでは、主に、画像検査装置１０により実行される圧縮方式に関する機能構成について説明する。図６を参照して、画像検査装置１０は、主な機能構成として、画素行列生成部２０１と、差分行列生成部２０３と、異常判定部２０５と、圧縮処理部２０７とを含む。典型的には、これらの各機能は、プロセッサ１０１がＲＡＭ１０３およびＲＯＭ１０５に格納されたプログラムを実行することによって実現される。なお、これらの機能の一部または全部は専用の回路を用いることによって実現されるように構成されていてもよい。
【００８０】
画素行列生成部２０１は、同じ特徴を有する複数の検査画像データ（すなわち、検査画像データ群）を記憶装置１０９から読み出す。画素行列生成部２０１は、複数の検査画像データの同一座標の画素値を行列要素とする画素行列データを生成する。具体的には、画素行列生成部２０１は、図２で説明したように、各座標（Ｘ，Ｙ）における画素行列データＬ（Ｘ，Ｙ）を生成する。
【００８１】
差分行列生成部２０３は、画素行列データの各行列要素の中から最小値を有する最小要素を選定し、画素行列データの各行列要素から最小要素を減算した値を行列要素とする差分行列データを生成する。具体的には、差分行列生成部２０３は、図３で説明したように、各座標（Ｘ，Ｙ）における差分行列データＬｄ（Ｘ，Ｙ）を生成する。
【００８２】
異常判定部２０５は、差分行列データの各行列要素の中に異常要素が含まれているか否かを判定する。具体的には、異常判定部２０５は、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素の中に異常要素が含まれていないと仮定した場合に、予め定められた式（例えば、式（２））と、差分行列データＬｄ（Ｘ，Ｙ）と、最小要素Ｍｉｎ（Ｘ，Ｙ）と、表現ビット数Ｒｂ（Ｘ，Ｙ）とに基づいて、画素行列データＬ（Ｘ，Ｙ）の圧縮率Ｃ０を算出する。
【００８３】
異常判定部２０５は、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素のうちの最大要素を異常要素として仮定し、当該最大要素を、基準値を有する要素に置換することによって仮差分行列データＬｄａ（Ｘ，Ｙ）を生成する。異常判定部２０５は、式（２）と、仮差分行列データＬｄａ（Ｘ，Ｙ）と、最小要素Ｍｉｎ（Ｘ，Ｙ）と、表現ビット数Ｒｂ（Ｘ，Ｙ）とに基づいて、画素行列データＬ（Ｘ，Ｙ）の圧縮率Ｃ１を算出する。
【００８４】
異常判定部２０５は、圧縮率Ｃ０が圧縮率Ｃ１以上である場合、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素の中に異常要素が含まれないと判定する。すなわち、異常判定部２０５は、画素行列データＬ（Ｘ，Ｙ）の各行列要素の中に異常画素値は存在しないと判定する。
【００８５】
異常判定部２０５は、圧縮率Ｃ０が圧縮率Ｃ１未満である場合、仮差分行列データＬｄａ（Ｘ，Ｙ）の各行列要素のうちの最大要素を異常要素として仮定し、当該最大要素を、基準値を有する要素に置換することによって仮差分行列データＬｄｂ（Ｘ，Ｙ）を生成する。異常判定部２０５は、式（２）と、仮差分行列データＬｄｂ（Ｘ，Ｙ）と、最小要素Ｍｉｎ（Ｘ，Ｙ）と、表現ビット数Ｒｂ（Ｘ，Ｙ）とに基づいて、画素行列データＬ（Ｘ，Ｙ）の圧縮率Ｃ２を算出する。
【００８６】
異常判定部２０５は、圧縮率Ｃ１が圧縮率Ｃ２以上である場合、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素の中に１個の異常要素が含まれると判定する。すなわち、異常判定部２０５は、画素行列データＬ（Ｘ，Ｙ）の各行列要素の中に１つの異常画素値（例えば、図４中のＰ６（Ｘ，Ｙ）の値“１４０”）が存在すると判定する。
【００８７】
圧縮処理部２０７は、差分行列データと、最小要素と、差分行列データの各行列要素を表現するための表現ビット数とに基づいて、画素行列データを圧縮する。
【００８８】
ある局面では、異常判定部２０５によって、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素の中に異常要素が含まれないと判定された場合、圧縮処理部２０７は、圧縮率Ｃ０に対応する圧縮方式に従って画素行列データＬ（Ｘ，Ｙ）を圧縮する。具体的には、圧縮処理部２０７は、画素行列データＬ（Ｘ，Ｙ）を、差分行列データＬｄ（Ｘ，Ｙ）と最小要素Ｍｉｎ（Ｘ，Ｙ）と表現ビット数Ｒｂ（Ｘ，Ｙ）とを含む圧縮画像データ（例えば、データＥ０）に変換する。
【００８９】
他の局面では、異常判定部２０５によって、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素の中に１つの異常要素が含まれると判定された場合（すなわち、圧縮率Ｃ１が圧縮率Ｃ２以上である場合）、圧縮処理部２０７は、圧縮率Ｃ１に対応する圧縮方式を選定し、当該選定された圧縮方式に従って画素行列データＬ（Ｘ，Ｙ）を圧縮する。具体的には、圧縮処理部２０７は、画素行列データＬ（Ｘ，Ｙ）を、仮差分行列データＬｄａ（Ｘ，Ｙ）と、最小要素Ｍｉｎ（Ｘ，Ｙ）と、表現ビット数Ｒｂ（Ｘ，Ｙ）と、異常要素に関する情報（例えば、異常データＧ１）とを含む圧縮画像データ（例えば、データＥ１）に変換する。
【００９０】
＜処理手順＞
図７は、画像検査装置１０が実行する圧縮処理手順の一例を示すフローチャートである。典型的には、以下の各ステップは、画像検査装置１０のプロセッサ１０１により実行される。
【００９１】
図７を参照して、画像検査装置１０は、同じ特徴を有する各検査画像データ（すなわち、検査画像データ群）を記憶装置１０９から読み出す（ステップＳ１０）。検査画像データの個数はｎであるとする。
【００９２】
画像検査装置１０は、検査画像データ群に含まれる各検査画像データの付随情報を示すヘッダデータを圧縮する（ステップＳ１２）。付随情報は、画像データの形式を表現するための情報であり、例えば、画像のサイズ情報、色ビット数等を含む。各検査画像データは同じ特徴を有しているため、各検査画像データの付随情報は同一である。そのため、画像検査装置１０は、各検査画像データの付随情報のうちの１つの付随情報のみを検査画像データ群の付随情報として保持する。冗長な情報である残りの付随情報は削除される。これにより、付随情報のデータを圧縮する。
【００９３】
画像検査装置１０は、各検査画像データに参照データを付加する（ステップＳ１４）。具体的には、参照データは、検査画像データを読み出す際に有用な情報であり、例えば、検査項目名、検査日時等を含む。検査画像データ群は、同じ特徴を有する複数の検査画像データの集合である。そのため、検査画像データ群から目的の検査画像データを取り出す際に、検査項目名、検査日時といった参照データを利用することにより読み出しの高速化を図ることができる。付加される参照データは検査画像データ群に含まれる各検査画像データに共通のものである。なお、各検査画像データに参照データを付加しない構成であってもよい。
【００９４】
画像検査装置１０は、検査画像データを一意に識別するための識別情報データを生成し、生成した識別情報データを検査画像データに付加する（ステップＳ１６）。識別情報データは、例えば、検査画像データのファイル名である。また、識別情報データは、検査画像データのインデックスを有し、識別情報データから検査画像データを参照することができる。なお、検査画像データの検査結果データを、当該検査画像データにさらに付加してもよい。
【００９５】
画像検査装置１０は、検査画像データ群に含まれる各検査画像データを画素行列データＬ（Ｘ，Ｙ）に変換する（ステップＳ１８）。具体的には、図２で説明したように、画像検査装置１０は、ｎ個の検査画像データの同一座標における画素値を行列要素とする画素行列データＬ（Ｘ，Ｙ）を生成する。これにより、各座標（Ｘ，Ｙ）における画素行列データＬ（Ｘ，Ｙ）が生成される。
【００９６】
画像検査装置１０は、画素行列データＬ（Ｘ，Ｙ）から差分行列データＬｄ（Ｘ，Ｙ）を生成する（ステップＳ２０）。具体的には、図３で説明したように、画像検査装置１０は、画像検査装置１０は、画素行列データＬ（Ｘ，Ｙ）の各行列要素から最小要素Ｍｉｎ（Ｘ，Ｙ）を減算した値を行列要素とする差分行列データＬｄ（Ｘ，Ｙ）を生成する。これにより、各座標（Ｘ，Ｙ）における差分行列データＬｄ（Ｘ，Ｙ）が生成される。
【００９７】
続いて、画像検査装置１０は、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素の中に異常要素が含まれているか否かを判定する処理を実行する（ステップＳ２２）。図８を用いて、異常判定処理の処理手順を具体的に説明する。
【００９８】
図８は、異常判定処理の処理手順の一例を示すフローチャートである。図８を参照して、画像検査装置１０は、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素の中に異常要素が含まれていないと仮定した場合の圧縮率Ｃ０を算出する（ステップＳ５０）。具体的には、画像検査装置１０は、ｋ＝０として式（２）を用いて圧縮率Ｃ０を算出する。
【００９９】
画像検査装置１０は、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素のうちの最大要素を異常要素として仮定した場合の圧縮率Ｃ１を算出する（ステップＳ５２）。具体的には、画像検査装置１０は、ｋ＝１として式（２）を用いて、画素行列データＬ（Ｘ，Ｙ）をデータＥ１に変換したときの圧縮率Ｃ１を算出する。
【０１００】
画像検査装置１０は、圧縮率Ｃ０が圧縮率Ｃ１未満であるか否かを判断する（ステップＳ５４）。圧縮率Ｃ０が圧縮率Ｃ１以上である場合（ステップＳ５４においてＮＯ）、画像検査装置１０は、画素行列データＬ（Ｘ，Ｙ）の各行列要素の中に異常画素値は存在しないと判定して（ステップＳ５６）、図７のステップＳ２４に進む。
【０１０１】
一方、圧縮率Ｃ０が圧縮率Ｃ１未満である場合（ステップＳ５４においてＹＥＳ）、画像検査装置１０は、仮差分行列データの各行列要素のうちの最大要素を異常要素として仮定した場合の圧縮率Ｃｋを算出する（ステップＳ５８）。具体的には、画像検査装置１０は、ｋ≧２として式（２）を用いて、画素行列データＬ（Ｘ，Ｙ）をデータＥｋに変換したときの圧縮率Ｃｋを算出する。例えば、ｋ＝２の場合、画像検査装置１０は、画素行列データＬ（Ｘ，Ｙ）をデータＥ２に変換したときの圧縮率Ｃ２を算出する。
【０１０２】
画像検査装置１０は、圧縮率Ｃ（ｋ−１）が圧縮率Ｃｋ未満であるか否かを判断する（ステップＳ６０）。圧縮率Ｃ（ｋ−１）が圧縮率Ｃｋ未満である場合（ステップＳ６０においてＹＥＳ）、画像検査装置１０は、ｋをインクリメントして（ステップＳ６２）、ステップＳ５８の処理を実行する。前回のステップＳ５８において圧縮率Ｃ２が算出されていた場合には、今回のステップＳ５８では、画素行列データＬ（Ｘ，Ｙ）をデータＥ３に変換したときの圧縮率Ｃ３が算出される。
【０１０３】
一方、圧縮率Ｃ（ｋ−１）が圧縮率Ｃｋ以上である場合（ステップＳ６０においてＮＯ）、画像検査装置１０は、画素行列データＬ（Ｘ，Ｙ）の各行列要素の中に（ｋ−１）個の異常画素値が存在する判定して（ステップＳ６４）、図７のステップＳ２４に進む。
【０１０４】
再び、図７を参照して、画像検査装置１０は、ステップＳ２２の異常判定結果に基づいて、画素行列データ（Ｘ，Ｙ）の圧縮方式を選択する（ステップＳ２４）。
【０１０５】
具体的には、ステップＳ２２において、画素行列データ（Ｘ，Ｙ）の各行列要素の中に異常画素値は存在しないと判定された場合、画像検査装置１０は、圧縮率Ｃ０に対応する圧縮方式を選択する。すなわち、画像検査装置１０は、画素行列データＬ（Ｘ，Ｙ）をデータＥ０に変換する圧縮方式を選択する。
【０１０６】
これに対して、ステップＳ２２において、画素行列データ（Ｘ，Ｙ）の各行列要素の中に（ｋ−１）個の異常画素値が存在すると判定された場合、画像検査装置１０は、圧縮率Ｃ（ｋ−１）に対応する圧縮方式を選択する。すなわち、画像検査装置１０は、画素行列データＬ（Ｘ，Ｙ）を、異常データを含むデータＥ（ｋ−１）に変換する圧縮方式を選択する。
【０１０７】
次に、画像検査装置１０は、選択された圧縮方式に従って、画素行列データＬ（Ｘ，Ｙ）を圧縮した圧縮画像データを生成する（ステップＳ２６）。これにより、各座標（Ｘ，Ｙ）における画素行列データＬ（Ｘ，Ｙ）を圧縮した圧縮画像データが生成される。例えば、画素行列データＬ（Ｘ，Ｙ）をデータＥ０に変換する圧縮方式が選択されている場合には、画像検査装置１０は、図５に示すように、各座標（Ｘ，Ｙ）におけるデータＥ０を圧縮画像データとして記憶装置１０９に記憶する。
【０１０８】
画像検査装置１０は、ヘッダデータ、各検査画像データの識別情報データ、および圧縮画像データを関連付けて、これらを含む圧縮検査情報データを生成して（ステップＳ２８）、処理を終了する。圧縮検査情報データは、例えば、図９に示すように記憶装置１０９へ記憶される。
【０１０９】
図９は、圧縮検査情報データのデータ構造３１０の一例を示す図である。図９を参照して、相対アドレス“０ｘ００００００００”は、ヘッダデータの先頭アドレスＨ＿ａｄｄｒを示し、相対アドレス“０ｘ０００００００４”は、ヘッダデータのサイズＨ＿ｓｉｚｅを示している。相対アドレス“０ｘ０００００００８”は、参照データの先頭アドレスＲ＿ａｄｄｒを示し、相対アドレス“０ｘ０００００００Ｃ”は、参照データのサイズＲ＿ｓｉｚｅを示している。
【０１１０】
相対アドレス“０ｘ００００００１０”は、識別情報データの先頭アドレスＩ＿ａｄｄｒを示し、相対アドレス“０ｘ００００００１４”は、識別情報データの単位サイズＩ＿ｕｎｉｔｓｉｚｅを示し、相対アドレス“０ｘ００００００１８”は、識別情報データのサイズＩ＿ｓｉｚｅを示している。相対アドレス“０ｘ００００００１Ｃ”は、圧縮画像データの先頭アドレスＣ＿ａｄｄｒを示し、相対アドレス“０ｘ００００００２０”は、圧縮画像データのサイズＣ＿ｓｉｚｅを示している。
【０１１１】
そのため、ヘッダデータの末尾アドレスは“Ｈ＿ａｄｄｒ＋Ｈ＿ｓｉｚｅ”で表わされ、参照データの末尾アドレスは“Ｒ＿ａｄｄｒ＋Ｒ＿ｓｉｚｅ”で表わされ、識別情報データの末尾アドレスは“Ｉ＿ａｄｄｒ＋Ｉ＿ｓｉｚｅ”で表わされ、単位識別情報データの末尾アドレスは“Ｉ＿ａｄｄｒ＋Ｉ＿ｕｎｉｔｓｉｚｅ”で表わされ、圧縮画像データの末尾アドレスは“Ｃ＿ａｄｄｒ＋Ｃ＿ｓｉｚｅ”で表わされる。
【０１１２】
図９に示すデータ構造３１０によると、相対アドレス“０ｘ００００００００”〜“０ｘ００００００２０”を読み込むことで、任意のメモリアドレスに存在するヘッダデータ、各検査画像データの識別情報データ、圧縮画像データを参照できる。
【０１１３】
なお、ヘッダデータ、各検査画像データの識別情報データ、圧縮画像データの順番に連続で並んでおり、かつ規定のバイト数でアライメントされているという前提がある場合には、各データのサイズ情報は不要である。
【０１１４】
また、画像検査装置１０は、以下のように検査画像データを参照する。ここでは、記憶装置１０９に複数の圧縮検査情報データが記憶されているとする。複数の圧縮検査情報データの中から目的の検査画像データを復元する場合、画像検査装置１０は、全ての圧縮検査情報データから識別情報データを読み込み、目的の検査画像データに合致する識別情報データ（例えば、ファイル名）を指定する。これにより、画像検査装置１０は、指定した識別情報データと同じ圧縮検査情報データ内の圧縮画像データから、目的の検査画像データを復元する。
【０１１５】
また、画像検査装置１０は、参照データに基づいて、条件に合致する複数の検査画像データを参照してもよい。例えば、参照データの項目に検査日時が存在する場合、指定された検査日時に合致する期間に行なわれた検査画像データを参照することができる。また、参照データの項目に検査項目が存在する場合、指定された検査項目と同じ検査項目の検査画像データを参照することができる。
【０１１６】
＜利点＞
本実施の形態によると、大量の検査画像データが同じ特徴を有することを利用することによって、各検査画像データをより効率よく可逆圧縮することができる。
【０１１７】
その他の実施の形態．
（１）上述した実施の形態では、差分行列データＬｄ（Ｘ，Ｙ）の各行列要素の中に異常要素の有無を判定する処理を実行する構成について説明したが、当該構成に限られない。例えば、異常要素がないことが既知である場合には、図７のステップＳ２２の“異常判定処理”を実行することなく、画素行列データＬ（Ｘ，Ｙ）をデータＥ０に変換する圧縮処理を実行してもよい。
【０１１８】
（２）上述した実施の形態において、コンピュータを機能させて、上述のフローチャートで説明したような制御を実行させるプログラムを提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、二次記憶装置、主記憶装置およびメモリカードなどの一時的でないコンピュータ読取り可能な記録媒体に記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体に記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【０１１９】
プログラムは、コンピュータのオペレーティングシステムの一部として提供されるプログラムモジュールのうち、必要なモジュールを予め定められた配列で予め定められたタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずＯＳと協働して処理が実行される。このようなモジュールを含まないプログラムも、本実施の形態にかかるプログラムに含まれ得る。
【０１２０】
また、本実施の形態にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本実施の形態にかかるプログラムに含まれ得る。
【０１２１】
（３）上述の実施の形態として例示した構成は、本発明の構成の一例であり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、一部を省略する等、変更して構成することも可能である。また、上述した実施の形態において、他の実施の形態で説明した処理および構成を適宜採用して実施する場合であってもよい。
【０１２２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１２３】
１０  画像検査装置、１０１  プロセッサ、１０３  ＲＡＭ、１０５  ＲＯＭ、１０７  撮像装置、１０９  記憶装置、２０１  画素行列生成部、２０３  差分行列生成部、２０５  異常判定部、２０７  圧縮処理部。
【図１】
2020203191.tif 000003
【図２】
2020203191.tif 000004
【図３】
2020203191.tif 000005
【図４】
2020203191.tif 000006
【図５】
2020203191.tif 000007
【図６】
2020203191.tif 000008
【図７】
2020203191.tif 000009
【図８】
2020203191.tif 000010
【図９】
2020203191.tif 000011
【国際調査報告】
2020203191.tif 000012
2020203191.tif 000013
2020203191.tif 000014
2020203191.tif 000015