(57)【要約】【課題】画素データがなだらかに変化する箇所に存在する輪郭を抽出する。【解決手段】入力画像から抽出された縦方向の画素データの配列について、隣接データとの差を算出し（Ｓ１２）、後から前へ向かう順に０以上の差を累積加算し（Ｓ１３）、前から後へ向かう順に０以上の差を累積加算し（Ｓ１４）、２つの累積値の差を算出し（Ｓ１５）、得られた評価値に対して閾値判定を行う（Ｓ１６）。横方向の画素データの配列に対しても同じ処理を行い（Ｓ２２〜Ｓ２６）、２つの閾値判定結果に対して論理演算を行う（Ｓ３１）。このように、配列内で前方および後方にある直近の極大値との差に基づく評価値を算出し、評価値に対して閾値判定を行うことにより輪郭抽出結果を求める。【選択図】図３
2008065726.tif 000002
【特許請求の範囲】
【請求項１】
画像から輪郭を抽出する輪郭抽出装置であって、
入力画像から所定方向の画素データの配列を順に抽出するデータ抽出部と、
前記配列に含まれる各データについて、配列内で前方および後方にある直近の極大値または極小値との差に基づく評価値を算出する評価値算出部と、
前記評価値に対して閾値判定を行うことにより輪郭抽出結果を求める輪郭判定部とを備えた、輪郭抽出装置。
【請求項２】
前記評価値算出部は、前記配列に含まれる各データについて前記評価値として、配列内で前方にある直近の極値が極大値であるときの当該極大値との差、および、配列内で後方にある直近の極値が極大値であるときの当該極大値との差の和を算出することを特徴とする、請求項１に記載の輪郭抽出装置。
【請求項３】
前記評価値算出部は、前記配列に含まれる各データについて隣接データとの差を算出し、前記配列内で後から前へ向かう順に第１の値以上の隣接データとの差を累積加算することにより、前記配列に含まれる各データについて配列内で前方にある直近の極大値との差を算出し、前記配列内で前から後へ向かう順に第２の値以下の隣接データとの差を累積加算することにより、前記配列に含まれる各データについて配列内で後方にある直近の極大値との差を算出することを特徴とする、請求項２に記載の輪郭抽出装置。
【請求項４】
前記第１の値と前記第２の値はゼロであることを特徴とする、請求項３に記載の輪郭抽出装置。
【請求項５】
前記第１の値は負であり、前記第２の値は正であることを特徴とする、請求項３に記載の輪郭抽出装置。
【請求項６】
前記評価値を算出する前に、前記入力画像に対して平滑化処理を行うフィルタ部をさらに備えた、請求項１に記載の輪郭抽出装置。
【請求項７】
前記データ抽出部は、前記入力画像から縦方向の画素データの配列を順に抽出すると共に、前記入力画像から横方向の画素データの配列を順に抽出し、
前記評価値算出部は、縦方向の画素データの配列について前記評価値を算出すると共に、横方向の画素データの配列について前記評価値を算出し、
前記輪郭判定部は、縦方向の画素データの配列についての評価値に対して閾値判定を行うと共に、横方向の画素データの配列についての評価値に対して閾値判定を行い、２つの閾値判定結果に対して論理演算を行うことにより、前記輪郭抽出結果を求めることを特徴とする、請求項１に記載の輪郭抽出装置。
【請求項８】
前記輪郭判定部は、２つの閾値判定結果に対して論理和演算を行うことにより、前記輪郭抽出結果を求めることを特徴とする、請求項７に記載の輪郭抽出装置。
【請求項９】
前記データ抽出部は、前記入力画像から縦方向と横方向のいずれか一方の画素データの配列を順に抽出し、
前記評価値算出部は、縦方向と横方向のいずれか一方の画素データの配列について前記評価値を算出し、
前記輪郭判定部は、縦方向と横方向のいずれか一方の画素データの配列についての評価値に対して閾値判定を行うことにより、前記輪郭抽出結果を求めることを特徴とする、請求項１に記載の輪郭抽出装置。
【請求項１０】
画像から輪郭を抽出する輪郭抽出方法であって、
入力画像から所定方向の画素データの配列を順に抽出するステップと、
前記配列に含まれる各データについて、配列内で前方および後方にある直近の極大値または極小値との差に基づく評価値を算出するステップと、
前記評価値に対して閾値判定を行うことにより輪郭抽出結果を求めるステップとを備えた、輪郭抽出方法。
【請求項１１】
画像から輪郭を抽出するためのプログラムであって、コンピュータに、
入力画像から所定方向の画素データの配列を順に抽出するステップと、
前記配列に含まれる各データについて、配列内で前方および後方にある直近の極大値または極小値との差に基づく評価値を算出するステップと、
前記評価値に対して閾値判定を行うことにより輪郭抽出結果を求めるステップとを実行させるためのプログラム。
【請求項１２】
前記評価値を算出するステップは、前記配列に含まれる各データについて前記評価値として、配列内で前方にある直近の極値が極大値であるときの当該極大値との差、および、配列内で後方にある直近の極値が極大値であるときの当該極大値との差の和を算出することを特徴とする、請求項１１に記載のプログラム。
【請求項１３】
前記評価値を算出するステップは、前記配列に含まれる各データについて隣接データとの差を算出し、前記配列内で後から前へ向かう順に第１の値以上の隣接データとの差を累積加算することにより、前記配列に含まれる各データについて配列内で前方にある直近の極大値との差を算出し、前記配列内で前から後へ向かう順に第２の値以下の隣接データとの差を累積加算することにより、前記配列に含まれる各データについて配列内で後方にある直近の極大値との差を算出することを特徴とする、請求項１２に記載のプログラム。
【請求項１４】
前記第１の値と前記第２の値はゼロであることを特徴とする、請求項１３に記載のプログラム。
【請求項１５】
前記第１の値は負であり、前記第２の値は正であることを特徴とする、請求項１３に記載のプログラム。
【請求項１６】
前記コンピュータに、前記評価値を算出する前に、前記入力画像に対して平滑化処理を行うステップを実行させることを特徴とする、請求項１１に記載のプログラム。
【請求項１７】
前記配列を抽出するステップは、前記入力画像から縦方向の画素データの配列を順に抽出すると共に、前記入力画像から横方向の画素データの配列を順に抽出し、
前記評価値を算出するステップは、縦方向の画素データの配列について前記評価値を算出すると共に、横方向の画素データの配列について前記評価値を算出し、
前記輪郭抽出結果を求めるステップは、縦方向の画素データの配列についての評価値に対して閾値判定を行うと共に、横方向の画素データの配列についての評価値に対して閾値判定を行い、２つの閾値判定結果に対して論理演算を行うことにより、前記輪郭抽出結果を求めることを特徴とする、請求項１１に記載のプログラム。
【請求項１８】
前記輪郭抽出結果を求めるステップは、２つの閾値判定結果に対して論理和演算を行うことにより、前記輪郭抽出結果を求めることを特徴とする、請求項１７に記載のプログラム。
【請求項１９】
前記配列を抽出するステップは、前記入力画像から縦方向と横方向のいずれか一方の画素データの配列を順に抽出し、
前記評価値を算出するステップは、縦方向と横方向のいずれか一方の画素データの配列について前記評価値を算出し、
前記輪郭抽出結果を求めるステップは、縦方向と横方向のいずれか一方の画素データの配列についての評価値に対して閾値判定を行うことにより、前記輪郭抽出結果を求めることを特徴とする、請求項１１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理技術に関し、特に、画像から輪郭を抽出する輪郭抽出装置、輪郭抽出方法および輪郭抽出プログラムに関する。
【背景技術】
【０００２】
画像処理の分野では、画像から輪郭を抽出する輪郭抽出処理がよく行われる。従来の輪郭抽出処理では、画像にエッジ検出フィルタを適用してエッジ画像を求め、エッジ画像に対して閾値判定を行うことにより、輪郭が抽出される。例えば、Ｓｏｂｅｌフィルタを用いた輪郭抽出処理では、図８（ａ）に示す縦方向のエッジ検出フィルタを適用した画像と、図８（ｂ）に示す横方向のエッジ検出フィルタを適用した画像の平均がエッジ画像となり、得られたエッジ画像に対して閾値判定が行われる。
【０００３】
輪郭抽出処理に関しては、従来から以下のような技術が知られている。特許文献１には、画像データについて１次微分値と２次微分値を求め、１次微分値の大小と２次微分値の正負に応じて画像データを補正するエッジ処理方法が開示されている。特許文献２には、頻度分布の大きいほうから２つの山を選定し、２つの山のピーク間で暗のピークから谷底に向かう下降部の中腹の点の濃度を２値化閾値として用いることが開示されている。
【特許文献１】特開２０００−３３１１７４号公報
【特許文献２】特開昭６４−８２１８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の輪郭抽出処理で用いられるエッジ検出フィルタは、画素データと周囲８個の隣接画素データとに対して演算を行う。このようなエッジ検出フィルタを用いた従来の輪郭抽出処理によれば、隣接画素間で画素データが大きく変化する箇所に存在する輪郭を抽出することができる。
【０００５】
しかしながら、画像によっては、隣接画素間で画素データが大きく変化する箇所だけでなく、画素データがなだらかに変化する箇所にも輪郭が存在する場合がある。ところが、従来の輪郭抽出処理は、画素データと周囲８個の隣接画素データとに対して演算を行うエッジ検出フィルタを使用するので、画素データがなだらかに変化する箇所に存在する輪郭を抽出することができない。このように従来の輪郭抽出処理では、輪郭を正しく抽出できないことがある。
【０００６】
それ故に、本発明は、画素データがなだらかに変化する箇所に存在する輪郭を抽出できる輪郭抽出装置、輪郭抽出方法および輪郭抽出プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の発明は、画像から輪郭を抽出する輪郭抽出装置であって、
入力画像から所定方向の画素データの配列を順に抽出するデータ抽出部と、
前記配列に含まれる各データについて、配列内で前方および後方にある直近の極大値または極小値との差に基づく評価値を算出する評価値算出部と、
前記評価値に対して閾値判定を行うことにより輪郭抽出結果を求める輪郭判定部とを備える。
【０００８】
第２の発明は、第１の発明において、
前記評価値算出部は、前記配列に含まれる各データについて前記評価値として、配列内で前方にある直近の極値が極大値であるときの当該極大値との差、および、配列内で後方にある直近の極値が極大値であるときの当該極大値との差の和を算出することを特徴とする。
【０００９】
第３の発明は、第２の発明において、
前記評価値算出部は、前記配列に含まれる各データについて隣接データとの差を算出し、前記配列内で後から前へ向かう順に第１の値以上の隣接データとの差を累積加算することにより、前記配列に含まれる各データについて配列内で前方にある直近の極大値との差を算出し、前記配列内で前から後へ向かう順に第２の値以下の隣接データとの差を累積加算することにより、前記配列に含まれる各データについて配列内で後方にある直近の極大値との差を算出することを特徴とする。
【００１０】
第４の発明は、第３の発明において、
前記第１の値と前記第２の値はゼロであることを特徴とする。
【００１１】
第５の発明は、第３の発明において、
前記第１の値は負であり、前記第２の値は正であることを特徴とする。
【００１２】
第６の発明は、第１の発明において、
前記評価値を算出する前に、前記入力画像に対して平滑化処理を行うフィルタ部をさらに備える。
【００１３】
第７の発明は、第１の発明において、
前記データ抽出部は、前記入力画像から縦方向の画素データの配列を順に抽出すると共に、前記入力画像から横方向の画素データの配列を順に抽出し、
前記評価値算出部は、縦方向の画素データの配列について前記評価値を算出すると共に、横方向の画素データの配列について前記評価値を算出し、
前記輪郭判定部は、縦方向の画素データの配列についての評価値に対して閾値判定を行うと共に、横方向の画素データの配列についての評価値に対して閾値判定を行い、２つの閾値判定結果に対して論理演算を行うことにより、前記輪郭抽出結果を求めることを特徴とする。
【００１４】
第８の発明は、第７の発明において、
前記輪郭判定部は、２つの閾値判定結果に対して論理和演算を行うことにより、前記輪郭抽出結果を求めることを特徴とする。
【００１５】
第９の発明は、第１の発明において、
前記データ抽出部は、前記入力画像から縦方向と横方向のいずれか一方の画素データの配列を順に抽出し、
前記評価値算出部は、縦方向と横方向のいずれか一方の画素データの配列について前記評価値を算出し、
前記輪郭判定部は、縦方向と横方向のいずれか一方の画素データの配列についての評価値に対して閾値判定を行うことにより、前記輪郭抽出結果を求めることを特徴とする。
【００１６】
第１０の発明は、画像から輪郭を抽出する輪郭抽出方法であって、
入力画像から所定方向の画素データの配列を順に抽出するステップと、
前記配列に含まれる各データについて、配列内で前方および後方にある直近の極大値または極小値との差に基づく評価値を算出するステップと、
前記評価値に対して閾値判定を行うことにより輪郭抽出結果を求めるステップとを備える。
【００１７】
第１１の発明は、画像から輪郭を抽出するためのプログラムであって、コンピュータに、
入力画像から所定方向の画素データの配列を順に抽出するステップと、
前記配列に含まれる各データについて、配列内で前方および後方にある直近の極大値または極小値との差に基づく評価値を算出するステップと、
前記評価値に対して閾値判定を行うことにより輪郭抽出結果を求めるステップとを実行させる。
【００１８】
第１２の発明は、第１１の発明において、
前記評価値を算出するステップは、前記配列に含まれる各データについて前記評価値として、配列内で前方にある直近の極値が極大値であるときの当該極大値との差、および、配列内で後方にある直近の極値が極大値であるときの当該極大値との差の和を算出することを特徴とする。
【００１９】
第１３の発明は、第１２の発明において、
前記評価値を算出するステップは、前記配列に含まれる各データについて隣接データとの差を算出し、前記配列内で後から前へ向かう順に第１の値以上の隣接データとの差を累積加算することにより、前記配列に含まれる各データについて配列内で前方にある直近の極大値との差を算出し、前記配列内で前から後へ向かう順に第２の値以下の隣接データとの差を累積加算することにより、前記配列に含まれる各データについて配列内で後方にある直近の極大値との差を算出することを特徴とする。
【００２０】
第１４の発明は、第１３の発明において、
前記第１の値と前記第２の値はゼロであることを特徴とする。
【００２１】
第１５の発明は、第１３の発明において、
前記第１の値は負であり、前記第２の値は正であることを特徴とする。
【００２２】
第１６の発明は、第１１の発明において、
前記コンピュータに、前記評価値を算出する前に、前記入力画像に対して平滑化処理を行うステップを実行させることを特徴とする。
【００２３】
第１７の発明は、第１１の発明において、
前記配列を抽出するステップは、前記入力画像から縦方向の画素データの配列を順に抽出すると共に、前記入力画像から横方向の画素データの配列を順に抽出し、
前記評価値を算出するステップは、縦方向の画素データの配列について前記評価値を算出すると共に、横方向の画素データの配列について前記評価値を算出し、
前記輪郭抽出結果を求めるステップは、縦方向の画素データの配列についての評価値に対して閾値判定を行うと共に、横方向の画素データの配列についての評価値に対して閾値判定を行い、２つの閾値判定結果に対して論理演算を行うことにより、前記輪郭抽出結果を求めることを特徴とする。
【００２４】
第１８の発明は、第１７の発明において、
前記輪郭抽出結果を求めるステップは、２つの閾値判定結果に対して論理和演算を行うことにより、前記輪郭抽出結果を求めることを特徴とする。
【００２５】
第１９の発明は、第１１の発明において、
前記配列を抽出するステップは、前記入力画像から縦方向と横方向のいずれか一方の画素データの配列を順に抽出し、
前記評価値を算出するステップは、縦方向と横方向のいずれか一方の画素データの配列について前記評価値を算出し、
前記輪郭抽出結果を求めるステップは、縦方向と横方向のいずれか一方の画素データの配列についての評価値に対して閾値判定を行うことにより、前記輪郭抽出結果を求めることを特徴とする。
【発明の効果】
【００２６】
上記第１、第１０または第１１の発明によれば、画素データの配列に含まれる各データについて、配列内で直近の極大値（または直近の極小値）との差に基づく評価値が算出され、算出された評価値に対して閾値判定が行われる。このため、画素データがなだらかに変化する箇所でも、当該箇所についての評価値が大きい場合には、その箇所には輪郭があると判定される。したがって、画素データがなだらかに変化する箇所に存在する輪郭を抽出することができる。
【００２７】
上記第２または第１２の発明によれば、画素データの配列に含まれる各データについて評価値として、配列内で前後にある直近の極大値との差の和（２つの差の和）が算出される。この評価値は、画素データの配列内で、周囲よりも小さいデータが存在する箇所（凹部）で大きくなる。したがって、このような性質を有する評価値を用いることにより、画素データがなだらかに変化する箇所に輪郭が存在する場合でも、当該箇所についての評価値が大きくなるので、輪郭を抽出することができる。
【００２８】
上記第３または第１３の発明によれば、配列内で後から前へ向かう順に第１の値以上の隣接データとの差を累積加算し、配列内で前から後へ向かう順に第２の値以下の隣接データとの差を累積加算することにより、配列に含まれる各データについて前後にある直近の極大値との差を容易に算出することができる。
【００２９】
上記第４または第１４の発明によれば、配列内で後から前へ向かう順にゼロ以上の隣接データとの差を累積加算し、配列内で前から後へ向かう順にゼロ以下の隣接データとの差を累積加算することにより、配列に含まれる各データについて前後にある直近の極大値との差を容易に算出することができる。
【００３０】
上記第５または第１５の発明によれば、配列内で後から前へ向かう順にある負の値以上の隣接データとの差を累積加算し、配列内で前から後へ向かう順にある正の値以下の隣接データとの差を累積加算することにより、画素データの微小な変化の影響を排除して、配列に含まれる各データについて前後にある直近の極大値との差を容易に算出することができる。
【００３１】
上記第６または第１６の発明によれば、画素データの微小な変化の影響を排除して、画素データがなだらかに変化する箇所に存在する輪郭を抽出することができる。
【００３２】
上記第７または第１７の発明によれば、評価値の算出と閾値判定は、縦方向の画素データの配列と横方向の画素データの配列について行われ、輪郭抽出結果は２つの閾値判定結果に基づき求められる。したがって、一方向の画素データの配列について評価値の算出と閾値判定を行うときよりも、より高い精度で輪郭を抽出することができる。
【００３３】
上記第８または第１８の発明によれば、輪郭抽出結果は２つの閾値判定結果の論理和となる。したがって、１つの閾値判定結果を用いるときよりも、より多くの輪郭を抽出することができる。
【００３４】
上記第９または第１９の発明によれば、評価値の算出と閾値判定は、縦方向の画素データの配列と横方向の画素データの配列のいずれか一方についてのみ行われる。したがって、画素データがなだらかに変化する箇所に存在する輪郭を簡単な処理で抽出することができる。
【発明を実施するための最良の形態】
【００３５】
図１は、本発明の実施形態に係る輪郭抽出装置の構成を示すブロック図である。図１に示す輪郭抽出装置１は、データ抽出部１０、評価値算出部２０、および、輪郭判定部３０を備えている。輪郭抽出装置１は、入力画像Ｘから輪郭を抽出し、輪郭抽出結果Ｙを出力する。入力画像Ｘは、２次元状に（縦方向と横方向に）並んだ複数の画素データを含んでいる。入力画像Ｘは、例えば、８ビットの画素データを縦方向に３８４個、横方向に５１２個並べたグレースケール画像である。
【００３６】
輪郭抽出装置１は、コンピュータと輪郭抽出プログラムとを用いて実現することができる。図２は、輪郭抽出装置１を実現するためのコンピュータの構成を示すブロック図である。図２に示すコンピュータ４０は、画像入力部４１、ＣＰＵ４２、表示部４３、および、記憶部４４を備えている。記憶部４４は、輪郭抽出プログラム５０と、画像入力部４１経由で入力された入力画像Ｘとを記憶する。ＣＰＵ４２は、輪郭抽出プログラム５０を実行することにより、入力画像Ｘについて輪郭抽出結果Ｙを求める。輪郭抽出結果Ｙは、記憶部４４に記憶され、例えば、入力画像Ｘと共に表示部４３に表示される。
【００３７】
図３は、輪郭抽出プログラム５０のフローチャートである。ＣＰＵ４２は、輪郭抽出プログラムに従い、図３に示すように、縦方向処理（ステップＳ１１〜Ｓ１７）と横方向処理（ステップＳ２１〜２７）と論理演算処理（ステップＳ３１）とを実行する。なお、縦方向処理と横方向処理の実行順序は、逆でもよい。図１と図３の対応づけを示すと、データ抽出部１０はステップＳ１１、Ｓ１７、Ｓ２１、Ｓ２７に対応し、評価値算出部２０はステップＳ１２〜Ｓ１５、Ｓ２２〜Ｓ２５に対応し、輪郭判定部３０はステップＳ１６、Ｓ２６、Ｓ３１に対応する。
【００３８】
縦方向処理では、ＣＰＵ４２は、入力画像Ｘから任意に縦方向の画素データの配列（１列分の画素データ）を抽出する（ステップＳ１１）。次に、ＣＰＵ４２は、ステップＳ１１で抽出した画素データの配列に対して評価値の算出と閾値判定を行い（ステップＳ１２〜Ｓ１６）、閾値判定結果を求める。次に、ＣＰＵ４２は、入力画像Ｘに含まれる縦方向の画素データの配列をすべて処理したか否かを判断し（ステップＳ１７）、否のときにはステップＳ１１へ進む。これにより、入力画像Ｘに含まれるすべての縦方向の画素データの配列に対して、ステップＳ１２〜Ｓ１６が実行される。
【００３９】
横方向処理では、ＣＰＵ４２は、入力画像Ｘから任意に横方向の画素データの配列（１行分の画素データ）を抽出する（ステップＳ２１）。次に、ＣＰＵ４２は、ステップＳ２１で抽出した画素データの配列に対して縦方向処理と同様に評価値の算出と閾値判定を行い（ステップＳ２２〜Ｓ２６）、閾値判定結果を求める。次に、ＣＰＵ４２は、入力画像Ｘに含まれる横方向の画素データの配列をすべて処理したか否かを判断し（ステップＳ２７）、否のときにはステップＳ２１へ進む。これにより、入力画像Ｘに含まれるすべての横方向の画素データの配列に対して、ステップＳ２２〜Ｓ２６が実行される。
【００４０】
論理演算処理では、ＣＰＵ４２は、縦方向処理で求めた閾値判定結果と、横方向処理で求めた閾値判定結果に対して論理演算（例えば、論理和演算）を行う（ステップＳ３１）。これにより、輪郭抽出結果Ｙが求められる。
【００４１】
以下、ステップＳ１２〜Ｓ１６の詳細を説明する。ステップＳ１１で抽出された縦方向の画素データの配列をＸ（ｉ）（ただし、ｉは１以上ｎ以下の整数、ｎは画素データの個数）とする。ＣＰＵ４２は、以下に示すように、縦方向の画素データの配列Ｘ（ｉ）に対して、評価値算出処理（ステップＳ１２〜Ｓ１５）と閾値判定処理（ステップＳ１６）とを実行する。なお、ステップＳ２２〜Ｓ２６では、横方向の画素データの配列に対して、ステップＳ１２〜Ｓ１６と同じ処理が行われる。
【００４２】
評価値算出処理では、ＣＰＵ４２は、配列に含まれる各データについて、配列内で隣接するデータとの差を算出する（ステップＳ１２）。具体的には、ＣＰＵ４２は、次式（１）に従い、差Ｄ（ｉ）を算出する。
Ｄ（ｉ）＝Ｘ（ｉ）−Ｘ（ｉ−１）  …（１）
【００４３】
次に、ＣＰＵ４２は、配列内で後から前へ向かう順に０以上の差Ｄ（ｉ）を累積加算する（ステップＳ１３）。ただし、差Ｄ（ｉ）が負のときには、ＣＰＵ４２は累積値を０に初期化する。ステップＳ１３で算出される累積値（０以上の差の累積値）Ｐ（ｉ）は、次式（２ａ）および（２ｂ）で表される。
Ｐ（ｉ）＝Ｐ（ｉ＋１）＋Ｄ（ｉ）  …（２ａ）  （Ｄ（ｉ）≧０のとき）
Ｐ（ｉ）＝０                      …（２ｂ）  （Ｄ（ｉ）＜０のとき）
【００４４】
次に、ＣＰＵ４２は、配列内で前から後へ向かう順に０以下の差Ｄ（ｉ）を累積加算する（ステップＳ１４）。ただし、差Ｄ（ｉ）が正のときには、ＣＰＵ４２は累積値を０に初期化する。ステップＳ１４で算出される累積値（０以下の差の累積値）Ｑ（ｉ）は、次式（３ａ）および（３ｂ）で表される。
Ｑ（ｉ）＝Ｑ（ｉ−１）＋Ｄ（ｉ）  …（３ａ）  （Ｄ（ｉ）≦０のとき）
Ｑ（ｉ）＝０                      …（３ｂ）  （Ｄ（ｉ）＞０のとき）
【００４５】
次に、ＣＰＵ４２は、ステップＳ１３で算出した累積値とステップＳ１４で算出した累積値の差を算出する（ステップＳ１５）。具体的には、ＣＰＵ４２は、次式（４）に従い、２つの累積値の差Ｒ（ｉ）を算出する。差Ｒ（ｉ）は、縦方向の画素データの配列Ｘ（ｉ）に含まれる各データについての評価値となる。
Ｒ（ｉ）＝Ｐ（ｉ＋１）−Ｑ（ｉ）  …（４）
【００４６】
次に、ＣＰＵ４２は、ステップＳ１５で求めた評価値Ｒ（ｉ）に対して閾値判定を行う（ステップＳ１６）。ＣＰＵ４２は、評価値Ｒ（ｉ）が所定の閾値ＴＨ以上のときには、輪郭が存在する可能性があると判断して、閾値判定結果を１とする。これに対して、閾値Ｒ（ｉ）が閾値ＴＨ未満のときには、輪郭が存在する可能性がないと判断して、閾値判定結果を０とする。ステップＳ１６で求められる閾値判定結果Ｓ（ｉ）は、次式（５ａ）および（５ｂ）で表される。
Ｓ（ｉ）＝１  …（５ａ）  （Ｒ（ｉ）≧ＴＨのとき）
Ｓ（ｉ）＝０  …（５ｂ）  （Ｒ（ｉ）＜ＴＨのとき）
なお、閾値ＴＨは固定値でもよく、あるいは、閾値ＴＨを入力画像Ｘの特性に応じて決定してもよい。
【００４７】
図４は、ステップＳ１２〜Ｓ１６による処理結果を示す図である。図４（ａ）は、入力画像から抽出された縦方向の画素データの配列（１列分の画素データ）の例を示す図である。図４（ａ）に示すように、画素データＸ（ｉ）は０以上２５５以下の値をとる。図４（ａ）に示す画素データＸ（ｉ）ついて、ステップＳ１３で０以上の差の累積値Ｐ（ｉ）を求めると、図４（ｂ）に示す結果が得られる。また、ステップＳ１４で０以下の差の累積値Ｑ（ｉ）を求めると、図４（ｃ）に示す結果が得られる。さらに、ステップＳ１５で評価値Ｒ（ｉ）を求めると、図４（ｄ）に示す結果が得られる。ステップＳ１６における閾値ＴＨを４０に設定すると、図４（ｄ）に示す範囲Ｃ１〜Ｃ５内において、評価値Ｒ（ｉ）は閾値ＴＨ以上となり、閾値判定結果は１となる。
【００４８】
以下、図５を参照して、画素データの配列内のどのような箇所で閾値判定結果が１となるかを説明する。ステップＳ１３で算出される累積値Ｐ（ｉ）は、差Ｄ（ｉ）が負のときには累積値を０にしながら、配列内で後から前へ向かう順に０以上の差Ｄ（ｉ）を累積加算して得られたものである。このため、累積値Ｐ（ｉ）は、配列内で前方にある直近の極値が極大値のときには当該極大値との差に一致し、それ以外のときには０となる。また、ステップＳ１４で算出される累積値Ｑ（ｉ）は、差Ｄ（ｉ）が正のときには累積値を０にしながら、配列内で前から後へ向かう順に０以下の差Ｄ（ｉ）を累積加算して得られたものである。このため、累積値Ｑ（ｉ）を（−１）倍した値は、配列内で後方にある直近の極値が極大値のときには当該極大値との差に一致し、それ以外のときには０となる。したがって、ステップＳ１５で算出される評価値Ｒ（ｉ）は、配列内で前方にある直近の極値が極大値であるときの当該極大値との差、および、配列内で後方にある直近の極値が極大値であるときの当該極大値との差の和（２つの差の和）に一致する。
【００４９】
例えば、入力画像から、図５（ａ）に示すように変化する縦方向の画素データの配列が抽出された場合を考える。評価値Ｒ（ｉ）は、直感的に言うと、すぐ前（図５では左側）にある山の山頂との標高差Ｈｐ（ただし、すぐ前に谷があるときはＨｐ＝０）に、すぐ後（図５では右側）にある山の山頂との標高差Ｈｑ（ただし、すぐ後に谷があるときはＨｑ＝０）を加算したものである。
【００５０】
例えば、画素データＸ（ｉ）が極小のときには（図５（ｂ））、評価値Ｒ（ｉ）は両側にある山の山頂との標高差の和（Ｈｐ＋Ｈｑ）となる。画素データＸ（ｉ）が減少途中にあるときには（図５（ｃ））、評価値Ｒ（ｉ）はすぐ前にある山の山頂との標高差Ｈｐとなる。画素データＸ（ｉ）が増加途中にあるときには（図５（ｄ））、評価値Ｒ（ｉ）はすぐ後にある山の山頂との標高差Ｈｑとなる。画素データＸ（ｉ）が極大のときには（図５（ｅ））、評価値Ｒ（ｉ）は０となる。
【００５１】
したがって、評価値Ｒ（ｉ）が閾値ＴＨ以上となり、閾値判定結果が１となるのは、（１）画素データが極小で、両側にある極大値との差の和が閾値ＴＨ以上となる箇所と、（２）画素データが極大でも極小でもなく、すぐ前またはすぐ後にある極大値との差が閾値ＴＨ以上となる箇所である。直感的に言うと、閾値判定結果が１となるのは、ある程度以上深い谷の底と、山頂よりもある程度以上低い山のふもとである。
【００５２】
なお、入力画像Ｘを撮影する際の標本化誤差などによって、画素データは微小に（例えば、１％程度）変化することがある。そこで、０に近い負の値Ｅｍと、０に近い正の値Ｅｐを任意の方法で決定し、ステップＳ１３で累積値Ｐ（ｉ）を算出するときには、Ｅｍ以上の差Ｄ（ｉ）を累積加算し、ステップＳ１４で累積値Ｑ（ｉ）を算出するときに、Ｅｐ以下の差Ｄ（ｉ）を累積加算してもよい。このように差Ｄ（ｉ）が０に近いときには、差Ｄ（ｉ）を０と同様に扱うことにより、画素データの微小な変化の影響を排除することができる。
【００５３】
あるいは、画素データの微小な変化の影響を排除するために、入力画像Ｘについて評価値Ｒを算出する前に、入力画像Ｘに対して平滑化処理を行ってもよい。例えば、図３に示すフローチャートにおいて、ステップＳ１１とステップＳ１２の間、および、ステップＳ２１とステップＳ２２の間に、抽出された縦方向（あるいは横方向）の画素データの配列に対して、隣接する３つあるいは５つの画素データの平均を求める処理を追加してもよい。これにより、画素データの微小な変化の影響を排除することができる。
【００５４】
図６（ａ）は、Ｓｏｂｅｌフィルタを用いた従来の輪郭抽出装置による輪郭抽出結果を示す図である。図６（ｂ）は、本実施形態に係る輪郭抽出装置１による輪郭抽出結果を示す図である。なお、入力画像は、８ビットのグレースケール画像である。２つの輪郭抽出結果を比較すると、図６（ｂ）では、人物の左目の上にある額と頭髪の境界部分や、人物の左肩後方にあるディスプレイの表示面と枠の境界部分に存在する輪郭が抽出されている。このように本実施形態に係る輪郭抽出装置１によれば、従来の輪郭抽出装置では検出できない、画素データがなだらかに変化する箇所に存在する輪郭を抽出することができる。
【００５５】
以上に示すように、本実施形態に係る輪郭抽出装置によれば、画素データの配列に含まれる各データについて、配列内で直近の極大値との差に基づく評価値が算出され、算出された評価値に対して閾値判定が行われる。このため、画素データがなだらかに変化する箇所でも、当該箇所についての評価値が大きい場合には、その箇所には輪郭があると判定される。したがって、画素データがなだらかに変化する箇所に存在する輪郭を抽出することができる。
【００５６】
特に、画素データの配列に含まれる各データについて評価値として、配列内で前後にある直近の極大値との差の和（２つの差の和）を算出すれば、この評価値は画素データの配列内で周囲よりも小さいデータが存在する箇所（凹部）で大きくなる。したがって、このような性質を有する評価値を用いることにより、画素データがなだらかに変化する箇所に輪郭が存在する場合でも、当該箇所についての評価値が大きくなるので、輪郭を抽出することができる。
【００５７】
また、配列内で後から前へ向かう順に第１の値（ゼロまたはある負の値）以上の隣接データとの差を累積加算し、配列内で前から後へ向かう順に第２の値（ゼロまたはある正の値）以下の隣接データとの差を累積加算すれば、配列に含まれる各データについて前後にある直近の極大値との差を容易に算出することができる。
【００５８】
また、評価値の算出と閾値判定を縦方向の画素データの配列と横方向の画素データの配列について行い、輪郭抽出結果を２つの閾値判定結果に基づき求めれば、より高い精度で輪郭を抽出することができる。特に、２つの閾値判定結果の論理和を求めれば、より多くの輪郭を抽出することができる。
【００５９】
なお、以上の説明では、ＣＰＵ４２は、縦方向処理と横方向処理と論理演算処理とを実行することとしたが、これに代えて、縦方向処理のみ、あるいは、横方向処理のみを実行してもよい。図７は、縦方向処理のみを行う場合の輪郭抽出プログラムのフローチャートである。図７に示すステップＳ１１〜Ｓ１７は、図３に示すステップＳ１１〜Ｓ１７と同じである。この場合、ステップＳ１６で求めた閾値判定結果Ｒ（ｉ）が、そのまま輪郭抽出結果Ｙとして出力される。このように、評価値の算出と閾値判定を縦方向の画素データの配列と横方向の画素データの配列のいずれか一方についてのみ行うことにより、画素データがなだらかに変化する箇所に存在する輪郭を簡単な処理で抽出することができる。
【００６０】
また、以上の説明では、ＣＰＵ４２は、配列内で直近の極大値との差に基づく評価値を算出することとしたが、同様の方法で配列内で直近の極小値との差に基づき評価値を算出してもよい。
【図面の簡単な説明】
【００６１】
【図１】本発明の実施形態に係る輪郭抽出装置の構成を示すブロック図である。
【図２】本発明の実施形態に係る輪郭抽出装置を実現するためのコンピュータの構成を示すブロック図である。
【図３】本発明の実施形態に係る輪郭抽出装置を実現するための輪郭抽出プログラムのフローチャートである。
【図４】図３に示すステップＳ１２〜Ｓ１６による処理結果を示す図である。
【図５】図３に示すステップＳ１２〜Ｓ１５で算出される評価値の意味を説明するための図である。
【図６】従来および本発明の実施形態に係る輪郭抽出装置による輪郭抽出結果を示す図である。
【図７】本発明の実施形態の変形例に係る輪郭抽出装置を実現するための輪郭抽出プログラムのフローチャートである。
【図８】従来の輪郭抽出処理で用いられるＳｏｂｅｌフィルタを示す図である。
【符号の説明】
【００６２】
１…輪郭抽出装置
１０…データ抽出部
２０…評価値算出部
３０…輪郭判定部
４０…コンピュータ
４１…画像入力部
４２…ＣＰＵ
４３…表示部
４４…記憶部
５０…輪郭抽出プログラム
【図１】
2008065726.tif 000003
【図２】
2008065726.tif 000004
【図３】
2008065726.tif 000005
【図４】
2008065726.tif 000006
【図５】
2008065726.tif 000007
【図６】
2008065726.tif 000008
【図７】
2008065726.tif 000009
【図８】
2008065726.tif 000010