(57)【特許請求の範囲】
【請求項１】
二値画像データをランレングス化して得られる複数のランデータで構成されるランデータ群に対して演算処理を行うデータ演算装置であって、
単一のランデータに対して前記演算処理を行う複数の第１スレッド処理部と、
前記ランデータ群を構成する各ランデータについて互いに異なる前記第１スレッド処理部で並列して演算させる第１並列演算処理を実行可能な処理制御部と、
前記複数のランデータを分割して組成されるデータ領域の各々に対して前記演算処理を行う複数の第２スレッド処理部とを備え、
前記処理制御部は、各組について互いに異なる前記第２スレッド処理部で並列して演算させる第２並列演算処理を実行可能となっており、前記第１並列演算処理における演算の並列性に関連する指標値に応じて前記第１並列演算処理および前記第２並列演算処理のうちの一方を実行する
ことを特徴とするデータ演算装置。
【請求項２】
請求項１に記載のデータ演算装置であって、
前記指標値は、前記二値画像データをランレングス化することで発生するランデータの発生頻度であるデータ演算装置。
【請求項３】
請求項２に記載のデータ演算装置であって、
前記ランデータ群を構成する前記ランデータの要素数と、前記二値画像データの画像サイズとに基づいて前記発生頻度を算出する発生頻度演算部をさらに備えるデータ演算装置。
【請求項４】
請求項１ないし３のいずれか一項に記載のデータ演算装置であって、
前記二値画像データはｐ行×ｑ列の画素の画像データであり、
前記第１スレッド処理部の個数はＭ個
ただし、ｑが偶数のときにはＭ＝（ｑ／２）×ｐ、
ｑが奇数のときにはＭ＝（（ｑ／２）＋１）×ｐ
であるデータ演算装置。
【請求項５】
請求項４に記載のデータ演算装置であって、
前記複数のランデータは行単位または列単位で分割されて前記複数のデータ領域に組分けされるデータ演算装置。
【請求項６】
二値画像データをランレングス化して得られる複数のランデータに対して演算処理を行うデータ演算方法であって、
前記ランデータ毎に前記演算処理を行う第１スレッド処理を並列して行う第１並列演算工程と、
前記複数のランデータを複数組に分割するとともに各組について前記演算処理を行う第２スレッド処理を並行して行う第２並列演算工程とを備え、
前記第１並列演算工程における演算の並列性に関連する指標値に応じて前記第１並列演算工程および前記第２並列演算工程のうちの一方を実行する
ことを特徴とするデータ演算方法。
【請求項７】
検査対象画像を取得する画像取得部と、
前記検査対象画像を検査して欠陥部位が含まれる抽出画像を抽出する画像抽出部と、
前記抽出画像をランレングス化して得られる複数のランデータを有する抽出ランデータ群と、マスク画像をランレングス化して得られる複数のランデータを有するマスクランデータ群との論理演算を行うことで、前記抽出画像のうち前記欠陥部位以外の部位を前記マスク画像によりマスク処理して欠陥画像データを得るデータ演算部とを備え、
前記データ演算部は、
単一のランデータに対して前記論理演算を行う複数の第１スレッド処理部と、
前記抽出ランデータ群を構成する各ランデータについて互いに異なる前記第１スレッド処理部で並列して演算させる第１並列演算処理を実行可能な処理制御部と、
前記複数のランデータを分割して組成されるデータ領域の各々に対して前記演算処理を行う複数の第２スレッド処理部とを備え、
前記処理制御部は、各組について互いに異なる前記第２スレッド処理部で並列して演算させる第２並列演算処理を実行可能となっており、前記第１並列演算処理における演算の並列性に関連する指標値に応じて前記第１並列演算処理および前記第２並列演算処理のうちの一方を実行する
ことを特徴とする欠陥検査装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ランデータについて演算処理を施すデータ演算技術ならびに当該データ演算技術を用いる欠陥検査装置に関するものである。
【背景技術】
【０００２】
半導体基板やプリント基板等の製造技術分野では、製品に含まれる欠陥を検出し、さらに当該欠陥を分析・評価するために、評価対象物を顕微鏡等により撮像し、得られた画像から欠陥部を含む画像を抽出する。そして、抽出した画像に対してマスク画像によるマスク処理を実行することで欠陥画像を正確に求めている。このマスク処理を行うために、例えば特許文献１に記載の論理演算が上記画像のランデータに対して実行される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−２０３１７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の発明は、演算処理対象となる２つの画像のランデータ群をビットマップデータに変換することなく、２つの画像の論理積、論理和および排他的論理和を求めている。より具体的には、演算処理対象となる２つのランデータ群を一方端のランから順に接続判定し、重なっている部分に応じて論理積、論理和および排他的論理和の判定を行っている。このようにビットマップデータへの変換を行うことなく、ランデータのまま演算処理を行うことで演算処理に要する時間を短縮することができる。
【０００５】
しかしながら、一方端のランから順に処理を行っているためにランデータの本数が多くなるにしたがって接続判定に時間を要してしまう。このような問題は、上記欠陥検査装置で行われるランデータをそのまま用いた他の演算処理、例えばラベリング関連処理（面積計算、外接矩形計算、重心計算など）においても生じる。また上記欠陥検査装置以外の装置においてランデータをそのまま用いて行う演算処理、例えば膨張収縮処理、座標反転処理、回転処理、ラン反転処理などにおいても生じる。
【０００６】
この発明は上記課題に鑑みなされたものであり、ランデータの本数が少ない時はもちろんのこと、当該本数が多くなったとしてもランデータについて演算処理を施す際に要する時間を短縮することができるデータ演算技術ならびに当該データ演算技術を用いて欠陥検査に要する時間の短縮を図ることができる欠陥検査装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
この発明の第１態様は、二値画像データをランレングス化して得られる複数のランデータで構成されるランデータ群に対して演算処理を行うデータ演算装置であって、単一のランデータに対して演算処理を行う複数の第１スレッド処理部と、ランデータ群を構成する各ランデータについて互いに異なる第１スレッド処理部で並列して演算させる第１並列演算処理を実行可能な処理制御部と、複数のランデータを分割して組成されるデータ領域の各々に対して演算処理を行う複数の第２スレッド処理部とを備え、 処理制御部は、各組について互いに異なる第２スレッド処理部で並列して演算させる第２並列演算処理を実行可能となっており、第１並列演算処理における演算の並列性に関連する指標値に応じて第１並列演算処理および第２並列演算処理のうちの一方を実行することを特徴としている。
【０００８】
また、この発明の第２態様は、二値画像データをランレングス化して得られる複数のランデータに対して演算処理を行うデータ演算方法であって、ランデータ毎に演算処理を行う第１スレッド処理を並列して行う第１並列演算工程と、複数のランデータを複数組に分割するとともに各組について演算処理を行う第２スレッド処理を並行して行う第２並列演算工程とを備え、第１並列演算工程における演算の並列性に関連する指標値に応じて第１並列演算工程および第２並列演算工程のうちの一方を実行することを特徴としている。
【０００９】
さらに、この発明の第３態様は、欠陥検査装置であって、検査対象画像を検査して欠陥部位が含まれる抽出画像を抽出する画像抽出部と、抽出画像をランレングス化して得られる複数のランデータを有する抽出ランデータ群と、マスク画像をランレングス化して得られる複数のランデータを有するマスクランデータ群との論理演算を行うことで、抽出画像のうち欠陥部位以外の部位をマスク画像によりマスク処理して欠陥画像データを得るデータ演算部とを備え、データ演算部は、単一のランデータに対して論理演算を行う複数の第１スレッド処理部と、抽出ランデータ群を構成する各ランデータについて互いに異なる第１スレッド処理部で並列して演算させる第１並列演算処理を実行可能な処理制御部と、複数のランデータを分割して組成されるデータ領域の各々に対して演算処理を行う複数の第２スレッド処理部とを備え、処理制御部は、各組について互いに異なる第２スレッド処理部で並列して演算させる第２並列演算処理を実行可能となっており、第１並列演算処理における演算の並列性に関連する指標値に応じて第１並列演算処理および第２並列演算処理のうちの一方を実行することを特徴としている。
【発明の効果】
【００１０】
以上のように、本発明では、二値画像データをランレングス化して得られる複数のランデータで構成されるランデータ群に対する演算処理が次のようにして実行される。つまり、ランデータ毎に演算処理（論理積処理、論理和処理、ラベリング処理など）を行う第１スレッド処理が並列して実行される。このため、ランデータ群を構成するランデータの要素数にかかわらず、ランデータ群に対して演算処理を施す際に要する時間を安定的に短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明にかかるデータ演算装置の第１実施形態を示す図である。
【図２】図１のデータ演算装置によるデータ演算動作を示すフローチャートである。
【図３】図１のデータ演算装置によるデータ演算動作を模式的に示す図である。
【図４】図１のデータ演算装置でのラン要素数に対する演算処理に要する時間の変化を示すグラフである。
【図５】比較例における演算動作を模式的に示す図である。
【図６】比較例においてラン要素数に対する演算処理に要する時間の変化を示すグラフである。
【図７】本発明にかかるデータ演算装置の第２実施形態を示す図である。
【図８】図７のデータ演算装置によるデータ演算動作を示すフローチャートである。
【図９】図７のデータ演算装置によるデータ演算動作を示すフローチャートである。
【図１０】図１や図７のデータ演算装置を装備する欠陥検査装置の一例を示す図である。
【図１１】図１０に示す欠陥検査装置の画像処理部の概略構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
Ａ．第１実施形態
図１は本発明にかかるデータ演算装置の第１実施形態を示す図である。また、図２は図１のデータ演算装置によるデータ演算動作を示すフローチャートである。さらに、図３は図１のデータ演算装置によるデータ演算動作を模式的に示す図である。このデータ演算装置１００は、外部装置から与えられる二値画像データをランレングス化して複数のランデータからなるランデータ群を生成するとともに、複数のランデータで構成されるランデータ群に対して論理積、論理和、排他的論理和、ラベリング関連処理（面積計算、外接矩形計算、重心計算など）、膨張収縮処理、座標反転処理、回転処理、ラン反転処理などの演算処理を行う装置である。
【００１３】
本実施形態では、データ演算装置１００は、複数のプロセッサコア１１０、記憶部１２０、ラン生成部１３０、並列処理制御部１４０およびデータ初期設定部１５０を有するＧＰＵ（Graphics Processing Unit）で構成されている。このデータ演算装置１００は、装置外部から二値画像データが与えられると、当該二値画像データを記憶部１２０に記憶する。また、ラン生成部１３０は、記憶部１２０に記憶されている二値画像データを適宜読み出し、ランレングス化して複数のランデータで構成されるランデータ群を生成した後で、当該ランデータ群を記憶部１２０に書き込む。なお、ランレングス化処理については従来周知技術が数多く提案されており、本実施形態においても一般的なランレングス化処理をそのまま用いている。当該ランレングス化処理によって得られる各ランデータは、二値画像データにおける当該ランの始端画素位置を示す列インデクス（始端座標）、二値画像データにおける当該ランの終端画素位置を示す列インデクス（終端座標）、ならびに二値画像データにおける当該ランの行インデクスを含んでいる。
【００１４】
ここで、例えば図３の最上欄に示すようにｐ行×ｑ列の画素の二値画像データＤａ、Ｄｂが与えられ、これらの論理積および論理和を演算する場合、データ演算装置１００はこれら２つの二値画像データＤａ、Ｄｂを記憶部１２０に一時的に記憶するとともに、各二値画像データＤａ、Ｄｂをランレングス化して２つのランデータ群ＲＤａ、ＲＤｂを生成し、記憶部１２０に記憶させる。なお、装置構成および動作の理解を容易にするため、二値画像データＤａをランレングス化して得られるランデータ群ＲＤａを「第１ランデータ群」と称する一方、二値画像データＤｂをランレングス化して得られるランデータ群ＲＤｂを「第２ランデータ群」と称する。
【００１５】
各プロセッサコア１１０は単一のランデータに対して演算処理を行う第１スレッド処理部１１１として機能する。この実施形態では、各第１スレッド処理部１１１は第１ランデータ群ＲＤａを構成するランデータ毎に第２ランデータ群ＲＤｂとの論理積および論理和を求める演算機能を有している。また、図３中の最上欄に示す二値画像データＤａ、Ｄｂをランレングス化して得られる各行でのランデータの最大数は、値ｑが偶数のときに（ｑ／２）であり、値ｑが奇数のときに（ｑ／２）＋１）である。したがって、ランレングス化処理によって得られるランデータの要素数の最大値Ｍは、
値ｑが偶数のとき、（ｑ／２）×ｐ
値ｑが奇数のとき、（（ｑ／２）＋１）×ｐ、
である。
【００１６】
そこで、本実施形態では、Ｍ個以上のプロセッサコア１１０を有するＧＰＵをデータ演算装置１００として用いており、後述するように第１ランデータ群ＲＤａを構成する全ランデータについて上記演算処理を並列して行うことが可能となっている。そして、各プロセッサコア１１０での演算結果（ランデータ）が記憶部１２０に書き込まれる。なお、図１においては、第１番目のプロセッサコア（第１プロセッサコア）１１０から第Ｍ番目のプロセッサコア（第Ｍプロセッサコア）１１０までを図示し、それ以外のプロセッサコア１１０については図示を省略している。もちろん、データ演算装置１００が有するプロセッサコア１１０の個数をきっちりＭ個に設定してもよいことはいうまでもない。
【００１７】
また、複数のプロセッサコア１１０を並列して作動させるために、本実施形態では、並列処理制御部１４０が設けられている。この並列処理制御部１４０は、各プロセッサコア１１０で実行されるスレッド処理を制御しながら並列して実行させる機能を有している。さらに、データ初期設定部１５０は記憶部１２０に記憶されている二値画像データ、各ランデータに含まれる各種情報（始端座標、終端座標、行インデクス）をゼロクリアする。なお、本実施形態では、二値画像データＤａ、Ｄｂを受け取り、それらの二値画像データＤａ、Ｄｂをランレングス化して第１ランデータ群ＲＤａおよび第２ランデータ群ＲＤｂを生成しているが、それらのランデータ群のうちの少なくとも一方を装置外部から受け取って記憶部１２０に記憶させてランレングス化処理を省略してもよい。
【００１８】
次に、上記のように構成されたデータ演算装置１００によるデータ演算動作について説明する。このデータ演算装置１００は、装置外部から論理演算の対象となる２つの二値画像データＤａ、Ｄｂが指定されると、それらの二値画像データＤａ、Ｄｂを装置外部から取得して記憶部１２０に記憶する（ステップＳ１）。そして、ラン生成部１３０が記憶部１２０から二値画像データＤａを読み出し、当該二値画像データＤａに対してランレングス化処理を施してランデータｒａ［１］〜ｒａ［ｍ］を取得し、これらのランデータｒａ［１］〜ｒａ［ｍ］からなる第１ランデータ群ＲＤａ（図３参照）を記憶部１２０に記憶する（ステップＳ２）。なお、上記したようにｐ行×ｑ列の二値画像データをランレングス化したときのランデータｒａの最大要素数は値Ｍであり、値Ｍと値ｍとの関係は
ｍ≦Ｍ
となる。
【００１９】
また、ラン生成部１３０が記憶部１２０から二値画像データＤｂを読み出し、当該二値画像データＤｂに対してランレングス化処理を施してランデータｒｂ［１］〜ｒｂ［ｎ］を取得し、これらのランデータｒｂ［１］〜ｒｂ［ｎ］からなる第２ランデータ群ＲＤｂ（図３参照）を記憶部１２０に記憶する（ステップＳ３）。これらステップＳ２、Ｓ３の順序は本実施形態での順序に限定されるものではなく、任意である。
【００２０】
演算対象となる２つのランデータ群ＲＤａ、ＲＤｂの取得が完了すると、第１ランデータ群ＲＤａを構成するランデータｒａ毎にプロセッサコア１１０による演算処理（本実施形態では論理積処理および論理和処理）が並列して実行される（ステップＳ４−１〜Ｓ４−ｍ）。より具体的には、第１番目のランデータｒａ［１］については、第１プロセッサコア１１０の第１スレッド処理部１１１が第２ランデータ群ＲＤｂを構成するランデータｒｂ［１］〜ｒｂ［ｎ］との論理演算を行う（ステップＳ４−１）。このような第１スレッドと同様の処理を第２〜第ｍプロセッサコア１１０の第１スレッド処理部１１１でも実行する（ステップＳ４−２〜Ｓ４−ｍ）。なお、第（ｍ＋１）番目以降のランデータｒａが存在しないときには、第（ｍ＋１）〜第Ｍプロセッサコア１１０の第１スレッド処理部１１１では演算処理を行わず、第１〜第ｍプロセッサコア１１０の第１スレッド処理部１１１による並列演算処理が完了するまで待機する。
【００２１】
こうして並列演算処理（ステップＳ４−１〜Ｓ４−ｍ）が完了すると、データ演算装置１００は演算結果（ランデータ）を記憶部１２０に書き込んで一連の処理を終了する（ステップＳ５）。
【００２２】
以上のように、本発明の第１実施形態によれば、図２や図３に示すように、第１ランデータ群ＲＤａを構成するランデータｒａ毎にプロセッサコア１１０による演算処理を並列して実行しているため、ランデータ群に対する演算処理に要する時間を短縮することができる。特に、本実施形態では、二値画像データＤａ、Ｄｂをランレングス化して得られるランデータの要素数の最大値Ｍ以上のプロセッサコア１１０が予め設けられているため、第１ランデータ群ＲＤａを構成するランデータｒａの個数ｍが比較的少ない場合はもちろんのこと、最大値Ｍと一致する場合であっても、ランデータｒａ［１］〜ｒａ［ｍ］毎の第１スレッド処理を並列して行うことができ、例えば図４に示すように二値画像データの演算処理に要する処理時間を安定して短縮することができる。
【００２３】
図４は図１のデータ演算装置でのラン要素数に対する演算処理に要する時間の変化を示すグラフである。ここでは、互いに異なる２つの２５６階調画像（ファイルサイズ３２ＭＢ）を乱数発生により２つ作成し、画像毎に当該画像を２値化する際のしきい値を多段階で変更することでランデータの要素数が互いに異なる３種類の二値画像データを作成した。より具体的には、ランデータの要素数が約８００万（８Ｍ）点、約５６０万（５．６Ｍ）点、約５万（０．５Ｍ）点の二値画像データ、つまり、
二値画像データＤａ(8)、Ｄｂ(8)、
二値画像データＤａ(5.6)、Ｄｂ(5.6)、
二値画像データＤａ(0.5)、Ｄｂ(0.5)、
を作成した。そして、ランデータの要素数毎に、第１実施形態にかかるデータ演算装置１００によって二値画像データＤａ、Ｄｂの論理積および論理和を演算し、その演算処理に要した処理時間を計測した。その結果をまとめたものが図４である。この図４から明らかなようにランデータの要素数とはほぼ無関係に、二値画像データＤａ、Ｄｂの論理積および論理和を短時間で演算することが可能となっている。なお、第１実施形態での処理時間の短縮効果については、次の比較例（図５および図６）を参照しつつ説明する。
【００２４】
図５は比較例における演算動作を模式的に示す図である。また、図６は比較例でのラン要素数に対する演算処理に要する時間の変化を示すグラフである。この比較例が第１実施形態と大きく相違する点は並列演算を行う単位であり、この比較例ではランデータ群を構成するランデータを行単位または列単位で分割して複数のデータ領域に組分けし、各データ領域に対して演算処理を行う。より詳しくは、ランデータ群ＲＤａを構成するランデータｒａ［１］〜ｒａ［ｍ］を行単位で分割してｐ個のデータ領域に組分けし、データ領域毎に第２ランデータ群ＲＤｂとの論理積および論理和を求めるスレッド処理を並列して行う。例えば図３に示すランデータ群ＲＤａ、ＲＤｂの並列演算処理を行う場合、第１行目のランデータ群ｒａ（ｒａ［１］、ｒａ［２］）とランデータ群ｒｂ（ｒｂ［１］、ｒｂ［２］）との論理積および論理和が演算される（第１スレッド）。また、第２行目ないし第ｐ行目についても第１行目と同様の演算処理が第１スレッドと同様に、かつ並列して実行される（第２スレッド〜第ｐスレッド）。なお、（ｐ＋１）行目以降のスレッドについては、第１〜第ｐスレッドの並列演算処理が完了するまで待機する。
【００２５】
このように比較例においても、ランデータの演算を並列して行うため、演算に要する時間を特許文献１に記載の発明よりも短縮することができる。ただし、各スレッドに含まれるランデータｒａは１個または複数個となるため、ランデータ群ＲＤａを構成するランデータｒａの要素数が増えるにしたがって処理時間は長くなる。ここで、比較例においても、第１実施形態と同様にして、二値画像データＤａ、Ｄｂの論理積および論理和を演算し、その演算処理に要した処理時間を計測すると、図６に示す結果が得られた。なお、同図中の点線は第１実施形態で計測された処理時間を示している。
【００２６】
同図から明らかなように、第１実施形態は比較例よりも優れた処理性能を有している。つまり、第１実施形態によれば比較例（行単位のスレッド処理を並列して行う）よりもランデータの要素数の影響を受けることなく、安定して高速演算を行うことが可能となっている。
【００２７】
Ｂ．第２実施形態
ところで、図６では処理時間の逆転現象が示されている。すなわち、ランデータの要素数が極端に少なくなり、第１実施形態で行われるスレッド処理の並列性が低くなると、比較例での処理時間の方が第１実施形態での処理時間よりも短くなる。このことは、スレッド処理の並列性を示す指標値が上記逆転現象の発生時における指標値（以下「境界値」という）を上回っている場合には第１実施形態で行った並列演算処理を行うのが有利である一方、指標値が境界値以下である場合には比較例で行った並列演算処理を行うのが有利であることを意味している。そこで、本発明の第２実施形態では、２種類の並列演算処理を実行可能に構成するとともに、指標値が境界値を上回っているか否かに応じて並列演算処理を使い分けることで、高速演算が可能な範囲を広げている。以下、図７ないし図９を参照しながら本発明の第２実施形態について説明する。
【００２８】
図７は本発明にかかるデータ演算装置の第２実施形態を示す図である。この第２実施形態が第１実施形態と大きく相違するのは、以下の３点である。第１点目は、各プロセッサコア１１０が第１スレッド処理部１１１以外に比較例と同様に行単位で演算処理を行う第２スレッド処理部１１２としても機能する点である。第２点目は、二値画像データの画像サイズと、当該二値画像データをランレングス化して生成されるランデータの要素数とから求めるランデータの発生頻度を上記指標値として演算する発生頻度演算部１６０を新たに設けた点である。さらに第３点目は、発生頻度演算部１６０で求めた発生頻度に応じて並列演算処理を切り替える点である。なお、その他の構成および動作が基本的に第１実施形態と同様であるため、同一構成については同一符号を付して説明を省略する。
【００２９】
図８および図９は図７のデータ演算装置によるデータ演算動作を示すフローチャートである。第２実施形態においても、装置外部から演算の対象となる２つの二値画像データＤａ、Ｄｂが指定されると、データ演算装置１００は、二値画像データＤａ、Ｄｂの記憶部１２０への記憶（ステップＳ１）、ランデータｒａ［１］〜ｒａ［ｍ］からなる第１ランデータ群ＲＤａの取得および記憶（ステップＳ２）、ランデータｒｂ［１］〜ｒｂ［ｎ］からなる第２ランデータ群ＲＤｂの取得および記憶（ステップＳ３）を行う。
【００３０】
次のステップＳ６では、データ演算装置１００の発生頻度演算部１６０が、ランデータｒａ［１］〜ｒａ［ｍ］の要素数に相当する値ｍを二値画像データＤａの画像サイズで除算してランデータの発生頻度を算出している。例えば二値画像データＤａが線図画像を示すデータである場合には発生頻度は低くなる傾向にある一方、写真画像を示すデータである場合には発生頻度は高くなる傾向にある。
【００３１】
こうしてランデータの発生頻度を上記指標値として求めた後で、データ演算装置１００は、発生頻度が境界値を上回っているか否かを判定し（ステップＳ７）、上回っていると判定したときには第１実施形態と同様にランデータｒａ毎に演算処理を並列して行う（ステップＳ４−１〜Ｓ４−ｍ）。
【００３２】
一方、データ演算装置１００は、発生頻度が境界値以下であると判定したときには第２スレッド処理部１１２による並列演算処理を行う（ステップＳ８−１〜Ｓ８−ｐ）。すなわち、第１プロセッサコア１１０の第２スレッド処理部１１２は第１行目について第１ランデータＲＤａ群と第２ランデータ群ＲＤｂとの論理積および論理和を求める演算機能を有している。また、それ以降の第２、第３、…、第Ｍプロセッサコア１１０の第２スレッド処理部１１２も、第１プロセッサコア１１０の第２スレッド処理部１１２と同様に、それぞれ第２行目ないし第ｐ行目について論理積および論理和を求める演算機能を有している。そして、ステップＳ８−１〜Ｓ８−ｐでは、行単位で第１ないし第ｐプロセッサコア１１０による演算処理（本実施形態では論理積処理および論理和処理）が並列して実行される。なお、第（ｐ＋１）行以降についてはランデータｒａ、ｒｂは存在しないため、第（ｐ＋１）〜第Ｍプロセッサコア１１０の第２スレッド処理部１１２では演算処理を行わず、第１〜第ｐプロセッサコア１１０の第２スレッド処理部１１２による並列演算処理が完了するまで待機する。
【００３３】
こうして２種類の並列演算処理のうちの一方が完了すると、データ演算装置１００は演算結果（ランデータ）を記憶部１２０に書き込んで一連の処理を終了する（ステップＳ５）。
【００３４】
以上のように、本発明の第２実施形態では、予め２種類の並列演算処理を用意しておき、ランデータの発生頻度をスレッド処理の並列性を示す指標値として求め（ステップＳ６）、それが境界値を上回っているか否かに応じて並列演算処理の選択切替を行っている。このように第１スレッド処理部１１１による演算の並列性を示すランデータの発生頻度に対応した並列演算処理が行われ、いずれも場合も高速演算が可能となり、高速演算が可能な範囲が第１実施形態よりも広がり、高い汎用性が得られる。
【００３５】
Ｃ．欠陥検査装置
図１０は、第２実施形態にかかるデータ演算装置を装備する欠陥検査装置の一例を示す図である。この欠陥検査装置１は、検査対象である半導体基板（以下「基板」という。）Ｓの外観に現れたピンホールや異物等の欠陥検査を行う。欠陥検査装置１は、基板Ｓ上の検査対象領域を撮像する撮像装置２と、撮像装置２からの画像データに基づいて欠陥検査を行う制御装置３を有する。
【００３６】
上記欠陥検査装置１を装備する検査システムでは、欠陥検査装置１とは別に基板Ｓの製造ラインに設けられた基板検出装置２００において基板Ｓに欠陥が発見されると、その欠陥の位置座標がこの欠陥検査装置１に与えられる。製造ラインに組み込まれた基板検出装置２００は、予め定められた処理アルゴリズムによって基板Ｓ全体を検査し、基板表面に欠陥としての要件を満たす領域があればその位置座標を取得して出力する。したがって、該基板検出装置２００が有する撮像部は比較的低解像度であり、処理アルゴリズムも固定的である。
【００３７】
一方、この欠陥検査装置１は、図示しないインターフェースを介して基板検出装置２００と接続されており、基板検出装置２００から欠陥として位置座標が報告された領域をより高い解像度を有する撮像装置２によって撮像するとともに、その画像を制御装置３が精査して欠陥の有無やその種類などをより詳しく判定するとともに、欠陥部分の画像を表示部に表示する。
【００３８】
撮像装置２は、基板Ｓ上の検査対象領域を撮像することにより画像データを取得する撮像部２１、基板Ｓを保持するステージ２２、および、撮像部２１に対してステージ２２を相対的に移動させるステージ駆動部２３を有している。また、撮像部２１は、照明光を出射する照明部２１１、基板Ｓに照明光を導くとともに基板Ｓからの光が入射する光学系２１２、および、光学系２１２により結像された基板Ｓの像を電気信号に変換する撮像デバイス２１３を有している。ステージ駆動部２３はボールねじ、ガイドレールおよびモータにより構成され、制御装置３に設けられた装置制御部４がステージ駆動部２３および撮像部２１を制御することにより、基板Ｓ上の検査対象領域が撮像される。
【００３９】
制御装置３は装置制御部４を有しており、この装置制御部４が予め読み込まれた制御プログラムを実行することにより、図１０に示す制御装置各部を以下のように動作させる。制御装置３は、上記の装置制御部４のほか、画像取得部５および画像処理部６を備えている。画像取得部５は、撮像部２１から出力される電気信号をデータ化して、撮像画像に対応する画像データを取得する。画像処理部６は、画像取得部５が取得した画像データに対して適宜の画像処理を施して、画像に含まれる欠陥の検出や欠陥部分の画像（以下「欠陥画像」という）を作成する。なお、当該画像処理部６は、図７に示すデータ演算装置１００と同一構成を有するデータ演算部を含んでおり、撮像装置２により撮像された画像（検査対象画像）から抽出した画像に対してマスク処理を施して欠陥部分の情報を導出可能となっている。画像処理部６、特にデータ演算部の構成および動作については、後で詳述する。
【００４０】
さらに、制御装置３は、各種データを記憶するための記憶部７、ユーザからの操作入力を受け付けるキーボードおよびマウスなどの入力受付部８および操作手順や処理結果等のユーザ向け視覚情報を表示する表示部９などを備えている。また、図示を省略しているが、光ディスク、磁気ディスク、光磁気ディスク等のコンピュータ読み取り可能な記録媒体から情報の読み取りを行う読取装置を有し、欠陥検査装置１の他の構成との間で信号を送受信する通信部が、適宜、インターフェース（Ｉ／Ｆ）を介する等して接続される。
【００４１】
図１１は図１０に示す欠陥検査装置の画像処理部の概略構成を示すブロック図である。画像処理部６は、フィルタリング部６１、差分抽出部６２、二値化処理部６３およびデータ演算部６４を有している。フィルタリング部６１には、画像取得部５から撮像画像が送られてくるとともに、記憶部７から参照画像が送られてくる。これら両画像のうち撮像画像は、撮像装置２によって撮像された基板Ｓの画像であり、欠陥検出検査の対象となる検査対象画像に相当する。また、参照画像は欠陥のない理想的な基板に対応する画像であり、この実施形態では、次に説明するように、検査対象画像と参照画像との比較によって検査対象画像から欠陥検出が行われる。これらの欠陥画像および参照画像は記憶部７に記憶され、必要に応じて参照されるが、外部の記憶媒体に記憶された画像データを必要に応じて読み込む形態であってもよい。
【００４２】
フィルタリング部６１は、検査対象画像および参照画像のそれぞれについて、画像ノイズおよび欠陥と関係のない軽微な画像の差異を除去するためのフィルタリング処理を行い、各画像を差分抽出部６２に送る。この差分抽出部６２は、フィルタリング処理後の検査対象画像および参照画像の差分を求めることで画像内容が互いに異なる領域を抽出し、当該差分画像を本発明の「抽出画像」として二値化処理部６３に送る。そして、二値化処理部６３は適宜の閾値によって差分画像を二値化して二値画像データＤａを生成し、データ演算部６４に送る。このようにデータ演算部６４に対しては、差分画像の二値画像データＤａ以外に、マスク画像の二値画像データＤｂが記憶部７から適宜送られる。そして、データ演算部６４は、第２実施形態（図８および図９）と同様に、二値画像データＤａをランレングス化して第１ランデータ群ＲＤａを本発明の「抽出ランデータ群」として求めるとともに、二値画像データＤｂをランレングス化して第２ランデータ群ＲＤｂを本発明の「マスクランデータ群」として求める。そして、データ演算部６４は両ランデータ群ＲＤａ、ＲＤｂの論理積を演算する。これにより、欠陥部位以外の部位を抽出画像から除去し、良好な欠陥画像データを示すランデータを求める。
【００４３】
以上のように、データ演算装置の第２実施形態を装備する欠陥検査装置では、欠陥ランデータを求めるための演算を高速で行うことができ、欠陥検査に要する時間を短縮することができる。なお、第２実施形態の代わりに第１実施形態にかかるデータ演算装置と同一構成を有するものでデータ演算部６４を構成してもよい。
【００４４】
このように、第１スレッド処理部１１１による並列演算処理が本発明の「第１並列演算処理」および「第１並列演算工程」の一例に相当し、第２スレッド処理部１１２による並列演算処理が本発明の「第２並列演算処理」および「第２並列演算工程」の一例に相当している。また、並列処理制御部１４０が本発明の「処理制御部」の一例に相当している。また、差分抽出部６２が本発明の「画像抽出部」の一例に相当している。
【００４５】
Ｄ．その他
なお、本発明は上記した実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて上述したもの以外に種々の変更を行うことが可能である。例えば、上記実施形態では、各プロセッサコア１１０が一のスレッドを実行するように構成しているが、各プロセッサコア１１０が複数のスレッドを実行するように構成してもよい。また、上記実施形態では、演算処理（論理積処理および論理和処理）を実行するために複数のプロセッサコア１１０を有するＧＰＵを用いているが、ＧＰＵの代わりに複数のＣＰＵを設け、各ＣＰＵで一または複数のスレッドを実行するように構成してもよい。
【００４６】
また、上記実施形態では、外部装置から送られてくる二値画像データＤａ、Ｄｂを装置内のラン生成部１３０でランレングス化して複数のランデータを生成しているが、両者またはそれらの一方を、二値画像データではなく既にランレングス化されたランデータ群の形で取得してもよい。
【００４７】
また、上記実施形態では、演算処理として論理積処理および論理和処理を行っているが、これらのうちの一方のみを行う、あるいはこれら以外の演算処理を行うデータ演算装置や方法に対して本発明を適用することができる。なお、「これら以外の演算処理」としては、例えば排他的論理和、ラベリング関連処理（面積計算、外接矩形計算、重心計算など）、膨張収縮処理、座標反転処理、回転処理、ラン反転処理などが含まれる。
【００４８】
また、上記第２実施形態では、行単位で分割した領域を「データ領域」としているが、この「データ領域」はこれに限定されるものではなく、例えば列単位で分割した領域を「データ領域」として用いてもよい。
【００４９】
さらに、上記実施形態では、複数のランデータ群を論理演算するデータ演算技術を欠陥検査装置に適用しているが、本発明にかかるデータ演算方法および装置に適用対象はこれに限定されるものではなく、上記データ演算技術を利用する装置全般に適用することができる。
【産業上の利用可能性】
【００５０】
この発明は、ランデータについて演算処理を施すデータ演算技術に対して好適に適用することができる。
【符号の説明】
【００５１】
１…欠陥検査装置、
５…画像取得部、
６…画像処理部、
６２…差分抽出部（画像抽出部）、
６４…データ演算部（データ演算装置）、
１００…データ演算装置
１１０…プロセッサコア、
１１１…第１スレッド処理部、
１１２…第２スレッド処理部、
１３０…ラン生成部、
１４０…並列処理制御部、
１６０…発生頻度演算部、
Ｄａ，Ｄｂ…二値画像データ、
ｒａ，ｒｂ…ランデータ、
ＲＤａ…第１ランデータ群、
ＲＤｂ…第２ランデータ群、
Ｓ…基板
【図１】
0006460660.tif 000002
【図２】
0006460660.tif 000003
【図３】
0006460660.tif 000004
【図４】
0006460660.tif 000005
【図５】
0006460660.tif 000006
【図６】
0006460660.tif 000007
【図７】
0006460660.tif 000008
【図８】
0006460660.tif 000009
【図９】
0006460660.tif 000010
【図１０】
0006460660.tif 000011
【図１１】
0006460660.tif 000012