(58)【調査した分野】(Int.Cl.,DB名)
前記算出手段は、前記光源の位置と前記法線を算出する位置とに基づいて前記物体から前記光源への方向を表す光源ベクトルを算出し、前記撮像装置の位置と前記法線を算出する位置とに基づいて前記物体から前記撮像装置への方向を表す視線ベクトルを算出し、前記光源ベクトルと前記視線ベクトルとの和を算出することによって、前記法線を算出することを特徴とする請求項1乃至請求項5のいずれか一項に記載の画像処理装置。
前記複数の照明パターンは、前記複数の光源を互いに異なる明るさで発光させた場合の照明パターンと、前記複数の光源を同じ明るさで発光させた場合の照明パターンとを含むことを特徴とする請求項9に記載の画像処理装置。
前記第2位置情報は、前記撮像装置から前記物体までの距離を表す深度データまたは前記物体の形状を表す形状データに基づいて取得されることを特徴とする請求項1乃至請求項12のいずれか一項に記載の画像処理装置。
【発明を実施するための形態】
【0008】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は本発明を限定するものではなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。実施形態の構成は、本発明が適用される装置の仕様や各種条件(使用条件、使用環境等)によって適宜修正又は変更され得る。
【0009】
実施形態1
本実施形態においては、従来の方法により算出した法線から深度を取得し、当該深度を用いて再度法線を算出するという処理を繰り返し行うことにより、高精度に法線を算出する。すなわち、繰り返し処理により取得した深度から、法線算出対象物体の法線取得位置を算出し、法線算出の際に視線ベクトルと光源ベクトルを補正することで法線算出精度を向上させる。深度とは、撮像装置から法線算出対象物体までの距離である。
【0010】
(画像処理装置の構成)
図1は、本発明に係る画像処理装置100の構成の一例を示す図である。画像処理装置100は、CPU101、RAM102、ROM103、二次記憶装置104、入力インターフェース105、出力インターフェース106、およびシステムバス107を有する。画像処理装置100には、入力装置108と外部蓄積装置109と表示装置110が接続されている。より詳しくは、入力装置108は画像処理装置100の入力インターフェース105に接続され、外部蓄積装置109は画像処理装置100の入力インターフェース105と出力インターフェース106に接続されている。また、表示装置110は画像処理装置100の出力インターフェース106に接続されている。
CPU101は、RAM102をワークメモリとして、ROM103に格納されたプログラムを実行し、システムバス107を介して画像処理装置100の各部を統括的に制御する処理回路である。CPU101がプログラムを実行することにより、後述する様々な処理が実行される。
【0011】
二次記憶装置104は、システムバス107を介してプログラムの実行に必要なデータの蓄積を行うことができるメモリである。また、二次記憶装置104に蓄積されたデータは、システムバス107を介して読み出すことが可能である。二次記憶装置104としては、HDD、光ディスクドライブ、フラッシュメモリ等の記憶デバイスを用いることができる。HDDはHard Disk Driveの略である。
入力インターフェース105は、例えばUSBやIEEE1394等のシリアルバスインターフェースである。画像処理装置100は、入力インターフェース105を介して、入力装置108や外部蓄積装置109などからデータなどを取得することができる。
出力インターフェース106は、例えばDVIやHDMI(登録商標)等の映像出力端子である。画像処理装置100は、出力インターフェース106を介して、表示装置110に、処理された画像などを表示することができる。出力インターフェース106は、例えば、USBやIEEE1394等のシリアルバスインターフェースである。画像処理装置100は、出力インターフェース106を介して、外部蓄積手段109へのデータの蓄積を行うことができる。
【0012】
入力装置108は、ユーザが所望の情報やデータを画像処理装置100に入力するためのものである。入力装置108は、例えば、キーボード、マウス、タッチパネル、音声入力部等を含む。
外部蓄積装置109は、例えば、ハードディスク、メモリーカード、CFカード、SDカード、USBメモリである。CFはCompact Flashの略である。
表示装置110は、液晶ディスプレイなどの出力デバイスである。なお、表示装置110は音声出力部を備えてもよい。
画像処理装置100の構成要素は上記以外にも存在し得る(例えば、外部の機器と通信を行う通信部)が、法線の算出に関連がない構成要素の説明は本明細書において省略する。
【0013】
(法線算出システムの構成)
図2(A)は、法線算出システム200の概略構成を示している。
図2(A)に示されているように、法線算出システム200は、画像処理装置100と、撮像装置201と、光源装置202と、撮影ステージ204とを有する。法線算出システム200は、法線算出対象物体(以下、「物体」と称する)203の法線を算出するシステムである。物体203は、例えば、球体である。画像処理装置100は、撮像装置201と光源装置202に接続されている。法線算出システム200は、画像処理装置100を含む画像処理システムである。
撮像装置201は、物体203の画像を撮像する装置である。撮像装置201は、例えば、カメラである。
光源装置202は、複数の点光源からなる照明装置である。点光源の配置等については、
図2(B)を用いて後述する。
撮影ステージ204は、物体203を置くステージ(載置台)である。撮影ステージ204は、伸長収縮できるように構成されるか、移動可能に構成され、物体203を光源装置202の中心Oに配置することができる。
【0014】
(光源装置の複数の点光源)
図2(B)は、光源装置202が物体203に光を照射する様子を示している。
図2(B)に示されるように、光源装置202は複数の照明(点光源)205を有している。点光源205は離散的に且つ球面状に配置されている。光源装置202は、点光源205を異なる輝度で発光させることができる。つまり、光源装置202は、点光源205の輝度を連続して(徐々に、滑らかに、段階的に)変化させることができる(勾配照明)。勾配照明はgradient illuminationと称される。また、光源装置202は、点光源205を同一の輝度で発光させることもできる(均一照明)。
図2(B)には、光源装置202が物体203に向けて、点光源205から異なる輝度で光を照射する様子を描いてある。
物体203から点光源205へ向かうベクトルL”が光線ベクトルであり、物体203から撮像装置201へ向かうベクトルC”が視線ベクトルである。符号Nは法線ベクトルを示す。物体203上の点206は、法線取得位置(法線Nの起点になる位置)を示す。なお、撮像装置201の位置は、図示の都合上、
図2(A)とは異なるように描かれている。
【0015】
次に、画像処理装置100で行われる処理について、
図3に示すブロック図と
図4に示すフローチャートとを参照して説明する。画像処理装置100は、CPU101が、ROM103に格納されたプログラムを、RAM102をワークメモリとして実行することで、
図3に示す各ブロックとして機能し、
図4に示す各ステップの処理を行う。なお、以下に示す処理の全てがCPU101によって実行される必要はなく、処理の一部又は全部がCPU101以外の一つ又は複数の処理回路によって行われるように画像処理装置100が構成されていてもよい。
【0016】
(画像処理装置の機能ブロック図)
図3に示されているように、機能ブロックで描くと、画像処理装置100は、画像取得部301、制御部302、光源位置算出部303、法線算出部304、繰り返し処理判定部305、高さマップ算出部306および深度算出部307から成る。
画像取得部301は、光源装置202によって照射された物体203を撮像した撮像装置201から画像を取得する。また、画像取得部301は、物体203の画像から鏡面反射光成分を抽出する。
制御部302は、所定の規則(例えば、3種類の勾配照明パターンと、1種類の均一照明パターン)に従って、光源装置202の点光源205を点灯させる。制御部302は、光源装置202からの照射光により物体203を照射し、撮像装置201が物体203を撮像できるようにしている。
【0017】
光源位置算出部303は、画像の画素毎に、法線算出のための点光源205の位置を算出(取得)する。
法線算出部304は、物体203の深度(法線取得位置)と、撮像装置201の位置と、点光源の位置とから、法線を算出する。撮像装置201の位置は、事前に、入力装置108から画像処理装置100に入力されていてもよいし、撮像中に取得してもよい。撮像装置201の位置の情報は、例えば、入力装置108からRAM102に入力・記憶され、必要なときに、法線算出部304がRAM102から取得する。
【0018】
繰り返し処理判定部305は、所定の条件の下で、繰り返し処理(後述する)を続けるかを判定する。繰り返し処理を続けないという判定結果の場合、繰り返し処理判定部305は法線算出部304が算出した法線が適切な法線であるとして、画像処理装置100から当該法線を出力する。繰り返し処理を続けるという判定結果の場合、繰り返し処理判定部305は法線算出部304が算出した法線が適切な法線でないとして、当該法線を高さマップ算出部306に出力する。
高さマップ算出部306は、法線から画像の画素の高さマップを作成(算出)する。
深度算出部307は、高さマップを深度マップに変換する。物体203の深度は、深度算出部307から法線算出部304に入力される。物体203の深度は法線取得位置206として用いることができるので、深度算出部307は、算出された法線を用いて、法線取得位置を補正していると言える。
【0019】
(画像処理装置の処理フロー)
S401では、画像取得部301が、処理対象である物体203の画像を撮像装置201から取得する。つまり、画像取得部301は、法線算出用画像を撮像装置201から取得する。そして、画像取得部301は、法線算出用画像を光源位置算出部303に出力する。
S401で取得される画像(法線算出用画像)は、制御部302によって所定の規則(所定の照明パターン)に従って点灯された光源装置202によって照らされた物体203を撮像して得た画像群である。ここで、所定の規則とは、例えば、特許文献1に示すような鏡面反射光を用いて法線を算出するための照明パターンのことである。特許文献1では光源装置202のように離散的に配置された連続的に輝度を変化させられる多灯照明(複数の点光源205)を、互いに直交するx、y、zの各々の軸方向に滑らかに輝度を変化させて3種類の勾配照明パターンで照明を行う。すなわち、x軸方向に滑らかに輝度を変化させて1種類のパターンを作り、y軸方向に滑らかに輝度を変化させて1種類のパターンを作り、z軸方向に滑らかに輝度を変化させて1種類のパターンを作り、物体203に光を照射する。
【0020】
光源装置202の中心Oから見て角度θ
iの方向に存在する点光源205の放射輝度L
iは、光源装置202の中心Oに入射する光線の向きを表す単位ベクトルωと定数cを用いると、式(1)で表すことができる。式(1)において、iはx、y、zのいずれかを表す。また、θ
iは、光源装置202の中心Oと点光源205を結ぶ直線と、i軸とがなす角度を表す。
L
i(θ
i)=cω
i(θ
i) (1)
【0021】
次に、制御部302は、全ての点光源205を同じ輝度で点灯させる(均一照明)。均一照明の場合、点光源205の放射輝度は角度θに依存せず、式(2)で表される。
L
c=c (2)
このとき、1つの偏光板を点光源205に配置し、別の偏光板を撮像装置201に配置しておく。そして、点光源205に配置した偏光板と撮像装置201に配置した偏光板の主軸の方向を、直交させた場合と平行にした場合の二通りで撮像を行う。画像取得部301は、それらの画像の差分をとることで鏡面反射光成分(以下、「鏡面反射光」と称する)を抽出する。撮像された画像群はRAM102や二次記憶装置104に記憶しておく。なお、鏡面反射光の抽出はこの方法のみに限定されない。例えば、二色性反射モデルを用いた方法等を利用して鏡面反射光の抽出を行うこともできる。画像取得部301は、鏡面反射光を光源位置算出部303に出力する。
【0022】
S402では、光源位置算出部303が、法線算出用の画像群に基づき、複数の点光源205の中から、物体203から正反射して撮像装置201に入射する鏡面反射光を発する点光源205の位置(以下、「光源位置」と称する)を画素毎に算出する。各画素(x’,y’)に対する鏡面反射係数をρ(x’,y’)とすると、撮像装置201を用いて観測した輝度Iは、画素毎に、勾配照明の場合は式(3)で表すことができ、均一照明の場合は式(4)で表すことができる。
I
i(θ
i,x’,y’)=ρ(x’,y’)cω
i(θ
i) (3)
I
c=ρ(x’,y’)c (4)
式(3)を式(4)で除算することで式(5)を得る。
【0024】
式(5)から入射光ベクトルωのx成分、y成分、z成分が分かるため、鏡面反射する光(鏡面反射光)を発する点光源205の存在する位置(光源位置)L’を特定できる。このようにして、S402では、光源位置算出部202が、画像の画素毎に光源の位置を取得する。
S403では、法線算出部304が、深度算出部307が出力した物体203の深度と撮像装置201の位置と光源位置とから、画像の画素毎に法線を算出する。物体203の深度は法線取得位置206として用いることができる。撮像装置201で撮像した画像における画素(x’,y’)に対応する深度V’ (x’,y’)は、撮像装置201から物体203の各点(法線取得位置)に対する奥行き方向の距離を表している。従って、深度の最大値をV’
max、画像の幅をw、高さをh、中心画素を(x
o’,y
o’)とすると、画素(x’,y’)における法線取得位置ベクトルPは水平画角φ
H、垂直画角φ
Vを用いて式(6)で表される。法線取得位置ベクトルPは、撮像装置201の座標の原点から出るベクトルである。水平画角φ
H及び垂直画角φ
Vは、撮像装置(カメラ)201の画角である。
【0026】
視線ベクトルC’’と入射光線ベクトルL’’は、撮像装置201の位置ベクトルをC’とし、点光源205の位置ベクトルをL’とし、法線取得位置ベクトルPを用いると、それぞれ、式(7)及び式(8)で表される。
C”(x’,y’)=C’(x’,y’)−P(x’,y’) (7)
L”(x’,y’)=L’(x’,y’)−P(x’,y’) (8)
視線ベクトルC’’と入射光線ベクトルL’’を用いて、式(9)で法線ベクトルNを算出する。
【0028】
画素毎の法線算出の模式図を
図5に示す。
図5に示すように、画素毎に視線ベクトルC’’と入射光線ベクトルL’’は異なるため、算出される法線ベクトルNも画素毎に異なる。
なお、一度目の繰り返し処理(ループ処理)では、物体203の深度は未知であるため、法線取得位置206は光源装置202の中心Oであるとする。二度目以降のループ処理では深度算出部307が出力した物体203の深度を用いる。ループ処理とは、S403−S404−S405−S406−S403のループで行われる処理のことである。
【0029】
S404では、法線算出部304がm回目のループ処理において出力した画素(i,j)の法線ベクトルN
m(i,j)と、m−1回目のループ処理において出力した画素(i,j)の法線ベクトルN
m-1(i,j)とのなす角度を用いて判定を行う。より詳しくは、S404では、繰り返し処理判定部305が、法線ベクトルN
m(i,j)と法線ベクトルN
m-1(i,j)とのなす角度(角度の差分)が閾値φ未満か否かにより、繰り返し処理の必要性の有無を判定する。閾値φは、例えば、事前にユーザが入力装置108により入力・設定しておく。法線ベクトルの角度の差分は複数得られるので、S404では、複数の差分の平均値を用いる。複数の法線ベクトルの角度の差分の平均値が閾値φ未満であるか否かによって、繰り返し処理の必要性の有無を判定する。なお一度目のループ処理においては、所定の法線ベクトルN
0(i,j)を使用する。例えば、物体203に対して撮像装置201の光軸方向に平行な法線を法線ベクトルN
0(i,j)とする。
S404では、例えば、法線ベクトルの値を各画素に格納した法線マップを用いる。S404における繰り返し処理の必要性の判定条件は式(10)のように表わすことができる。
【0031】
繰り返し処理が必要ない場合(S404:Yes)、ループ処理を終了し、繰り返し処理判定部305は、法線算出部304から入力された法線をそのまま出力する。繰り返し処理が必要である場合(S404:No)、繰り返し処理判定部305は、入力された法線を高さマップ算出部306へ出力する。
S405では、高さマップ算出部306が、繰り返し処理判定部305が出力した法線から高さマップを算出することにより、物体203の高さマップを取得する。高さマップ算出部306は、取得した高さマップを深度算出部407へ出力する。各画素(i,j)における法線ベクトルをN(i,j)とすると、各画素の高さV(i,j)は式(11)で表される。
【0033】
この高さマップは撮像装置201の光軸に直交するある平面(高さマップの基準面)からの高さをnビットのモノクロ画像に格納したものである。
S406では、深度算出部307が、高さマップ算出部306が出力した高さマップを撮像装置201から物体203までの深度マップへ変換することにより、深度を取得(算出)する。高さマップは基準面からの高さをモノクロ画像に格納したものであるため、撮像装置201から基準面までの距離dを決定することで、撮影装置201から物体203までの深度を決定できる。そこで、物体203が球面状に配置した点光源205の中心O付近にあるとして、距離dを撮像装置201から点光源205の中心Oまでの距離の近傍で変化させた際の法線N
d(i,j)の変化率を計算し、変化率を最も小さくする距離dを採用する。例えば、高さマップに格納されている高さの値の範囲が0からaまでであるとする。そして、深度V’(i,j)に対する深度マップの輝度値がI’ (i,j)であるとき、画素(i,j)における撮像装置201から物体203までの深度V’ (i,j)は式(12)で表される。なお、高さの値の範囲については被写体(物体203)の大きさに合わせて、ユーザが入力装置108を用いて指定するものとする。
【0035】
V’は撮像装置から物体203までの距離を表すため、V’を用いて式(6)から法線取得位置ベクトルPを算出する。法線取得位置ベクトルPを用いて、式(7)および式(8)から視線ベクトルC’’および入射光線ベクトルL’’を算出する。そして、視線ベクトルC’’および入射光線ベクトルL’’を用いて、式(9)から法線ベクトルNを算出する。つまり、視線ベクトルC’’と入射光線ベクトルL’’の和から法線ベクトルNを算出する。
dを算出する場合には、撮像装置201から高さマップの基準面までの距離をΔdだけ変化させて法線ベクトルを算出し、法線ベクトルの変化率を最小とするdを算出する。すなわち、高さマップの画像の幅をwとし、高さをhとし、式(13)を満たすようなdを採用する。
【0037】
このdハット(d∧)を用いて、式(6)、式(7)、式(8)、式(9)および式(12)から法線を算出した後に(S403)、前述と同様に繰り返し処理の必要性の有無を判定する(S404)。繰り返し処理が必要ない場合、法線がそのまま出力され、繰り返し処理の必要がある場合、同様の手順で法線を算出することを繰り返す。本実施形態では、繰り返し処理が必要ないと判定された時点で、最終的な法線を算出する。
【0038】
(実施形態1の効果)
特許文献1では、法線取得位置がある一点であると仮定して法線ベクトルを算出していたために、法線取得位置がその一点からずれた際に、法線取得位置と撮像装置の位置と光源位置から算出される光源ベクトルと視線ベクトルにずれが生じる。そのため、それらのベクトルにより算出される法線の精度が低下する。しかし、本実施形態では法線算出(S403)と深度算出(S406)を繰り返し行うことで、法線と深度を徐々に高精度なものにして行く。そして、法線の精度が所定以上のものなったとき(S404:Yes)、繰り返し処理を終了して、当該法線を画像処理装置100から出力する。つまり、本実施形態では、法線を算出した後、すでに算出した法線(または、予め用意してある法線)とのなす角度が閾値以上の場合、直前に算出した法線を用いて、深度(法線取得位置)を補正する処理を行う。そして、補正された法線取得位置と、すでに取得している光源の位置と、すでに取得している撮像装置の位置とを用いて、法線を再度算出している。
【0039】
よって、本実施形態の画像処理装置100は、物体203の大きさ・形状を考慮(つまり、物体203上の法線取得位置の違いを考慮)することで、法線取得位置のずれ(入射光線ベクトルと視線ベクトルのずれ)を低減補正し、法線の算出精度を向上している。
本実施形態の効果を実証するため、立方体モデルのCG画像に対して、上記した繰り返し処理を適用した際の法線の角度誤差を算出した。
図6は、その算出結果を示している。
図6は、横軸に繰り返し回数をとり、縦軸に法線に発生する角度誤差をとった際の法線算出誤差を示したグラフである。
図6から、繰り返し処理によって法線の算出精度が向上していることが分かる。
【0040】
(変形例)
なお、上記した実施形態では、画像処理装置100に二次記憶装置104が含まれるとしたが、二次記憶装置104は画像処理装置100の外に設けてもよい。また、入力装置108および表示装置110が画像処理装置100の外に設けられるとしたが、入力装置108および表示装置110は、画像処理装置100に含まれてもよい。
上記した実施形態では、撮影ステージ204に球状の被写体(物体203)が置かれたが、被写体は人物でもよい。例えば、椅子に座った人物の頭部(顔部)が法線算出対象物体となった場合でも、本発明を適用することができる。また、撮影ステージ204は法線算出システム200に含まれるとしたが、法線算出システム200に含まれなくてもよい。
【0041】
上記した実施形態では、画像取得部301が法線算出用画像の取得と鏡面反射光の抽出とを行ったが、鏡面反射光の抽出については、鏡面反射光抽出部を設けて、鏡面反射光抽出部に鏡面反射光の抽出を行わせてもよい。
画像処理装置100は、例えば、PC(パーソナルコンピュータ)で構成することができる。なお、画像処理装置100は、PC以外の装置(例えば、タブレットコンピュータ、ウエアラブルコンピュータ)で構成することもできる。
【0042】
上記した実施形態では、複数の点光源を有する光源装置202を使用したが、光源装置202は1つの光源を有するものでもよい。例えば、1つの光源を徐々に移動させながら、物体203を連続的に撮像した画像を加算することで、物体203に対して複数の光源から光を照射した際の画像を得ることができる。本発明は、光源の数にかかわらず、光源の位置、法線取得位置および撮像装置の位置を用いて、物体の法線取得位置における法線を算出し、算出された法線を用いて、法線取得位置を補正する装置であれば適用することができる。つまり、本発明は、補正された法線取得位置と、光源の位置および撮像装置の位置とを用いて、法線を再度算出させる制御を行う装置であれば適用することができる。また、上記した実施形態では、光源装置202が点光源を有するとしたが、光源は点光源以外の光源でもよい。
【0043】
図3に示した機能ブロック構成は一例であり、複数の機能ブロックが1つの機能ブロックを構成するようにしてもよいし、何れかの機能ブロックが複数の機能を行うブロックに分かれてもよい。また、機能ブロックの少なくとも1つがハードウェアとして実装されてもよい。ハードウェアにより実装する場合、例えば、所定のコンパイラを用いることで、各ステップを実現するためのプログラムからFPGA上に自動的に専用回路を生成すればよい。FPGAとは、Field Programmable Gate Arrayの略である。また、FPGAと同様にしてGate Array回路を形成し、ハードウェアとして実現するようにしてもよい。また、ASIC(Application Specific Integrated Circuit)により実現するようにしてもよい。
【0044】
(その他の実施形態)
上記した実施形態では、画像処理装置100を説明したが、本発明はその他の形態でも具現化(実現)することができる。たとえば、上記した実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。