(57)【特許請求の範囲】
【請求項１】
検査対象物の外観の画像データを格納するメモリと、
前記メモリに格納された画像データを独立に処理して前記メモリに格納する手順が記述されたスレッドを生成するスレッド生成手段と、
前記スレッド生成手段で生成された複数のスレッドの少なくとも一部を並列して実行する複数のＣＰＵと、
前記複数のＣＰＵのうちの空いているＣＰＵに生成された前記スレッドを動的に割り当てるスレッド割り当て手段と
を備え、
前記スレッド生成手段は、前記メモリに記憶された画像データ上に設定された１つの検査領域が分割されることにより得られるｎ個（ｎは２以上の整数）の領域の画像データをそれぞれ処理する手順が記述されたｎの整数倍個のスレッドと、前記ｎ個の領域の画像データを一括して処理する手順が記述されたｍ個（ｍは正の整数）のスレッドとを生成し、
前記複数のＣＰＵは、前記スレッド生成手段で生成された少なくとも前記ｎ個のスレッドを並列して実行し、前記複数のＣＰＵの何れかは前記スレッド生成手段で生成された前記ｍ個のスレッドを単独で実行し、
前記ｎ及びｍは、画像処理の種類又は前記検査領域のサイズに基づいて決定される
外観検査装置。
【請求項２】
前記スレッド生成手段は、前記メモリに記憶された画像データ上に設定された１つの検査領域が分割されることにより得られるｎ個（ｎは２以上の整数）の領域の画像データをそれぞれ処理する手順が記述されたｎの整数倍個のスレッドを生成し、
前記複数のＣＰＵは、前記スレッド生成手段で生成された少なくとも前記ｎ個のスレッドを並列して実行する、請求項１に記載の外観検査装置。
【請求項３】
前記ｎ及びｍは、該ｎ及びｍの任意の組合せの下で前記複数のＣＰＵに処理させた時間を実測した結果に基づいて決定される請求項２に記載の外観検査装置。
【請求項４】
前記ｎ個のスレッドの各々には、所定種類の画像処理と他の種類の画像処理とを続けて実行する手順が記述されている、請求項１又は２に記載の外観検査装置。
【請求項５】
前記スレッド生成手段は、前記メモリに記憶された画像データ上に設定されたｎ個（ｎは２以上の整数）の検査領域の画像データをそれぞれ処理する手順が記述された少なくともｎ個のスレッドを生成し、
前記複数のＣＰＵは、前記スレッド生成手段で生成された前記ｎ個のスレッドを並列して実行する、請求項１に記載の外観検査装置。
【請求項６】
検査対象物の外観の画像データをメモリに格納するステップと、
該メモリに格納された画像データを独立に処理して前記メモリに格納する手順が記述されたスレッドを生成するステップと、
複数のＣＰＵのうちの空いているＣＰＵに生成された前記スレッドを動的に割り当てるステップと、
該生成された複数のスレッドの少なくとも一部を前記複数のＣＰＵによって並列して実行するステップと、
を具備し、
前記スレッドを生成するステップでは、前記メモリに記憶された画像データ上に設定された１つの検査領域が分割されることにより得られるｎ個（ｎは２以上の整数）の領域の画像データをそれぞれ処理する手順が記述されたｎの整数倍個のスレッドと、前記ｎ個の領域の画像データを一括して処理する手順が記述されたｍ個（ｍは正の整数）のスレッドとを生成し、
前記実行するステップでは、前記生成された少なくとも前記ｎ個のスレッドは並列して実行され、前記生成された前記ｍ個のスレッドを単独で実行し、
前記ｎ及びｍは、画像処理の種類又は前記検査領域のサイズに基づいて決定される
外観検査方法。
【請求項７】
前記スレッドを生成するステップでは、前記メモリに記憶された画像データ上に設定された１つの検査領域が分割されることにより得られるｎ個（ｎは２以上の整数）の領域の画像データをそれぞれ処理する手順が記述されたｎの整数倍個のスレッドを生成し、
前記実行するステップでは、前記生成された少なくとも前記ｎ個のスレッドを並列して実行する、請求項６に記載の外観検査方法。
【請求項８】
前記ｎ及びｍは、該ｎ及びｍの任意の組合せの下で行われた処理の時間を実測した結果に基づいて決定される請求項６に記載の外観検査方法。
【請求項９】
前記ｎ個のスレッドの各々には、所定種類の画像処理と他の種類の画像処理とを続けて実行する手順が記述されている、請求項６又は７に記載の外観検査方法。
【請求項１０】
前記スレッドを生成するステップでは、前記メモリに記憶された画像データ上に設定されたｎ個（ｎは２以上の整数）の検査領域の画像データをそれぞれ処理する手順が記述された少なくともｎ個のスレッドを生成し、
前記実行するステップでは、前記生成された前記ｎ個のスレッドを並列して実行する、請求項６に記載の外観検査方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、大量の画像データを処理することにより外観検査を行う外観検査装置及び外観検査方法に関し、特に画像データを並列に処理する技術に関する。
【０００２】
【従来の技術】
従来、集積回路（ＩＣ）を撮像することにより得られた画像データを用いて該ＩＣの外観を検査する外観検査装置が知られている。このような外観検査装置として、例えば、特開平１１−２５９４３４号公報は、「並列データ処理装置とそれを用いた外観検査装置」（以下、「第１先行技術」という）を開示している。この外観検査装置では、駆動信号バスからの同期パルスによって駆動されるデータ入力部は、画像データを入力してデータバスを介して転送する。処理分配部とプロセッサエレメントは、駆動信号バスの状態を監視し、同期パルスのパルス期間に、これらの間で通信バスを介して通信を行う。
【０００３】
処理分配部は、プロセッサエレメントの状態を監視しており、同期パルスのパルス期間に、その次にデータ入力部から転送される単位画像データを処理するプロセッサエレメントを決定する。この決定を受けたプロセッサエレメントはデータバスから単位画像データを取り込んで処理し、また、このパルス期間に、処理分配部に処理中であることを通知する。処理が終わると、次の同期パルス期間に、待機中であることを処理分配部に通知する。上記の構成により、各プロセッサエレメントの稼働率を高めることができるので、特に画像データ等の大量に連続入力されるデータの高速処理が可能になる。
【０００４】
また、特開平１１−１３５０５４号公報は、「並列画像処理プロセッサを備えた荷電子ビーム装置」（以下、「第２先行技術」という）を開示している。この装置では、画像処理部に、データ転送を制御する１つのマスタＣＰＵとデータの演算処理を行う複数のスレーブＣＰＵとから構成される並列画像処理プロセッサが付加されている。画像処理のための演算プログラムは、制御用計算機よりマスタＣＰＵ及びスレーブＣＰＵへダウンロードされる。並列画像処理プロセッサの数を可変にし、処理の内容に応じて事前に最適な並列ＣＰＵの数を求める。また、処理する画像データの分割方法を画像処理の種類や処理内容に応じて可変にする。この装置によれば、基本的な画像処理のみならず高度な演算を必要とする画像処理をも高速に実行することができる。
【０００５】
更に、特開平１０−３０４１８４号公報は、「画像処理装置および画像処理方法」（以下、「第３先行技術」という）を開示している。この第３先行技術では、画像データの分割領域データが複数の分割入力手段に入力され、入力された分割領域データ各々に対して、分割領域毎に独立に処理可能な画像処理がパイプライン処理により実行され、このパイプライン処理の結果が統合される。
【０００６】
このような処理は第１統合処理部の制御により行われる。即ち、第１統合処理部は、パイプラインに指示を与えて処理を開始させる。また、パイプラインから出力された処理済みの部分画像データを受け取り、位置合わせを行って全体の画像データを作成し、画像記憶部へ記憶する。
【０００７】
また、例えば画像の回転といった広い領域を参照する必要がある画像処理のために、複数の画像処理部とこれらを制御する第２統合処理部を備えている。この第２統合処理部は、複数の画像処理部で処理された結果を統合し、画像記憶部へ記憶する。これら分割領域毎に独立に行う画像処理と広い領域を参照する画像処理とを任意の順序で実行することにより高速な画像処理が達成される。
【０００８】
【発明が解決しようとする課題】
上述した第１先行技術では、画像データが入力される都度、分配処理部がエレメントプロセッサを割り当てるので割り当てのためのオーバーヘッドが大きく処理の高速化に限界がある。また、詳細は開示されていないが、各エレメントプロセッサで処理された結果を統合するための処理が必要なことが予想される。
【０００９】
また、上述した第２先行技術も上記第１先行技術と同様に、マスタＣＰＵの制御の下にスレーブＣＰＵが順次割り当てられ、各スレーブＣＰＵによって画像データが並列処理される。従って、この第２先行技術も上述した第１先行技術と同様の問題を含んでいる。
【００１０】
更に、上述した第３先行技術では、第１及び第２統合処理部によって画像処理の開始や処理済みの画像データの統合等が行われるのでオーバーヘッドが大きく画像処理の高速化に限界がある。また、分割領域毎の画像処理を行う部分と広い領域を参照する画像処理を行う部分といった２種類が必要があるので、画像処理装置の構成が複雑且つ大規模になる。
【００１１】
そこで、本発明の目的は、簡単な構成であるにも拘わらず外観検査を高速に実行できる外観検査装置及び外観検査方法を提供することを目的とする。
【００１２】
【課題を解決するための手段】
本発明の第１の態様に係る外観検査装置は、上記目的を達成するために、検査対象物の外観の画像データを格納するメモリと、前記メモリに格納された画像データを独立に処理して前記メモリに格納する手順が記述されたスレッドを生成するスレッド生成手段と、前記スレッド生成手段で生成された複数のスレッドの少なくとも一部を並列して実行する複数のＣＰＵ、とを備えている。
【００１３】
この第１の態様に係る外観検査装置では、メモリに格納された画像データを独立に処理するための複数のスレッドが複数のＣＰＵでそれぞれ実行される。ここで、独立に処理するとは、各スレッドが自己完結的に処理すること、換言すれば、自己が保有している情報に従って処理し、その処理結果を自己が保有している情報に従った位置に書き込んで処理を完結することをいう。従って、従来の画像処理装置のように、外部から与えられる情報に応答して処理し、その処理結果を外部で更に統合する必要はない。その結果、外観検査装置の構成が簡単になり、しかも処理の高速化を図れる。
【００１４】
また、この第１の態様に係る外観検査装置の前記スレッド生成手段は、前記メモリに記憶された画像データ上に設定された１つの検査領域が分割されることにより得られるｎ個（ｎは２以上の整数）の領域の画像データをそれぞれ処理する手順が記述されたｎの整数倍個のスレッドを生成し、前記複数のＣＰＵは、前記スレッド生成手段で生成された少なくとも前記ｎ個のスレッドを並列して実行する、ように構成できる。
【００１５】
また、この第１の態様に係る外観検査装置の前記スレッド生成手段は、前記メモリに記憶された画像データ上に設定された１つの検査領域が分割されることにより得られるｎ個（ｎは２以上の整数）の領域の画像データをそれぞれ処理する手順が記述されたｎの整数倍個のスレッドと、前記ｎ個の領域の画像データを一括して処理する手順が記述されたｍ個（ｍは正の整数）のスレッドとを生成し、前記複数のＣＰＵは、前記スレッド生成手段で生成された少なくとも前記ｎ個のスレッドを並列して実行し、前記複数のＣＰＵの何れかは前記スレッド生成手段で生成された前記ｍ個のスレッドを単独で実行する、ように構成できる。
【００１６】
この場合、前記ｎ及びｍは、画像処理の種類又は前記検査領域のサイズに基づいて決定するように構成できる。また、前記ｎ及びｍは、該ｎ及びｍの任意の組合せの下で前記複数のＣＰＵに処理させた時間を実測した結果に基づいて決定するように構成できる。また、前記ｎ個のスレッドの各々には、所定種類の画像処理と他の種類の画像処理とを続けて実行する手順が記述するように構成できる。
【００１７】
更に、この第１の態様に係る外観検査装置の前記スレッド生成手段は、前記メモリに記憶された画像データ上に設定されたｎ個（ｎは２以上の整数）の検査領域の画像データをそれぞれ処理する手順が記述された少なくともｎ個のスレッドを生成し、前記複数のＣＰＵは、前記スレッド生成手段で生成された前記ｎ個のスレッドを並列して実行する、ように構成できる。
【００１８】
また、本発明の第２の態様に係る外観検査方法は、上記と同様の目的で、検査対象物の外観の画像データをメモリに格納し、該メモリに格納された画像データを独立に処理して前記メモリに格納する手順が記述されたスレッドを生成し、該生成された複数のスレッドの少なくとも一部を並列して実行する、ように構成さされている。
【００１９】
この第２の態様に係る外観検査方法における前記スレッドを生成するステップでは、前記メモリに記憶された画像データ上に設定された１つの検査領域が分割されることにより得られるｎ個（ｎは２以上の整数）の領域の画像データをそれぞれ処理する手順が記述されたｎの整数倍個のスレッドを生成し、前記実行するステップでは、前記生成された少なくとも前記ｎ個のスレッドを並列して実行する、ように構成できる。
【００２０】
また、この第２の態様に係る外観検査方法における前記スレッドを生成するステップでは、前記メモリに記憶された画像データ上に設定された１つの検査領域が分割されることにより得られるｎ個（ｎは２以上の整数）の領域の画像データをそれぞれ処理する手順が記述されたｎの整数倍個のスレッドと、前記ｎ個の領域の画像データを一括して処理する手順が記述されたｍ個（ｍは正の整数）のスレッドとを生成し、前記実行するステップでは、前記生成された少なくとも前記ｎ個のスレッドは並列して実行され、前記生成された前記ｍ個のスレッドを単独で実行される、ように構成できる。
【００２１】
この場合、前記ｎ及びｍは、画像処理の種類又は前記検査領域のサイズに基づいて決定できる。また、前記ｎ及びｍは、該ｎ及びｍの任意の組合せの下で行われた処理の時間を実測した結果に基づいて決定できる。更に、前記ｎ個のスレッドの各々には、所定種類の画像処理と他の種類の画像処理とを続けて実行する手順を記述するように構成できる。
【００２２】
更に、この第２の態様に係る外観検査方法における前記スレッドを生成するステップでは、前記メモリに記憶された画像データ上に設定されたｎ個（ｎは２以上の整数）の検査領域の画像データをそれぞれ処理する手順が記述された少なくともｎ個のスレッドを生成し、前記実行するステップでは、前記生成された前記ｎ個のスレッドを並列して実行する、ように構成できる。
【００２３】
【発明の実施の形態】
以下、本発明の実施の形態を、図面を参照しながら説明する。
【００２４】
図１は本発明の実施の形態１〜３に係る外観検査装置の概略構成を示すブロック図である。この外観検査装置は、複数のＣＰＵを有するパーソナルコンピュータ、ワークステーション、サーバといった汎用のコンピュータを利用して構成できる。この場合、コンピュータを動作させるソフトウェアとして、例えばＷｉｎｄｏｗｓＮＴ（Ｒ）、Ｗｉｎｄｏｗｓ２０００（Ｒ）、ＵＮＩＸといったマルチスレッド対応のオペレーティングシステム（ＯＳ）を使用できる。
【００２５】
この外観検査装置は、第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２、第４ＣＰＵ１３、メモリ１４、ハードディスク装置１５、表示部１６及びデータ入力部１８といった構成要素がシステムバス２０に接続されることにより構成されている。システムバス２０は、上記各構成要素間のデータ転送を行うために使用される。また、上記表示部１６にはディスプレイ装置１７が接続されており、データ入力部１８にはカメラ１９が接続されている。
【００２６】
第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３の各々は、ＯＳの制御の下で、独立して同時動作する。これら第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３は、ＯＳから渡される、スレッドと呼ばれる小さなプログラムモジュールに従って動作する。なお、このＯＳは、単にスレッドをＣＰＵに渡す制御を行うだけであり、従来技術の欄で説明した分配処理部、マスタＣＰＵ、統合処理部のように、各ＣＰＵに処理内容を指示したり、各ＣＰＵによる処理結果を統合して全体の画像データを作成する作業は行わない。
【００２７】
第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３は、それぞれメモリ１０ａ、１１ａ、１２ａ及び１３ａを備えている。これらのメモリ１０ａ、１１ａ、１２ａ及び１３ａの各々は、上述したスレッドを格納する。
【００２８】
各スレッドには、画像処理を行うための手順、つまりプログラムが記述されている。第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３は、メモリ１０ａ、１１ａ、１２ａ及び１３ａに格納されたスレッドに従って画像処理をそれぞれ実行する。例えば、第１ＣＰＵ１０〜第４ＣＰＵ１３の各々は、メモリ１４から画像データを読み出し、読み出した画像データに所定の処理を施し、処理結果をメモリ１４に格納するという動作を並行して実行する。
【００２９】
メモリ１４は、カメラ１９からデータ入力部１８を介して入力される画像データ、この画像データを処理した結果等を記憶する。このメモリ１４の具体的な使用方法は後述する。
【００３０】
ハードディスク（ＨＤ）装置１５は、この外観検査装置の全体を制御するためのプログラム、外観検査に使用される検査データを記憶する。このハードディスク装置１５から読み出されたプログラムが実行されることによりスレッドが生成され、第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３のメモリ１０ａ、１１ａ、１２ａ及び１３ａにそれぞれ転送される。
【００３１】
表示部１６はディスプレイ装置１７を制御する。このディスプレイ装置１７は、例えばカメラ１９から得られた画像データに基づくＩＣの外観の画像や処理結果を表すメッセージ等を表示する。
【００３２】
カメラ１９は、ＩＣの外観を撮像するために使用される。このカメラ１９は、例えばＣＣＤカメラで構成することができる。このカメラ１９でＩＣの外観を撮像することにより得られたアナログ画像データは、データ入力部１８に供給される。
【００３３】
データ入力部１８は、カメラ１９からのアナログ画像データを、例えば２５６階調の画素の集まりから成るデジタル画像データ（以下、単に「画像データ」という）に変換する。このデータ入力部１８で得られたデジタル画像データは、例えば図示しないＤＭＡユニットの制御の下に、システムバス２０を介してメモリ１４に転送される。
【００３４】
以上のように構成される外観検査装置は、ＩＣパッケージを形成するモールドにボイドが存在するかどうかを検査するボイド検査、リードに異物が付着していないことを検査するリード間異物検査、リードが異形であるかどうかを検査するリード検査、モールドの異形が存在するかどうかを検査するモールド検査、捺印が正常であるかどうかを検査する捺印検査といった種々の検査に使用される。
【００３５】
次に、以上のように構成される外観検査装置の動作を説明する。
【００３６】
（実施の形態１）
この実施の形態１に係る外観検査装置では、画像データ上に設定された１つの検査領域が４つに分割され、各領域の画像データを４個のＣＰＵで並行して処理する。以下では、ボイド検査を行う場合を例に挙げて説明する。
【００３７】
このボイド検査では、カメラ１９からデータ入力部１８及びシステムバス２０を経由してメモリ１４に格納された画像データを２値化する「２値化処理」、２値化された画像データを反転する「反転処理」、反転された画像データの面積を計測する「面積計測処理」、及び計測された面積を合計してボイドの有無を判定する「検査判定処理」が順次行われる。
【００３８】
このボイド検査を実行する時に、先ず、スレッドが生成される。図２は、メモリ１４に格納されるＩＣの画像データのイメージを示す。ボイド検査では、この画像データのパッケージ部分にボイド検査領域が設定される。そして、設定されたボイド検査領域は、第１領域、第２領域、第３領域及び第４領域といった４つの領域に分割される。そして、各領域の画像データを処理するためのスレッドが生成される。
【００３９】
図３は、ボイド検査用に生成されるスレッドの一例を示す。各スレッドは、コマンド及びアドレスを含む。コマンドは、実行すべき画像処理の内容を指示する。アドレスは、画像データのメモリ１４上の位置を指定する。このスレッドに保有するアドレスとしては、処理すべき画像データが格納されているメモリ１４の位置を示す読み出しアドレスのみ、読み出しアドレスと処理済みの画像データを格納すべきメモリ１４の位置を示す書き込みアドレスの両方、書き込みアドレスのみ、の何れであってもよい。
【００４０】
なお、読み出しアドレスのみをスレッドに保有する場合は、この読み出しアドレスとコマンドとに基づいて書き込みアドレスが算出される。同様に、書き込みアドレスのみをスレッドに保有する場合は、この書き込みアドレスとコマンドとに基づいて読み出しアドレスが算出される。
【００４１】
スレッド１〜４には、第１〜４領域の画像データを２値化するための手順がそれぞれ記述されている。スレッド５〜８には、第１〜４領域の２値化された画像データを反転させるための手順がそれぞれ記述されている。スレッド９〜１２には、第１〜４領域の反転された画像データの面積を計測するための手順が記述されている。スレッド１３には、第１〜４領域の計測された面積を合計してボイドの有無を判定するための手順が記述されている。
【００４２】
以上のようにして生成されたスレッドは、ＯＳによって第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３の何れかに順次割り当てられる。即ち、ＯＳは空いているＣＰＵのメモリにスレッドを転送する。これにより、ボイド検査が開始される。
【００４３】
図４は、ボイド検査の動作を説明するための図である。以下では、各スレッドは、アドレスとして、読み出しアドレス及び書き込みアドレスを保有しているものとする。また、カメラ１９から取り込まれた画像データは、メモリ１４の原画記憶領域に記憶されているものとする。
【００４４】
初期状態では、第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３は何れも空き状態である。従って、ＯＳは、スレッド１を第１ＣＰＵ１０のメモリ１０ａに、スレッド２を第２ＣＰＵ１１のメモリ１１ａに、スレッド３を第３ＣＰＵ１２のメモリ１２ａに、スレッド４を第４ＣＰＵ１３のメモリ１３ａに、それぞれ転送する。
【００４５】
スレッド１を受け取った第１ＣＰＵ１０は、該スレッド１に記述された手順で処理を実行する。即ち、メモリ１４の原画記憶領域の読み出しアドレスで指定された位置（第１領域の先頭に対応する位置）から画像データＡ１を順次読み出して２値化する。即ち、読み出した画像データを構成する各画素を、該画像データに好適なスレッショルドレベルでスライスし、以て「０」又は「１」のデータに変換する。この２値化された画像データＡ２は、メモリ１４の反転画像記憶領域の書き込みアドレスで指定される位置（第１領域の先頭に対応する位置）に順次格納される。
【００４６】
同様に、第２ＣＰＵ１１は、メモリ１４の原画記憶領域の読み出しアドレスで指定された位置（第２領域の先頭に対応する位置）から画像データＢ１を読み出して２値化し、２値化された画像データＢ２を、メモリ１４の反転画像記憶領域の書き込みアドレスで指定される位置（第２領域の先頭に対応する位置）に格納する。第３ＣＰＵ１２及び第４ＣＰＵ１３についても同様である。以上の第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３による２値化処理は並行して実行される。各ＣＰＵが２値化処理を完了した時点では、メモリ１４の反転画像記憶領域に２値化された画像データが格納されている。
【００４７】
次いで、ＯＳは、２値化処理を完了したＣＰＵから順次スレッド５、６、７及び８をそのＣＰＵのメモリに転送する。これにより、各ＣＰＵは反転処理を開始する。今、第１ＣＰＵ１０→第２ＣＰＵ１１→第３ＣＰＵ１２→第４ＣＰＵの順番で２値化処理が完了したものとすると、第１ＣＰＵ１０は、メモリ１４の反転記憶領域の読み出しアドレスで指定された位置（第１領域の先頭に対応する位置）から画像データＡ２を順次読み出して反転する。この反転された画像データＡ３は、メモリ１４の領域別面積計測値記憶領域の書き込みアドレスで指定される位置（第１領域の先頭に対応する位置）に順次格納される。
【００４８】
同様に、第２ＣＰＵ１１は、メモリ１４の反転記憶領域の読み出しアドレスで指定された位置（第２領域の先頭に対応する位置）から画像データＢ２を順次読み出して反転し、反転された画像データＢ３を、メモリ１４の領域別面積計測値記憶領域の書き込みアドレスで指定される位置（第２領域の先頭に対応する位置）に格納する。第３ＣＰＵ１２及び第４ＣＰＵ１３についても同様である。以上の第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３による反転処理は並行して実行される。各ＣＰＵが反転処理を完了した時点では、メモリ１４の領域別面積計測値記憶領域には反転された画像データが格納されている。
【００４９】
次いで、ＯＳは、反転処理を完了したＣＰＵから順次スレッド９、１０、１１及び１２をそのＣＰＵのメモリに転送する。これにより、各ＣＰＵは面積計測処理を開始する。今、第１ＣＰＵ１０→第２ＣＰＵ１１→第３ＣＰＵ１２→第４ＣＰＵの順番で反転処理が完了したものとすると、第１ＣＰＵ１０は、メモリ１４の領域別面積計測値記憶領域の読み出しアドレスで指定された位置（第１領域の先頭に対応する位置）から画像データＡ３を順次読み出して面積を計算する。この計算結果は、メモリ１４の面積合計領域の書き込みアドレスで指定される位置に格納される。
【００５０】
同様に、第２ＣＰＵ１１は、メモリ１４の領域別面積計測値記憶領域の読み出しアドレスで指定された位置（第２領域の先頭に対応する位置）から画像データＢ３を読み出して面積を計算する。この計算結果は、メモリ１４の面積合計領域の書き込みアドレスで指定される位置に格納される。第３ＣＰＵ１２及び第４ＣＰＵ１３についても同様である。以上の第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３による面積計測処理は並行して実行される。各ＣＰＵが面積計測処理を完了した時点では、メモリ１４の面積合計領域にはボイド検査領域の第１領域、第２領域、第３領域及び第４領域の面積が格納されている。
【００５１】
全てのＣＰＵが面積計測処理を完了すると、次いで、ＯＳは、第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３の何れかを選択し、選択されたＣＰＵのメモリに、スレッド１３を転送する。これにより、選択されたＣＰＵは、メモリ１４の面積合計領域の読み出しアドレスで指定された位置から領域別面積計測値を読み出して合計し、予め設定されている判定値と比較する。この比較の結果、面積の合計値が判定値より大きければボイド不良であることを判断し、その旨のメッセージをディスプレイ装置１７に表示する。以上により、ボイド検査を終了する。
【００５２】
この実施の形態１において、第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３の性能が同等であり、且つ第１領域、第２領域、第３領域及び第４領域のサイズが同じであれば、各ＣＰＵが２値化処理、反転処理及び面積計測処理に要する時間は同じである。従って、２値化処理、反転処理及び面積計測処理に要する時間は、１台のＣＰＵでこれらの処理を行う場合の略１／４で済み画像処理の高速化が実現できる。
【００５３】
また、各スレッドの書き込みアドレスは、原画記憶領域の画像データ、反転画像記憶領域の画像データ及び領域別面積計測値記憶領域の画像データがそれぞれ対応するように決定されるので、従来の画像処理装置のように、各ＣＰＵで処理された画像データの位置合わせといった統合処理を行う必要がない。その結果、処理が簡単になると共に処理の高速化を図ることができる。
【００５４】
更に、この実施の形態１に係る外観検査装置は、汎用のコンピュータを利用し、このコンピュータを動作させるソフトウェアも市販のＯＳを使用できるので、装置を安価に構成できるという利点がある。
【００５５】
なお、上述した実施の形態１では、ボイド検査領域を４分割し、各領域毎に２値化処理、反転処理及び面積計測処理をそれぞれ実行するスレッドを作成したが、これらの各処理では１つの画素に基づいて他の１つの画素が作成されるので、２値化処理、反転処理及び面積計測処理を連続して実行するようなスレッドを領域毎に作成し、これを複数のＣＰＵで並列して処理させるように構成することもできる。
【００５６】
また、上述した実施の形態１では、ボイド検査領域を４つの領域に分割し、各領域に１台のＣＰＵを対応させて合計４台のＣＰＵで画像処理を行う構成としたが、上記ボイド検査領域の分割数及びＣＰＵの数は「４」に限定されず任意に決定できる。
【００５７】
この場合、ボイド検査時に実行されるスレッド生成時に、当該外観検査装置に搭載されているＣＰＵの数を取得し、処理毎にＣＰＵの数の分のスレッドを生成するように構成できる。この構成によれば、搭載されているＣＰＵの数が異なるコンピュータを外観検査装置として利用した場合であっても、１つのソフトウェアでスレッドを生成することが可能になるので、ＣＰＵの数毎にソフトウェアを作成しなくてもよいという利点がある。
【００５８】
更に、上述した実施の形態１では、ボイド検査を行う場合を例に挙げて説明したが、ボイド検査に限らず、その他の種々の外観検査にも適用できることは勿論である。
【００５９】
（実施の形態２）
次に、実施の形態２に係る外観検査装置を説明する。上述した実施の形態１に係る外観検査装置では、２値化処理、反転処理及び面積計測処理といった全ての処理を複数のスレッドで並列して実行するように構成したが、この実施の形態２に係る外観検査装置では、上記複数の処理の中の特定の処理を単一のスレッドで実行するように構成されている。
【００６０】
ボイド検査時に実行されるスレッド生成処理では、先ず、ボイド検査領域のサイズが算出される。そして、この算出されたサイズが予め決められた設定値αより大きいかどうかが調べられる。そして、設定値αより大きいことが判断されると、実施の形態１で説明したと同様に、ボイド検査領域を４つに分割し、図３に示すように、２値化処理、反転処理及び面積計測処理は各領域の画像データ毎に実行し、検査判定処理は単一のスレッドで実行するように１３個のスレッドが生成される。
【００６１】
一方、算出されたサイズが予め決められた設定値α以下であることが判断されると、図５（Ａ）に示すように、２値化処理及び反転処理は各領域の画像データ毎に実行し、面積計測処理及び検査判定処理は単一のスレッドで実行するように９個のスレッドが生成される。そして、このようにして生成された９個のスレッドは、実施の形態１で説明したと同様の手順で実行される。
【００６２】
この実施の形態２に係る外観検査装置によれば、ボイド検査領域のサイズが決められた設定値α以下であれば、面積計測処理を４つのスレッドで実行し、その後検査判定処理を１つのスレッドで実行するよりも、面積計測処理及び検査判定処理を１つのスレッドで実行するほうが処理時間が短くて済むので、全体として外観検査時間を短縮できる。
【００６３】
また、上述した外観検査装置では、上記複数の処理の中の特定の処理を単一のスレッドで実行するように構成されているが、全ての処理を単一のスレッドで実行するように変形することができる。
【００６４】
この変形例に係る外観検査装置においては、ボイド検査時に実行されるスレッド生成処理では、先ず、ボイド検査領域のサイズが算出される。そして、この算出されたサイズが予め決められた設定値βより大きいかどうかが調べられる。そして、設定値βより大きいことが判断されると、実施の形態１で説明したと同様に、ボイド検査領域を４つに分割し、図３に示すように、２値化処理、反転処理及び面積計測処理は各領域の画像データ毎に実行し、検査判定処理は単一のスレッドで実行するように１３個のスレッドが生成される。
【００６５】
一方、算出されたサイズが予め決められた設定値β以下であることが判断されると、図５（Ｂ）に示すように、２値化処理、反転処理、面積計測処理及び検査判定処理の全てを単一のスレッドで実行するように１個のスレッドが生成される。そして、このようにして生成された１個のスレッドは、実施の形態１で説明したと同様の手順で実行される。
【００６６】
この変形例に係る外観検査装置によれば、ボイド検査領域のサイズが決められた設定値β以下であれば、全ての処理を１つのスレッドで実行するほうが最も処理時間が短くて済むので、外観検査時間を高速に行うできる。この変形例に係る外観検査装置は、小さなサイズのボイド検査領域が複数存在する場合に有効である。
【００６７】
なお、この外観検査装置においては、ボイド検査領域のサイズが設定値αより大きい場合は、実施の形態１で説明したと同様に、ボイド検査領域を４つに分割し、２値化処理、反転処理及び面積計測処理は各領域の画像データ毎に実行し、検査判定処理は単一のスレッドで実行するように１３個のスレッドを生成し、ボイド検査領域のサイズが設定値α以下で設定値βより大きい（α＞β）場合は、２値化処理及び反転処理は各領域の画像データ毎に実行し、面積計測処理及び検査判定処理は単一のスレッドで実行するように９個のスレッドを生成し、ボイド検査領域のサイズが設定値β以下である場合は、２値化処理、反転処理、面積計測処理及び検査判定処理の全てを単一のスレッドで実行するように１個のスレッドを生成するように構成できる。
【００６８】
以上説明した外観検査装置では、ボイド検査時に、ボイド検査領域のサイズが予め決められた設定値より大きいかどうかを調べることにより、生成すべきスレッドを決定しているが、最も短時間で外観検査を行うことができるスレッドの組合せを予め実測し、検査データとしてハードディスク装置１５に格納しておくように構成することもできる。
【００６９】
例えば、先ず、所定の処理を４台のＣＰＵ及び４つのスレッドを用いて実行し、その実行時間が計測される。次いで、その所定の処理を１台のＣＰＵ及び１つのスレッドを用いて実行し、その実行時間が計測される。そして、これらを比較し、当該所定の処理を行う場合のＣＰＵ及びスレッド数が決定されて、検査データとしてハードディスク装置１５に格納される。この検査データは、上記所定の処理が実行される際にハードディスク装置１５から読み出され、スレッド生成時に参照される。
【００７０】
この構成によれば、ボイド検査時のスレッド生成処理では、実測により最も短時間で外観検査を行うことができることが実証されているスレッドが生成されるので、外観検査を最も短時間で行うことができる。
【００７１】
なお、上記所定の処理は、２値化処理、反転処理、面積計測処理及び検査判定処理の各々であってもよいし、これらの処理の幾つかを組み合わせた処理であってもよいし、これらの全ての処理であってもよい。要は、これらの中から外観検査を最も短時間で行うことができるケースを見出し、検査データを作成すればよい。
【００７２】
（実施の形態３）
この実施の形態３に係る外観検査装置は、例えばヒストグラム処理、投影処理といった並列処理が困難な処理を行う場合に、検査領域が複数存在すれば各領域を１つのスレッドで処理するように構成されている。
【００７３】
図６は、この実施の形態３で使用されるＩＣの画像データのイメージを示す。ボイド検査では、実施の形態１及び２で説明したように、ＩＣのパッケージ部分にボイド検査領域が設定される。
【００７４】
リード間異物検査では、ＩＣのリード部分に、各辺毎に第１〜第４リード間異物検査領域が設定される。そして、第１〜第４リード間異物検査領域に対応する４つのスレッドが生成される。各スレッドには、リード間異物検査を行うための手順がそれぞれ記述されている。
【００７５】
このようにして生成された４つのスレッドは、ＯＳによって第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３にそれぞれ割り当てられる。即ち、ＯＳは空いているＣＰＵのメモリにスレッドを転送する。これにより、リード間異物検査が開始される。このリード間異物検査の詳細は、例えば特開平７−１２８２４９号公報（特許第２５００６４９号）に説明されている。
【００７６】
このリード間異物検査で実行される処理内容は、リード間異物検査領域を複数に分割して複数のＣＰＵで並列処理することが難しい内容である。そこで、上述したように、ＩＣの４つの辺のそれぞれにリード間異物検査領域を設定し、４台のＣＰＵでリード間異物検査を行うことにより、ＣＰＵの使用効率を高めることができると共に、処理の高速化を実現できる。
【００７７】
また、リード検査では、図６に示すように、各リードの先端部に、第１〜第１００リード検査領域が設定される。そして、第１〜第１００リード検査領域毎に１００個のスレッドが生成される。各スレッドには、リード検査を行うための手順がそれぞれ記述されている。
【００７８】
このようにして生成された１００個のスレッドは、ＯＳによって第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３に順次割り当てられる。即ち、ＯＳは空いているＣＰＵのメモリにスレッドを順次転送する。これにより、リード検査が開始される。このリード検査は、例えば、リード先端部の画像をテンプレート画像として、各リード先端部に設けられたリード検査領域をサーチし、以てリード座標を検出する方法により行われる。
【００７９】
このリード検査で使用されるリード検査領域のサイズは非常に小さい。従って、リード検査領域を複数に分割して複数のＣＰＵで並列処理すると処理時間が却って増加することがある。そこで、各リードの先端部にリード検査領域を設定し、４台のＣＰＵで合計１００のリード検査を順次行うことにより、ＣＰＵの使用効率を高めることができると共に、処理の高速化を実現できる。
【００８０】
（実施の形態４）
検査領域を複数に分割して複数のＣＰＵで処理することが難しい処理として、例えば、画像の全体又は一部を回転させる回転処理がある。この回転処理では、画像データの全体を参照する必要があるが、読み出しアドレスと書き込みアドレスとを指定する方法、読み出しアドレスのみを指定する方法、書き込みアドレスのみを指定する方法の何れかを用いることで、複数のＣＰＵによる並列処理を実現することができる。
【００８１】
この実施の形態４で行われる回転処理を、右９０度回転する場合を例に挙げて図７を参照しながら説明する。なお、図７では、説明を簡単にするために４行×４列の１６画素の画像データを右９０度回転させる例を示しているが、本実施の形態で取り扱うことのできる画素数は上記に限定されず任意である。
【００８２】
この回転処理のためのスレッド生成処理では、原画記憶領域又は回転画像記憶領域の行又は列毎にスレッドが生成される。以下、アドレスの指定方法毎に回転処理の動作を説明する。
【００８３】
先ず、アドレスとして読み出しアドレス及び書込アドレスの双方がスレッドに保有される場合の動作を、図７（Ａ）を参照しながら説明する。この場合、原画記憶領域のＹ４行処理用のスレッド１、Ｙ３行処理用のスレッド２、Ｙ２行処理用のスレッド３及びＹ１行処理用のスレッド４といった４個のスレッドが生成される。
【００８４】
そして、スレッド１に保有される読み出しアドレスは原画記憶領域の座標（Ｘ１、Ｙ４）のアドレスであり、書き込みアドレスは回転画像記憶領域の座標（Ｘ４、Ｙ４）のアドレスである。また、スレッド２に保有される読み出しアドレスは原画記憶領域の座標（Ｘ１、Ｙ３）のアドレスであり、書き込みアドレスは回転画像記憶領域の座標（Ｘ３、Ｙ４）のアドレスである。スレッド３及び４に保有される読み出しアドレス及び書込アドレスも上記と同様の規則によって決められる。
【００８５】
以上のようにして生成されたスレッド１〜４は、ＯＳによって第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３の何れかに割り当てられる。即ち、ＯＳは空いているＣＰＵのメモリにスレッドを転送する。これにより、４台のＣＰＵで同時に回転処理が開始される。以下では、スレッド１、２、３及び４が第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３にそれぞれ割り当てられたと仮定する。
【００８６】
スレッド１を受け取った第１ＣＰＵ１０は、該スレッド１に記述された手順で処理を実行する。即ち、メモリ１４の原画記憶領域の読み出しアドレスで指定された位置、即ち座標（Ｘ１、Ｙ４）から画像データＢ１が読み出され、回転画像記憶領域の書き込みアドレスで指定された位置、即ち座標（Ｘ４、Ｙ４）に書き込まれる。以下、原画記憶領域の座標（Ｘ２、Ｙ４）から読み出された画像データＢ２が回転画像記憶領域の座標（Ｘ４、Ｙ３）に、原画記憶領域の座標（Ｘ３、Ｙ４）から読み出された画像データＢ３が回転画像記憶領域の座標（Ｘ４、Ｙ２）に、原画記憶領域の座標（Ｘ４、Ｙ４）から読み出された画像データＢ４が回転画像記憶領域の座標（Ｘ４、Ｙ１）に、順次書き込まれる。
【００８７】
また、スレッド２を受け取った第２ＣＰＵ１１は、該スレッド２に記述された手順で処理を実行する。即ち、メモリ１４の原画記憶領域の読み出しアドレスで指定された位置、即ち座標（Ｘ１、Ｙ３）から画像データが読み出され、回転画像記憶領域の書き込みアドレスで指定された位置、即ち座標（Ｘ３、Ｙ４）に書き込まれる。以下、原画記憶領域の座標（Ｘ２、Ｙ３）から読み出された画像データが回転画像記憶領域の座標（Ｘ３、Ｙ３）に、原画記憶領域の座標（Ｘ３、Ｙ３）から読み出された画像データが回転画像記憶領域の座標（Ｘ３、Ｙ２）に、原画記憶領域の座標（Ｘ４、Ｙ３）から読み出された画像データが回転画像記憶領域の座標（Ｘ３、Ｙ１）に、順次書き込まれる。スレッド３を受け取った第３ＣＰＵ１２及びスレッド４を受け取った第４ＣＰＵ１３の動作も上記と同様である。
【００８８】
次に、アドレスとして読み出しアドレスのみがスレッドに保有されている場合の動作を図７（Ｂ）を参照しながら説明する。この場合、原画記憶領域のＹ４行処理用のスレッド１、Ｙ３行処理用のスレッド２、Ｙ２行処理用のスレッド３及びＹ１行処理用のスレッド４といった４個のスレッドが生成される。
【００８９】
そして、スレッド１に保有される読み出しアドレスは原画記憶領域の座標（Ｘ１、Ｙ４）のアドレスであり、スレッド２に保有される読み出しアドレスは原画記憶領域の座標（Ｘ１、Ｙ３）のアドレスであり、スレッド３に保有される読み出しアドレスは原画記憶領域の座標（Ｘ１、Ｙ２）のアドレスであり、スレッド４に保有される読み出しアドレスは原画記憶領域の座標（Ｘ１、Ｙ１）のアドレスである。
【００９０】
今、以上のようにして生成されたスレッド１〜４が、上記と同様に、ＯＳによって第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３の何れかに割り当てられたと仮定する。
【００９１】
スレッド１を受け取った第１ＣＰＵ１０は、該スレッド１に記述された手順で処理を実行する。ここでは、先ず書き込みアドレスが算出される。即ち、メモリ１４の原画記憶領域の座標（Ｘ１、Ｙ４）を９０度右回転させた場合の座標は座標（Ｘ４、Ｙ４）であることが算出され、回転画像記憶領域の座標（Ｘ４、Ｙ４）のアドレスが書き込みアドレスとして算出される。次いで、メモリ１４の原画記憶領域の読み出しアドレスで指定された位置、即ち座標（Ｘ１、Ｙ４）から画像データＢ１が読み出され、回転画像記憶領域の、算出された書き込みアドレスで指定された位置、即ち座標（Ｘ４、Ｙ４）に書き込まれる。以下同様にして、原画記憶領域の座標（Ｘ２、Ｙ４）から読み出された画像データＢ２が回転画像記憶領域の座標（Ｘ４、Ｙ３）に、原画記憶領域の座標（Ｘ３、Ｙ４）から読み出された画像データＢ３が回転画像記憶領域の座標（Ｘ４、Ｙ２）に、原画記憶領域の座標（Ｘ４、Ｙ４）から読み出された画像データＢ４が回転画像記憶領域の座標（Ｘ４、Ｙ１）に、順次書き込まれる。
【００９２】
また、スレッド２を受け取った第２ＣＰＵ１１は、該スレッド２に記述された手順で処理を実行する。ここでは、先ず書き込みアドレスが算出される。即ち、メモリ１４の原画記憶領域の座標（Ｘ１、Ｙ３）を９０度右回転させた場合の座標は座標（Ｘ３、Ｙ４）であることが算出され、回転画像記憶領域の座標（Ｘ３、Ｙ４）のアドレスが書き込みアドレスとして算出される。次いで、メモリ１４の原画記憶領域の読み出しアドレスで指定された位置、即ち座標（Ｘ１、Ｙ３）から画像データが読み出され、回転画像記憶領域の、算出された書き込みアドレスで指定された位置、即ち座標（Ｘ３、Ｙ４）に書き込まれる。以下同様にして、原画記憶領域の座標（Ｘ２、Ｙ３）から読み出された画像データが回転画像記憶領域の座標（Ｘ３、Ｙ３）に、原画記憶領域の座標（Ｘ３、Ｙ３）から読み出された画像データが回転画像記憶領域の座標（Ｘ３、Ｙ２）に、原画記憶領域の座標（Ｘ４、Ｙ３）から読み出された画像データが回転画像記憶領域の座標（Ｘ３、Ｙ１）に、順次書き込まれる。スレッド３を受け取った第３ＣＰＵ１２及びスレッド４を受け取った第４ＣＰＵ１３の動作も上記と同様である。
【００９３】
次に、アドレスとして書き込みアドレスのみがスレッドに保有されている場合の動作を図７（Ｃ）を参照しながら説明する。この場合、回転画像記憶領域のＹ４行処理用のスレッド１、Ｙ３行処理用のスレッド２、Ｙ２行処理用のスレッド３及びＹ１行処理用のスレッド４といった４個のスレッドが生成される。
【００９４】
そして、スレッド１に保有される書き込みドレスは回転画像記憶領域の座標（Ｘ１、Ｙ４）のアドレスであり、スレッド２に保有される書き込みアドレスは回転画像記憶領域の座標（Ｘ１、Ｙ３）のアドレスであり、スレッド３に保有される書き込みアドレスは回転画像記憶領域の座標（Ｘ１、Ｙ２）のアドレスであり、スレッド４に保有される書き込みアドレスは回転画像記憶領域の座標（Ｘ１、Ｙ１）のアドレスである。
【００９５】
今、以上のようにして生成されたスレッド１〜４が、上記と同様に、ＯＳによって第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３の何れかに割り当てられたと仮定する。
【００９６】
スレッド１を受け取った第１ＣＰＵ１０は、該スレッド１に記述された手順で処理を実行する。ここでは、先ず読み出しアドレスが算出される。即ち、メモリ１４の回転画像記憶領域の座標（Ｘ１、Ｙ４）を９０度左回転させた場合の座標は座標（Ｘ１、Ｙ１）であることが算出され、原画記憶領域の座標（Ｘ１、Ｙ１）のアドレスが読み出しアドレスとして算出される。次いで、メモリ１４の原画記憶領域の、算出された読み出しアドレスで指定された位置、即ち座標（Ｘ１、Ｙ１）から画像データＢ１が読み出され、回転画像記憶領域の書き込みアドレスで指定された位置、即ち座標（Ｘ１、Ｙ４）に書き込まれる。以下同様にして、原画記憶領域の座標（Ｘ１、Ｙ２）から読み出された画像データＢ２が回転画像記憶領域の座標（Ｘ２、Ｙ４）に、原画記憶領域の座標（Ｘ１、Ｙ３）から読み出された画像データＢ３が回転画像記憶領域の座標（Ｘ３、Ｙ４）に、原画記憶領域の座標（Ｘ１、Ｙ４）から読み出された画像データＢ４が回転画像記憶領域の座標（Ｘ４、Ｙ４）に、順次書き込まれる。
【００９７】
また、スレッド２を受け取った第２ＣＰＵ１１は、該スレッド２に記述された手順で処理を実行する。ここでは、先ず読み出しアドレスが算出される。即ち、メモリ１４の回転画像記憶領域の座標（Ｘ１、Ｙ３）を９０度左回転させた場合の座標は座標（Ｘ２、Ｙ１）であることが算出され、原画記憶領域の座標（Ｘ２、Ｙ１）のアドレスが読み出しアドレスとして算出される。次いで、メモリ１４の原画記憶領域の、算出された読み出しアドレスで指定された位置、即ち座標（Ｘ２、Ｙ１）から画像データが読み出され、回転画像記憶領域の書き込みアドレスで指定された位置、即ち座標（Ｘ１、Ｙ３）に書き込まれる。以下同様にして、原画記憶領域の座標（Ｘ２、Ｙ２）から読み出された画像データが回転画像記憶領域の座標（Ｘ２、Ｙ３）に、原画記憶領域の座標（Ｘ２、Ｙ３）から読み出された画像データが回転画像記憶領域の座標（Ｘ３、Ｙ３）に、原画記憶領域の座標（Ｘ２、Ｙ４）から読み出された画像データが回転画像記憶領域の座標（Ｘ４、Ｙ３）に、順次書き込まれる。スレッド３を受け取った第３ＣＰＵ１２及びスレッド４を受け取った第４ＣＰＵ１３の動作も上記と同様である。
【００９８】
以上のように、この実施の形態４によれば、画像データの全体を参照する必要がある処理であっても、複数のＣＰＵ（スレッド）で並行して処理を行うことができるので、処理の高速化を図ることができる。また、上述した第３先行技術のような、画像全体を参照する処理のための統合処理部を別途設ける必要がないので外観検査装置の構成を簡単且つ安価に構成できる。
【００９９】
本発明に係る外観検査装置では、以上説明した実施の形態１〜３の処理が連続して実行される。この外観検査装置の全体的な処理の流れを図８に示す。
【０１００】
外観検査では、先ず、使用されるＣＰＵの数が決定される（ステップＳ１０）。このＣＰＵの数は、予め決められた固定値を用いるように構成してもよいし、ユーザが任意の値を入力するように構成してもよいし、プログラムによって当該外観検査装置に搭載されているＣＰＵの数を自動的に取得するように構成してもよい。
【０１０１】
次いで、ハードディスク装置１５から検査データが読み込まれる（ステップＳ１１）。次いで、カメラ１９から画像データが取り込まれる（ステップＳ１２）。そして、上記検査データと画像データとに基づいてボイド検査用のスレッドが生成される（ステップＳ１３）。即ち、実施の形態１及び２で説明したように、ボイド検査を実行するための１３個のスレッドが生成される。ここで生成されたスレッドは、ＯＳの制御の下に、第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３に送られる。これにより、ボイド検査が実行される。
【０１０２】
次いで、上記検査データと画像データとに基づいてリード間異物検査用のスレッドが生成される（ステップＳ１４）。即ち、実施の形態３で説明したように、リード間異物検査を実行するための４個のスレッドが生成される。ここで生成されたスレッドは、ＯＳの制御の下に、第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３に送られる。これにより、リード間異物検査が実行される。
【０１０３】
次いで、上記検査データと画像データとに基づいてリード検査用のスレッドが生成される（ステップＳ１５）。即ち、実施の形態３で説明したように、リード検査を実行するための４００個のスレッドが生成される。ここで生成されたスレッドは、ＯＳの制御の下に、第１ＣＰＵ１０、第２ＣＰＵ１１、第３ＣＰＵ１２及び第４ＣＰＵ１３に送られる。これにより、リード検査が実行される。
【０１０４】
以上の処理が終了すると、ボイド検査、リード間異物検査及びリード検査の各結果が出力される（ステップＳ１６）。その後、シーケンスはステップＳ１２に戻り、次のＩＣに対する外観検査が実行される。
【０１０５】
以上説明したように、実施の形態１〜４に係る外観検査装置は、画像データを記憶するメモリとして唯一のメモリを備えており、全てのＣＰＵがこのメモリにアクセスするように構成されている。この構成により、従来のように複数のＣＰＵの各々に対応して設けられた複数のメモリに、画像データを分割して格納する必要がない。その結果、画像データを分割する処理が不要になるので、処理速度が向上する。また、複数のメモリを設ける必要がないので、外観検査装置を簡単且つ安価に構成できる。
【０１０６】
また、この外観検査装置では、各ＣＰＵは、ＯＳにより割り当てられたスレッドを処理するだけで全体の処理が完了するので、従来の技術の欄で説明したような、処理分配部、マスタＣＰＵ、統合管理部といったシステム全体を管理するための構成要素は不要である。その結果、その構成要素が動作するための時間も不要になるので外観検査装置の高速化が可能であり、また、外観検査装置を簡単且つ安価に構成できる。
【０１０７】
【発明の効果】
以上詳述したように、本発明によれば、高速に画像を処理できる外観検査装置及び外観検査方法を提供できる。
【図面の簡単な説明】
【図１】本発明の実施の形態１〜４に係る外観検査装置の概略構成を示すブロック図である。
【図２】本発明の実施の形態１及び２に係る外観検査装置において、メモリに格納されるＩＣの画像データのイメージを示す図である。
【図３】本発明の実施の形態１に係る外観検査装置において、ボイド検査用に生成されるスレッドの一例を示す図である。
【図４】本発明の実施の形態１に係る外観検査装置におけるボイド検査の動作を説明するための図である。
【図５】本発明の実施の形態２に係る外観検査装置において、ボイド検査用に生成されるスレッドの一例を示す図である。
【図６】本発明の実施の形態３に係る外観検査装置において、メモリに格納されるＩＣの画像データのイメージを示す図である。
【図７】本発明の実施の形態４に係る外観検査装置において、回転処理の動作を説明するための図である。
【図８】本発明の実施の形態１〜３に係る外観検査装置にける全体的な処理の流れを示すフローチャートである。
【符号の説明】
１０  第１ＣＰＵ
１０ａ、１０ｂ、１０ｃ、１０ｄ  メモリ
１１  第２ＣＰＵ
１２  第３ＣＰＵ
１３  第４ＣＰＵ
１４  メモリ
１５  ハードディスク装置
１６  表示部
１７  ディスプレイ装置
１８  データ入力部
１９  カメラ
２０  システムバス
【図１】
0004693074.tif 000002
【図２】
0004693074.tif 000003
【図３】
0004693074.tif 000004
【図４】
0004693074.tif 000005
【図５】
0004693074.tif 000006
【図６】
0004693074.tif 000007
【図７】
0004693074.tif 000008
【図８】
0004693074.tif 000009