【文献】
櫻田 大樹 他,FPGAを用いたおしぼり表面に付着した髪の毛の自動判別システムの開発,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2015年 1月15日,第114巻 第394号,pp.109〜112
(58)【調査した分野】(Int.Cl.,DB名)
前記面積算出手段は、前記ラベリング手段によって前記注目画素の複数の周辺画素に付与されているラベルが同一のラベルに統合された場合に、前記複数の周辺画素に付与されている異なるラベルの各々について、前記ラベルが付与された画素からなる領域の面積を加算して、前記統合されたラベルが付与された画素からなる領域の面積を算出する
請求項2に記載の画像処理装置。
【発明を実施するための形態】
【0025】
以下、図面を参照して本発明の実施の形態を詳細に説明する。なお、本実施の形態では、おしぼりに付着した毛髪を検出する毛髪検出装置に、本発明を適用した場合を例に説明する。
【0026】
図1に示すように、本発明の実施の形態に係る毛髪検出装置1は、おしぼり2を移動させるベルトコンベア3と、おしぼり2の表面を照明する照明手段の一例であるLEDライト4と、おしぼり2の裏面を照明する照明手段の一例であるLEDライト5と、おしぼり2の表面を撮影するカメラ6と、おしぼり2の裏面を撮影するカメラ7と、カメラ6によって撮影された画像を処理するFPGAボード8と、カメラ7によって撮影された画像を処理するFPGAボード9とを備えている。カメラとFPGAボードとは、例えばケーブル等で接続されている。おしぼり2は、被測定物及び布製品の一例である。
【0027】
LEDライト4及びLEDライト5は、例えば、紫外域の光を照射しておしぼり2を照明する。
【0028】
以下では、FPGAボード8によって行われる画像処理について説明する。
【0029】
FPGAボード8を設計する回路の最上階層となるトップモジュールについて説明する。本実施の形態では、トップモジュールを大きく分けると、
図2に示すように、クロック乗せ換えモジュール10と、カメラリンクモジュール12と、画像処理モジュール14とを備えている。
【0030】
クロック乗せ換えモジュール10は、カメラ6のクロックとFPGAボード8内部の動作クロックとを同期させる。
【0031】
クロック乗せ換えモジュール10では、カメラ6から出力されるクロック周波数(例えば、65MHz)とFPGA内部の動作させるクロック周波数(例えば、100MHz)とを同期させるための接続を行っている。後述するカメラリンクモジュール12及び画像処理モジュール14は、クロック乗せ換えモジュール10で乗せ換えられたクロック周波数100MHzで動作する。
【0032】
カメラリンクモジュール12は、カメラ6からのデータを取得するためのカメラリンクボード(図示省略)との接続を行う。カメラリンクモジュール12では、カメラ6で撮影された画像をカメラリンクボードから取得し、当該画像を画像処理モジュール14に出力するための接続を行う。
【0033】
画像処理モジュール14は、カメラリンクモジュール12によって出力された画像を取得し、画像を走査することにより、取得した画像を画像処理する。画像処理モジュール14は、取得した画像を1画素ずつ入力させ画像処理を行い、毛髪の有無判別結果を出力する。画像処理モジュール14は、出力結果において毛髪ありと判定した場合にはDC5Vを出力し、かつデバック用LED(図示省略)を点灯させ、それ以外の場合は何も出力しないように設計されている。
【0034】
画像処理モジュール14は、
図3に示すように、マスクパターン取得モジュール16と、ラプラシアンフィルタモジュール18と、2値化モジュール20とを含む第1処理部15と、ラベリングモジュール22と、面積算出モジュール24と、髪の毛の有無判別モジュール26とを含む第2処理部17とを備えている。髪の毛の有無判別モジュール26は、判別手段の一例である。
【0035】
マスクパターン取得モジュール16は、カメラリンクモジュール12によって出力された画像を取得する。そして、マスクパターン取得モジュール16は、予め定められた対応マスクに応じて、画像の注目画素の画素値と当該注目画素の周辺画素の画素値とを取得する。例えば、マスクパターン取得モジュール16は、注目画素の4近傍の画素の画素値を周辺画素の画素値として取得する。
【0036】
マスクパターン取得モジュール16の構成例を
図4に示す。例えば、マスクパターン取得モジュール16は、後述するラプラシアンフィルタモジュール18で処理する3×3のマスクに対応する画素の画素値を取得するため、
図4に示すように、2ライン分のメモリと3つのレジスタとを利用し、注目画素の4近傍の画素の画素値を周辺画素の画素値として取得する。
【0037】
ラプラシアンフィルタモジュール18は、マスクパターン取得モジュール16によって取得された注目画素の画素値及び周辺画素の画素値と、予め設定されたフィルタとに基づいて、注目画素の画素値及び周辺画素の画素値に対しフィルタ演算を行う。本実施の形態では、
図5に示すような4近傍のラプラシアンフィルタ係数を利用して、注目画素の画素値及び周辺画素の画素値から特徴を抽出する。
【0038】
2値化モジュール20は、ラプラシアンフィルタモジュール18によって演算されたフィルタ演算結果から得られるエッジ画像と予め設定した閾値とに基づいて注目画素の画素値を2値化し、2値化処理結果を出力する。
【0039】
ラベリングモジュール22は、2値化モジュール20によって2値化された注目画素について、当該注目画素の各周辺画素に付与されたラベルと当該注目画素の画素値とに基づき当該注目画素に対してラベルを付与する際に、当該注目画素の複数の周辺画素に異なるラベルが付与されている場合、複数の周辺画素に付与されているラベルを同一のラベルに統合し、かつ、統合されたラベルを、当該注目画素に付与する。
【0040】
ラベリングモジュール22全体の具体的な処理について以下説明する。
【0041】
ラベリングモジュール22におけるラベルの具体的な決定方法としては、例えば、
図6に示すような2×3のマスクパターンを利用し、既に決定された4つの周辺画素のラベルを参照して、太線枠で囲まれた注目画素のラベルを決定する。
【0042】
具体的には、ラベリングモジュール22は、上記
図6に示すマスクパターンに対応する周辺画素のラベルを取得するために、上記
図4に示すように、1ライン分のメモリと3つのレジスタを利用し、注目画素のラベルを決定する。本実施の形態では、1ライン分のメモリと3つのレジスタとを利用し、1回のラスタスキャンで注目画素のラベルの決定及び後述する面積算出を行う。
【0043】
また、ラベリングモジュール22によるラベル付けは、2値化モジュール20から出力された注目画素の画素値が1の場合に行う。例えば、上記
図6においては、太線枠で囲われた注目画素の画素値が1の場合にラベル付けを行う。ラベルの決定は、注目画素の4方向のラベルの連続性から決定される。ただし、例えば、参照するラベルが複数存在するときは番号の小さいラベルを参照することができる。
【0044】
まず、注目画素のラベル付けを行う場合に、マスクパターン内に同一のラベルのみが存在する場合について説明する。
【0045】
図7に、注目画素のラベルの決定方法の一例を示す。
図7に示すように、12個のパターンのとき、注目画素のラベルは、参照する画素のラベルLによって決定される。なお、上記
図7の網掛部分は0以外の画素値である。
【0046】
また、
図8に示すように、注目画素の画素値が1で、マスクパターンに対応する周辺画素にラベルが付与されておらず、参照するラベルが存在しない場合は新しいラベル(例えば、L
newとする)がラベル付けされる。
【0047】
ラベリングモジュール22によってラベルが決定された後、決定した注目画素のラベルが逐次面積算出モジュール24へ出力される。
【0048】
次に、注目画素のラベル付けを行う場合に、マスクパターン内に2つの異なるラベルが存在する場合について説明する。
【0049】
図9に、ラベル付けするときに2×3のマスクパターンに異なるラベルが存在し、同じラベルにしなければならないパターンの一例を示す。なお、本実施の形態では、マスクパターンに2つの異なるラベルが存在し、異なるラベルの各々を同じラベルに統合する処理を統合発生と称する。
【0050】
上記
図9に示すような統合発生は、参照するマスクが
図10に示すような3つのケースでラベル付けされる場合に発生する。なお、
図10に示す3つのケースでは、注目画素の左上に位置する画素のラベルを、当該注目画素のラベルとして決定する。
【0051】
図10では、注目画素の左上又は左隣りに位置する画素のラベルaと、注目画素の右上に位置する画素のラベルbとを統合対象のラベルとする。ここで、統合されるラベルを第1のラベル(以下の例では、ラベルa)、統合するラベルを第2のラベル(以下の例ではラベルb)として、以下説明する。
【0052】
注目画素のラベルの決定は、
図10に示すように、注目画素の左上に位置する画素のラベルbが参照され決定される。ラベル決定後は、統合条件が発生したときも通常の決定時と同様に、決定した注目画素のラベルが逐次面積算出モジュール24に出力される。
【0053】
次に、統合が発生した後に、ラベリング処理を行う際、注目画素のラベルを決定する際に、参照するマスクにラベルaが存在する場合について説明する。このようなケースについて、
図11に示す例のように、2値化画像がラベリングモジュール22へ出力された場合を例に挙げ、詳しく説明する。
【0054】
上記
図11に示す例においてラベル付けが行われた場合、
図12に示す太線枠の部分が注目画素であるときに統合が発生する。その後、
図13に示す太枠線の部分の注目画素のラベル付けを行う場合、上記
図12の時点でラベルaが参照されてしまう。しかし、実際には上記
図12の時点で統合したラベルであるラベルbを参照する必要がある。本実施の形態では、このような問題を防ぐために、次のような処理を行う。
【0055】
図14に示すように、参照するマスクパターンのX部分の画素を参照する前に、X部分のラベルが統合されるラベルであるか否かを確認し、X部分の画素のラベルを決定する。
【0056】
具体的な処理方法としては、上記
図12に示すように統合が発生した場合にラベルaとラベルbとの関係を、ラベル統合メモリに保存する。このとき、ラベルaを書き込むアドレスとし、そのアドレス内にラベルbのデータを書き込む。ラベル統合メモリに格納されるラベル間の関係は
図15に示すようになる。ラベル統合メモリは、記憶手段の一例である。
【0057】
次に、上記
図13に示す太枠線におけるラベル決定時において、ラベルaを参照しないために、上記
図14のX部分を参照する前の段階で、ラベル統合メモリのアドレスXを読み込む。上記
図14のX部分は1ライン分保存したメモリから出力されるため、このメモリの出力を1クロック早く出力した画素値をラベル統合メモリ内におけるアドレスとしてデータを読み込むことでラベル決定のタイミングに合わせた書き換えが可能である。
【0058】
そして、ラベリングモジュール22は、ラベル統合メモリから読み込んだデータが0ならば参照するX部分の画素は、X部分のラベルをそのまま参照する。
一方、ラベリングモジュール22は、ラベル統合メモリから読み込んだデータが0以外ならば参照するX部分の画素は、読み込んだデータであるラベルaを参照する。
【0059】
このような処理により、ラベルaを参照しないラベリングモジュール22が構築される。
【0060】
上記
図11の例において、この処理を施した場合、
図16に示す時点でラベル統合メモリ内におけるアドレスaにデータbが書き込まれる。
【0061】
さらに、統合発生後の統合されたラベルを参照する時点では、
図17に示すように書き換えることで統合するラベルを参照し、ラベルの決定をすることができる。
【0062】
ラベリングモジュール22は、例えば、
図18に示すような構成とすることができる。
【0063】
ラベリングモジュール22は、
図18に示すように、ラベル決定部220と、ラベル統合メモリ222と、メモリ224と、第1レジスタ226と、第2レジスタ228と、第3レジスタ230とを備える。ラベル統合メモリ222と、メモリ224とは、例えばRAMによって構成される。
【0064】
ラベル決定部220は、2値化モジュール20によって出力された注目画素の各々について、複数の周辺画素に異なるラベルが付与されている場合、ラベル統合メモリ222に記憶された、同一のラベルに統合されたラベルの各々の関係に基づいて、統合されたラベルを当該注目画素に付与する。
また、ラベル決定部220は、同一のラベルに統合したラベルの関係を、ラベル統合メモリ222に格納する。
また、ラベル決定部220は、2値化モジュール20によって出力された注目画素の各々について、複数の周辺画素に同一のラベルが付与されている場合、周辺画素と同一のラベルを当該注目画素に付与する。
【0065】
ラベル統合メモリ222には、ラベル決定部220によって同一のラベルに統合されたラベルの各々の関係が格納される。
【0066】
メモリ224、第1レジスタ226、第2レジスタ228、及び第3レジスタ230は、ラベル決定のタイミングに合わせた書き換えが行われるように、対応マスクに対応する各画素のラベルを出力する。
【0067】
面積算出モジュール24は、ラベリングモジュール22によって統合されたラベルに基づいて、統合されたラベルに対応する領域の面積を算出する。具体的には、面積算出モジュール24は、注目画素にラベルが付与される毎に、ラベルが付与された画素からなる領域の面積を算出する。
【0068】
面積算出モジュール24は、例えば、
図19に示すような基本的面積算出メモリ240を含んだ構成とすることができる。基本的面積算出メモリ240は、例えばRAMによって構成される。
【0069】
面積算出モジュール24では、ラベリングモジュール22から出力されたラベルを基本的面積算出メモリ240に保存することにより、面積を逐次算出する。基本的面積算出メモリ240にラベルを保存する場合は、
図19に示すように、ラベルLを書き込むアドレスとし、そのアドレス内のデータをラベルに対応する領域の面積Sとする。
【0070】
面積算出モジュール24では、基本的な処理として以下のような3つの処理を行う。
【0071】
(1)決定したラベルのアドレス内のデータであるラベルに対応する領域の面積を読み出す。
(2)読み出したデータをインクリメントする。
(3)インクリメントした結果を、後述する髪の毛の有無判別モジュール26に出力しつつ、基本的面積算出メモリ240内の(1)で決定したアドレス内に書き込む。ただし、読み込むアドレスが‘0’の場合、書き込むデータは常に0とする。
【0072】
上記(1)〜(3)のように処理することで、ラベルに対応する領域の面積を逐次算出することができる。基本的面積算出メモリ240を含み、基本的な面積算出を行うモジュールは
図20に示すようになる。
【0073】
次に、ラベルの統合が発生したときの処理について説明する。ラベルの統合が発生したとき、面積算出の過程においては2つのラベルに対応する領域の面積を統合する必要がある。
【0074】
しかし、面積を算出するためのメモリとしてRAMを用いる際、全く同じタイミングで複数のアドレス内のデータを読み出すことができない。そのため、本実施の形態では、
図21に示すように、基本的面積算出メモリ240と統合発生時用面積算出メモリ242との2つのメモリを用意し、RAMの二重化を行う。この二重化では、前述した(1)〜(3)を行う基本的面積算出メモリ240の他に、統合発生時用面積算出メモリ242が用意される。そして、統合発生時用面積算出メモリ242はラベルの統合が発生した場合のみ、基本的面積算出メモリ240のデータに加算するために用いられる。
【0075】
統合発生時用面積算出メモリ242におけるアドレスのやりとりは以下のように行われる。
【0076】
まず、統合が発生した場合に読み込まれるアドレスは、ラベリングモジュール22で統合されるラベル(ラベリングモジュール22のラベル決定部222から出力されたラベルaのことを示す)とし、統合が発生しない場合に読み込まれるアドレスはメモリ内で使わない番号である0が読み込まれる。
【0077】
これにより、統合が発生した時のみ統合発生時用の面積算出モジュールから0以外の面積を出力することができる。また、書き込むアドレスやデータは基本的な面積算出メモリと同じアドレスやデータを利用する。この統合発生時用面積算出メモリ242で読み込まれるデータと、上記の(1)〜(3)を行った基本的面積算出メモリ240で読み込まれたデータを足し合わせることで、統合するラベルに対応する領域の面積と統合されるラベルに対応するラベルの面積とを、統合することができる。
【0078】
従って、面積算出モジュール24は、注目画素の複数の周辺画素に付与されているラベルを同一のラベルに統合された場合に、複数の周辺画素に付与されているラベルに対応する領域の面積を加算して、統合されたラベルに対応する領域の面積を算出する。
【0079】
髪の毛の有無判別モジュール26は、面積算出モジュール24によって算出された面積に基づいて、画像に毛髪が含まれるか否かを判別する。毛髪は対象物の一例である。
【0080】
具体的には、髪の毛の有無判別モジュール26は、面積算出モジュール24から逐次出力された面積のデータを予め設定した閾値によって2値化する。そして、毛髪の有無判別モジュール26は、2値化した結果1が出力された場合、毛髪ありと判定し、0が出力された場合、毛髪なしと判定する。
【0081】
髪の毛の有無判別モジュール26は、毛髪ありと判定した場合は、毛髪ありの通知信号として5Vの電圧をFPGAボード8の外部に出力する。一方、毛髪なしと判定した場合は、FPGAボード8の外部へは何も出力しない(通知信号0Vの状態)。5Vの信号を外部のシーケンサーへ送ることにより、毛髪ありのときにはベルトコンベア上を流れるおしぼりを通常のルートから除外するシステムになっている。毛髪の有無判別モジュール26は、例えば
図22のような構成になっている。
【0082】
次に、画像処理モジュール14内のトップモジュールについて説明する。
【0083】
画像処理モジュール14内のトップモジュールは、例えば
図23に示すように、第1処理部15及び第2処理部17を備え、8bitの画像、ラインイネーブル、フレームイネーブルを入力としている。ただし、全てのモジュールはアクティブ・ハイである。
【0084】
このとき、ラインイネーブル信号はラインセンサカメラが1ライン分(4096画素分)撮影したデータを送るタイミングのときHighとし、それ以外のときLowとしている。また、カメラリンクモジュールから送られてくるフレームイネーブル信号は8つのDIPスイッチを利用している。8つのDIPスイッチから8bitデータを設定し、設定された値を閾値とする。この設定された閾値を超える画素が1ラインに50画素以上あるときにフレームイネーブルをHighにする。おしぼりはベルトコンベア(背景画像)に比べて非常に画素値が大きいため、このように設定することでおしぼりが流れ始めたことを判定することができる。その後、フレームイネーブルをLowにするタイミングは、閾値を超える画素が1ラインに50画素以下になった直後のラインまでとしている。このような設計により、おしぼりが撮影された部分のみ有効なフレームイネーブル信号とすることができる。画像処理モジュール14では、フレームイネーブル立ち下がり時にリセットする構成になっている。
また、ラベリングモジュール22や面積算出モジュール24で利用しているRAMは13bitにしているが、番号8192になったとき、ラベルは1から再度番号付けする構成になっている。
【0085】
次に、本実施の形態に係る毛髪検出装置1の作用について説明する。
【0086】
ベルトコンベア3によっておしぼり2が移動させられ、LEDライト4によっておしぼり2の表面が照明され、かつカメラ6によっておしぼり2の表面が撮影されているときに、FPGAボード8が動作し、
図24に示す画像処理が画像処理モジュール14によって実行される。
【0087】
まず、ステップS100において、マスクパターン取得モジュール16は、カメラリンクモジュール12によって出力された画像を取得する。
【0088】
ステップS102において、マスクパターン取得モジュール16は、予め定められた対応マスクに応じて、上記ステップS100で取得された画像の注目画素の画素値と当該注目画素の周辺画素の画素値とを取得する。
【0089】
ステップS104において、ラプラシアンフィルタモジュール18は、上記ステップS102で取得された注目画素の画素値及び周辺画素の画素値と、予め設定されたフィルタとに基づいて、注目画素の画素値及び周辺画素の画素値に対しフィルタ演算を行う。
【0090】
ステップS106において、2値化モジュール20は、上記ステップS104で演算されたフィルタ演算結果と予め設定した閾値とに基づいて注目画素の画素値を2値化し、2値化処理結果を出力する。
【0091】
ステップS108において、ラベリングモジュール22は、上記ステップS106で2値化された注目画素について、当該注目画素の各周辺画素に付与されたラベルと当該注目画素の画素値とに基づき当該注目画素に対してラベルを付与する際に、当該注目画素の複数の周辺画素に異なるラベルが付与されている場合、複数の周辺画素に付与されているラベルを同一のラベルに統合し、かつ、統合されたラベルを、当該注目画素に付与する。ステップS108は、
図25に示すラベリング処理によって実現される。
【0092】
<ラベリング処理>
ステップS200において、ラベリングモジュール22は、ステップS106で出力された注目画素を取得する。
【0093】
次に、ステップS202において、ラベリングモジュール22は、上記ステップS200で取得された注目画素の画素値が1であるか否かを判定する。注目画素の画素値が1である場合には、ステップS204に進む。一方、注目画素の画素値が0である場合には、ステップS200へ戻る。
【0094】
ステップS204において、ラベリングモジュール22は、予め設定されたマスクパターンに応じて、上記ステップS200で取得された注目画素の周辺画素を取得する。なお、周辺画素は、メモリ224と、第1レジスタ226、第2レジスタ228、及び第3レジスタ230に格納されたデータから取得される。
【0095】
ステップS206において、ラベリングモジュール22は、上記ステップS204で取得された複数の周辺画素に異なるラベルが付与されているか否かを判定する。複数の周辺画素に異なるラベルが付与されている場合には、ステップS208へ進む。一方、複数の周辺画素に同一のラベルが付与されている場合には、ステップS210へ進む。
【0096】
ステップS208において、ラベリングモジュール22は、ラベル統合メモリ222を参照し、上記ステップS206で取得された複数の周辺画素に付与されている、第1のラベルと第2のラベルとを同一のラベルに統合して、ラベル間の関係をラベル統合メモリ222に保存する。そして、ラベリングモジュール22は、第2のラベルを当該注目画素に付与する。
【0097】
ステップS210において、ラベリングモジュール22は、上記ステップS206で取得された周辺画素に付与されているラベルと同一のラベルを、当該注目画素に付与する。
【0098】
ステップS212において、ラベリングモジュール22は、上記ステップS208でラベルが統合された場合に、ラベル統合メモリ222に格納されたラベル間の関係に基づいて、第1のラベルと第2のラベルとを、面積算出モジュール24へ出力する。一方、上記ステップS210でラベルが付与された場合には、当該注目画素に付与されたラベルを面積算出モジュール24へ出力する。
【0099】
次に、上記
図24に示す画像処理に戻り、ステップS110において、面積算出モジュール24は、ラベリングモジュール22によって第1のラベルと第2のラベルとが出力された場合に、基本的面積算出メモリ240で読み込まれるデータと、統合発生時用面積算出メモリ242で読み込まれるデータとを加算して、統合されたラベルに対応する領域の面積を算出する。
【0100】
一方、面積算出モジュール24は、ラベリングモジュール22によって注目画素に付与されたラベルのみが出力された場合に、基本的面積算出メモリ240で読み込まれるデータを読み出す。そして、面積算出モジュール24は、読み出したデータをインクリメントし、インクリメントした結果を、髪の毛の有無判別モジュール26に出力し、基本的面積算出メモリ240内のアドレス内に結果を書き込む。
【0101】
ステップS112において、髪の毛の有無判別モジュール26は、上記ステップS110で算出された面積に基づいて、画像に毛髪が含まれるか否かを判別する。
【0102】
ステップS114において、髪の毛の有無判別モジュール26は、上記ステップS112で毛髪ありと判定した場合は、毛髪ありの通知信号として5Vの電圧をFPGAボード8の外部に出力する。一方、毛髪なしと判定した場合は、FPGAボード8の外部へは何も出力しない。
【0103】
以上説明したように、本発明の実施の形態に係る毛髪検出装置によれば、入力画像を走査することにより、入力画像の注目画素の各周辺画素に付与されたラベルと注目画素の画素値とに基づき注目画素に対してラベルを付与する際に、注目画素の複数の周辺画素に異なるラベルが付与されている場合、複数の周辺画素に付与されているラベルを同一のラベルに統合し、かつ、統合されたラベルを、注目画素に付与することにより、入力画像を走査しながら適切なラベリングをすることができる。
【0104】
また、従来技術では、各画素に対してラベル付けを行った後にラベルを統合する処理が必要であったが、本実施形態では、ラベル付けを行う際にラベルを統合することにより、画像中の対象物の有無を高速に判定することができる。
【0105】
なお、上記実施の形態では、おしぼり2の表面の画像をFPGAボード8によって画像処理する場合について説明したが、おしぼり2の裏面の画像をFPGAボード9よって同様の画像処理方法を用いて、おしぼり2の裏面に付着した毛髪も検出することができる。
【0106】
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【0107】
例えば、本実施の形態では、入力画像の被写体がおしぼりであり、検出する対象物が毛髪である場合を例に説明したがこれに限定されるものではなく、画像処理を適用することができれば、入力画像の被写体及び対象物は何でもよい。例えば、入力画像の被写体の表面の異物を対象物として検出してもよい。または、入力画像の被写体の表面のきずなどの欠陥箇所を対象物として検出してもよい。
【0108】
また、本実施の形態では、毛髪検出装置がFPGAによって実現される場合を例に説明したが、これに限定されるものではない。例えば、本実施形態に係る毛髪検出装置を、CPU、ROM、RAM、及びHDDを備えるコンピュータによって実現してもよい。
【0109】
また、本実施の形態では、周辺画素を参照するためのマスクパターンとして、上記
図6に示すようなマスクパターンを用いる場合を例に説明したが、これに限定されるものではなく、どのようなマスクパターンを用いてもよい。その場合には、ラベルの統合が発生するのは、上記
図10に限定されるものではなく、他のパターンであってもラベルを統合してもよい。
【0110】
また、本実施の形態では、マスクパターンを用いて周辺画素を参照し、上記
図14に示す周辺画素Xのラベルを、画素のラベルとする場合について説明したが、これに限定されるものではない。例えば、ラベルを付与する画素の左上、左隣、右隣、又は上側に位置する周辺画素のラベルを、画素のラベルとして付与してもよい。または、マスクパターン内の周辺画素に付与されたラベルの多数決によって、画素のラベルを決定してもよい。