以下に、本願に係る形状推定装置、形状推定方法および形状推定プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係る形状推定装置、形状推定方法および形状推定プログラムが限定されるものではない。
[第一の実施の形態]
まず、図1を用いて、本願に係る形状推定装置に対応する画像取得装置100が行う処理について説明する。図1は、第一の実施の形態に係る画像取得装置100の構成を示す図である。画像取得装置100は、例えば、対象物をスキャン(撮像)することにより対象物の画像を生成するイメージスキャナである。図1に示すように、画像取得装置100は、スキャンユニット110と、制御部130とを有する。
スキャンユニット110は、撮像の対象である対象物60が設置される原稿台80の上部(あるいは、下部)を移動可能なように設置される。スキャンユニット110は、CCDセンサ10と、光源201〜206とを有し、以下に説明する処理により、対象物60を撮像する。なお、図1に示すように、対象物60は、表面が凹凸する形状を有する。
CCDセンサ10は、CCD(Charge Coupled Device)を有するイメージセンサである。CCDセンサ10は、対象物60が反射させる光を感知する。そして、CCDセンサ10は、感知した光を結像させ、その光による明暗を電荷の量に光電変換することにより、対象物の画像データを取得する。画像データは、例えば、ピクセル(画素)を示す座標と、各ピクセルの色情報(例えば、RGBカラーモデルをそれぞれ8ビット数(0〜255)で表現した値など)とにより構成される。なお、図示は省略しているが、CCDセンサ10には、光を受光するレンズや、光をレンズ等の光学系へ導くミラー等が含まれる。また、CCDセンサ10は、対象物60に対して該直角に反射される光を感知するものとする。
光源201〜206は、撮像のために対象物60に照射される光である照射光301〜306を発生させる。ここで、光源201〜206は、それぞれ異なる入射角で照射される照射光301〜306を対象物60に照射する。図1に示すように、光源201から照射される照射光301は、光源202から照射される照射光302と比較して、対象物60に対して鋭角となる照射光を発生させる。なお、図示は省略しているが、光源203〜206は、それぞれ照射光303〜306を発生させる。また、以下では、光源201〜206を区別する必要がない場合には、これらを総称して「光源20」と表記する場合がある。同様に、照射光301〜306を区別する必要がない場合には、これらを総称して「照射光30」と表記する場合がある。
スキャンユニット110は、照射光301を反射させた対象物60から発生する拡散光35を受光することにより、対象物60を撮像する。言い換えれば、スキャンユニット110は、照射光301に対する対象物60の反射光をCCDセンサ10に感知させることにより、対象物60の画像データを取得する。この際、スキャンユニット110は、対象物60が設置された原稿台80上を移動することにより、対象物60の全体を撮像する。これにより、スキャンユニット110は、撮像による画像の歪みを移動方向と直交した一方向に制限することができる。
同様に、スキャンユニット110は、光源202から照射される照射光302に対する対象物60の反射光をCCDセンサ10に感知させることにより、照射光302に対応した対象物60の画像データを取得する。さらに、スキャンユニット110は、照射光303〜306についても、それぞれ対応する対象物60の画像データを取得する。このように、画像取得装置100に係るスキャンユニット110は、複数の光源201〜206を有し、一の対象物60について、入射角がそれぞれ異なる照射光301〜306により生成される複数の異なる画像データを取得する。
ここで、図2〜図5を用いて、第一の実施の形態に係るスキャンユニット110と、光源20を一つだけ有するスキャンユニット115との違いについて説明する。図2は、光源20を一つだけ有するスキャンユニット115が平面形状を有する対象物50を撮像する状態を示す図である。
図2に示すように、スキャンユニット115は、光源20から照射された照射光30を反射する対象物50を撮像する。このとき、対象物50は、拡散光35とともに、照射光30の入射角と同じ角度で正反射光40を反射する。正反射光40は、鏡面反射光とも呼ばれ、一方向からの光が別の一方向に反射されて出て行く光のことをいう。CCDセンサ10は、正反射光40を受光した場合には、受光する光の強度が高すぎるため、対象物50の画像データを適切に取得することができない。例えば、正反射光40を受光したCCDセンサ10により取得された画像データに基づいて構成される画像には、白飛びと呼ばれる光沢を有する部分(以下、「白飛び部分」と表記する)が発生する。このような白飛び部分は、正反射光40のように強い光をCCDセンサ10が感知することにより、対象物50の色の諧調情報が失われ、撮像された部分が白一色として検出されることにより発生する。
このため、図2に示すように、スキャンユニット115は、対象物50及びCCDセンサ10に対して照射光30の入射角を調整し、正反射光40を受光しないようにして、対象物50を撮像する。結果として、スキャンユニット115は、対象物50に対応する画像として、白飛び部分の発生しない画像55を取得する。なお、図2において、照射光30の入射角は、対象物50の置かれた面に対する角度を示しているが、入射角は、CCDセンサ10が光を感知する角度(すなわち、スキャン方向に対して直角)に対する角度でもよい。
次に、図3を用いて、スキャンユニット115が凹凸のある対象物60を撮像する状態について説明する。図3は、光源20を一つだけ有するスキャンユニット115が凹凸形状を有する対象物60を撮像する状態を示す図である。
図3に示すように、対象物60は、凹凸形状を有する。この場合、スキャンユニット115は、移動しながら対象物60を撮像した場合に、特定の箇所において、正反射光40を受光する。具体的には、スキャンユニット115は、対象物60の特定の部分における傾斜に関する情報(例えば、対象物60の当該部分における水平方向に対する傾斜角)が、CCDセンサ10が感知する光の角度(図3においては、スキャン方向に対して直角)に対する照射光30の入射角の2分の1の角度となる場合に、当該特定の部分から反射される正反射光40を受光する。すなわち、スキャンユニット115によって撮像された画像65には、対象物60の特定の部分に対応した箇所に白飛び部分が発生する。このように、光源20を一つだけ有するスキャンユニット115では、照射光30の入射角が限定されるため、凹凸を有する対象物60の特定の部分において反射される正反射光40を受光する。この場合、画像65に発生する白飛び部分は、対象物60において照射光30を反射させる部分であって、かかる部分で反射させた光がCCDセンサ10の受光する角度となるような特定の部分に対応する画素において発生する。詳しくは後述するが、この場合、スキャンユニット115が撮像する画像によれば、かかる特定の部分に関して、対象物60の傾斜角を推定できるので、かかる特定の部分の形状のみを推定することができる。
一方、第一の実施の形態に係るスキャンユニット110は、以下に説明する手法により、対象物60の形状を推定する。以下、図4及び図5を用いて、第一の実施の形態に係るスキャンユニット110が凹凸形状を有する対象物60を撮像する処理について説明する。図4及び図5は、第一の実施の形態に係るスキャンユニット110が凹凸形状を有する対象物60を撮像する状態を示す図である。
図4に示すように、スキャンユニット110は、光源201から照射される照射光301を用いて、対象物60を撮像する。これにより、スキャンユニット110は、照射光301を正反射する特定の部分に白飛び部分が発生した画像651を取得する。同様に、スキャンユニット110は、光源202から照射される照射光302を用いて、対象物60を撮像することにより、照射光302を正反射する特定の部分に白飛び部分が発生した画像652を取得する。同様に、スキャンユニット110は、光源203から照射される照射光303を用いて、対象物60を撮像することにより、照射光303を正反射する特定の部分に白飛び部分が発生した画像653を取得する。
また、図5に示すように、スキャンユニット110は、光源204から照射される照射光304を用いて、対象物60を撮像することにより、照射光304を正反射する特定の部分に白飛び部分が発生した画像651を取得する。同様に、スキャンユニット110は、光源205から照射される照射光305を用いて、対象物60を撮像することにより、照射光305を正反射する特定の部分に白飛び部分が発生した画像655を取得する。同様に、スキャンユニット110は、光源206から照射される照射光306を用いて、対象物60を撮像することにより、照射光306を正反射する特定の部分に白飛び部分が発生した画像656を取得する。
そして、画像取得装置100に係る制御部130は、スキャンユニット110が取得した複数の画像651〜656を合成する。これにより、画像取得装置100は、白飛び部分の発生しない(あるいは、白飛び部分が比較的少ない)画像を取得することができる。そして、画像取得装置100は、合成した画像と、白飛び部分が発生している複数の画像651〜656との差分を抽出することにより、対象物60において白飛び部分を発生させる部分を特定する。
そして、画像取得装置100は、白飛び部分の発生している画像を取得する際に用いられた照射光30の入射角に基づいて、白飛び部分に対応する対象物60の部分における傾斜角を算出する。すなわち、画像取得装置100は、照射光30の入射角が分かれば、照射光30がCCDセンサ10に対して直角に反射される正反射光40を発生させた対象物60の部分の傾斜角を算出することができる。これにより、画像取得装置100は、取得した各々の画像の白飛び部分を発生させた対象物60を構成する部分の傾斜角を求めることができる。そして、画像取得装置100は、算出した部分の傾斜角に関する情報を結合させることにより、対象物60の形状を推定することができる。
このように、画像取得装置100は、入射角が異なる複数の光を発生させる光源201〜206を有し、光源201〜206から発生された光の照射対象である対象物60が反射する光をCCDセンサ10に感知させることにより、対象物60の画像を取得する。そして、画像取得装置100は、画像が取得される際に照射された光の入射角に基づいて、画像に含まれる白飛び部分に対応する対象物60の部分の傾斜角を算出する。そして、画像取得装置100は、算出された対象物60の部分の傾斜角に基づいて、対象物60の形状を推定する。
これにより、実施の形態に係る画像取得装置100は、一つの撮像系によって、立体的な情報を持つ画像を取得可能する。また、画像取得装置100によれば、光源20とCCDセンサ10からなる撮像系と、対象物60の位置関係を固定した状態で撮像することができるため、安定した画像情報を取得することができる。そして、画像取得装置100は、光源20を複数備えるか、あるいは設置位置が可変する光源20を備えることにより、入射角が異なる光を複数照射させることで対象物60の形状を推定できるので、複雑な構造を要しない。また、画像取得装置100は、固定された対象物60に対して照射される複数の光の入射角に基づいて形状情報を推定するため、精度よく対象物60の形状情報を取得することができる。
[画像取得装置の構成]
次に、図6を用いて、実施の形態に係る画像取得装置100の構成について説明する。図6は、第一の実施の形態に係る画像取得装置100の構成例を示す図である。
図6に例示するように、実施の形態に係る画像取得装置100は、スキャンユニット110と、記憶部120と、制御部130と、IF(InterFace)部140とを有する。
スキャンユニット110は、CCDセンサ10と、光源20とを有し、対象物60をスキャンすることにより、対象物60の画像データを取得する。なお、前述のように、スキャンユニット110には、光源20が複数備えられる。ただし、光源20は、異なる入射角で照射することのできる複数の照射光30を発生させることが可能であれば、複数備えられることを要しない。例えば、光源20は、設置位置が可変であり、異なる入射角で照射光30を対象物60に照射することが可能であれば、一つでもよい。
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、ハードディスク、光ディスク等によって実現される。記憶部120は、制御部130が扱う情報を適宜記憶する。
例えば、記憶部120は、位置制御部131が制御する光源20の位置情報を記憶する。具体的には、記憶部120は、光源20が照射する照射光30の入射角を記憶する。また、記憶部120は、スキャンユニット110が取得する対象物60の撮像データを記憶する。この場合、記憶部120は、取得された撮像データと、当該撮像データが撮像された際の照射光30の入射角とを対応付けて記憶する。また、記憶部120は、算出部133が算出する対象物60の部分の傾斜角などの形状情報を記憶する。
ここで、図7に、第一の実施の形態に係る記憶部120の一例を示す。図7は、第一の実施の形態に係る記憶部120の一例を示す図である。図7に示した例では、記憶部120は、「画像ID」、「撮像データ」、「入射角」、「合成データ」、「差分データ」、「形状情報追加データ」といった項目を有する。
「画像ID」は、画像取得装置100によって撮像される画像(あるいは、撮像の対象物)を識別するための識別情報を示す。「撮像データ」は、スキャンユニット110によって撮像されたデータを示す。実施の形態において、撮像データは、入射角の異なる光源ごとに、異なるデータとして記憶される。なお、図7においては、撮像データを「C111」のような概念で表示しているが、実際には、撮像データは、画像データと同じく、例えば、ピクセルを示す座標と、各ピクセルの色情報等により構成される。また、図7では、撮像データをC111〜C116の6種類表示しているが、実際には、一つの対象物に対して6種類よりも多い撮像データが記憶されてもよい。
「入射角」は、撮像データが撮像された際の光の入射角を示す。「合成データ」は、撮像データを合成した画像データを示す。「差分データ」は、各撮像データと合成データとの差分を示す。例えば、差分データは、色情報において差異が生じたピクセルの座標と、色情報の差異値により構成される。後述する算出部133は、差異が所定の閾値以上のピクセルが一定範囲を占める場合に、かかる範囲を白飛び部分と判定し、かかる範囲に対応する対象物60の傾斜角を算出する。
「形状情報追加データ」は、撮像データ(あるいは、合成データ)に、対象物の形状情報が追加されたデータを示す。形状情報追加データは、例えば、画像データを構成するピクセルに、それぞれ算出された傾斜角の情報が追加されたデータである。このように、記憶部120は、画像取得装置100による各処理の進行に伴い、画像IDに紐づけられる各データを順次記憶していく。
例えば、図7では、画像ID「P001」によって識別される画像について、種々の入射角により撮像されたデータが「C111」〜「C116」であり、それぞれの入射角は「40度」、「30度」、「20度」、「−20度」、「−30度」、「―40度」であり、撮像データを合成したデータが「C201」であり、「C201」とそれぞれの撮像データとの差分データが「D111」〜「D116」であり、差分データに基づいて算出された形状情報が追加された画像データが「C301」であることを示している。
制御部130は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。また、制御部130は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、図示しない記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。
実施形態に係る制御部130は、図6に示すように、位置制御部131と、画像取得部132と、算出部133と、推定部134と、出力部135とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図6に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
位置制御部131は、スキャンユニット110の位置及び光源20の位置を制御する。具体的には、位置制御部131は、スキャンユニット110が対象物60を撮像可能なように、原稿台の上部または下部を移動させるように制御する。
また、位置制御部131は、光源20の位置が可変する場合には、光源20の位置を調整する。例えば、位置制御部131は、図4及び図5に示す光源201〜206に対応する位置に光源20を移動させ、それぞれ異なる入射角による照射光30が対象物60に照射されるように制御する。そして、位置制御部131は、光源20の位置情報を記憶部120に適宜記憶する。
画像取得部132は、光源20から発生された光の照射対象である対象物60が反射する光をCCDセンサ10(イメージセンサの一例)に感知させることにより、対象物60の画像を取得する。例えば、画像取得部132は、図4で示すように、光源201から照射された照射光30を反射させた対象物60に対応する画像である画像651を取得する。
この場合、画像取得部132は、画像651に含まれる白飛び部分に関する情報についても取得する。画像取得部132は、例えば、画像651に含まれる画素の輝度が所定の閾値以上であり、かつ、一定範囲に集中して分布している場合に、画像651に白飛び部分が含まれていると判定する。そして、画像取得部132は、例えば、画像に設定された座標によって、画像内の白飛び部分を特定する。そして、画像取得部132は、かかる白飛び部分の情報を、取得した画像情報とともに記憶部120に記憶する。
算出部133は、画像取得部132によって取得された画像を構成する画素のうち、画像の生成に際して照射された光を反射させた部分に対応する画素の色情報と、画像の生成に際して照射された光の対象物60に対する入射角とに基づいて、当該画素に対応する部分の傾斜に関する情報を算出する。より具体的には、算出部133は、画像取得部132によって取得された複数の画像を合成することにより、画素の色情報を平均化した合成画像を構成する画素の色情報と、入射角の異なる光の反射光ごとに生成された各々の画像を構成する画素の色情報との比較に基づいて、対象物60における当該画素に対応する部分の傾斜角を算出する。
まず、算出部133は、画像取得部132によって取得された画像について、対象物60が凹凸の形状を有することによって生じた白飛び部分を特定する。具体的には、算出部133は、画像取得部132によって取得された複数の画像であって、同一の対象物60を撮像対象とする画像を合成する。これにより、算出部133は、対象物60を撮像した画像であって、白飛び部分の発生しない(あるいは、白飛び部分が比較的少ない)画像を取得する。言い換えれば、算出部133は、画像を構成する画素の色情報が平均化された画像である合成画像を取得する。続いて、算出部133は、合成した画像と、白飛び部分が発生している複数の各画像との色情報の差分を抽出する。そして、算出部133は、抽出した差分に基づいて、各画像に含まれる白飛び部分に該当するピクセルのうち、合成した画像に対応する箇所では白飛び部分でないピクセルを、正反射光40を感知したことによる白飛び発生箇所(白飛び部分)として判定する。例えば、算出部133は、合成した画像では白飛び部分でないピクセルが、各画像に対応する箇所ではRGBの全てが所定の閾値以上(例えば、240以上)である場合、当該ピクセルに対応する箇所を白飛び部分として判定する。かかる手法により、算出部133は、実際に対象物60に白色が含まれている部分と、正反射光40を感知することにより白色として検出された部分とを判別することができる。
続いて、算出部133は、取得された画像に基づいて白飛び部分と判定された部分であって、対象物60に対応する部分の傾斜角を算出する。ここで、算出部133が算出する処理について、図8を用いて説明する。図8は、第一の実施の形態に係る算出部133の処理について説明する図である。なお、図8においては、図を簡略化するために、光源20を一つだけ図示する。
図8の上図に例示するように、CCDセンサ10が光を感知する角度に対して入射角が60度となるように、光源20から照射光30が対象物70に対して照射されているものとする。そして、CCDセンサ10が照射光30に対する正反射光40を受光したとする。ここで、照射光30の入射角と、正反射光40の反射角とは等しくなるため、図8の上図における照射光30の入射角と、正反射光40の反射角は、ともに30度となる。よって、算出部133は、照射光30が正反射している対象物70の部分の傾斜角は、30度であると算出する。
同様に、図8の下図に例示するように、CCDセンサ10が受光する角度に対して入射角が80度となるように、光源20から照射光30が対象物75に対して照射されている場合には、算出部133は、照射光30が正反射している対象物75の部分の傾斜角は、40度であると算出する。
なお、対象物70および対象物75の全体の形状は、図8に示したような形状であるとは限られない。すなわち、算出部133は、一つの光源20から照射される照射光30のみでは、照射光30を正反射させている部分の傾斜角が算出するため、対象物70および75の他の部分に係る傾斜角については、他の光源20から取得される情報に基づいて、傾斜角を算出する。
すなわち、算出部133は、画像取得部132によって取得された画像に白飛び部分が発生している場合には、当該画像が取得された際の照射光30の入射角に関する情報を取得し、異なる入射角ごと(言い換えれば、異なる光源20ごと)に、白飛び部分を発生させた対象物に対応する部分の傾斜角を算出する。これにより、後述する推定部134は、対象物の全体の形状を推定することができるようになる。そして、算出部133は、算出した傾斜角などの形状情報を記憶部120に記憶する。なお、図8では、算出部133が、対象物60に対する入射角に基づいて対象物60の傾斜に関する情報を算出する例を示したが、算出部133は、所定の軸に対する入射角に基づいて対象物60の傾斜に関する情報を算出してもよい。例えば、算出部133は、対象物60が設置されている面との水平方向を軸とした光の入射角を求めてもよい。かかる手法によっても、算出部133は、イメージセンサ10が感知する光の角度に対する入射角と反射角を求めることができるので、対象物60の傾斜角を求めることができる。
推定部134は、算出部133によって算出された対象物60の部分の傾斜角に基づいて、対象物60の形状を推定する。ここで、推定部134が推定する処理について、図9を用いて説明する。図9は、第一の実施の形態に係る推定部134の処理について説明する図である。
図9では、推定部134が、算出部133によって算出された対象物60の各部分の傾斜角に基づいて、対象物60の形状を推定した状態を示している。図9において、対象物60の部分611は、光源201から照射された照射光301により取得された画像に基づいて、算出部133が算出した傾斜角を対応させた部分である。同様に、対象物60の部分612〜616は、照射光302〜306により取得された各画像に基づいて、算出部133が算出した各傾斜角を対応させた部分である。
このように、推定部134は、取得された画像のうち白飛び部分が発生している部分について算出部133が算出した傾斜角を対象物60の形状情報として、対象物60の形状を推定する。この場合、推定部134は、白飛び発生部分と合成画像との色情報の比較情報に基づいて、対象物60の形状を推定してもよい。例えば、推定部134は、合成画像と、図4に示す画像651とを比較し、最も白色情報が強く変化している部分(例えば、RGBの要素において、最も輝度の差が大きく、合成画像に比べて白色に近づいていると判定される部分)については、正反射光40を感知したものとして、この場合の照射光30の入射角に基づいて算出される角度をかかる部分の傾斜角と推定する。そして、推定部134は、かかる部分の周辺(図4に示す、白色と黒色のグラデーションで示される箇所)については、例えば、画像651から推定される傾斜角と、画像652から推定される傾斜角との部分とを滑らかに結ぶ形状となることを推定する。このようにして、推定部134は、図9に示すような対象物60の形状を推定することができる。なお、上述したように、算出部133は、撮影対象である対象物60を設置した水平面や、対象物60を設置した水平面と該直角となるイメージセンサ10感知する光の角度を、光の入射角や反射角の軸とする。すなわち、実施形態における光の入射角や反射角は、撮影対象の微細な凹凸に対する厳密な入射角や反射角とは異なる場合がありうる。かかる場合であっても、上記のように推定部134は、算出部133が算出した対象物60の各々の部分における傾斜に関する情報に基づいて、対象物60全体の形状を推定することができる。
また、上述のように、算出部133は、照射光30の入射角に基づいて対象物60の部分における傾斜角を算出するため、傾斜角が45度以上となる部分については傾斜角を算出できない場合がある。この場合、推定部134は、前後の傾斜角が45度以下となる部分の形状に基づいて、他の部分の形状を推定する。例えば、推定部134は、図9に点線で示す部分617については、その前後の形状(傾斜角)に基づいて、形状を推定する。そして、推定部134は、部分611〜617等を結合させることにより、対象物60の全体の形状を推定する。なお、後述する第三の実施の形態においては、画像取得装置100は、イメージセンサが感知可能な光の角度を適宜変更することにより、部分617に対応する傾斜角を求めることができる。推定部134は、対象物60の画像データと、推定された対象物60の形状情報とを対応付けて、記憶部120に形状情報追加データとして適宜記憶する。
また、画像取得装置100には、光源20と対象物60との間や、対象物60とCCDセンサ10の間に、所定のスリットが設置されてもよい。これにより、画像取得装置100は、照射光30の入射角や、正反射光40の反射角をより限定することができるため、形状の推定の精度を向上させることができる。
出力部135は、推定部134によって推定された対象物60の形状情報に基づいて、三次元画像情報を出力する。なお、出力部135は、三次元画像情報ではなく、画像取得部132によって取得された二次元画像情報と、推定部134によって推定された対象物60の形状情報から導出される対象物60の断面情報とを対応付けて出力するようにしてもよい。例えば、出力部135は、三次元画像情報を外部装置であるディスプレイに表示可能な形式に変換し、変換されたデータをIF部140に出力する。
IF部140は、例えば、NIC(Network Interface Card)等であり、外部装置との間で各種データを送受信する。例えば、IF部140は、出力部135から出力される対象物60の形状情報を外部装置の一例であるディスプレイに出力する。
[処理手順]
次に、図10を用いて、第一の実施の形態に係る画像取得装置100による処理の手順について説明する。図10は、第一の実施の形態に係る画像取得装置100による処理手順を示すフローチャートである。
図10に示すように、画像取得部132は、位置制御部131によって制御されるスキャンユニット110を用いて、異なる入射角による複数の光を照射することにより、対象物60について複数の画像を取得する(ステップS101)。
そして、算出部133は、画像取得部132によって取得された複数の画像を合成する(ステップS102)。そして、算出部133は、複数の画像によって合成された画像と、白飛び部分の発生している各画像との差分を抽出する(ステップS103)。これにより、算出部133は、対象物60において白飛び部分を発生させる部分を特定する。
そして、算出部133は、各画像において特定した白飛び部分に対応する対象物60における部分の傾斜角を算出する(ステップS104)。続いて、推定部134は、算出した傾斜角に対応する部分の形状情報を合成することにより、対象物60の形状を推定する(ステップS105)。
[第一の実施の形態の効果]
上述してきたように、第一の実施の形態に係る画像取得装置100は、画像取得部132と、算出部133と、推定部134とを備える。画像取得部132は、撮影対象(例えば、対象物60)に対して照射された光の反射光から生成される対象物60の画像を取得する。算出部133は、画像取得部132によって取得された画像を構成する画素のうち、画像の生成に際して照射された光を反射させた部分に対応する画素の色情報と、画像の生成に際して照射された光の対象物60に対する入射角とに基づいて、当該画素に対応する部分の傾斜に関する情報(例えば、当該部分の傾斜角)を算出する。推定部134は、算出部133によって算出された傾斜に関する情報に基づいて、対象物60の形状を推定する。
このように、第一の実施の形態に係る画像取得装置100は、撮影対象に照射される光の入射角に基づいて、対象物60の形状を推定することができる。また、画像取得装置100によれば、光源20とCCDセンサ10からなる撮像系と、対象物60の位置関係を固定した状態で撮像することができるため、安定した画像情報を取得することができる。これにより、画像取得装置100は、精度よく対象物60の形状情報を取得することができる。
また、画像取得部132は、撮影対象に対して照射された入射角の異なる複数の光の反射光ごとに生成される撮影対象の画像を取得する。そして、算出部133は、画像取得部132によって取得された複数の画像を合成することにより、画素の色情報を平均化した合成画像を構成する画素の色情報と、入射角の異なる光の反射光ごとに生成された各々の画像を構成する画素の色情報との比較に基づいて、撮影対象における画素に対応する部分の傾斜角を算出する。
このように、画像取得装置100は、入射角が異なる光を複数照射させることで取得される複数の画像に基づいて、対象物60の形状を推定することができる。すなわち、画像取得装置100は、複数の入射角の異なる光により生成される複数の画像を合成した画像と、各々の画像とを比較し、白飛び部分を特定したうえで、かかる部分の傾斜角を算出する。これにより、画像取得装置100は、取得した画像に白飛び部分が含まれていると判定する場合には、かかる部分の傾斜角を入射角から求めることができる。また、画像取得装置100は、取得した画像に白飛び部分が含まれていないと判定する場合には、かかる部分が平面形状であると求めることができる。このため、画像取得装置100は、対象物60の形状を高い精度で推定することが可能となる。
[第二の実施の形態]
上記の第一の実施の形態において、画像取得装置100が取得した複数の画像を合成することで、対象物60において白飛び部分を発生させる部分を特定する処理について説明した。ここで、画像取得装置100は、異なる手法により、白飛び部分を発生させる部分を特定してもよい。
図11は、第二の実施の形態に係る画像取得装置100の構成を示す図である。図11に示すように、画像取得装置100に係るスキャンユニット110は、図1に示すスキャンユニット110と比較して、偏光フィルタ160及び170を有する点が異なる。なお、図11においては、図を簡略化するために、光源20を一つだけ図示する。
図11に示すように、スキャンユニット110は、光源20の前面に偏光フィルタ160を有し、CCDセンサ10の前面に偏光フィルタ170を有する。光源20から発生した照射光30は、偏光フィルタ160を通過する。この場合、対象物60に照射された照射光30の反射光のうち、拡散光35は、ランダム光に戻る。一方、対象物60に照射された照射光30の反射光のうち、正反射光40は、偏光されたままの状態である。
そして、CCDセンサ10は、拡散光35の一部と、正反射光40とを受光するものとする。ここで、CCDセンサ10の前面には、偏光フィルタ160と対となる偏光フィルタ170が備えられている。このため、偏光フィルタ170を通過する正反射光40は、すべて偏光フィルタ170によりカットされる。すなわち、CCDセンサ10は、拡散光35のみを感知する。
これにより、画像取得装置100は、対象物60を撮像した結果として、白飛び部分の発生しない画像65を取得する。すなわち、第二の実施の形態に係る画像取得装置100は、凹凸のある対象物60を撮像する場合であっても、白飛び部分の発生しない画像65を取得することができる。そして、画像取得装置100は、取得した画像65と、白飛び部分の発生している画像(例えば、図4及び図5に示す画像651〜656)とを比較し、差分を抽出することにより、対象物60における白飛び部分の発生する部分を特定する。
このように、第二の実施の形態に係る画像取得装置100によれば、偏光フィルタを通過した光を利用して撮像することにより得られた画像65を用いるので、第一の実施の形態と比較して、精度よく対象物60における白飛び部分の発生する部分を特定することができる。
なお、偏光フィルタ160および170を介した場合、CCDセンサ10に到達する光量が減少する場合がある。この場合、画像取得装置100は、光沢のない部分が偏光フィルタ160および170を用いずに撮影される場合と同じような感度で撮像されるように、感度を調整するようにしてもよい。あるいは、画像取得装置100は、画像取得後に、デジタル画像のヒストグラム(histogram)が光沢部を除いて重なるように(例えば、24ビットカラーの場合、RGBの各値が0〜255のうち、0〜200程度の範囲が良く重なるように)、取得した画像に補正を加えてもよい。また、画像取得装置100は、上記の感度調整とヒストグラムを用いた補正との両方を行っても良い。
[処理手順]
次に、図12を用いて、第二の実施の形態に係る画像取得装置100による処理の手順について説明する。図12は、第二の実施の形態に係る画像取得装置100による処理手順を示すフローチャートである。
図12に示すように、画像取得部132は、偏光フィルタが前面に設置された光源20およびCCDセンサ10を有するスキャンユニット110を用いて対象物60を撮像する。すなわち、画像取得部132は、偏光フィルタを通すことにより、対象物60について白飛び部分のない画像を取得する(ステップS201)。また、画像取得部132は、偏光フィルタを通さずに、複数の光源20を用いて対象物60の画像を取得する(ステップS202)。
そして、算出部133は、偏光フィルタを通して取得された画像と、白飛び部分の発生している各画像との差分を抽出する(ステップS203)。これにより、算出部133は、対象物60において白飛び部分を発生させる部分を精度よく特定する。
そして、算出部133は、対象物60において特定した白飛び部分に対応する部分の傾斜角を算出する(ステップS204)。続いて、推定部134は、算出した傾斜角に対応する部分の形状情報を合成することにより、対象物60の形状を推定する(ステップS205)。
[第二の実施の形態の効果]
上述してきたように、第二の実施の形態に係る画像取得部132は、撮影対象に対して照射された光であって、偏光フィルタを通過した光の反射光から生成される対象物60の画像を取得する。そして、第二の実施の形態に係る算出部133は、画像取得部132によって取得された画像のうち、偏光フィルタを通過した光の反射光により生成された画像の色情報(具体的には、対象物60において、画像の生成に際して照射された光を反射させた部分に対応する画素の色情報)と、偏光フィルタを通過していない光の反射光により生成された画像の色情報との比較に基づいて傾斜角を算出する。
このように、第二の実施の形態に係る画像取得装置100は、CCDセンサ10が感知する光を偏光フィルタ170に通過させることにより、比較対象として、白飛び部分の発生しない画像65を取得することができる。このため、画像取得装置100は、第一の実施の形態と比較して、白飛び部分の有無を精度よく比較し、抽出することができる。言い換えれば、画像取得装置100は、取得した画像において、対象物60の凹凸形状により生じた白飛び部分を精度よく特定することができる。これにより、画像取得装置100は、精度よく対象物60の形状情報を取得することができる。
[第三の実施の形態]
上記の第一の実施の形態において、対象物60の傾斜角の算出処理の性質上、45度を超える傾斜角を算出することが困難であることを説明した。ここで、画像取得装置100は、異なる手法により、45度を超える傾斜角を算出する手法を実現してもよい。
図13は、第三の実施の形態に係る画像取得装置100が実行する算出処理を説明する図である。図13に示すように、画像取得装置100は、図1に示す画像取得装置100と比較して、異なる角度から光を受光することのできるCCDセンサ102を有する点が異なる。なお、図13においては、図を簡略化するために、光源20を一つだけ図示する。
図13に例示するように、CCDセンサ101が光を感知する角度(直角)に対して入射角が70度となるように、光源20から照射光30が対象物90に対して照射されているものとする。ここで、図13に示すように、対象物90における受光部の傾斜角が45度以上の場合には、正反射光40が直角を超えて反射するため、CCDセンサ101では正反射光40を受光することができない。
このため、第三の実施の形態に係る画像取得装置100は、第2のCCDセンサ102を備える。例えば、CCDセンサ102は、図13に示すように、CCDセンサ101に対してマイナス40度となる角度から照射される光を受光することが可能であるとする。
そして、CCDセンサ102が、光源20から照射された入射角70度の照射光30の正反射光40を受光したとする。この場合、画像取得装置100は、以下に示す式(1)及び(2)により、対象物90における受光部分の傾斜角55度を算出することができる。
70−(−40) = 110 ・・・ (1)
ll0÷2= 55 ・・・ (2)
このように、第三の実施の形態に係る画像取得装置100は、CCDセンサ101とは異なる角度の光を受光するCCDセンサ102を備える。これにより、画像取得装置100は、第一の実施の形態と比較して、対象物における45度を超える角度を有する部分についても傾斜角を算出することができるので、より精度の高い形状を推定することができる。
なお、第三の実施の形態に係る画像取得装置100は、CCDセンサ10を複数備えるのではなく、設置位置が可変するCCDセンサ10を備えてもよい。この場合、位置制御部131は、CCDセンサ10の設置位置を適宜制御することにより、CCDセンサ10が種々の角度の光を受光可能なように調整する。
[第三の実施の形態の効果]
上述してきたように、第三の実施の形態に係る画像取得部132は、感知可能な光の角度が可変であるイメージセンサに反射光を感知させることによって生成される撮影対象の画像を取得する。そして、第三の実施の形態に係る算出部133は、画像の取得に際して照射された光の撮影対象に対する入射角と、イメージセンサが感知する反射光の入射角に対する角度とに基づいて、傾斜角を算出する。
これにより、第三の実施の形態に係る画像取得装置100は、第一の実施の形態と比較して、より詳細な対象物の部分における傾斜角を算出することができる。具体的には、画像取得装置100は、傾斜角が45度を超える部分であっても、当該部分の傾斜角を算出することができる。このため、画像取得装置100は、第一の実施の形態においては、前後の部分の形状から推定していた形状についても精度よく推定することができる。結果として、画像取得装置100は、対象物60について、精度の高い形状情報を取得することができる。
(構成等)
なお、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
(プログラム)
また、上記各実施形態に係る画像取得装置100が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータに読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、画像取得装置100と同様の機能を実現する形状推定プログラムを実行するコンピュータの一例を説明する。
図14は、形状推定プログラムを実行するコンピュータを示す図である。図14に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU(Central Processing Unit)1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
メモリ1010は、ROM(Read Only Memory)1011およびRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。ディスクドライブ1041には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
ここで、図14に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各情報は、例えばハードディスクドライブ1090やメモリ1010に記憶される。
また、形状推定プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明した画像取得装置100が実行する各処理が記述されたプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。
また、形状推定プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
なお、形状推定プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、形状推定プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。