(57)【特許請求の範囲】
【請求項１】
半導体素子と内面がメッキされた穴が形成されている放熱基板の一面とを接合してなる半導体装置の接合領域を、前記一面に向けてＸ線を照射して撮影してなる多値画像を用いて、前記接合領域に存在する気泡の前記接合領域に対する割合を演算する気泡率演算方法において、
前記多値画像に含まれている前記穴のメッキ部分、及び、該メッキ部分を除く前記接合領域を、異なる閾値で２値化して２値画像を生成し、
生成した２値画像に基づいて、前記接合領域に位置する接合気泡の有無を検出し、
検出した接合気泡の画素数の前記接合領域の画素数に対する割合を、接合領域全体の気泡率として算出することを特徴とする気泡率演算方法。
【請求項２】
半導体素子と内面がメッキされた穴が形成されている放熱基板の一面とを接合してなる半導体装置の接合領域を、前記一面に向けてＸ線を照射して撮影してなる多値画像を用いて、前記接合領域に存在する気泡の前記接合領域に対する割合を演算する気泡率演算装置において、
前記多値画像に含まれている前記穴のメッキ部分、及び、該メッキ部分を除く前記接合領域を、異なる閾値で２値化して２値画像を生成する異閾値２値化手段と、
該異閾値２値化手段が生成した２値画像に基づいて、前記接合領域に位置する接合気泡の有無を検出する接合気泡検出手段と、
該接合気泡検出手段が検出した接合気泡の画素数の前記接合領域の画素数に対する割合を、接合領域全体の気泡率として算出する接合気泡率算出手段と
を備えることを特徴とする気泡率演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、放熱基板と半導体素子とを接合してなる半導体装置の接合領域の気泡率を算出する気泡率演算方法及び気泡率演算装置に関する。
【背景技術】
【０００２】
例えば電子部品として用いられる半導体素子は、放熱経路を確保するために、熱伝導率が高い銅製又はアルミ製等の放熱基板に接合される。このとき、例えば矩形状の半導体素子の一面と放熱基板の一面とは、半田又は接着剤等の接合材を介して接合されるため、接合材中に気泡が混入することがある。
半導体素子と放熱基板との間に多量の気泡（ボイド）が介在している場合、半導体素子から放熱基板への熱伝導性が低下して放熱が阻害される。この結果、半導体素子が自己発熱による過度の高温に曝されて、半導体素子が劣化したり、破壊されたりする虞がある。
【０００３】
従って、半導体素子及び放熱基板を備える半導体装置を製造する場合に、例えば製造工程の最終段階で、半導体素子と放熱基板との接合領域の面積に対する気泡の面積の割合（即ち気泡率）を求め、求めた気泡率が許容値を越える半導体装置を排除する必要がある。
【０００４】
従来の気泡率演算装置は、気泡率を求めるために、放熱基板に直交するようＸ線を照射して半導体装置を撮影し、得られたＸ線画像の濃淡に基づいて気泡の有無を検出するよう構成されている。半導体装置において、気泡が存在する領域は、存在しない領域（即ち接合材が存在する領域）よりもＸ線の透過率が高いため、接合領域の内、Ｘ線画像に淡く映っている部分は気泡と看做すことができる。従って、多値のＸ線画像を適宜の１種類の閾値で２値化し、気泡に相当する画素の画素数を、接合領域全体の画素数で除算することによって、容易に気泡率を求めることができる。
【０００５】
ところが、材質及び厚さ等が一定ではない放熱基板、例えば導電層及び絶縁層を積層してなる積層体に、スルーホール、ビアホール等、内面が金属メッキされている穴が形成されてなる放熱基板を半導体装置が備える場合、放熱基板自身の各部位のＸ線透過率が、各部位の材質及び厚さ等に応じて変化するため、多値のＸ線画像を２値化する際の閾値を設定することが困難である。
【０００６】
従来の基板検査方法では、プリント基板の両面に電子部品が実装されている領域及びスルーホールが開口している領域等、Ｘ線透過画像の解析を困難にし、検査結果に悪影響を及ぼす領域が、検査除外領域としてマスキングされる（特許文献１参照）。
また、従来の接合検査方法では、検査対象の厚さとＸ線透視画像の濃淡との関係を示す較正情報に基づいて、厚さの影響を除去すべくＸ線透視画像が補正される（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−２２６１２７号公報
【特許文献２】特開２０００−３５２５５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載の基板検査方法では、検査除外領域以外の領域について気泡の有無が正確に検出されたとしても、検査除外領域については何も考慮されていない。一方、特許文献２に記載の接合検査方法では、放熱基板の厚さのみを考慮し、しかも、検査対象の厚さとＸ線透視画像の濃淡との関係を近似的に示す対数曲線に基づいてＸ線透視画像を補正しているため、正確な補正が行なわれない虞がある。
以上の結果、従来の手法では、検出された気泡の画素数を、接合領域全体の画素数で除算することによって、不正確な気泡率が算出されてしまうという問題がある。
【０００９】
本発明は斯かる事情に鑑みてなされたものであり、その主たる目的は、半導体素子と放熱基板との接合領域に存在する気泡の有無を正確に検出して、接合領域全体の正確な気泡率を求めることができる気泡率演算方法及び気泡率演算装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明に係る気泡率演算方法は、半導体素子と内面がメッキされた穴が形成されている放熱基板の一面とを接合してなる半導体装置の接合領域を、前記一面に向けてＸ線を照射して撮影してなる多値画像を用いて、前記接合領域に存在する気泡の前記接合領域に対する割合を演算する気泡率演算方法において、前記多値画像に含まれている前記穴のメッキ部分、及び、該メッキ部分を除く前記接合領域を、異なる閾値で２値化して２値画像を生成し、生成した２値画像に基づいて、前記接合領域に位置する接合気泡の有無を検出し、検出した接合気泡の画素数の前記接合領域の画素数に対する割合を、接合領域全体の気泡率として算出することを特徴とする。
【００１１】
本発明に係る気泡率演算装置は、半導体素子と内面がメッキされた穴が形成されている放熱基板の一面とを接合してなる半導体装置の接合領域を、前記一面に向けてＸ線を照射して撮影してなる多値画像を用いて、前記接合領域に存在する気泡の前記接合領域に対する割合を演算する気泡率演算装置において、前記多値画像に含まれている前記穴のメッキ部分、及び、該メッキ部分を除く前記接合領域を、異なる閾値で２値化して２値画像を生成する異閾値２値化手段と、該異閾値２値化手段が生成した２値画像に基づいて、前記接合領域に位置する接合気泡の有無を検出する接合気泡検出手段と、該接合気泡検出手段が検出した接合気泡の画素数の前記接合領域の画素数に対する割合を、接合領域全体の気泡率として算出する接合気泡率算出手段とを備えることを特徴とする。
【発明の効果】
【００１２】
本発明の気泡率演算方法及び本発明の気泡率演算装置による場合、放熱基板を、内面がメッキされた穴の内側及び外側と、メッキ部分とに分けて考慮することができる。このとき、穴の内側及び外側（即ちメッキ部分を除く接合領域）に位置する気泡の有無と、メッキ部分に位置する気泡の有無とを、複数種類の閾値を用いた２値化によって容易且つ正確に検出することができる。つまり、半導体素子と放熱基板との接合領域全体に存在する気泡の有無を正確に検出して、接合領域全体の正確な気泡率を求めることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１に係る気泡率演算装置の外観を示す斜視図である。
【図２】本発明の実施の形態１に係る気泡率演算装置の要部構成を示すブロック図である。
【図３】本発明の実施の形態１に係る気泡率演算装置が気泡の有無を検出すべき半導体装置の模式的な構成を示す縦断面図である。
【図４】本発明の実施の形態１に係る気泡率演算装置で実行される気泡演算処理の手順を示すフローチャートである。
【図５】本発明の実施の形態１に係る気泡率演算装置で実行される気泡演算処理の手順を示すフローチャートである。
【図６】本発明の実施の形態１に係る気泡率演算装置で撮影されたＸ線画像の一例を示す模式図である。
【図７】本発明の実施の形態１に係る気泡率演算装置で求められる領域２値画像の一例を示す模式図である。
【図８】本発明の実施の形態１に係る気泡率演算装置で用いられるマスク画像の一例を示す模式図である。
【図９】本発明の実施の形態１に係る気泡率演算装置で求められる減算画像の一例を示す模式図である。
【図１０】本発明の実施の形態１に係る気泡率演算装置で求められるマスク補正画像の一例を示す模式図である。
【図１１】本発明の実施の形態１に係る気泡率演算装置で求められるマスキング画像の一例を示す模式図である。
【図１２】図１１に示すマスキング画像を２値化して求められる２値画像の一例を示す模式図である。
【図１３】本発明の実施の形態１に係る気泡率演算装置が検出すべき気泡の内、ビアホールの外側又は内側からメッキ部分まで亘っている気泡の一例を示す模式図である。
【図１４】本発明の実施の形態１に係る気泡率演算装置が検出すべき気泡の内、ビアホールの外側から内側へ亘っている気泡の一例を示す模式図である。
【図１５】本発明の実施の形態１に係る気泡率演算装置で生成される２値画像の一例を示す模式図である。
【図１６】本発明の実施の形態１に係る気泡率演算装置で生成される２値画像の他の一例を示す模式図である。
【図１７】本発明の実施の形態１に係る気泡率演算装置で実行される部分気泡検出処理手順のサブルーチンを示すフローチャートである。
【図１８】本発明の実施の形態１に係る気泡率演算装置で実行される部分気泡検出処理手順のサブルーチンを示すフローチャートである。
【図１９】図１５に示す２値画像における２本の法線で囲まれる領域を示す模式図である。
【図２０】図１５に示す２値画像における一の法線及び接線で囲まれる領域を示す模式図である。
【図２１】図１５に示す２値画像における他の法線及び接線で囲まれる領域を示す模式図である。
【図２２】図１５に示す２値画像における２本の接線で囲まれる領域を示す模式図である。
【図２３】図１６に示す２値画像における４本の直線を示す模式図である。
【図２４】図１６に示す２値画像における２本の直線で囲まれる領域を示す模式図である。
【図２５】本発明の実施の形態２に係る気泡率演算装置で実行される気泡演算処理の手順を示すフローチャートである。
【図２６】本発明の実施の形態３に係る気泡率演算装置で実行される気泡演算処理の手順を示すフローチャートである。
【図２７】本発明の実施の形態３に係る気泡率演算装置で求められる２値画像の一例を示す模式図である。
【図２８】本発明の実施の形態４に係る気泡率演算装置で実行される気泡演算処理の手順を示すフローチャートである。
【図２９】本発明の実施の形態４に係る気泡率演算装置で撮影されたＸ線画像の一例を示す模式図である。
【図３０】本発明の実施の形態４に係る気泡率演算装置で用いられる係数画像の一例を示す模式図である。
【図３１】本発明の実施の形態４に係る気泡率演算装置で生成される補正後領域画像の一例を示す模式図である。
【図３２】本発明の実施の形態４に係る気泡率演算装置が気泡の有無を検出すべき半導体装置の模式的な構成を示す縦断面図である。
【図３３】本発明の実施の形態５に係る気泡率演算装置が気泡の有無を検出すべき半導体装置の模式的な構成を示す縦断面図である。
【発明を実施するための形態】
【００１４】
以下、本発明を、その実施の形態を示す図面に基づいて詳述する。
【００１５】
実施の形態  １．
図１は、本発明の実施の形態１に係る気泡率演算装置の外観を示す斜視図である。
図中３は気泡率演算装置であり、気泡率演算装置３は、パーソナルコンピュータを用いてなる演算装置１と、演算装置１に制御されて撮影を開始し、撮影したＸ線画像を演算装置１へ出力する撮影装置２とを備える。
図２は、気泡率演算装置３の要部構成を示すブロック図である。図３は、気泡率演算装置３が気泡の有無を検出すべき半導体装置の模式的な構成を示す縦断面図である。
図中４は半導体装置であり、半導体装置４は、半導体素子４１と放熱基板４２とが接合されてなる。
【００１６】
まず、半導体装置４の構成を説明する。
半導体素子４１は矩形板状であり、例えば図示しない電動パワーステアリングシステムに組み込まれて、モータの駆動を制御する機能を有する。
放熱基板４２は、作動中の半導体素子４１が発した熱を放熱する。このために、放熱基板４２は、ヒートシンクとして機能する金属基板４２４と、半導体素子４１から金属基板４２４へ熱を伝達する機能、及び、半導体素子４１が実装される回路基板としての機能を有する積層体４２３とを備える。
【００１７】
積層体４２３は矩形板状であり、導電層４２１と絶縁層４２２とを熱圧着によって交互に積層してなる。導電層４２１は銅製の回路パターンである。絶縁層４２２は、ガラス繊維とエポキシ樹脂との合成物（いわゆるプリプレグ）を用いてなり、１Ｗ／ｍ・Ｋ以上の高い熱伝導性を有する。
また、積層体４２３は、一面（図中上面）側が導電層４２１、他面（図中下面）側が絶縁層４２２であって、積層体４２３の上面に、図示しないニッケルメッキ層及び金メッキ層を介して、半導体素子４１の一面（図中下面）が半田付けされる。図中４３は、半導体素子４１と積層体４２３の一面（即ち放熱基板４２の一面）とを接合している半田層であり、半田層４３には、半田付けの際に気泡が混入することがある。本実施の形態の気泡率演算方法は、半田層４３に混入している気泡の有無を検出し、検出した気泡の気泡率を演算するものである。
【００１８】
積層体４２３の下面には、アルミニウムを用いてなる矩形状の金属基板４２４が熱圧着されている。
また、積層体４２３には、積層方向（図中上下方向）に、図中最下層の導電層４２１から最上層の絶縁層４２２までを貫通することによって、ビアホール（穴）４４，４４，…が形成されている。各ビアホール４４には、内面に銅メッキが施されてからプリプレグが充填されることによって、メッキ部分４５及び樹脂部分４６が形成されている。メッキ部分４５は、最上層の絶縁層４２２から最下層の導電層４２１からへの熱伝導性を向上させている。また、メッキ部分４５は、導電層４２１，４２１，…同士を電気的に接続している。なお、導電層４２１，４２１，…同士を電気的に接続しないメッキ部分４５が設けられていてもよい。
【００１９】
積層体４２３にビアホール４４，４４，…が形成されているため、積層体４２３の層方向（図中左右方向）の各位置について、積層方向の材質及び及び各材質を有する部分の厚さは一定ではない。具体的には、銅製の部分の厚さ（上下方向の矢符で図示。以下、銅厚という）に関し、ビアホール４４の中央部４２ａは、積層体４２３を積層方向に貫いて樹脂部分４６が形成されているため、銅厚が非常に薄い。ところが、ビアホール４４の内周部４２ｂは、積層体４２３を積層方向に貫いてメッキ部分４５が形成されているため、銅厚が非常に厚い。また、ビアホール４４，４４，…の外部４２ｃは、絶縁層４２２，４２２，…を介在して導電層４２１，４２１，…が積層されているため、銅厚がビアホール４４の中央部４２ａ及び内周部４２ｂ夫々に係る厚さの中間程度である。
【００２０】
この結果、放熱基板４１の一面に直交する方向、即ち積層体４２３の積層方向にＸ線を照射した場合、ビアホール４４の中央部４２ａ、内周部４２ｂ、及び外部４２ｃの夫々におけるＸ線吸収率（又はＸ線透過率）は異なる。
【００２１】
次に、気泡率演算装置３の構成について説明する。
図１及び図２に示すように、演算装置１は、ＣＰＵ１０、ＲＯＭ１１、ＲＡＭ１２、表示部１３、操作部１４、ＨＤＤ（ハードディスク）１５、外部記憶部１６及びＩ／Ｆ部１７を備え、これらの装置各部はバス、信号線等を介して適宜に接続されている。
Ｉ／Ｆ部１７は、演算装置１と撮影装置２とを電気的に接続するためのインタフェースである。
外部記憶部１６は、例えばＣＤ−ＲＯＭドライブを用いてなり、可搬性を有する記録媒体（例えば本実施の形態のコンピュータプログラムが記録されているＣＤ−ＲＯＭ３０）からコンピュータプログラム及び／又はデータを読み込む。
【００２２】
ＨＤＤ１５は気泡率演算装置３の補助記憶部であり、ＨＤＤ１５に対して、各種のコンピュータプログラム及びデータが読み書きされる。更に詳細には、ＨＤＤ１５には、本実施の形態の気泡率演算方法を、コンピュータのハードウェア要素を用いてソフトウェア的に実現させるコンピュータプログラムが記憶されている。また、ＨＤＤ１５には、本実施の形態の気泡率演算方法を実行する場合に必要なデータとして、後述するマスク画像が記憶されている。
ＨＤＤ１５に対して読み書きされるコンピュータプログラム及びデータは、外部記憶部１６を用いて記録媒体から読み込んだものであってもよく、ＬＡＮを介して受信したものであってもよく、演算装置１で生成されたものであってもよい。
【００２３】
ＣＰＵ１０は、気泡率演算装置３の制御中枢であり、主記憶部であるＲＡＭ１２を作業領域として用い、ＲＯＭ１１並びにＨＤＤ１５に記憶されたコンピュータプログラム及びデータに従って装置各部を制御し、各種処理を実行する。例えばＣＰＵ１０は、Ｉ／Ｆ部１７を介して、撮影装置２の動作を制御するための制御信号を撮影装置２へ出力する。
表示部１３は、例えば液晶ディスプレイを用いてなり、ＣＰＵ１０に制御されて、気泡率演算装置３の作動状態を示すメッセージ、ユーザに対する各種の指示を示すメッセージ等を表示する。操作部１４は、例えばキーボード及びマウスを用いてなる。
【００２４】
撮影装置２は、装置内部に対して半導体装置４を出し入れするための開口部２ａを筐体側面に有する。
撮影装置２は、Ｘ線源２１、Ｘ線コントローラ２２、カメラ２３、及び画像処理部２４を備える。Ｘ線源２１は、演算装置１から制御信号が入力されたＸ線コントローラ２２に動作制御されて、撮影装置２の内部に載置された半導体装置４に対し、半導体素子４１側から放熱基板４２に対して垂直にＸ線２１ａを照射する。
【００２５】
カメラ２３及び画像処理部２４も、夫々演算装置１から制御信号が入力された場合に作動する。カメラ２３は、半導体装置４を透過したＸ線２１ａを受光して、受光結果であるアナログ信号を画像処理部２４へ出力する。画像処理部２４は、カメラ２３から入力されたアナログ信号に、Ａ／Ｄ変換、歪み補正等の画像処理を施し、画像処理の結果として、多値のＸ線画像を演算装置１へ出力する。
【００２６】
撮影装置２から演算装置１に入力されるＸ線画像には、半導体装置４の半導体素子４１と放熱基板４２の一面とが接合されている接合領域の状態を示す画像（以下、領域画像という）が含まれており、半田層４３に気泡が混入している場合、領域画像には、接合領域に存在する気泡を示す画像が含まれる。
【００２７】
気泡率演算装置３のユーザは、開口部２ａを通して撮影装置２の内部に半導体装置４を載置し、表示部１３を視認しながら操作部１４を操作することによってＸ線撮影を開始させる。撮影結果であるＸ線画像は表示部１３に表示され、また、気泡演算結果である気泡率も表示部１３に表示される。ユーザは表示部１３に表示された気泡率を参照して、半導体装置４の合否を判断する。
【００２８】
なお、Ｘ線画像は、気泡率演算装置３とは別体のＸ線撮影装置で撮影されたものが演算装置１に入力される構成でもよい。この場合、気泡率演算装置３は撮影装置２を備えている必要はない。また、演算装置１が有する撮影装置２の動作制御機能、及び気泡の有無を検出して気泡率を算出する気泡率演算機能等を、撮影装置２が有している構成でもよい。この場合、気泡率演算装置３は演算装置１を備えている必要はない。
【００２９】
図４及び図５は、気泡率演算装置３で実行される気泡演算処理の手順を示すフローチャートである。ＣＰＵ１０は、操作部１４を用いたユーザの操作に従って、気泡演算処理の実行を開始する。
まずＣＰＵ１０は、Ｘ線撮影を開始させる制御信号を撮影装置２へ出力することによって、半導体装置４をＸ線撮影する（Ｓ１１）。
次いで、ＣＰＵ１０は、撮影装置２から入力されたＸ線画像をＨＤＤ１５に記憶させる（Ｓ１２）。
以下では、Ｘ線画像の主走査方向をｘ軸の順方向、副走査方向をｙ軸の順方向とする。
【００３０】
図６は、気泡率演算装置３で撮影されたＸ線画像の一例を示す模式図である。
図中６０は領域画像であり、領域画像６０は、撮影装置２から演算装置１に入力されたＸ線画像６００に含まれている。Ｘ線画像６００の各画素は、“０．００”以上“１．００”以下の多値の画素値を有する。図中、縦９マス、横１２マス（１０８マス）の正方形夫々は、領域画像６０に含まれている個々の画素を示す。ここで、領域画像６０の外形状（即ち領域画像６０の周縁画素によって形成される形状）は、放熱基板４２の外形状（即ち放熱基板４２の周縁部の形状）を示す。
【００３１】
右上がりの細かいハッチングで示した画素群６０１，６０２夫々は、例えば画素値“０．２０”を有し、右上がりの粗いハッチングで示した画素群６０３，６０４夫々は画素値“０．６０”を有し、右下がりの粗いハッチングで示した画素群６０５は画素値“０．７０”を有し、白抜きで示した画素群６０６，６０７，６０８夫々は画素値“０．９０”を有し、右下がりの細かいハッチングで示した画素群６０９は画素値“０．８０”を有する。また、Ｘ線画像６００の領域画像６０以外の画素は、画素値“１．００”を有する。
【００３２】
つまり、例えば所定の閾値（例えば“０．９５”）と各画素値とを比較し、閾値未満の画素値を有する画素を領域画像６０の画素とすることによって、領域画像６０と領域画像６０以外とを区別し、この結果、放熱基板４２の外形状を得ることができる。なお、例えば後述するパターン図データを用いてＸ線画像中の領域画像を特定する構成でもよい。
ただし、領域画像６０については、以下の説明を簡単にするために、画素値及び画素値の配置が極端な例が示されている。
【００３３】
図４に示すＳ１２の処理終了後、ＣＰＵ１０は、ＨＤＤ１５に記憶してあるＸ線画像のコピーを読み出してＲＡＭ１２に展開し、Ｘ線画像中の領域画像を特定する（Ｓ１３）。このとき、Ｘ線画像中の領域画像以外をマスキングすることが望ましい。
【００３４】
Ｓ１３の処理終了後、ＣＰＵ１０は、Ｓ１３で特定された領域画像を２値化する（Ｓ１４）。
Ｓ１４における２値化は、Ｓ１３で特定された領域画像全体を所定の閾値（例えば“０．３０”）で単純に２値化するものであり、閾値以上の画素値を有する画素を画素値“１”とし、閾値未満の画素値を有する画素を画素値“０”とする。Ｓ１４の処理で２値化が施された領域画像（以下、領域２値画像という）を直接的に用いて気泡の有無を検出することはない。
【００３５】
図７は、気泡率演算装置３で求められる領域２値画像の一例を示す模式図である。
図中６１は領域２値画像であり、領域２値画像６１は、図６に示す領域画像６０を、閾値“０．３０”で２値化したものである。図中、縦９マス、横１２マス（１０８マス）の正方形夫々は、領域画像６０に含まれている個々の画素であり、各画素は、画素値“０”又は画素値“１”を有する。
【００３６】
ハッチングで示した画素群６１１，６１２夫々に含まれる各画素は、画素値“０”を有し、画素群６１１，６１２以外の画素群に含まれる各画素は、画素値“１”を有する。つまり、画素群６１１，６１２は、領域画像６０において閾値“０．３０”未満の画素値を有している画素群６０１，６０２に対応する。また、画素群６１１，６１２以外の画素群は、領域画像６０において閾値“０．３０”以上の画素値を有している画素群６０３〜６０９に対応する。
【００３７】
次いで、ＣＰＵ１０は、ＨＤＤ１５からマスク画像を読み出して（Ｓ１５）、ＲＡＭ１２に展開する。マスク画像は２値画像であり、各ビアホール４４の半径及びメッキ部分４５の厚さ（以下、メッキ厚という）、並びに放熱基板４２の寸法等夫々の値を有するビア設計図データと、放熱基板４２にｘ−ｙ座標系を対応させた場合の放熱基板４２の周縁部の座標値及び各ビアホール４４の中心座標値等を有するパターン図データとを用いて生成されたものである。
本実施の形態においては、メッキ厚は数百μｍである。
【００３８】
図８は、気泡率演算装置３で用いられるマスク画像の一例を示す模式図である。
図中６２はマスク画像であり、マスク画像６２は、演算装置１のＨＤＤ１５に予め記憶されている。
図中、縦９マス、横１２マス（１０８マス）の正方形夫々は、マスク画像６２に含まれている個々の画素であり、各画素は、画素値“０”又は画素値“１”を有する。
ハッチングで示した画素群６２１，６２２夫々は、画素値“０”を有し、画素群６２１，６２２以外の画素は、画素値“１”を有する。
【００３９】
画素群６２１，６２２夫々は、画素値“０”を有する８個の画素であり、画素値“１”を有する１個の画素を囲繞してロ字状に配されている。画素群６２１，６２２夫々には、２個のビアホール４４，４４夫々の設計上の半径、メッキ厚、及び中心座標が反映されている。
【００４０】
例えば、画素群６２１に囲まれた領域の中心に位置する画素の座標（３，５）は、ビアホール４４の設計上の中心座標を示している。図８及び後述する図９〜図１２、図１５、図１６、図１９〜図２４、及び図２７に示す画素の内、内部に「・」が含まれている画素は、ビアホール４４，４４夫々の中心座標に対応する座標の画素（以下、中心画素という）を示している。
また、図８に示すように、中心画素から画素群６２１に含まれる画素の何れか１つまでの画素数は、ビアホール４４の設計上の半径（以下、ビア半径という）を示しており、具体的には画素数“１”である。更に、画素群６２１のビア半径方向の画素数は、設計上のメッキ厚を示しており、具体的には画素数“１”である。
【００４１】
更にまた、画素群６２１，６２２に囲まれた領域夫々の内部の画素値“１”の画素は、ビアホール４４，４４夫々の中央部４２ａ（即ち樹脂部分４６を含む積層に相当する部分）を示している。画素群６２１，６２２は、ビアホール４４，４４夫々の内周部４２ｂ（即ちメッキ部分４５に相当する部分）を示している。画素群６２１，６２２に囲まれた領域夫々の外部の画素値“１”の画素は、ビアホール４４，４４夫々の外部４２ｃを示している。
マスク画像６２の外形状は、放熱基板４２の外形状を示している。
【００４２】
マスク画像６２は、設計上の理想的な接合領域を示している。放熱基板４２が、ビア設計図及びパターン図に基づいて正確無比に製造された場合、半導体素子４１が接合されていない放熱基板４２をＸ線撮影してなる領域画像を２値化したものからマスク画像６２を減算すると、減算結果の画像に含まれている各画素の画素値は全て“０”になる。換言すれば、２枚の２値画像が完全に重なる。
従って、図６に示す領域画像６０において、図８に示すマスク画像６２における画素群６２１，６２２に相当する画素をマスキングすることによって、領域画像６０に含まれているメッキ部分４５，４５，…をマスキングすることができる。
【００４３】
しかしながら、実際の放熱基板４２には、積層体４２３の歪み、及びビアホール４４，４４，…の開口位置のズレ等が生じている。従って、撮影装置２で撮像された半導体装置４が実際に備えている放熱基板４２の状態に応じて、マスク画像６２を補正する必要がある。
【００４４】
図４に示すＳ１５の処理終了後、ＣＰＵ１０は、領域画像とマスク画像との相対位置を調整した上で、領域画像の各画素の画素値から、マスク画像の対応する画素の画素値を減算して（Ｓ１６）、後述する中心座標補正値を求め、マスク画像を補正する（Ｓ１７）。以下では、補正されたマスク画像をマスク補正画像という。
【００４５】
図７に示す領域２値画像６１、及び図８に示すマスク画像６２の場合、領域２値画像６１とマスク画像６２との相対位置を調整するために、ＣＰＵ１０は、まず、領域２値画像６１及びマスク画像６２夫々に含まれる放熱基板４２の外形状を基準に、領域２値画像６１に設定されるｘ−ｙ座標系の原点とマスク画像６２に設定されるｘ−ｙ座標系の原点とを一致させる。
【００４６】
次に、例えばマスク画像６２の画素群６２１に対応するビアホール４４を注目ビアホールとし、領域２値画像６１に対するマスク画像６２の相対位置を、ｘ軸方向に“ｘn ”及びｙ軸方向に“ｙn ”夫々ずらした状態で、領域２値画像６１からマスク画像６２を減算する。
ただし、注目ビアホールのビア半径に相当する画素数を“Ｎ”とすると、位置ズレ量（ｘn ，ｙn ）は、−Ｎ≦ｘn ，ｙn ≦Ｎの整数であり、ｘn ≠ｙn の場合もｘn ＝ｙn の場合もある。位置ズレ量（０，０）の場合、領域２値画像６１に対するマスク画像６２の相対位置は変更されず、領域２値画像６１とマスク画像６２との原点が一致した状態のままである。
【００４７】
ここで、位置ズレ量の最大値を注目ビアホールのビア半径までに制限する理由は、注目ビアホールの設計上の開口位置と実際の開口位置とが、大幅に異なることは考えられないからである。仮に、位置ズレ量の最大値を無駄に大きく設定した場合、演算時間が長くなるという問題が生じる。
【００４８】
領域２値画像６１から位置ズレ量（ｘn ，ｙn ）のマスク画像６２を減算してなる減算画像の各画素は、画素値“０”、画素値“１”又は画素値“−１”を有する。ＣＰＵ１０は、領域２値画像６１における注目ビアホールの中心画素を中心とする縦｛４Ｎ＋１｝画素、横｛４Ｎ＋１｝画素の範囲（即ち、注目ビアホールの中心画素から注目ビアホールの直径分の画素までの範囲）について、画素値“１”の画素の個数と画素値“−１”の画素の個数との合計数を求め、求めた合計数が最も小さい位置ズレ量（ｘn ，ｙn ）を、注目ビアホールの中心座標補正値とする。
【００４９】
図９は、気泡率演算装置３で用いられる減算画像の一例を示す模式図である。
図中６３は減算画像であり、減算画像６３は、図７に示す領域２値画像６１から位置ズレ量（０，０）のマスク画像６２（図８参照）を減算してなる。図中、右下がりの粗いハッチングで示した画素は画素値“０”を有し、白抜きで示した画素は画素値“１”を有し、右上がりの細かいハッチングで示した画素は画素値“−１”を有する。
【００５０】
位置ズレ量（０，０）の場合、マスク画像６２の画素群６２１に対応するビアホール４４（以下、左上のビアホール４４という）が注目ビアホールであるとき、座標（３，５）を中心とする５画素×５画素の範囲（以下、２５画素という）について、減算結果の合計数は“１１”である。
一方、マスク画像６２の画素群６２２に対応するビアホール４４（以下、右下のビアホール４４という）が注目ビアホールであるとき、座標（８，３）を中心とする２５画素について、減算結果の合計数は“５”である。
同様に、位置ズレ量（−１，１）の場合、左上のビアホール４４が注目ビアホールであるとき、座標（３，５）を中心とする２５画素について、減算結果の合計数は“１”である。
【００５１】
一方、右下のビアホール４４が注目ビアホールであるとき、座標（８，３）を中心とする２５画素について、減算結果の合計数は“１７”である。
位置ズレ量（０，１）の場合、左上のビアホール４４に係る減算結果の合計数は“９”である。一方、右下のビアホール４４に係る減算結果の合計数は“１１”である。
位置ズレ量（１，１）の場合、左上のビアホール４４に係る減算結果の合計数は“１１”である。一方、右下のビアホール４４に係る減算結果の合計数は“１７”である。
【００５２】
位置ズレ量（−１，０）の場合、左上のビアホール４４に係る減算結果の合計数は“７”である。一方、右下のビアホール４４に係る減算結果の合計数は“１３”である。
位置ズレ量（１，０）の場合、左上のビアホール４４に係る減算結果の合計数は“１１”である。一方、右下のビアホール４４に係る減算結果の合計数は“１１”である。
位置ズレ量（−１，−１）の場合、左上のビアホール４４に係る減算結果の合計数は“９”である。一方、右下のビアホール４４に係る減算結果の合計数は“１３”である。
【００５３】
位置ズレ量（０，−１）の場合、左上のビアホール４４に係る減算結果の合計数は“１１”である。一方、右下のビアホール４４に係る減算結果の合計数は“７”である。
位置ズレ量（１，−１）の場合、左上のビアホール４４に係る減算結果の合計数は“１３”である。一方、右下のビアホール４４に係る減算結果の合計数は“７”である。
以上の結果、ＣＰＵ１０は、左上のビアホール４４について、合計数が“１”である位置ズレ量（−１，１）を中心座標補正値（ｘr ，ｙr ）とし、右下のビアホール４４について、合計数が“５”である位置ズレ量（０，０）を中心座標補正値（ｘr ，ｙr ）とする。
【００５４】
複数の位置ズレ量について、最小の合計数が同数である場合、ＣＰＵ１０は、複数の位置ズレ量の中から中心座標補正値をランダムに選んでもよく、例えば他のビアホール４４の中心座標補正値を参照して適宜の中心座標補正値を選んでもよい。
【００５５】
図１０は、気泡率演算装置３で求められるマスク補正画像の一例を示す模式図である。
図中６４はマスク補正画像であり、マスク補正画像６４は、各ビアホール４４の中心座標補正値（ｘr ，ｙr ）に基づいて、図８に示すマスク画像６２を補正してなる。
図中、縦９マス、横１２マス（１０８マス）の正方形夫々は、マスク補正画像６４に含まれている個々の画素であり、各画素は、“０”及び“１”の何れかの値を有する画素値を有する。
ハッチングで示した画素群６４１，６４２夫々は、画素値“０”を有し、画素群６４１，６４２以外の画素は、画素値“１”を有する。
【００５６】
画素群６４１は、マスク画像６２において、左上のビアホール４４に対応する画素群６２１を、中心座標補正値（−１，１）に基づいて補正したものであり、画素群６２１の中心画素が座標（３，５）であるため、マスク補正画像６４における画素群６４１の中心画素は座標（２，６）である。換言すれば、図中白抜矢符で示したように、中心画素を座標（３，５）から座標（２，６）へ移動させたかたちとなる。
画素群６４２は、マスク画像６２において、右下のビアホール４４に対応する画素群６２２を、中心座標補正値（０，０）に基づいて補正したものであり、画素群６２１の中心画素が座標（８，３）であるため、マスク補正画像６４における画素群６４２の中心画素も座標（８，３）である。
【００５７】
以上のように、ＣＰＵ１０は、領域画像を用いて、マスク画像を補正する。ところで、本実施の形態における気泡率演算装置３では、半導体素子４１が接合された放熱基板４２をＸ線撮影してなる領域画像が用いられているが、これに限らず、半導体素子４１が接合されていない放熱基板４２をＸ線撮影してなる領域画像が用いられてもよい。この場合、半導体装置４１、半田層４３、及び半田層４３に混入した気泡等の影響を受けないため、より正確にマスク画像を補正することができる。
【００５８】
図４に示すＳ１７の処理終了後、ＣＰＵ１０は、領域画像において、マスク補正画像の画素値“０”を有する画素群に相当する画素をマスキングすることによって、領域画像に含まれているメッキ部分４５，４５，…をマスキングする（Ｓ１８）。以下では、マスク補正画像に基づいてマスキングされた領域画像をマスキング画像という。
【００５９】
図１１は、気泡率演算装置３で求められるマスキング画像の一例を示す模式図である。
図中６５はマスキング画像であり、マスキング画像６５は、図１０に示すマスク補正画像６４に基づいて、図６に示す領域画像６０をマスキングしてなる。
図中、交差するハッチングで示した画素群６５１，６５２夫々は、マスキングされた画素を有し、右上がりの細かいハッチングで示した画素群６５０は画素値“０．２０”を有し、右上がりの粗いハッチングで示した画素群６５３，６５４夫々は画素値“０．６０”を有し、右下がりの粗いハッチングで示した画素群６５５は画素値“０．７０”を有し、白抜きで示した画素群６５６，６５７，６５８夫々は画素値“０．９０”をし、右下がりの細かいハッチングで示した画素群６５９は画素値“０．８０”を有する。
【００６０】
マスキングされた画素群６５１は、左上のビアホール４４のメッキ部分４５に対応し、画素群６５２は、右下のビアホール４４のメッキ部分４５に対応する。このように、マスキングされた画素（以下、マスク画素という）夫々は、何れかひとつのビアホール４４のメッキ部分４５に対応する。このため、画素群６５１に囲まれた領域は左上のビアホール４４の内側の領域に対応し、画素群６５２に囲まれた領域は右下のビアホール４４の内側の領域に対応し、画素群６５１，６５２を除き、画素群６５１，６５２の何れにも囲まれていない領域は、ビアホール４４，４４の外側の領域に対応する。
【００６１】
図４に示すＳ１８の処理終了後、ＣＰＵ１０は、マスキング画像を２値化して２値画像を生成する（Ｓ１９）。
Ｓ１９の処理で実行される２値化は、例えば図１１に示すマスキング画像６５を、マスキングされている画素群６５１，６５２を除いて、所定の閾値で２値化するものであり、閾値以上の画素値を有する画素を画素値“１”とし、閾値未満の画素値を有する画素を画素値“０”とする。
【００６２】
ただし、画素群６５１，６５２夫々に囲まれている画素（具体的には座標（２，６），（８，３）の画素）を２値化する閾値Ｉと、この画素以外の画素を２値化する閾値Ｏとは、異なるものが用いられる。つまり、ビアホール４４の内側の領域と外側の領域とで異なる閾値が用いられる。何故ならば、図３に示すように、ビアホール４４の中央部４２ａにおいては銅厚が薄く、外部４２ｃにおいては銅厚が厚いからである。このため、ビアホール４４の内側の領域（即ち透過率が高い領域）に適用される閾値Ｉは、ビアホール４４の外側の領域（即ち透過率が低い領域）に適用される閾値Ｏよりも大きい値に設定される。つまり、閾値Ｏ＜閾値Ｉである。
【００６３】
なお、閾値Ｉ，Ｏが同値であってもよい。ただし、１種類の閾値で２値化するためには、ビアホール４４の内側及び外側夫々のＸ線透過率の差異を、マスキング画像６５上で補正してから２値化する必要がある。
また、Ｓ１４の処理で用いられる閾値とＳ１９の処理で用いられる閾値とは、同値であっても異なっていてもよい。
【００６４】
図１２は、図１１に示すマスキング画像６５を２値化して求められる２値画像の一例を示す模式図である。
図中６８は２値画像であり、２値画像６８は、図１１に示すマスキング画像６５に基づいて、画素群６５１，６５２夫々に囲まれている画素に対して閾値Ｉ＝“０．８５”を適用し、この画素以外の画素に対して閾値Ｏ＝“０．７５”を適用して２値化してなる。
図１２中、交差するハッチングで示した画素群６８１，６８２夫々は、マスキングされた画素を示し、右上がりのハッチングで示した画素群６８３に含まれる各画素は画素値“０”を有し、白抜きで示した画素群６８６，６８７，６８８夫々に含まれる各画素は画素値“１”を有する。
【００６５】
ところで、図１１に示すマスキング画像６５について、ビアホール４４の内側の領域である座標（２，６）の画素は、気泡の画素ではない。しかしながら、仮に、マスキング画像６５を閾値Ｏのみで２値化した場合、座標（２，６）の画素は画素値が“１”になるため、後述するＳ２０の処理で、気泡の画素であると判定されてしまう。何故ならば、ビアホール４４の中央部４２ａは、半田層４３に気泡が混入していなくてもＸ線の透過率が高いためである。逆に、マスキング画像６５を閾値Ｉのみで２値化した場合、ビアホール４４の外部４２ｃは、半田層４３に気泡が混入していても透過率が低いため、ビアホール４４の外側の領域について、気泡の画素が、気泡の画素ではないと判定されてしまう。
【００６６】
Ｓ１９の処理終了後、ＣＰＵ１０は、メッキ部分４５，４５，…を除く接合領域に位置する気泡（以下、領域気泡という）の有無を検出する領域気泡検出を行なう（Ｓ２０）。
具体的には、ＣＰＵ１０は、マスキングされた画素群を除いて、各画素の画素値が“１”であるか“０”であるかを判定し、画素値が“１”であると判定された画素の座標値をＲＡＭ１２に記憶させ、更に、この画素の画素数を計数する。この画素数は、領域気泡の画素数である。何故ならば、画素値“１”を有する画素とは領域気泡の画素（以下、気泡画素という）であり、気泡画素が０個であれば、領域気泡は存在せず、気泡画素が１個以上であれば、領域気泡が存在するからである。
【００６７】
図１２に示す２値画像６８の場合、画素群６８６，６８７，６８８夫々に含まれる各画素が領域気泡に相当し、この領域気泡の画素数は“７”である。
仮に、この時点で気泡率を算出する場合、検出された領域気泡の画素数“７”を、２値画像６８の全画素数“１０８”（＝１２×９）で除算するため、気泡率は約６．４８％である。しかしながら、この時点ではメッキ部分４５，４５に位置する気泡（以下、部分気泡という）の画素数が全く考慮されていないため、正確な気泡率は得られない。
【００６８】
図４に示すＳ２０の処理終了後、ＣＰＵ１０は、図５に示すように、領域気泡が存在するか否かを判定し（Ｓ２１）、存在する場合（Ｓ２１でＹＥＳ）、Ｓ２２以降の処理を実行する。
【００６９】
図１３及び図１４は、気泡率演算装置３が検出すべき気泡の一例を示す模式図である。図１３及び図１４夫々には、ビアホール４４の中心座標を原点とするｘ−ｙ座標系の第１象限が示されている。
図１３に示す気泡７１は、ビアホール４４の外側及びメッキ部分４５に亘っている楕円形状であり、ビアホール４４の内側には到達していない。一方、気泡７２は、ビアホール４４の内側及びメッキ部分４５に亘っている円形状であり、ビアホール４４の外側には到達していない。また、図１４に示す気泡７３は、ビアホール４４の外側、メッキ部分４５、及びビアホール４４の内側に亘っている涙滴状である。
【００７０】
メッキ部分４５はマスキングされるため、図１３及び図１４に示す気泡７１〜７３夫々の内、メッキ部分４５に重ならない部分は、Ｓ２０の処理が実行されることによって、領域気泡として検出される。しかしながら、メッキ部分４５に重なる部分は、Ｓ２０の処理が実行されても領域気泡として検出されないため、別途検出する必要がある。
ところで、半田の表面張力によって、半田層４３に混入した気泡は、円形状、楕円形状、又は涙滴状等の丸い形をなすことが多い。本実施の形態の気泡率演算方法は、このような性質を利用して、メッキ部分４５に位置する部分気泡の有無を検出するものである。
【００７１】
図１３に示す気泡７１は、メッキ部分４５のビアホール４４の周方向の同一位置におけるビアホール４４の外側のみに接している。
このような気泡７１については、気泡７１の気泡周縁部とメッキ部分４５との交点７１１，７１２を通るメッキ部分４５の法線７１３，７１４が求められる。法線７１３（法線７１４）は、ビアホール４４の中心点と交点７１１（交点７１２）とを結ぶ直線である。
また、交点７１１，７１２を通る気泡７１の気泡周縁部の接線７１５，７１６が求められる。
【００７２】
そして、法線７１３，７１４及び接線７１５，７１６の内、気泡７１の気泡周縁部とメッキ部分４５との交点を同一としない（即ち、交点が互いに異なる位置に存在する）２本の直線の組み合わせが選択される。この場合、法線７１３，７１４の組み合わせと、法線７１３及び接線７１６の組み合わせと、法線７１４及び接線７１５の組み合わせと、接線７１５，７１６の組み合わせとが選択され、交点７１１で交差する法線７１３及び接線７１５の組み合わせと、交点７１２で交差する法線７１４及び接線７１６の組み合わせとは除外される。
【００７３】
選択された２本の直線で囲まれ、且つ、メッキ部分４５に位置する領域の内、最も面積が小さい領域は、法線７１３及び接線７１６の組み合わせに係る領域（縦ハッチングで示されている領域）である。従って、この領域が部分気泡であると認定される。何故ならば、この領域の形状が、メッキ部分４５に位置する気泡７１の形状に最も類似しているからである。
【００７４】
一方、気泡７２は、メッキ部分４５のビアホール４４の周方向の同一位置におけるビアホール４４の内側のみに接している。
このような気泡７２については、気泡７２の気泡周縁部とメッキ部分４５との交点７２１，７２２を通るメッキ部分４５の法線７２３，７２４が求められる。法線７２３（法線７２４）は、ビアホール４４の中心点と交点７２１（交点７２２）とを結ぶ直線である。
また、交点７２１，７２２を通る気泡７２の気泡周縁部の接線７２５，７２６が求められる。
【００７５】
そして、法線７２３，７２４及び接線７２５，７２６の内、気泡７２の気泡周縁部とメッキ部分４５との交点を同一としない２本の直線の組み合わせが選択される。この場合、法線７２３，７２４の組み合わせと、法線７２３及び接線７２６の組み合わせと、法線７２４及び接線７２５の組み合わせと、接線７２５，７２６の組み合わせとが選択され、交点７２１で交差する法線７２３及び接線７２５の組み合わせと、交点７２２で交差する法線７２４及び接線７２６の組み合わせとは除外される。
【００７６】
選択された２本の直線で囲まれ、且つ、メッキ部分４５に位置する領域の内、最も面積が小さい領域は、法線７２３，７２４の組み合わせに係る領域（横ハッチングで示されている領域）である。従って、この領域が部分気泡であると認定される。何故ならば、この領域の形状が、メッキ部分４５に位置する気泡７２の形状に最も類似しているからである。
【００７７】
図１４に示す気泡７３は、メッキ部分４５のビアホール４４の周方向の同一位置におけるビアホール４４の外側及び内側の両方に接している。
このような気泡７３については、メッキ部分４５にビアホール４４の外側から接する気泡７３の気泡周縁部とメッキ部分４５との外側交点７３１，７３２が求められ、また、メッキ部分４５にビアホール４４の内側から接する気泡７３の気泡周縁部とメッキ部分４５との内側交点７３３，７３４が求められる。
【００７８】
次いで、外側交点７３１，７３２の何れかと、内側交点７３３，７３４の何れかとを通る直線のうち、外側交点７３１，７３２及び内側交点７３３，７３４で囲まれる領域（以下、交点囲繞領域という）の外部で交差する２本の直線７３５，７３６が求められる。ここで、直線７３５は外側交点７３１及び内側交点７３３を通り、直線７３６は外側交点７３２及び内側交点７３４を通る。
【００７９】
ここで、外側交点７３１及び内側交点７３４を通る直線７３７と、外側交点７３２及び内側交点７３３を通る直線７３８との組み合わせは、交点囲繞領域の内部で交差し、直線７３５と直線７３７との組み合わせは、外側交点７３１で交差し、直線７３６と直線７３８との組み合わせは、外側交点７３２で交差するため、夫々除外される。同様に、直線７３５と直線７３８との組み合わせは、内側交点７３３で交差し、直線７３６と直線７３７との組み合わせは、内側交点７３４で交差するため、夫々除外される。
ところで、外側交点７３１，７３２を通る直線、及び、内側交点７３３，７３４を通る直線は、当然除外される。
【００８０】
最後に、演算された２本の直線７３５，７３６で囲まれ、且つ、メッキ部分４５に位置する領域（ハッチングで示されている領域）領域が、部分気泡であると認定される。何故ならば、この領域の形状が、メッキ部分４５に位置する気泡７３の形状に最も類似しているからである。
【００８１】
図１３及び図１４では、気泡７１〜７３夫々の形状が予め判明している場合を例示して説明した。しかしながら、実際の気泡演算処理においては、Ｓ２１の処理でＹＥＳと判定された段階では、図１３及び図１４に示すメッキ部分４５に位置する気泡７１〜７３夫々の形状は判明していない。
ここで、気泡画素が上下左右に連続している領域は、一塊の気泡であると容易に判定することができる。
【００８２】
ビアホール４４に接していない一塊の気泡は、単一の気泡であると容易に判定することができるが、ビアホール４４に外側（又は内側）から接する気泡は、単一の気泡なのか、ビアホール４４に内側（又は外側）から接する他の気泡も含めて単一の気泡なのかを判定する必要がある。
【００８３】
このために、気泡の気泡周縁部とメッキ部分との交点を通るメッキ部分の法線で囲まれるメッキ部分（以下、法線囲繞部分という）が、他の気泡に係る法線囲繞部分に重なっている（即ち、一の法線囲繞部分に含まれる画素が、他の法線囲繞部分にも含まれている）か否かが判定される。
図１３の場合、交点７１１，７１２を通るメッキ部分４５の法線７１３，７１４で囲まれる法線囲繞部分と、交点７２１，７２２を通るメッキ部分４５の法線７２３，７２４で囲まれる法線囲繞部分とは、他の法線囲繞部分とは重なっていない。従って、ビアホール４４に外側から接する気泡及び内側から接する気泡は、夫々単一の気泡（即ち気泡７１，７２）であると判定される。
【００８４】
図１４の場合、外側交点７３１，７３２を通るメッキ部分４５の法線７３ａ，７３ｂで囲まれる法線囲繞部分と、内側交点７３３，７３４を通るメッキ部分４５の法線７３ｃ，７３ｄで囲まれる法線囲繞部分とは、部分的に重なっている。従って、ビアホール４４に外側から接する気泡及び内側から接する気泡は、両方を合わせて単一の気泡（即ち気泡７３）である。
以上のようにして部分気泡を求める手順を、デジタルデータを用いた画像処理に適用する場合は、例えば、後述する図１５、図１６及び図１９〜図２４に示すような手順となる。
【００８５】
図１５は、気泡率演算装置３で生成される２値画像の一例を示す模式図である。
図中６６は２値画像であり、２値画像６６は、Ｓ１９の処理でマスキング画像を２値化してなる。図中、右上がりのハッチングで夫々示した１８個の画素６６１，６６１，…はマスク画素であり、白抜きで夫々示した２５個の画素６６２，６６２，…は、画素値“１”を有し、右下がりのハッチングで夫々示した画素６６３，６６３，…は、画素値“０”を有する。従って、画素６６２，６６２，…は、夫々気泡画素である。
【００８６】
マスク画素６６１，６６１，…は、このマスク画素６６１，６６１，…に対応するビアホール４４のメッキ部分４５の１／４分に相当し、図１５には、このビアホール４４の中心座標を原点とするｘ−ｙ座標系の第１象限が示されている。ここで、中心画素は座標（０，０）の画素６６３とする。以下では、この画素６６３を中心画素６６０という。
【００８７】
図１６は、気泡率演算装置３で生成される２値画像の他の一例を示す模式図である。
図中６７は２値画像であり、２値画像６７は、Ｓ１９の処理でマスキング画像を２値化してなる。１８個のマスク画素６７１，６７１，…は右上がりのハッチングで図示され、画素値“１”を有する２５個の気泡画素６７２，６７２，…及び８個の気泡画素６７８，６７８，…が白抜きで図示され、画素値“０”を有する中心画素６７０及び画素６７３，６７３，…は右下がりのハッチングで図示されている。
マスク画素６７１，６７１，…は、このマスク画素６７１，６７１，…に対応するビアホール４４のメッキ部分４５の１／４分に相当し、図１６には、このビアホール４４の中心座標を原点とするｘ−ｙ座標系の第１象限が示されている。
【００８８】
図５に示すＳ２１でＹＥＳの場合、ＣＰＵ１０は、Ｓ２０の処理で検出された領域気泡の内、各メッキ部分４５に接している気泡（以下、接触気泡という）の有無を検出する（Ｓ２２）。
Ｓ２０では、１個以上の気泡画素の座標値がＲＡＭ１２に記憶されるか、又は、座標値が記憶されない。従って、気泡画素の座標値がＲＡＭ１２に記憶されていない場合、領域気泡が存在しないため、接触気泡は存在しないものとし、１個以上の気泡画素の座標値がＲＡＭ１２に記憶されている場合、接触気泡が存在する可能性があるものとする。
【００８９】
Ｓ２２の処理終了後、ＣＰＵ１０は、接触気泡が存在するか否かを判定し（Ｓ２３）、存在する場合（Ｓ２３でＹＥＳ）、接触気泡の範囲を求める（Ｓ２４）。
Ｓ２３におけるＣＰＵ１０は、ＲＡＭ１２に記憶されている各気泡画素を注目画素とした周囲８画素の少なくとも１画素がマスク画素であるか否かを判定し、周囲８画素の少なくとも１画素がマスク画素であると判定された注目画素を、マスク画素に接する気泡画素（以下、接触気泡画素という）としてＲＡＭ１２に記憶させる。
【００９０】
このように、接触気泡画素は、接触気泡に含まれる画素であり、マスク画素と少なくとも一点で接触する。換言すれば、接触気泡画素は、４個の頂点の内の少なくとも１個を、マスク画素と共有する。なお、注目画素の周囲４画素の少なくとも１画素がマスク画素であるか否かを判定する構成でもよい。この場合、接触気泡画素は、マスク画素と少なくとも１辺で接触する。
以下では、接触気泡画素ではない気泡画素（マスク画素に接していない気泡画素）を非接触気泡画素といい、接触気泡画素と非接触気泡画素とを区別しない場合に、単に気泡画素という。
【００９１】
例えば図１５に示す座標（４，６）の気泡画素６６２、並びに、図１６に示す座標（４，６）の気泡画素６７２及び座標（１，３）の気泡画素６７８は、夫々接触気泡画素である。Ｓ２４では、これらのような接触気泡画素を含む１個の接触気泡を求める。
具体的には、Ｓ２４におけるＣＰＵ１０は、各接触気泡画素について、この接触気泡画素が、この接触気泡画素に接触しているマスク画素に対応するビアホール４４の外側に位置するか内側に位置するか判定する。
【００９２】
次いで、各ビアホール４４の外側に位置する接触気泡画素夫々について、Ｓ２４におけるＣＰＵ１０は、この接触気泡画素を注目画素とした周囲８画素に気泡画素が含まれているか否かを判定し、含まれていると判定した場合は、この気泡画素を注目画素とした周囲８画素に気泡画素が含まれているか否かを判定することを繰り返す。例えば、図１５に示す座標（４，６）の接触気泡画素６６２を注目画素とした場合、座標（４，５）、座標（４，７）、座標（３，５）〜座標（３，７）、及び座標（５，５）〜座標（５，７）夫々の画素が気泡画素であるか否かが判定され、座標（４，５）、座標（５，５）及び座標（５，６）夫々の画素が気泡画素であるため、次は、例えば座標（５，６）の非接触気泡画素６６２が注目画素となる。なお、注目画素の周囲４画素に気泡画素が含まれているか否かを判定する構成でもよい。
【００９３】
このようにして、ＣＰＵ１０は、接触気泡画素を出発点としてｘ軸方向及びｙ軸方向に気泡画素が連続する領域を求め、求めた領域を、ビアホール４４の外側に位置する接触気泡であると認定する。ここで、求めた接触気泡に他の接触気泡画素が含まれている場合、この接触気泡画素を含む気泡画素を新たに求める必要はない。
以上のようにして、図１５に示す気泡画素６６２，６６２，…、及び図１６に示す気泡画素６７２，６７２，…は、夫々ビアホール４４の外側に位置する接触気泡であると認定される。
【００９４】
また、各ビアホール４４の内側に位置する接触気泡画素夫々についても、ＣＰＵ１０は、同様にして求めた領域を、ビアホール４４の内側に位置する接触気泡であると認定する。このため、図１６に示す気泡画素６７８，６７８，…は、ビアホール４４の内側に位置する接触気泡であると認定される。
【００９５】
図５に示すＳ２４の処理完了後、ＣＰＵ１０は、Ｓ２４で求めた接触気泡夫々について、各接触気泡の気泡周縁部と、この接触気泡が接触しているメッキ部分４５との交点画素を演算し（Ｓ２５）、演算した交点画素を通るメッキ部分４５の法線に基づいて、この接触気泡に係る法線囲繞部分を演算する（Ｓ２６）。更にＣＰＵ１０は、Ｓ２６で演算した法線囲繞部分に基づき、Ｓ２４で求めた各接触気泡が、ビアホール４４の外側のみに接している接触気泡であるか、ビアホール４４の内側のみに接している接触気泡であるか、又はビアホール４４の外側及び内側の両方に接している接触気泡であるか分類する（Ｓ２７）。
【００９６】
まず、Ｓ２５におけるＣＰＵ１０は、例えば図１５に示す２値画像６６の場合、接触気泡の接触気泡画素６６２，６６２，…の内、ｘ座標の座標値が最小且つｙ座標の座標値が最大の画素を１個目の交点画素とし、ｘ座標の座標値が最大且つｙ座標の座標値が最小の画素を２個目の交点画素とする。この場合、１個目の交点画素は座標（４，６）の接触気泡画素６６２であり、２個目の交点画素は座標（７，２）の接触気泡画素６６２である。
【００９７】
同様に、図１６に示す２値画像６７の場合、中心画素６７０を含み、マスク画素６７１，６７１，…に囲まれた領域（即ちビアホール４４）の外側からマスク画素６７１，６７１，…（即ちメッキ部分４５）に接している接触気泡について、１個目の交点画素は座標（４，６）の接触気泡画素６７２であり、２個目の交点画素は座標（７，２）の接触気泡画素６７２である。また、ビアホール４４の内側からマスク画素６７１，６７１，…に接している接触気泡について、１個目の交点画素は座標（１，３）の接触気泡画素６７２であり、２個目の交点画素は座標（３，１）の接触気泡画素６７２である。
【００９８】
次に、Ｓ２６におけるＣＰＵ１０は、例えば図１５に示す２値画像６６の場合、Ｓ２５で演算した座標（４，６）の交点及び座標（７，２）の交点夫々と、中心画素６６０とを通る直線（即ちＳ２５で演算した交点を通るメッキ部分４５の法線）を求め、求めた法線（図１５中の破線）に囲まれるマスク画素６６１，６６１，…（即ち法線囲繞部分という）を演算する。
【００９９】
一方、例えば図１６に示す２値画像６７の場合、Ｓ２６におけるＣＰＵ１０は、ビアホール４４の外側からマスク画素６７１，６７１，…に接している接触気泡に関して、Ｓ２５で演算した座標（４，６）の交点及び座標（７，２）の交点夫々と、中心画素６７０とを通る直線（即ち法線）を求め、求めた法線（図１６中の破線）に囲まれるマスク画素６７１，６７１，…を演算する。同様に、ＣＰＵ１０は、ビアホール４４の内側からマスク画素６７１，６７１，…に接している接触気泡に関して、Ｓ２５で演算した座標（１，３）の交点及び座標（３，１）の交点夫々と、中心画素６７０とを通る直線（即ち法線）を求め、求めた法線（図１６中の二点鎖線）に囲まれるマスク画素６７１，６７１，…を演算する。
【０１００】
更に、例えば図１５に示す２値画像６６の場合、Ｓ２６で演算した法線囲繞部分に含まれるマスク画素６６１，６６１，…が、他の接触気泡に係る法線囲繞部分には含まれないため、Ｓ２７におけるＣＰＵ１０は、気泡画素６６２，６６２，…が属する接触気泡を、メッキ部分４５のビアホール４４の周方向の同一位置におけるビアホール４４の外側のみに接している接触気泡であると分類する。
【０１０１】
一方、図１６に示す２値画像６７の場合、ビアホール４４の外側の接触気泡に係るＳ２６で演算した法線囲繞部分に含まれる一部のマスク画素６７１，６７１，…が、ビアホール４４の内側の接触気泡に係る法線囲繞部分に含まれるため、ＣＰＵ１０は、気泡画素６７２，６７２，…及び気泡画素６７８，６７８，…が属する接触気泡を、ビアホール４４の外側及び内側の両方に接している接触気泡であると分類する。
以上のような接触気泡の分類に基づき、Ｓ２７におけるＣＰＵ１０は、適宜の気泡分類テーブルを生成してＲＡＭ１２に記憶させる。
【０１０２】
図５に示すＳ２７の処理終了後、ＣＰＵ１０は、変数Ｋを“０”にリセットし（Ｓ２８）、ビアホール４４，４４，…の何れか１つを選択し（Ｓ２９）、選択したビアホール４４のメッキ部分４５に接している接触気泡の形状に基づいて、この接触気泡の形状の特徴を示す仮想線を求め、求めた仮想線で囲まれ、且つこのメッキ部分４５に位置する領域であって、気泡として認定すべき領域の有無を検出する部分気泡検出を行なう（Ｓ３０）。Ｓ３０の処理で、ＣＰＵ１０は、部分気泡検出処理を行なうサブルーチン（後述する図１７及び図１８参照）を呼び出し、実行する。
【０１０３】
図１７及び図１８は、気泡率演算装置３で実行される部分気泡検出処理手順のサブルーチンを示すフローチャートである。
まず、ＣＰＵ１０は、Ｓ１９の処理で生成された２値画像において、Ｓ２９で選択したビアホール４４（以下、選択ビアホールという）の中心座標に基づいて、選択ビアホールのメッキ部分４５に対応するマスク画素を抽出する（Ｓ４１）。Ｓ４１の処理では、例えば図１５に示す２値画像６６の場合、マスク画素６６１，６６１，…が抽出され、図１６に示す２値画像６７の場合、マスク画素６７１，６７１，…が抽出される。
【０１０４】
次に、ＣＰＵ１０は、Ｓ２７で生成した気泡分類テーブルを参照し、Ｓ４１で抽出したマスク画素に接する接触気泡が存在するか否かを判定し（Ｓ４２）、存在しない場合は（Ｓ４２でＮＯ）、部分気泡検出処理を終了して元のルーチンへ戻す。
【０１０５】
Ｓ４１で抽出したマスク画素に接する接触気泡が存在する場合（Ｓ４２でＹＥＳ）、ＣＰＵ１０は、Ｓ４１で抽出したマスク画素６６１，６６１，…に接する接触気泡の内の１個を選択し（Ｓ４３）、選択した接触気泡が、選択ビアホールの外側及び内側の両方に接している接触気泡であるか否かを判定する（Ｓ４４）。
Ｓ４３で選択した気泡が、選択ビアホールの外側又は内側のみに接している接触気泡である場合（Ｓ４４でＮＯ）、ＣＰＵ１０は、この接触気泡に連続する部分気泡の有無を検出すべく、Ｓ４６以下の処理を実行する。
【０１０６】
以下では、選択ビアホールの中心画素を原点とするｘ−ｙ座標系の第１象限に、選択ビアホールの外側のみに接している接触気泡が存在する場合（図１５参照）について例示する。なお、第２象限〜第４象限の何れかに接触気泡が存在する場合、接触気泡が存在する象限を原点回りに回転させるか、又はｘ軸若しくはｙ軸を中心に反転させて、座標軸を第１象限に対応させることによって、同様の処理で部分気泡の有無を検出することが可能である。また、１個の接触気泡が複数の象限に亘って存在する場合であっても、接触気泡と座標軸とが重なる部分を気泡周縁部と看做して複数の象限夫々に同様の処理を施すことによって、部分気泡の有無を検出することが可能である。この場合、マスク領域の法線の１本と接触気泡の接線の１本とが、気泡周縁部と看做された座標軸に一致する。
【０１０７】
図１９は、図１５に示す２値画像６６における２本の法線で囲まれる領域を示す模式図である。図２０は、２値画像６６における一の法線及び接線で囲まれる領域を示す模式図であり、図２１は、２値画像６６における他の法線及び接線で囲まれる領域を示す模式図である。図２２は、２値画像６６における２本の接線で囲まれる領域を示す模式図である。
図１７に示すＳ４４でＮＯの場合、ＣＰＵ１０は、Ｓ４３で選択した接触気泡（以下、選択気泡という）の気泡周縁部と選択ビアホールのメッキ部分４５とのＳ２５で演算した交点画素（図１９〜図２２においては、１個目の交点画素は座標（４，６）の接触気泡画素６６２、２個目の交点画素は座標（７，２）の接触気泡画素６６２）を用いて、Ｓ４６以下の処理を実行する。
【０１０８】
ＣＰＵ１０は、Ｓ２５で求めた交点画素が１個のみであるか否かを判定する（Ｓ４６）。交点画素が１個のみである場合（Ｓ４６でＹＥＳ）、選択気泡に連続する部分気泡は存在しない（即ち選択気泡に連続する部分気泡として認定すべき領域の画素数は“０”）と看做すことができるため、処理を後述するＳ５２へ移す。
【０１０９】
Ｓ２５で求めた交点画素が２個以上である場合（Ｓ４６でＮＯ）、ＣＰＵ１０は、選択ビアホールのメッキ部分４５の法線の内、Ｓ２５で求めた２個の交点画素夫々を通る法線を演算する（Ｓ４７）。
図１５に示す２値画像６６の場合、Ｓ４７におけるＣＰＵ１０は、選択ビアホールの中心画素（０，０）と、座標（４，６）の交点画素及び座標（７，２）の交点画素夫々とを結ぶ直線を演算する。この結果、図１９〜図２１に示す法線６６４，６６５が求められる。
【０１１０】
図１７に示すＳ４７の処理終了後、ＣＰＵ１０は、選択気泡の気泡周縁部の接線の内、Ｓ２５で求めた２個の交点画素夫々を通る接線を演算する（Ｓ４８）。
図１５に示す２値画像６６の場合、Ｓ４８におけるＣＰＵ１０は、Ｓ２５で求めた１個目の交点画素に接する接触気泡画素６６２，６６２，…の内、ｘ座標の座標値が最小且つｙ座標の座標値が最大の画素を第１追加画素とし、２個目の交点画素に接する接触気泡画素６６２，６６２，…の内、ｘ座標の座標値が最大且つｙ座標の座標値が最小の画素を第２追加画素とする。
【０１１１】
図１９〜図２２においては、第１追加画素は座標（４，５）の接触気泡画素６６２であり、第２追加画素は座標（６，２）の接触気泡画素６６２である。更に、ＣＰＵ１０は、Ｓ２５で求めた１個目の交点画素と、第１追加画素とを結ぶ直線、及び、Ｓ２５で求めた２個目の交点画素と、第２追加画素とを結ぶ直線を演算する。この結果、図２０〜図２２に示す接線６６６，６６７が求められる。
【０１１２】
ところで、選択気泡が選択ビアホールの内側のみに接している接触気泡であっても、Ｓ４８におけるＣＰＵ１０は、１個目の交点画素に接する接触気泡画素６６２，６６２，…の内、ｘ座標の座標値が最小且つｙ座標の座標値が最大の画素を第１追加画素とし、２個目の交点画素に接する接触気泡画素６６２，６６２，…の内、ｘ座標の座標値が最大且つｙ座標の座標値が最小の画素を第２追加画素とする。
【０１１３】
図１７に示すＳ４８の処理終了後、ＣＰＵ１０は、各２本の法線及び接線の内、選択気泡の気泡周縁部とメッキ部分４５との交点を同一としない２本の直線の組み合わせを選択する（Ｓ４９）。
図１５〜図２２に示す２値画像６６の場合、法線６６４，６６５及び接線６６６，６６７夫々が通る画素の内、座標値が同一の交点画素を含む組み合わせが除外される。この結果、法線６６４，６６５の組み合わせと、法線６６４及び接線６６７の組み合わせと、法線６６５及び接線６６６の組み合わせと、接線６６６，６６７の組み合わせとが選択され、互いに座標（４，６）の交点画素を通る法線６６４及び接線６６６の組み合わせと、互いに座標（７，２）の交点画素を通る法線６６５及び接線６６７の組み合わせとは除外される。
【０１１４】
ところで、Ｓ２５で求めた交点画素が１個のみである場合、この交点画素を通る接線及び法線は、座標値が同一の気泡画素６６２（即ち交点画素）を通る。このため、仮に、Ｓ２５で求めた交点画素が１個のみである場合にＳ４７及びＳ４８の処理を実行したとしても、求められた接線及び法線の組み合わせは、Ｓ４９で除外されるため、後述するＳ５０以降の処理を実行する意味がない。
【０１１５】
次いで、ＣＰＵ１０は、Ｓ４９で選択した２本の直線の組み合わせ夫々について、選択した２本の直線で囲まれたマスク画素６６１，６６１，…の画素数を計数し（Ｓ５０）、最も小さい計数結果Ｃを、変数Ｋに加算する（Ｓ５１）。つまり、変数Ｋとは、選択気泡に連続する部分気泡として認定すべき領域の画素数の合計である。
【０１１６】
図１９に右上がりの細かいハッチングで示されているマスク画素６６１，６６１，…は、法線６６４，６６５に囲まれたマスク画素６６１，６６１，…であり、画素数は“７”である。ここで、法線６６４を示す直線はｙ＝｛３／２｝ｘであり、法線６６５を示す直線はｙ＝｛２／７｝ｘである。法線６６４，６６５に囲まれるマスク画素６６１，６６１，…とは、夫々ｙ≦｛３／２｝ｘ且つｙ≧｛２／７｝ｘを満たす。従って、例えば座標（３，５）のマスク画素６６１は、法線６６４が通っているが、選択した２本の直線で囲まれたマスク画素６６１として計数されない。
図２０に右上がりの細かいハッチングで示されているマスク画素６６１，６６１，…は、法線６６４及び接線６６７に囲まれたマスク画素６６１，６６１，…であり、画素数は“７”である。
【０１１７】
図２１に右上がりの細かいハッチング示されているマスク画素６６１，６６１，…は、法線６６５及び接線６６６に囲まれたマスク画素６６１，６６１，…であり、画素数は“５”である。
図２２に右上がりの細かいハッチングで示されているマスク画素６６１，６６１，…は、接線６６６，６６７に囲まれたマスク画素６６１，６６１，…であり、画素数は“５”である。
以上の結果、Ｓ４９で選択した２本の直線で囲まれたマスク画素６６１，６６１，…の画素数の内、最小画素数は“５”である。
【０１１８】
図１７に示すＳ５１の処理終了後、ＣＰＵ１０は、Ｓ４１で抽出したマスク画素に接する接触気泡をＳ４３で全て選択し終えたか否かを判定し（Ｓ５２）、まだ選択されていない接触気泡が存在する場合（Ｓ５２でＮＯ）、処理をＳ４３へ戻し、全て選択し終えた場合は（Ｓ５２でＹＥＳ）、部分気泡検出処理を終了して元のルーチンへ戻す。
【０１１９】
図１７に示すＳ４３で選択した接触気泡が、選択ビアホールの外側及び内側の両方に接している接触気泡である場合（Ｓ４４でＹＥＳ）、ＣＰＵ１０は、この接触気泡に連続する部分気泡の有無を検出すべく、図１８に示すＳ５３以下の処理を実行する。
以下では、選択ビアホールの中心画素を原点とするｘ−ｙ座標系の第１象限に、選択ビアホールの外側及び内側の両方に接している接触気泡が存在する場合（図１６参照）について例示する。
【０１２０】
図１７に示すＳ４４でＹＥＳの場合、ＣＰＵ１０は、図１７に示すように、選択ビアホールの外側に接している選択気泡の気泡周縁部と選択ビアホールのメッキ部分４５との外側交点画素を演算し、また、選択ビアホールの内側に接している選択気泡の気泡周縁部と選択ビアホールのメッキ部分４５との内側交点画素を演算する（Ｓ５３）。
【０１２１】
図２３は、図１６に示す２値画像６７における４本の直線を示す模式図である。図２４は、２値画像６７における２本の直線で囲まれる領域を示す模式図である。
【０１２２】
図２３に示すように、２値画像６７の場合、Ｓ５３におけるＣＰＵ１０は、選択ビアホールの外側に接している選択気泡の接触気泡画素６７２，６７２，…の内、ｘ座標の座標値が最小且つｙ座標の座標値が最大の画素を１個目の外側交点画素とし、ｘ座標の座標値が最大且つｙ座標の座標値が最小の画素を２個目の外側交点画素とする。また、選択ビアホールの内側に接している選択気泡の接触気泡画素６７８，６７８，…の内、ｘ座標の座標値が最小且つｙ座標の座標値が最大の画素を１個目の内側交点画素とし、ｘ座標の座標値が最大且つｙ座標の座標値が最小の画素を２個目の内側交点画素とする。
【０１２３】
この結果、２値画像６７の場合、１個目の外側交点画素は座標（４，６）の接触気泡画素６７２であり、２個目の外側交点画素は座標（７，２）の接触気泡画素６７２であり、１個目の内側交点画素は座標（１，３）の接触気泡画素６７２であり、２個目の内側交点画素は座標（３，１）の接触気泡画素６７２である。
【０１２４】
図１８に示すＳ５３の処理終了後、ＣＰＵ１０は、Ｓ５３で求めた外側交点画素及び内側交点画素の合計が４個以上であるか否かを判定する（Ｓ５４）。Ｓ５３で求めた各種交点画素の合計が２個又は３個のみである場合（Ｓ５４でＮＯ）、選択気泡に連続する部分気泡は存在しない（即ち選択気泡に連続する部分気泡として認定すべき領域の画素数は“０”）と看做すことができるため、処理をＳ５２へ移す。
【０１２５】
Ｓ５３で求めた各種交点画素の合計が４個以上である場合（Ｓ５４でＹＥＳ）、ＣＰＵ１０は、２個の外側交点画素の何れかと、２個の内側交点画素の何れかとの交点を通る直線を演算する（Ｓ５５）。外側交点画素同士を結ぶ直線、及び内側交点画素同士を結ぶ直線は演算されない。
この結果、図２３に示すように、２値画像６７の場合、直線６７４〜６７７が得られる。
【０１２６】
図１８に示すＳ５５の処理終了後、ＣＰＵ１０は、４本の直線の内、各２個の外側交点画素及び内側交点画素で囲まれる領域（即ち交点囲繞領域）６７９の外部で交差する２本の直線の組み合わせを選択する（Ｓ５６）。
【０１２７】
図２３に示すように、２値画像６７の場合、同一の外側交点画素又は同一の内側交点画素を通る組み合わせと、交点囲繞領域６７９の内部の同一の画素を通る組み合わせとが除外される。この結果、直線６７４，６７５の組み合わせが選択され、互いに座標（４，６）の外側交点画素を通る直線６７４，６７６の組み合わせと、互いに座標（７，２）の外側交点画素を通る直線６７５，６７７の組み合わせと、互いに座標（３，３）のマスク画素６７１を通る直線６７６，６７７の組み合わせと、互いに座標（１，３）の内側交点画素を通る直線６７４，６７７の組み合わせと、互いに座標（３，１）の交点画素を通る直線６７５，６７６の組み合わせとは除外される。
【０１２８】
ところで、Ｓ５３で求めた各種交点画素が２個のみである場合、これらの交点画素を通る直線は１本きりであるため、Ｓ５６の処理を実行することができない。また、Ｓ５３で求めた各種交点画素が３個のみである場合、これらの交点画素を通る２本の直線は同一の交点画素を通るため、Ｓ５６の処理で除外される。従って、後述するＳ５７以降の処理を実行する意味がない。
【０１２９】
次いで、ＣＰＵ１０は、Ｓ５６で選択した２本の直線で囲まれたマスク画像の画素数を計数し（Ｓ５７）、処理をＳ５１へ移して、計数結果Ｃを、変数Ｋに加算する。
図２４に示すように、２値画像６７の場合、Ｓ５７におけるＣＰＵ１０は、直線６７４，６７５で囲まれたマスク画素６７１，６７１，…、即ち右上がりの細かいハッチングで示されたマスク画素６７１，６７１，…の画素数“９”を計数する。
【０１３０】
図５に示すＳ２９の処理が繰り返されることによって、ビアホール４４，４４，…の全てが選択され、Ｓ３０の処理が繰り返されることによって、メッキ部分４５，４５，…に位置する部分気泡の画素数が計数される。
Ｓ３０の処理終了後、ＣＰＵ１０は、ビアホール４４，４４，…の全てを選択し終えたか否かを判定し（Ｓ３１）、まだ選択していない気泡がある場合は（Ｓ３１でＮＯ）、処理をＳ２９へ戻す。
【０１３１】
ビアホール４４，４４，…の全てを選択し終えた場合（Ｓ３１でＹＥＳ）、ＣＰＵ１０は、部分気泡と領域気泡とを合計した気泡率［％］を算出する（Ｓ３２）。Ｓ３２の処理では、ＣＰＵ１０は、Ｓ３０で検出した全ての部分気泡の画素数Ｋと、Ｓ２０で検出した全ての領域気泡の画素数との合計を、接合領域全体の画素数で除算した百分率を算出する。
図２４に示すように、２値画像６７の場合、Ｓ３２の処理を実行した結果、気泡率３８．８９（＝｛２５＋８＋９｝／｛１２×９｝×１００）［％］が算出される。仮に、部分気泡の存在を無視し、領域気泡のみで気泡率を算出した場合、気泡率３０．５６［％］が算出される。つまり、部分気泡の存在を考慮することによって、より正確な気泡率を得ることができる。
【０１３２】
Ｓ３２の処理終了後、ＣＰＵ１０は、Ｓ３２で算出した気泡率と、ＨＤＤ１５に記憶してあるＸ線画像とを、気泡演算結果として表示部１３に表示して（Ｓ３３）、気泡演算処理を終了する。
【０１３３】
領域気泡が存在しない場合（Ｓ２１でＮＯ）、ＣＰＵ１０は、処理をＳ３３へ移し、気泡率０％と、ＨＤＤ１５に記憶してあるＸ線画像とを、気泡演算結果として表示部１３に表示して、気泡演算処理を終了する。つまり、本実施の形態においては、領域気泡が存在しない場合は接触気泡が存在しないため、部分気泡も存在しないと看做して気泡率が算出される。
【０１３４】
接触気泡が存在しない場合（Ｓ２３でＮＯ）、ＣＰＵ１０は、Ｓ２０で検出した領域気泡の画素数を、接合領域全体の画素数で除算した百分率を算出することによって、気泡率［％］を算出し（Ｓ３４）、処理をＳ３３へ移して、Ｓ３４で算出した気泡率［％］と、ＨＤＤ１５に記憶してあるＸ線画像とを、気泡演算結果として表示部１３に表示して、気泡演算処理を終了する。つまり、本実施の形態においては、接触気泡が存在しない場合、部分気泡も存在しないと看做して気泡率が算出される。
【０１３５】
以上のような気泡率演算装置３は、放熱基板４２のメッキ部分４５，４５，…に位置する部分気泡の有無と、メッキ部分４５，４５，…を除く接合領域に位置する領域気泡の有無とを容易且つ正確に検出して、接合領域全体の正確な気泡率を求めることができる。
また、複雑な曲線形状である気泡を、法線、接線等の直線で近似しているため、演算時間を短縮することができる。
【０１３６】
なお、Ｓ５１の処理で、ＣＰＵ１０は、最も大きい計数結果を変数Ｋに加算してもよい。これは、Ｓ４９で選択した２本の直線で囲まれるマスク画素の画素数の内、最大画素数を部分気泡の画素数と認定することに等しい。この場合、図１９〜図２２に示す２値画像６６においては、画素数“７”が選択される。
一般に、半田層４３に混入した気泡は、円形状、楕円形状、涙滴状等、真円度が高い形状を有する。従って、図１３に示すように、法線７１３及び接線７１６の組み合わせに係る領域や、法線７２３，７２４の組み合わせに係る領域が部分気泡であると認定される。
【０１３７】
しかしながら、例えば、半導体装置４の量産開始直後は、半導体素子４１と放熱基板４２とを半田付けする工程の能力が安定しない。故に、半田層４３に混入する気泡の形状が不安定になり、真円度が低くなり易い。このため、本実施の形態のように最小画素数に基づいて検出した部分気泡は、実際よりも面積が狭く見積もられている可能性がある。この結果、気泡率が実際よりも小さく算出されるため、不良品が良品と判断されて流出する虞がある。
そこで、最大画素数に基づいて部分気泡を検出することによって、気泡率が実際よりも小さく算出されることを抑制することができ、この結果、不良品の流出を抑制することができる。
【０１３８】
最小画素値を用いて部分気泡を検出するか、最大画素値を用いて部分気泡を検出するかを自動的に決定するためには、例えば、ＣＰＵ１０が、領域気泡の気泡率、又は扁平率等を算出し、算出結果に基づいて、最小画素値及び最大画素値の何れを用いるかを判定する。領域気泡の扁平率を用いる場合、ＣＰＵ１０は、例えばＳ４３で選択した接触気泡の中心画素からの最大径と最小径とを求め、最小径を最大径で除算した値（即ち扁平率）が所定の範囲以内にあるときは、Ｓ５１の処理で最小画素値を用いる。
【０１３９】
実施の形態  ２．
図２５は、本発明の実施の形態２に係る気泡率演算装置３で実行される気泡演算処理の手順を示すフローチャートである。
本実施の形態の気泡率演算装置３のハードウェア構成は、実施の形態１の気泡率演算装置３のハードウェア構成と同様であり、本実施の形態の気泡率演算装置３が気泡の有無を検出すべき半導体装置４は、実施の形態１の半導体装置４の構成と同様である。このため、実施の形態１に対応する部分には同一符号を付してそれらの説明を省略する。
また、図２５に示すＳ１１〜Ｓ２１の処理は、図４に示すＳ１１〜Ｓ２０及び図５に示すＳ２１の処理と同様であるため、説明を省略する。
【０１４０】
領域気泡が存在する場合（Ｓ２１でＹＥＳ）、ＣＰＵ１０は、Ｓ６１以降の処理を実行する。
ＣＰＵ１０は、メッキ部分４５，４５，…を除く接合領域の画素数を計数する（Ｓ６１）。
図１２に示す２値画像６８の場合、画素群６８１，６８２以外の画素群が、メッキ部分４５，４５，…を除く接合領域に相当し、この領域の画素数は“９２”である。また、画素群６８６，６８７，６８８が領域気泡に相当し、この領域気泡の画素数は“７”である。
【０１４１】
Ｓ６１の処理終了後、ＣＰＵ１０は、Ｓ２０で検出した領域気泡の画素数を、Ｓ６１で計数したメッキ部分４５，４５，…を除く接合領域の画素数で除算した百分率を算出することによって、気泡率［％］を算出する（Ｓ６２）。図１２に示す２値画像６８の場合、気泡率は７．６１％である。
最後に、ＣＰＵ１０は、Ｓ６２で算出した気泡率と、ＨＤＤ１５に記憶してあるＸ線画像とを、気泡演算結果として表示部１３に表示して（Ｓ６３）、気泡演算処理を終了する。
【０１４２】
領域気泡が存在しない場合（Ｓ２１でＮＯ）、ＣＰＵ１０は、処理をＳ６３へ移し、気泡率０％と、ＨＤＤ１５に記憶してあるＸ線画像とを、気泡演算結果として表示部１３に表示して、気泡演算処理を終了する。つまり、本実施の形態においては、領域気泡が存在しない場合は、部分気泡も存在しないと看做して気泡率が算出される。
【０１４３】
以上のような気泡率演算装置３は、放熱基板４２を、メッキ部分４５，４５，…と、ビアホール４４，４４，…の内側及び外側（即ちメッキ部分４５，４５，…を除く接合領域）とに分けて考慮することができる。このとき、メッキ部分４５，４５，…を除く接合領域に位置する気泡（即ち領域気泡）の有無は、２値化によって容易且つ正確に検出することができる。また、メッキ部分４５，４５，…を除く接合領域における気泡率を、メッキ部分４５，４５，…の気泡率として適用することによって、領域気泡の、メッキ部分４５，４５，…を除く接合領域に対する割合を、接合領域全体の正確な気泡率と認定することができる。
また、メッキ部分４５，４５，…における気泡率を推定値で補うため、演算時間を短縮することができる。
【０１４４】
実施の形態  ３．
図２６は、本発明の実施の形態３に係る気泡率演算装置３で実行される気泡演算処理の手順を示すフローチャートである。
本実施の形態の気泡率演算装置３のハードウェア構成は、実施の形態１，２の気泡率演算装置３のハードウェア構成と同様であり、本実施の形態の気泡率演算装置３が気泡の有無を検出すべき半導体装置４は、実施の形態１，２の半導体装置４の構成と同様である。このため、実施の形態１，２に対応する部分には同一符号を付してそれらの説明を省略する。
また、図２６に示すＳ１１〜Ｓ１７の処理は、図４及び図２５に示すＳ１１〜Ｓ１７の処理と同様であるため、説明を省略する。
【０１４５】
Ｓ１７の処理終了後、ＣＰＵ１０は、マスク補正画像を参照し、領域画像に含まれているメッキ部分４５，４５，…の画素を特定する（Ｓ８１）。
図６に示す領域画像６０の場合、Ｓ８１におけるＣＰＵ１０は、図１０に示すマスク補正画像６４を参照し、マスク補正画像６４の画素値“０”を有する画素群に相当する画素群をメッキ部分４５，４５の画素群であるものとする。
【０１４６】
図２６に示すＳ８１の処理終了後、ＣＰＵ１０は、領域画像を複数種類の閾値で２値化する（Ｓ８２）。Ｓ８３におけるＣＰＵ１０は、異閾値２値化手段として機能する。
更に詳細には、Ｓ８２におけるＣＰＵ１０は、Ｓ８１で特定したメッキ部分４５，４５，…に含まれる画素の画素値を閾値Ｐで２値化し、メッキ部分４５，４５，…を除く接合領域の内、ビアホール４４，４４，…の内側に含まれる画素の画素値を、閾値Ｐとは異なる閾値Ｉで２値化し、ビアホール４４，４４，…の外側に含まれる画素の画素値を、閾値Ｐ，Ｉの何れとも異なる閾値Ｏで２値化する。
【０１４７】
実施の形態１と同様に、閾値Ｉは、ビアホール４４の中央部４２ａのＸ線透過率に応じて予め設定され、閾値Ｏは、ビアホール４４の外部４２ｃのＸ線透過率に応じて予め閾値Ｉよりも小さい値に設定されている。一方、閾値Ｐは、ビアホール４４の内周部４２ｂのＸ線透過率に応じて予め閾値Ｏよりも小さい値に設定されている。つまり、閾値Ｐ＜閾値Ｏ＜閾値Ｉである。
【０１４８】
なお、閾値Ｉ，Ｏは同値であってもよい。ただし、閾値Ｏ＝閾値Ｉとするためには、２値化の前に、ビアホール４４の内側及び外側夫々のＸ線透過率の差異を、領域画像上で補正する必要がある。
【０１４９】
図２７は、気泡率演算装置３で求められる２値画像の一例を示す模式図である。
図中６９は２値画像であり、２値画像６９は、図６に示す領域画像６０を２値化してなる。更に詳細には、領域画像６０について、図１０に示す画素群６４１，６４２夫々に相当する画素群に含まれている第１の画素（即ちＳ８１で特定したメッキ部分４５，４５に含まれている画素）の画素値が閾値Ｐ＝“０．３０”で２値化されている。また、図１０に示す画素群６４１，６４２夫々に相当する画素群に囲まれている第２の画素（即ち座標（２，６），（８，３）の各画素）の画素値が閾値Ｉ＝“０．８５”で２値化されている。更に、第１及び第２の画素以外の画素の画素値が閾値Ｏ＝“０．７５”で２値化されている。
【０１５０】
図２７中、白抜きで示した画素群６９５，６９６，６９７，６９８夫々は画素値“１”を有し、右上がりの細かいハッチングで示した画素群は画素値“０”を有する。
【０１５１】
図１２に示す２値画像６８と図２７に示す２値画像６９とを比較した場合、２値画像６９では、２値画像６８のマスキングされた画素群である画素群６８１，６８２夫々に相当する画素群に、気泡であることを示す画素値“１”の画素（座標（３，７），（８，４）の各画素）が含まれていることがわかる。このように、本実施の形態では、メッキ部分４５，４５を除く接合領域のみならず、メッキ部分４５，４５に存在する気泡も検出される。
【０１５２】
図６に示す領域画像６０について、メッキ部分４５に位置する座標（３，７）の画素は気泡に相当するが、仮に、メッキ部分４５を閾値Ｏ又は閾値Ｉで２値化した場合、この画素は気泡ではないと判定されてしまう。何故ならば、メッキ部分４５は気泡が存在していても透過率が低いためである。
【０１５３】
Ｓ８３の処理終了後、ＣＰＵ１０は、接合領域に位置する気泡（以下、接合気泡という）の有無を検出する気泡有無検出を行なう（Ｓ８３）。Ｓ８３におけるＣＰＵ１０は、接合気泡検出手段として機能する。
具体的には、ＣＰＵ１０は、図２７に示す２値画像６９について、各画素の画素値が“１”であるか“０”であるかを判定し、画素値が“１”であると判定された画素の画素数Ｊを計数する。画素数Ｊが０個である場合、接合領域に接合気泡が存在しないことが検出され、画素数Ｊが１個以上である場合、接合領域に接合気泡が存在することが検出される。
【０１５４】
Ｓ８３の処理終了後、ＣＰＵ１０は、接合気泡の気泡率［％］を算出する（Ｓ８４）。Ｓ８４の処理では、ＣＰＵ１０は、Ｓ８３で検出した接合気泡の画素数Ｊを、接合領域全体の画素数で除算した百分率を算出する。Ｓ８４におけるＣＰＵ１０は、接合気泡率算出手段として機能する。
図２７に示す２値画像６９の場合、画素数Ｊは画素群６９５，６９６，６９７，６９８に含まれる画素の個数９個であり、接合領域全体の画素数は１０８（＝１２×９）個であるため、気泡率は８．３３％である。
Ｓ８４の処理終了後、ＣＰＵ１０は、Ｓ８４で算出した気泡率と、ＨＤＤ１５に記憶してあるＸ線画像とを、気泡演算結果として表示部１３に表示して（Ｓ８５）、気泡演算処理を終了する。
【０１５５】
以上のような気泡率演算装置３は、放熱基板４２のメッキ部分４５，４５，…に位置する部分気泡の有無と、メッキ部分４５，４５，…を除く接合領域に位置する領域気泡の有無とを、同時的に、しかも容易且つ正確に検出して、接合領域全体の正確な気泡率を求めることができる。
【０１５６】
なお、閾値Ｉ，Ｏ，Ｐを全て同値とする場合は、２値化の前に、ビアホール４４の内側、外側、及びメッキ部分４５夫々のＸ線透過率の差異を、領域画像上で補正する必要がある（実施の形態４参照）。
また、閾値Ｉと閾値Ｐとが同値であり、閾値Ｏのみがこれらとは異なる（又は、閾値Ｏと閾値Ｐとが同値であり、閾値Ｉのみがこれらとは異なる）ものとする場合は、ビアホール４４の内側及びメッキ部分４５夫々のＸ線透過率の差異を、領域画像上で補正する必要がある。同様に、閾値Ｏと閾値Ｐとが同値であり、閾値Ｉのみがこれらとは異なるものとする場合は、ビアホール４４の外側及びメッキ部分４５夫々のＸ線透過率の差異を、領域画像上で補正する必要がある。
【０１５７】
実施の形態  ４．
図２８は、本発明の実施の形態４に係る気泡率演算装置３で実行される気泡検出処理の手順を示すフローチャートである。
本実施の形態の気泡率演算装置３のハードウェア構成は、実施の形態１〜３の気泡率演算装置３のハードウェア構成と同様であり、本実施の形態の気泡率演算装置３が気泡の有無を検出すべき半導体装置４は、実施の形態１〜３の半導体装置４の構成と同様である。このため、実施の形態１〜３に対応する部分には同一符号を付してそれらの説明を省略する。
また、図２８に示すＳ１１及びＳ１２の処理は、図４に示すＳ１１及びＳ１２の処理と同様であるため、説明を省略する。
【０１５８】
図２９は、気泡率演算装置３で撮影されたＸ線画像の一例を示す模式図である。
図中８１０はＸ線画像であり、Ｘ線画像８１０は、撮影装置２から入力されて、Ｓ１２の処理でＨＤＤ１５に記憶されたものである。Ｘ線画像８１０の各画素は、“０．００”以上“１．００”以下の多値の画素値を有する。図中、縦２０マス、横２５マス（５００マス）の正方形夫々は、Ｘ線画像８１０に含まれている個々の画素である。
【０１５９】
図２９に右下がりの粗いハッチングで示した画素８１１，８１１，…夫々は、画素値Ｐ1 （＝０．２０）を有する。また、白抜きで示した画素８１２，８１２，…夫々は、画素値Ｐ2 （＝０．８０）を有する。更に、右上がりの粗いハッチングで示した画素８１３，８１３，…夫々は、画素値Ｐ3 （＝０．４０）を有する。交差する粗いハッチングで示した画素８１４，８１４，…夫々は、画素値Ｐ4 （＝０．７０）を有する。更にまた、白抜きで示した画素８１５，８１５，…夫々は、画素値Ｐ5 （＝１．００）を有する。画素値Ｐ5 を有する画素８１５，８１５，…夫々は、明らかに放熱基板４２（即ち半導体装置４）が存在しない部分に対応する。
【０１６０】
右下がりの細かいハッチングで示した画素８１６，８１６，…夫々は、画素値Ｐ6 （＝０．３２）を有する。また、右上がりの細かいハッチングで示した画素８１７，８１７，…夫々は、画素値Ｐ7 （＝０．１６）を有する。交差する細かいハッチングで示した画素８１８，８１８，…夫々は、画素値Ｐ8 （＝０．０８）を有する。
各画素８１１〜８１３は、半田層４３に混入した気泡を示す画素の例であり、各画素８１６〜８１８は、半田層４３を示す画素の例である。
【０１６１】
図２８に示すＳ１２の処理終了後、ＣＰＵ１０は、後述する係数画像をＨＤＤ１５から読み出して（Ｓ７１）、ＲＡＭ１２に展開する。
図２に示すＨＤＤ１５には、本実施の形態の気泡演算方法を実行する場合に必要なデータとして、係数画像が記憶されている。
【０１６２】
係数画像は多値画像であり、実施の形態１のビア設計図データ及びパターン図データと、放熱基板４２の各部の材質について、Ｘ線が透過するＸ線透過率を示すＸ線透過テーブルと、半導体素子４１が接合されていない放熱基板４２を、半導体装置４をＸ線撮影する場合と同様にして撮影装置２で撮影してなる多値のＸ線画像の各画素値とを用いて生成されたものである。なお、Ｘ線透過率ではなく、Ｘ線吸収率であってもよい。
係数画像の各画素値は、Ｘ線画像から、放熱基板４２を構成する各部の材質及び厚さの影響を除去するための補正係数である。
【０１６３】
本実施の形態の気泡検出方法は、放熱基板４２を構成する各部の材質及び厚さと、放熱基板４２そのもののＸ線画像とに基づいて、半導体素子４１と放熱基板４２との接合領域を示す領域画像を補正する。この結果、放熱基板４２の厚さのみを考慮した近似曲線を用いて領域画像を補正する従来の気泡検出方法に比べて、正確な補正が行なわれる。
以下では、説明を簡単にするために、接合領域において気泡の透過率が１００％であり、半田層４３の透過率が４０％である場合を例示する。
【０１６４】
図３０は、気泡率演算装置３で用いられる係数画像の一例を示す模式図である。
図中８２０は係数画像であり、係数画像８２０は、演算装置１のＨＤＤ１５に予め記憶されている。
図中、縦２０マス、横２５マス（５００マス）の正方形夫々は、係数画像８２０に含まれている個々の画素であり、各画素は、“０．００”以上“１．００”以下の多値の画素値を有する。各画素の画素値は、撮影装置２から演算装置１に入力されるＸ線画像の対応する画素の補正係数を示す。
以下、図３及び図３０を参照して説明する。
【０１６５】
図３０に右上がりのハッチングで示した画素群８２１，８２１，…夫々は、補正係数Ｒ1 （＝０．２０）を有する各１２個の画素である。各画素群８２１は、白抜きで示した画素群８２２を囲繞してロ字状に配されている。各画素群８２２は４個の画素であり、夫々補正係数Ｒ2 （＝０．８０）を有する。
各画素群８２１は、ビアホール４４の内周部４２ｂに対応し、画素群８２２は、ビアホール４４の中央部４２ａに対応する。画素群８２１，８２１，…には、千鳥配置されている６個のビアホール４４，４４，…夫々の設計上の半径、メッキ厚、及び中心座標が反映されている。
【０１６６】
右下がりのハッチングで示した画素群８２３は、補正係数Ｒ3 （＝０．４０）を有する３２２個の画素であり、ビアホール４４，４４，…の外部４２ｃに対応する。従って、画素群８２３の外形状が、半導体素子４１と放熱基板４２との接合領域（換言すれば、半田層４３）の外形状を示す。
また、交差するハッチングで示した画素群８２４は、補正係数Ｒ4 （＝０．７０）を有する２７個の画素であり、例えば積層体４２３に圧着されている金属基板４２４に対応する。従って、画素群８２３，８２４の外形状が、放熱基板４２の外形状を示す。
【０１６７】
更に、白抜きで示した画素群８２５は、補正係数Ｒ5 （＝１．００）を有する５５個の画素であり、放熱基板４２（即ち半導体装置４）が存在しない部分に対応する。
従って、半導体素子４１と放熱基板４２との接合領域に対応する領域係数画像８２は、係数画像８２０の画素群８２４，８２５を除いた部分である。
【０１６８】
図２８に示すＳ７１の処理終了後、ＣＰＵ１０は、ＨＤＤ１５に記憶してあるＸ線画像のコピーを読み出してＲＡＭ１２に展開し、Ｓ７１で読み出した係数画像に基づき、Ｘ線画像において接合領域を示す領域画像を特定する（Ｓ７２）。
【０１６９】
Ｘ線画像８１０及び係数画像８２０を用いる場合、ＣＰＵ１０は、まず、Ｘ線画像８１０の各画素値を所定の閾値（例えば“０．９０”）とを比較し、閾値以上の画素値を有する画素をマスキングすることによって、Ｘ線画像８１０における放熱基板４２の外形状を得る。更に、ＣＰＵ１０は、係数画像８２０において接合領域以外の領域を示す画素群８２４の外形状及び補正係数Ｒ4 とに基づき、Ｘ線画像８１０において補正係数Ｒ4 に等しい画素値を有する画素８１４，８１４，…をマスキングすることによって、領域画像８１を特定する。
なお、例えばパターン図データを用いてＸ線画像中の領域画像を特定する構成でもよい。
【０１７０】
図２８に示すＳ７２の処理終了後、ＣＰＵ１０は、Ｘ線画像及び係数画像夫々に含まれる接合領域の外形状を基準に、領域画像に設定されるｘ−ｙ座標系の原点と領域係数画像に設定されるｘ−ｙ座標系の原点とを一致させ（Ｓ７３）、領域画像の各画素値を、領域係数画像の対応する画素値で補正して補正後領域画像を生成する（Ｓ７４）。
Ｘ線画像８１０及び係数画像８２０を用いる場合、まず、ＣＰＵ１０は、Ｘ線画像８１０及び係数画像８２０と夫々に含まれる接合領域の外形状を基準に、領域画像８１に設定されるｘ−ｙ座標系の原点と領域係数画像８２に設定されるｘ−ｙ座標系の原点とを一致させる。
【０１７１】
更に、ＣＰＵ１０は、領域画像８１の各画素値を、領域係数画像８２の対応する画素値で除算した除算結果を画素値とする補正後領域画像８３を生成する（後述する図３１参照）。
図３１は、気泡率演算装置３で生成される補正後領域画像の一例を示す模式図である。
図中８３は補正後領域画像であり、補正後領域画像８３は、Ｓ７４でＸ線画像８１０の領域画像８１が補正されてなる補正後Ｘ線画像８３０に含まれている。図中、縦２０マス、横２５マス（５００マス）の正方形夫々は、補正後Ｘ線画像８３０に含まれている個々の画素である。
【０１７２】
補正後領域画像８３の各画素は、“０．００”以上“１．００”以下の多値の画素値を有する。白抜きで示した９７個の画素８３１，８３１，…は、夫々画素値“１．００”を有し、交差する細かいハッチングで示した３２１個の画素８３２，８３２，…は、夫々画素値“０．４０”を有する。
一方、右上がりの粗いハッチングで示した８２個の画素８３３，８３３，…は、夫々マスキングされている。
【０１７３】
補正後領域画像８３において、領域画像８１の画素８１１に対応する画素８３１は、補正後の画素値Ｂ1 を有する。領域画像８１の画素８１１には領域係数画像８２の画素群８２１に含まれる画素が対応するため、画素値Ｂ1 は、画素値Ｐ1 及び補正係数Ｒ1 に基づいて、下記のように算出される。
Ｂ1 ＝Ｐ1 ／Ｒ1 ＝０．２０／０．２０＝１．００  （１）
同様に、補正後領域画像８３において、領域画像８１の画素８１２に対応する画素８３１は、補正後の画素値Ｂ2 を有する。領域画像８１の画素８１２には領域係数画像８２の画素群８２２に含まれる画素が対応するため、画素値Ｂ2 は、画素値Ｐ2 及び補正係数Ｒ2 に基づいて、下記のように算出される。
Ｂ2 ＝Ｐ2 ／Ｒ2 ＝０．８０／０．８０＝１．００  （２）
【０１７４】
補正後領域画像８３において、領域画像８１の画素８１３に対応する画素８３１は、補正後の画素値Ｂ3 を有する。領域画像８１の画素８１３には領域係数画像８２の画素群８２３に含まれる画素が対応するため、画素値Ｂ3 は、画素値Ｐ3 及び補正係数Ｒ3 に基づいて、下記のように算出される。
Ｂ3 ＝Ｐ3 ／Ｒ3 ＝０．４０／０．４０＝１．００  （３）
補正後領域画像８３において、領域画像８１の画素８１６に対応する画素８３２は、補正後の画素値Ｂ6 を有する。領域画像８１の画素８１６には領域係数画像８２の画素群８２２に含まれる画素が対応するため、画素値Ｂ6 は、画素値Ｐ6 及び補正係数Ｒ2 に基づいて、下記のように算出される。
Ｂ6 ＝Ｐ6 ／Ｒ2 ＝０．３２／０．８０＝０．４０  （４）
【０１７５】
補正後領域画像８３において、領域画像８１の画素８１７に対応する画素８３２は、補正後の画素値Ｂ7 を有する。領域画像８１の画素８１７には領域係数画像８２の画素群８２３に含まれる画素が対応するため、画素値Ｂ7 は、画素値Ｐ7 及び補正係数Ｒ3 に基づいて、下記のように算出される。
Ｂ7 ＝Ｐ7 ／Ｒ3 ＝０．１６／０．４０＝０．４０  （５）
補正後領域画像８３において、領域画像８１の画素８１８に対応する画素８３２は、補正後の画素値Ｂ8 を有する。領域画像８１の画素８１８には領域係数画像８２の画素群８２１に含まれる画素が対応するため、画素値Ｂ8 は、画素値Ｐ1 及び補正係数Ｒ1 に基づいて、下記のように算出される。
Ｂ8 ＝Ｐ8 ／Ｒ1 ＝０．０８／０．２０＝０．４０  （６）
【０１７６】
以上のようにして求められた補正後領域画像８３からは、放熱基板４２を構成する各部の材質及び厚さの影響が除去されているため、画素値“１．００”を有する画素８３１は、メッキ部分４５に位置するか否かを問わず、接合領域に位置する気泡を示す。
【０１７７】
図３２は、気泡率演算装置３が気泡の有無を検出すべき半導体装置の模式的な構成を示す縦断面図であり、半田層４３近傍の拡大図を示している。
図中Ｐ1 〜Ｐ9 は、放熱基板４２における対応する位置の画素値であり、図中Ｒ1 〜Ｒ3 は、放熱基板４２における対応する位置の補正係数である。
気泡Ａと半田層４３との境界においては、半田層４３の厚みが徐々に変化することが多いため、画素値Ｐ9 を補正係数Ｒ2 で除算した結果は“０．４０”〜“１．００”の中間の値になる。
従って、補正後領域画像８３に基づいて直接的に気泡の有無を判定せず、まず、補正後領域画像８３を２値化して、気泡Ａと半田層４３との境界における半田層４３の厚みの変化の影響を除去する必要がある。
【０１７８】
図２８に示すＳ７４の処理終了後、ＣＰＵ１０は、Ｓ７４で生成した補正後領域画像を２値化して２値画像を生成する（Ｓ７５）。
補正後領域画像８３の場合、Ｓ７５の処理で実行される２値化は、補正後領域画像８３を、マスキングされている画素８３３，８３３，…を除いて、所定の閾値で２値化するものであり、閾値以上の画素値を有する画素を画素値“１”とし、閾値未満の画素値を有する画素を画素値“０”とする。例えば閾値が“０．５０”である場合、画素８３１，８３１，…の各画素値は“１”になり、画素８３２，８３２，…の各画素値は“０”になる。
【０１７９】
Ｓ７５の処理終了後、ＣＰＵ１０は、接合領域全体について、気泡の有無を検出する気泡有無検出を行なう（Ｓ７６）。
具体的には、ＣＰＵ１０は、マスキングされている画素８３３，８３３，…を除いて、各画素の画素値が“１”であるか“０”であるかを判定し、画素値が“１”であると判定された画素の画素数Ｊを計数する。画素数Ｊが０個である場合、接合領域に気泡が存在しないことが検出され、画素数Ｊが１個以上である場合、接合領域に気泡が存在することが検出される。
【０１８０】
Ｓ７６の処理終了後、ＣＰＵ１０は、接合領域全体の気泡率［％］を算出する（Ｓ７７）。Ｓ７７の処理では、ＣＰＵ１０は、Ｓ７６で検出した気泡の画素数Ｊを、接合領域全体の画素数で除算した百分率を算出する。
補正後領域画像８３の場合、画素数Ｊは画素８３１，８３１，…の個数９７個であり、接合領域全体の画素数は４１８（＝１９×２２）個であるため、気泡率は２３．２１％である。
Ｓ７７の処理終了後、ＣＰＵ１０は、Ｓ７７で算出した気泡率と、ＨＤＤ１５に記憶してあるＸ線画像とを、気泡演算結果として表示部１３に表示して（Ｓ７８）、気泡演算処理を終了する。
【０１８１】
以上のような気泡率演算装置３は、放熱基板４２のメッキ部分４５，４５，…と、メッキ部分４５，４５，…を除く接合領域とを区別することなく、接合領域全体に位置する気泡の有無とを容易且つ正確に検出して、接合領域全体の正確な気泡率を求めることができる。
また、係数画像は、放熱基板４２のＸ線画像を用いてなるため、係数画像に含まれるメッキ部分４５，４５，…に対応する画素と、半導体装置４をＸ線撮影してなるＸ線画像に含まれるメッキ部分４５，４５，…に対応する画素とが位置ズレを生じている可能性は少ないため、実施の形態１のＳ１７で実行したマスク画像の補正のような処理を係数画像に対して実行する必要はない。この結果、演算時間を短縮することができる。
【０１８２】
実施の形態  ５．
図３３は、本発明の実施の形態５に係る気泡率演算装置３が気泡の有無を検出すべき半導体装置の模式的な構成を示す縦断面図である。
本実施の形態の気泡率演算装置３のハードウェア構成は、実施の形態１〜４の気泡率演算装置３のハードウェア構成と同様である。
一方、本実施の形態の気泡率演算装置３が気泡の有無を検出すべき半導体装置４は、実施の形態１〜４の半導体装置４とは異なり、半導体素子４１と放熱基板４２との間に、熱伝播基板４７が接合されている。
その他、実施の形態１〜４に対応する部分には同一符号を付してそれらの説明を省略する。
【０１８３】
まず、半導体装置４の構成を説明する。
熱伝播基板４７は、銅を用いてなる矩形状であり、積層体４２３の一面には、図示しないニッケルメッキ層及び金メッキ層を介して、熱伝播基板４７の一面（図中下面）が半田付けされている。また、熱伝播基板４７の他面（図中上面）には、半導体素子４１の一面（図中下面）が半田付けされている。
このため、作動中の半導体素子４１が発した熱は、熱伝播基板４７を介して放熱基板４２へ伝播する。
【０１８４】
図中４３１は、半導体素子４１と熱伝播基板４７とを接合している半田層であり、半田層４３１には、半田付けの際に気泡が混入することがある。また、図中４３２は、熱伝播基板４７と積層体４２３の一面（即ち放熱基板４２の一面）とを接合している半田層であり、半田層４３２には、半田付けの際に気泡が混入することがある。半田層４３１は、半田層４３２よりも高温で形成される。
半導体装置４は、半導体素子４１と熱伝播基板４７とを半田で接合してから、半導体素子４１が接合された熱伝播基板４７と放熱基板４２とを半田で接合することによって製造される。
【０１８５】
半田層４３１に混入している気泡の気泡率は、従来の気泡率演算方法で求めればよい。
即ち、気泡率演算装置３のユーザは、半導体素子４１と熱伝播基板４７とを半田で接合してなる接合体を撮影装置２の内部に載置する。このとき、放熱基板４２はまだ接合体に接合されていない。
撮影装置２は、半導体素子４１側から熱伝播基板４７に対して垂直にＸ線２１ａを照射することによって、多値のＸ線画像を撮影して、演算装置１へ出力する。
【０１８６】
演算装置１では、ＣＰＵ１０が、入力された多値のＸ線画像において領域画像を特定し、特定した領域画像を所定の閾値で２値化することによって２値画像を生成し、画素値“１”の画素数を領域画像全体の画素値で除算した百分率（即ち、半田層４３１に混入している気泡の気泡率）を算出する。以下では、この２値画像を接合体２値画像という。
【０１８７】
半田層４３２に混入している気泡の気泡率を求める場合、気泡率演算装置３のユーザは、接合体に放熱基板４２を接合してなる半導体装置４を撮影装置２の内部に載置する。
撮影装置２は、半導体素子４１側から放熱基板４２に対して垂直にＸ線２１ａを照射することによって、多値のＸ線画像を撮影して、演算装置１へ出力する。
【０１８８】
演算装置１では、ＣＰＵ１０が、入力された多値のＸ線画像において領域画像を特定し、特定した領域画像を、接合体２値画像に基づいてマスキングすることによって、半田層４３１に混入している気泡に対応する画素をマスキングする。更に詳細には、ＣＰＵ１０は、接合体２値画像において画素値“１”の画素に対応する領域画像の画素をマスキングする。
この後、マスキングされた領域画像を用い、マスキングされていない画素に対して、実施の形態１〜４の気泡率演算処理を適用することによって、半田層４３２に混入している気泡の気泡率が求められる。
【０１８９】
具体的には、実施の形態１〜３の気泡率演算処理を適用する場合、図４、図２５、及び図２６に示すＳ１３とＳ１４との間に、Ｓ１３で特定した領域画像を、接合体２値画像に基づいてマスキングする処理が追加される。実施の形態４の気泡率演算処理を適用する場合、図２８に示すＳ７２とＳ７３との間に、Ｓ７２で特定した領域画像を、接合体２値画像に基づいてマスキングする処理が追加される。
以上のような気泡演算装置３は、実施の形態１〜４と同様の効果を奏する。
【０１９０】
実施の形態  ６．
本実施の形態の気泡率演算装置３のハードウェア構成は、実施の形態１〜５の気泡率演算装置３のハードウェア構成と同様であり、本実施の形態の気泡率演算装置３が気泡の有無を検出すべき半導体装置４は、実施の形態５の半導体装置４の構成と同様である。
その他、実施の形態１〜５に対応する部分には同一符号を付してそれらの説明を省略する。
【０１９１】
半導体装置４の半田層４３１に混入している気泡の気泡率は、実施の形態５と同様に、従来の気泡率演算方法で求めればよい。
即ち、気泡率演算装置３のユーザは、半導体素子４１と熱伝播基板４７とを半田で接合してなる接合体を撮影装置２の内部に載置する。このとき、放熱基板４２はまだ接合体に接合されていない。
撮影装置２は、半導体素子４１側から熱伝播基板４７に対して垂直にＸ線２１ａを照射することによって、多値のＸ線画像を撮影して、演算装置１へ出力する。以下では、このＸ線画像を、接合体Ｘ線画像という。
【０１９２】
演算装置１では、ＣＰＵ１０が、入力された多値の接合体Ｘ線画像において領域画像を特定し、特定した領域画像を所定の閾値で２値化することによって接合体２値画像を生成し、画素値“１”の画素数を領域画像全体の画素値で除算した百分率（即ち、半田層４３１に混入している気泡の気泡率）を算出する。
【０１９３】
半田層４３２に混入している気泡の気泡率を求める場合、気泡率演算装置３のユーザは、接合体に放熱基板４２を接合してなる半導体装置４を撮影装置２の内部に載置する。
撮影装置２は、半導体素子４１側から放熱基板４２に対して垂直にＸ線２１ａを照射することによって、多値のＸ線画像を撮影して、演算装置１へ出力する。
【０１９４】
演算装置１では、接合体Ｘ線画像に基づいて、気泡補正画像を生成する。気泡補正画像は多値画像であり、気泡補正画像の各画素値は、Ｘ線画像から、半田層４３１における気泡の有無の影響を除去するための補正係数である。
ＣＰＵ１０は、入力された多値のＸ線画像において、係数画像に基づいて領域画像を特定し、特定した領域画像を、係数画像及び気泡補正係数に基づいて補正する。
この後、補正された領域画像を用い、実施の形態４の気泡率演算処理を適用することによって、気泡率が求められる。
【０１９５】
つまり、図２８に示すＳ１１の前に、接合体Ｘ線画像に基づいて気泡補正画像を生成する処理が追加され、Ｓ７４の処理が、Ｓ７２で特定した領域画像の各画素値を、係数画像及び気泡補正画像夫々の対応する画素値で補正して補正後領域画像を生成する処理に変更される。
以上のような気泡演算装置３は、実施の形態４と同様の効果を奏する。
【０１９６】
なお、今回開示された実施の形態は、全ての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上述した意味ではなく、特許請求の範囲と均等の意味及び特許請求の範囲内での全ての変更が含まれることが意図される。
また、本発明の効果がある限りにおいて、気泡率演算装置３に、実施の形態１〜６に開示されていない構成要素が含まれていてもよい。
【符号の説明】
【０１９７】
１０  ＣＰＵ、２１ａ  Ｘ線、３  気泡率演算装置、４  半導体装置、４１  半導体素子、４２  放熱基板、４４  ビアホール（穴）
【図１】
0005408376.tif 000002
【図２】
0005408376.tif 000003
【図３】
0005408376.tif 000004
【図４】
0005408376.tif 000005
【図５】
0005408376.tif 000006
【図６】
0005408376.tif 000007
【図７】
0005408376.tif 000008
【図８】
0005408376.tif 000009
【図９】
0005408376.tif 000010
【図１０】
0005408376.tif 000011
【図１１】
0005408376.tif 000012
【図１２】
0005408376.tif 000013
【図１３】
0005408376.tif 000014
【図１４】
0005408376.tif 000015
【図１５】
0005408376.tif 000016
【図１６】
0005408376.tif 000017
【図１７】
0005408376.tif 000018
【図１８】
0005408376.tif 000019
【図１９】
0005408376.tif 000020
【図２０】
0005408376.tif 000021
【図２１】
0005408376.tif 000022
【図２２】
0005408376.tif 000023
【図２３】
0005408376.tif 000024
【図２４】
0005408376.tif 000025
【図２５】
0005408376.tif 000026
【図２６】
0005408376.tif 000027
【図２７】
0005408376.tif 000028
【図２８】
0005408376.tif 000029
【図２９】
0005408376.tif 000030
【図３０】
0005408376.tif 000031
【図３１】
0005408376.tif 000032
【図３２】
0005408376.tif 000033
【図３３】
0005408376.tif 000034