(57)【要約】 【課題】物体の法線をより高い精度で算出できる画像処理装置を提供すること。【解決手段】画像処理装置は、物体に光を照射する光源の位置を取得する第１の取得手段と、前記物体の法線取得位置を取得する第２の取得手段と、前記物体の画像を撮像する撮像装置の位置を取得する第３の取得手段と、取得された前記光源の位置、前記法線取得位置および前記撮像装置の位置を用いて、前記物体の法線取得位置における法線を算出する算出手段と、算出された前記法線を用いて、前記法線取得位置を補正する補正手段と、補正された前記法線取得位置と、取得された前記光源の位置および前記撮像装置の位置とを用いて、前記法線を前記算出手段に再度算出させる制御を行う制御手段と、を備える。【選択図】図４
2018136693.tif 000002
【特許請求の範囲】
【請求項１】
物体に光を照射する光源の位置を取得する第１の取得手段と、
前記物体の法線取得位置を取得する第２の取得手段と、
前記物体の画像を撮像する撮像装置の位置を取得する第３の取得手段と、
取得された前記光源の位置、前記法線取得位置および前記撮像装置の位置を用いて、前記物体の法線取得位置における法線を算出する算出手段と、
算出された前記法線を用いて、前記法線取得位置を補正する補正手段と、
補正された前記法線取得位置と、取得された前記光源の位置および前記撮像装置の位置とを用いて、前記法線を前記算出手段に再度算出させる制御を行う制御手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記算出手段により法線を再度算出させるべきかを判定する判定手段をさらに備え、
前記制御手段は、前記判定手段の判定結果に基づいて、前記算出手段に法線を再度算出させる請求項１記載の画像処理装置。
【請求項３】
前記判定手段は、所定の法線と、前記算出手段により算出された法線とのなす角度が閾値以上の場合、前記算出手段により法線を再度算出させるという判定結果を出す請求項２記載の画像処理装置。
【請求項４】
前記第１の取得手段は、前記撮像装置で取得した鏡面反射光の輝度値に基づいて、前記光源の位置を取得することを特徴とする請求項１〜３のいずれか１項に記載の画像処理装置。
【請求項５】
前記算出手段は、前記光源の位置と前記法線取得位置から光源ベクトルを算出し、前記撮像装置の位置と前記法線取得位置から視線ベクトルを算出し、前記光源ベクトルと前記視線ベクトルの和から前記法線を算出することを特徴とする請求項１〜４のいずれか１項に記載の画像処理装置。
【請求項６】
前記第２の取得手段は、前記撮像装置から前記物体までの距離に基づいて、前記法線取得位置を取得することを特徴とする請求項１〜５のいずれか１項に記載の画像処理装置。
【請求項７】
前記光源は複数の光源を含み、前記撮像装置は前記複数の光源からの光により照射された前記物体の画像を撮像し、
前記第１の取得手段は、前記画像中の前記物体に対応する各画素について、前記複数の光源の中から、前記物体の表面で鏡面反射する光を発する光源の位置を前記光源の位置として取得し、
前記算出手段は、前記各画素について、前記法線を算出することを特徴とする請求項１〜６のいずれか１項に記載の画像処理装置。
【請求項８】
物体に光を照射する光源と、
前記光源からの光で照射された前記物体の画像を撮像する撮像装置と、
請求項１〜７のいずれか１項に記載の画像処理装置と、
を備える画像処理システム。
【請求項９】
物体に光を照射する光源の位置と、前記物体の法線取得位置と、前記物体の画像を撮像する撮像装置の位置とを用いて、前記物体の法線取得位置における法線を算出するステップと、
算出された前記法線を用いて、前記法線取得位置を補正するステップと、
補正された前記法線取得位置と、取得された前記光源の位置および前記撮像装置の位置とを用いて、前記法線を再度算出するステップと、
を有することを特徴とする画像処理方法。
【請求項１０】
コンピュータが読み取り実行することで、前記コンピュータを、請求項１〜７のいずれか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
物体（被写体）の撮像画像から当該物体の法線を算出する技術としては、多灯照明を用いて当該物体に対して光を照射し、その鏡面反射光から法線を算出する技術が知られている（特許文献１）。鏡面反射光から法線を算出する技術では、法線算出対象物体に対して輝度が空間的に変化する多灯照明から光を照射し、その反射光を撮像装置に入射させる。そして、当該反射光から拡散反射光を除外し、鏡面反射光のみを抽出する。その後、その鏡面反射光の強度に基づいて、物体から正反射して撮像装置に入射する光を照射する光源の位置を算出する。最後に、光源の位置と撮像装置の位置と法線取得位置（法線算出対象物体上の法線の起点となる位置）から、光源ベクトルと視線ベクトルを算出し、光源ベクトルと視線ベクトルから法線を算出する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第８１３４５５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら特許文献１では、法線取得位置を特定の一点（例えば、多灯照明装置の中心）として、光源ベクトルと視線ベクトルを算出していた。そのため、法線算出対象物体がある程度の大きさを有する場合、光源ベクトルと視線ベクトルを正確に算出することができなくなる。つまり、法線算出対象物体が無視できない大きさを有する場合には、当該物体上の法線取得位置は一点に定まらないので、特許文献１のように法線取得位置を特定の一点としてしまうと、光源ベクトルと視線ベクトルを正確に算出することができない。したがって、特許文献１の技術では、法線算出精度が低下するという課題があった。
本発明は、上記した課題を解決すべく、法線算出対象物体の大きさにかかわらず、当該物体の法線をより高い精度で算出することを目的とする。 
【課題を解決するための手段】
【０００５】
上記した目的を達成するために、本発明の１つの態様による画像処理装置は、物体に光を照射する光源の位置を取得する第１の取得手段と、前記物体の法線取得位置を取得する第２の取得手段と、前記物体の画像を撮像する撮像装置の位置を取得する第３の取得手段と、取得された前記光源の位置、前記法線取得位置および前記撮像装置の位置を用いて、前記物体の法線取得位置における法線を算出する算出手段と、算出された前記法線を用いて、前記法線取得位置を補正する補正手段と、補正された前記法線取得位置と、取得された前記光源の位置および前記撮像装置の位置とを用いて、前記法線を前記算出手段に再度算出させる制御を行う制御手段と、を備える。
【発明の効果】
【０００６】
本発明によれば、物体の法線をより高い精度で算出できる。
【図面の簡単な説明】
【０００７】
【図１】実施形態１の画像処理装置の構成を示すブロック図。
【図２】実施形態１の法線算出システムの一例を示す図。
【図３】実施形態１の法線算出システムの機能ブロック図。
【図４】実施形態１の画像処理装置で行われる処理の流れを示すフローチャート。
【図５】実施形態１の法線算出システムにおいて画素毎に法線を算出する模式図。
【図６】実施形態１の画像処理装置の処理結果の一例を示す図。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は本発明を限定するものではなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。実施形態の構成は、本発明が適用される装置の仕様や各種条件（使用条件、使用環境等）によって適宜修正又は変更され得る。
【０００９】
実施形態１
本実施形態においては、従来の方法により算出した法線から深度を取得し、当該深度を用いて再度法線を算出するという処理を繰り返し行うことにより、高精度に法線を算出する。すなわち、繰り返し処理により取得した深度から、法線算出対象物体の法線取得位置を算出し、法線算出の際に視線ベクトルと光源ベクトルを補正することで法線算出精度を向上させる。深度とは、撮像装置から法線算出対象物体までの距離である。
【００１０】
（画像処理装置の構成）
図１は、本発明に係る画像処理装置１００の構成の一例を示す図である。画像処理装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＲＯＭ１０３、二次記憶装置１０４、入力インターフェース１０５、出力インターフェース１０６、およびシステムバス１０７を有する。画像処理装置１００には、入力装置１０８と外部蓄積装置１０９と表示装置１１０が接続されている。より詳しくは、入力装置１０８は画像処理装置１００の入力インターフェース１０５に接続され、外部蓄積装置１０９は画像処理装置１００の入力インターフェース１０５と出力インターフェース１０６に接続されている。また、表示装置１１０は画像処理装置１００の出力インターフェース１０６に接続されている。
ＣＰＵ１０１は、ＲＡＭ１０２をワークメモリとして、ＲＯＭ１０３に格納されたプログラムを実行し、システムバス１０７を介して画像処理装置１００の各部を統括的に制御する処理回路である。ＣＰＵ１０１がプログラムを実行することにより、後述する様々な処理が実行される。
【００１１】
二次記憶装置１０４は、システムバス１０７を介してプログラムの実行に必要なデータの蓄積を行うことができるメモリである。また、二次記憶装置１０４に蓄積されたデータは、システムバス１０７を介して読み出すことが可能である。二次記憶装置１０４としては、ＨＤＤ、光ディスクドライブ、フラッシュメモリ等の記憶デバイスを用いることができる。ＨＤＤはＨａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略である。
入力インターフェース１０５は、例えばＵＳＢやＩＥＥＥ１３９４等のシリアルバスインターフェースである。画像処理装置１００は、入力インターフェース１０５を介して、入力装置１０８や外部蓄積装置１０９などからデータなどを取得することができる。
出力インターフェース１０６は、例えばＤＶＩやＨＤＭＩ（登録商標）等の映像出力端子である。画像処理装置１００は、出力インターフェース１０６を介して、表示装置１１０に、処理された画像などを表示することができる。出力インターフェース１０６は、例えば、ＵＳＢやＩＥＥＥ１３９４等のシリアルバスインターフェースである。画像処理装置１００は、出力インターフェース１０６を介して、外部蓄積手段１０９へのデータの蓄積を行うことができる。
【００１２】
入力装置１０８は、ユーザが所望の情報やデータを画像処理装置１００に入力するためのものである。入力装置１０８は、例えば、キーボード、マウス、タッチパネル、音声入力部等を含む。
外部蓄積装置１０９は、例えば、ハードディスク、メモリーカード、ＣＦカード、ＳＤカード、ＵＳＢメモリである。ＣＦはＣｏｍｐａｃｔ  Ｆｌａｓｈの略である。
表示装置１１０は、液晶ディスプレイなどの出力デバイスである。なお、表示装置１１０は音声出力部を備えてもよい。
画像処理装置１００の構成要素は上記以外にも存在し得る（例えば、外部の機器と通信を行う通信部）が、法線の算出に関連がない構成要素の説明は本明細書において省略する。
【００１３】
（法線算出システムの構成）
図２（Ａ）は、法線算出システム２００の概略構成を示している。図２（Ａ）に示されているように、法線算出システム２００は、画像処理装置１００と、撮像装置２０１と、光源装置２０２と、撮影ステージ２０４とを有する。法線算出システム２００は、法線算出対象物体（以下、「物体」と称する）２０３の法線を算出するシステムである。物体２０３は、例えば、球体である。画像処理装置１００は、撮像装置２０１と光源装置２０２に接続されている。法線算出システム２００は、画像処理装置１００を含む画像処理システムである。
撮像装置２０１は、物体２０３の画像を撮像する装置である。撮像装置２０１は、例えば、カメラである。
光源装置２０２は、複数の点光源からなる照明装置である。点光源の配置等については、図２（Ｂ）を用いて後述する。
撮影ステージ２０４は、物体２０３を置くステージ（載置台）である。撮影ステージ２０４は、伸長収縮できるように構成されるか、移動可能に構成され、物体２０３を光源装置２０２の中心Ｏに配置することができる。
【００１４】
（光源装置の複数の点光源）
図２（Ｂ）は、光源装置２０２が物体２０３に光を照射する様子を示している。図２（Ｂ）に示されるように、光源装置２０２は複数の照明（点光源）２０５を有している。点光源２０５は離散的に且つ球面状に配置されている。光源装置２０２は、点光源２０５を異なる輝度で発光させることができる。つまり、光源装置２０２は、点光源２０５の輝度を連続して（徐々に、滑らかに、段階的に）変化させることができる（勾配照明）。勾配照明はｇｒａｄｉｅｎｔ  ｉｌｌｕｍｉｎａｔｉｏｎと称される。また、光源装置２０２は、点光源２０５を同一の輝度で発光させることもできる（均一照明）。図２（Ｂ）には、光源装置２０２が物体２０３に向けて、点光源２０５から異なる輝度で光を照射する様子を描いてある。
物体２０３から点光源２０５へ向かうベクトルL”が光線ベクトルであり、物体２０３から撮像装置２０１へ向かうベクトルC”が視線ベクトルである。符号Nは法線ベクトルを示す。物体２０３上の点２０６は、法線取得位置（法線Nの起点になる位置）を示す。なお、撮像装置２０１の位置は、図示の都合上、図２（Ａ）とは異なるように描かれている。
【００１５】
次に、画像処理装置１００で行われる処理について、図３に示すブロック図と図４に示すフローチャートとを参照して説明する。画像処理装置１００は、ＣＰＵ１０１が、ＲＯＭ１０３に格納されたプログラムを、ＲＡＭ１０２をワークメモリとして実行することで、図３に示す各ブロックとして機能し、図４に示す各ステップの処理を行う。なお、以下に示す処理の全てがＣＰＵ１０１によって実行される必要はなく、処理の一部又は全部がＣＰＵ１０１以外の一つ又は複数の処理回路によって行われるように画像処理装置１００が構成されていてもよい。
【００１６】
（画像処理装置の機能ブロック図）
図３に示されているように、機能ブロックで描くと、画像処理装置１００は、画像取得部３０１、制御部３０２、光源位置算出部３０３、法線算出部３０４、繰り返し処理判定部３０５、高さマップ算出部３０６および深度算出部３０７から成る。
画像取得部３０１は、光源装置２０２によって照射された物体２０３を撮像した撮像装置２０１から画像を取得する。また、画像取得部３０１は、物体２０３の画像から鏡面反射光成分を抽出する。
制御部３０２は、所定の規則（例えば、３種類の勾配照明パターンと、１種類の均一照明パターン）に従って、光源装置２０２の点光源２０５を点灯させる。制御部３０２は、光源装置２０２からの照射光により物体２０３を照射し、撮像装置２０１が物体２０３を撮像できるようにしている。
【００１７】
光源位置算出部３０３は、画像の画素毎に、法線算出のための点光源２０５の位置を算出（取得）する。
法線算出部３０４は、物体２０３の深度（法線取得位置）と、撮像装置２０１の位置と、点光源の位置とから、法線を算出する。撮像装置２０１の位置は、事前に、入力装置１０８から画像処理装置１００に入力されていてもよいし、撮像中に取得してもよい。撮像装置２０１の位置の情報は、例えば、入力装置１０８からＲＡＭ１０２に入力・記憶され、必要なときに、法線算出部３０４がＲＡＭ１０２から取得する。
【００１８】
繰り返し処理判定部３０５は、所定の条件の下で、繰り返し処理（後述する）を続けるかを判定する。繰り返し処理を続けないという判定結果の場合、繰り返し処理判定部３０５は法線算出部３０４が算出した法線が適切な法線であるとして、画像処理装置１００から当該法線を出力する。繰り返し処理を続けるという判定結果の場合、繰り返し処理判定部３０５は法線算出部３０４が算出した法線が適切な法線でないとして、当該法線を高さマップ算出部３０６に出力する。
高さマップ算出部３０６は、法線から画像の画素の高さマップを作成（算出）する。
深度算出部３０７は、高さマップを深度マップに変換する。物体２０３の深度は、深度算出部３０７から法線算出部３０４に入力される。物体２０３の深度は法線取得位置２０６として用いることができるので、深度算出部３０７は、算出された法線を用いて、法線取得位置を補正していると言える。
【００１９】
（画像処理装置の処理フロー）
Ｓ４０１では、画像取得部３０１が、処理対象である物体２０３の画像を撮像装置２０１から取得する。つまり、画像取得部３０１は、法線算出用画像を撮像装置２０１から取得する。そして、画像取得部３０１は、法線算出用画像を光源位置算出部３０３に出力する。
Ｓ４０１で取得される画像（法線算出用画像）は、制御部３０２によって所定の規則（所定の照明パターン）に従って点灯された光源装置２０２によって照らされた物体２０３を撮像して得た画像群である。ここで、所定の規則とは、例えば、特許文献１に示すような鏡面反射光を用いて法線を算出するための照明パターンのことである。特許文献1では光源装置２０２のように離散的に配置された連続的に輝度を変化させられる多灯照明（複数の点光源２０５）を、互いに直交するｘ、ｙ、ｚの各々の軸方向に滑らかに輝度を変化させて３種類の勾配照明パターンで照明を行う。すなわち、ｘ軸方向に滑らかに輝度を変化させて１種類のパターンを作り、ｙ軸方向に滑らかに輝度を変化させて１種類のパターンを作り、ｚ軸方向に滑らかに輝度を変化させて１種類のパターンを作り、物体２０３に光を照射する。
【００２０】
光源装置２０２の中心Ｏから見て角度θiの方向に存在する点光源２０５の放射輝度Ｌiは、光源装置２０２の中心Ｏに入射する光線の向きを表す単位ベクトルωと定数ｃを用いると、式（１）で表すことができる。式（１）において、iはｘ、ｙ、ｚのいずれかを表す。また、θiは、光源装置２０２の中心Ｏと点光源２０５を結ぶ直線と、i軸とがなす角度を表す。
Ｌｉ（θｉ）＝ｃωｉ（θｉ）          （１）
【００２１】
次に、制御部３０２は、全ての点光源２０５を同じ輝度で点灯させる（均一照明）。均一照明の場合、点光源２０５の放射輝度は角度θに依存せず、式（２）で表される。
Ｌｃ＝ｃ          （２）
このとき、１つの偏光板を点光源２０５に配置し、別の偏光板を撮像装置２０１に配置しておく。そして、点光源２０５に配置した偏光板と撮像装置２０１に配置した偏光板の主軸の方向を、直交させた場合と平行にした場合の二通りで撮像を行う。画像取得部３０１は、それらの画像の差分をとることで鏡面反射光成分（以下、「鏡面反射光」と称する）を抽出する。撮像された画像群はＲＡＭ１０２や二次記憶装置１０４に記憶しておく。なお、鏡面反射光の抽出はこの方法のみに限定されない。例えば、二色性反射モデルを用いた方法等を利用して鏡面反射光の抽出を行うこともできる。画像取得部３０１は、鏡面反射光を光源位置算出部３０３に出力する。
【００２２】
Ｓ４０２では、光源位置算出部３０３が、法線算出用の画像群に基づき、複数の点光源２０５の中から、物体２０３から正反射して撮像装置２０１に入射する鏡面反射光を発する点光源２０５の位置（以下、「光源位置」と称する）を画素毎に算出する。各画素（ｘ’，ｙ’）に対する鏡面反射係数をρ（ｘ’，ｙ’）とすると、撮像装置２０１を用いて観測した輝度Iは、画素毎に、勾配照明の場合は式（３）で表すことができ、均一照明の場合は式（４）で表すことができる。
Ｉｉ（θｉ，ｘ’，ｙ’）＝ρ（ｘ’，ｙ’）ｃωｉ（θｉ）      （３）
Ｉｃ＝ρ（ｘ’，ｙ’）ｃ                                    （４）
式（３）を式（４）で除算することで式（５）を得る。
【００２３】
【数１】
2018136693.tif 000003
【００２４】
式（５）から入射光ベクトルωのｘ成分、ｙ成分、ｚ成分が分かるため、鏡面反射する光（鏡面反射光）を発する点光源２０５の存在する位置（光源位置）Ｌ’を特定できる。このようにして、Ｓ４０２では、光源位置算出部２０２が、画像の画素毎に光源の位置を取得する。
Ｓ４０３では、法線算出部３０４が、深度算出部３０７が出力した物体２０３の深度と撮像装置２０１の位置と光源位置とから、画像の画素毎に法線を算出する。物体２０３の深度は法線取得位置２０６として用いることができる。撮像装置２０１で撮像した画像における画素（ｘ’，ｙ’）に対応する深度Ｖ’ （ｘ’，ｙ’）は、撮像装置２０１から物体２０３の各点（法線取得位置）に対する奥行き方向の距離を表している。従って、深度の最大値をＶ’max、画像の幅をw、高さをh、中心画素を（ｘo’，ｙo’）とすると、画素（ｘ’，ｙ’）における法線取得位置ベクトルＰは水平画角φＨ、垂直画角φＶを用いて式（６）で表される。法線取得位置ベクトルＰは、撮像装置２０１の座標の原点から出るベクトルである。水平画角φＨ及び垂直画角φＶは、撮像装置（カメラ）２０１の画角である。
【００２５】
【数２】
2018136693.tif 000004
【００２６】
視線ベクトルＣ’’と入射光線ベクトルＬ’’は、撮像装置２０１の位置ベクトルをＣ’とし、点光源２０５の位置ベクトルをＬ’とし、法線取得位置ベクトルＰを用いると、それぞれ、式（７）及び式（８）で表される。
Ｃ”（ｘ’，ｙ’）＝Ｃ’（ｘ’，ｙ’）−Ｐ（ｘ’，ｙ’）      （７）
Ｌ”（ｘ’，ｙ’）＝Ｌ’（ｘ’，ｙ’）−Ｐ（ｘ’，ｙ’）      （８）
視線ベクトルＣ’’と入射光線ベクトルＬ’’を用いて、式（９）で法線ベクトルＮを算出する。
【００２７】
【数３】
2018136693.tif 000005
【００２８】
画素毎の法線算出の模式図を図５に示す。図５に示すように、画素毎に視線ベクトルＣ’’と入射光線ベクトルＬ’’は異なるため、算出される法線ベクトルＮも画素毎に異なる。
なお、一度目の繰り返し処理（ループ処理）では、物体２０３の深度は未知であるため、法線取得位置２０６は光源装置２０２の中心Ｏであるとする。二度目以降のループ処理では深度算出部３０７が出力した物体２０３の深度を用いる。ループ処理とは、Ｓ４０３−Ｓ４０４−Ｓ４０５−Ｓ４０６−Ｓ４０３のループで行われる処理のことである。
【００２９】
Ｓ４０４では、法線算出部３０４がｍ回目のループ処理において出力した画素（i，j）の法線ベクトルNm（i，j）と、ｍ−１回目のループ処理において出力した画素（i，j）の法線ベクトルNm-1（i，j）とのなす角度を用いて判定を行う。より詳しくは、Ｓ４０４では、繰り返し処理判定部３０５が、法線ベクトルNm（i，j）と法線ベクトルNm-1（i，j）とのなす角度（角度の差分）が閾値φ未満か否かにより、繰り返し処理の必要性の有無を判定する。閾値φは、例えば、事前にユーザが入力装置１０８により入力・設定しておく。法線ベクトルの角度の差分は複数得られるので、Ｓ４０４では、複数の差分の平均値を用いる。複数の法線ベクトルの角度の差分の平均値が閾値φ未満であるか否かによって、繰り返し処理の必要性の有無を判定する。なお一度目のループ処理においては、所定の法線ベクトルＮ0（i，j）を使用する。例えば、物体２０３に対して撮像装置２０１の光軸方向に平行な法線を法線ベクトルＮ0（i，j）とする。
Ｓ４０４では、例えば、法線ベクトルの値を各画素に格納した法線マップを用いる。Ｓ４０４における繰り返し処理の必要性の判定条件は式（１０）のように表わすことができる。
【００３０】
【数４】
2018136693.tif 000006
【００３１】
繰り返し処理が必要ない場合（Ｓ４０４：Ｙｅｓ）、ループ処理を終了し、繰り返し処理判定部３０５は、法線算出部３０４から入力された法線をそのまま出力する。繰り返し処理が必要である場合（Ｓ４０４：Ｎｏ）、繰り返し処理判定部３０５は、入力された法線を高さマップ算出部３０６へ出力する。
Ｓ４０５では、高さマップ算出部３０６が、繰り返し処理判定部３０５が出力した法線から高さマップを算出することにより、物体２０３の高さマップを取得する。高さマップ算出部３０６は、取得した高さマップを深度算出部４０７へ出力する。各画素（i，j）における法線ベクトルをＮ（i，j）とすると、各画素の高さＶ（i，j）は式（１１）で表される。
【００３２】
【数５】
2018136693.tif 000007
【００３３】
この高さマップは撮像装置２０１の光軸に直交するある平面（高さマップの基準面）からの高さをnビットのモノクロ画像に格納したものである。
Ｓ４０６では、深度算出部３０７が、高さマップ算出部３０６が出力した高さマップを撮像装置２０１から物体２０３までの深度マップへ変換することにより、深度を取得（算出）する。高さマップは基準面からの高さをモノクロ画像に格納したものであるため、撮像装置２０１から基準面までの距離ｄを決定することで、撮影装置２０１から物体２０３までの深度を決定できる。そこで、物体２０３が球面状に配置した点光源２０５の中心Ｏ付近にあるとして、距離ｄを撮像装置２０１から点光源２０５の中心Ｏまでの距離の近傍で変化させた際の法線Nd（i，j）の変化率を計算し、変化率を最も小さくする距離ｄを採用する。例えば、高さマップに格納されている高さの値の範囲が０からａまでであるとする。そして、深度Ｖ’（i，j）に対する深度マップの輝度値がI’ （i，j）であるとき、画素（i，j）における撮像装置２０１から物体２０３までの深度Ｖ’ （i，j）は式（１２）で表される。なお、高さの値の範囲については被写体（物体２０３）の大きさに合わせて、ユーザが入力装置１０８を用いて指定するものとする。
【００３４】
【数６】
2018136693.tif 000008
【００３５】
Ｖ’は撮像装置から物体２０３までの距離を表すため、Ｖ’を用いて式（６）から法線取得位置ベクトルＰを算出する。法線取得位置ベクトルＰを用いて、式（７）および式（８）から視線ベクトルＣ’’および入射光線ベクトルＬ’’を算出する。そして、視線ベクトルＣ’’および入射光線ベクトルＬ’’を用いて、式（９）から法線ベクトルＮを算出する。つまり、視線ベクトルＣ’’と入射光線ベクトルＬ’’の和から法線ベクトルＮを算出する。
ｄを算出する場合には、撮像装置２０１から高さマップの基準面までの距離をΔdだけ変化させて法線ベクトルを算出し、法線ベクトルの変化率を最小とするｄを算出する。すなわち、高さマップの画像の幅をｗとし、高さをｈとし、式（１３）を満たすようなｄを採用する。
【００３６】
【数７】
2018136693.tif 000009
【００３７】
このｄハット（ｄ∧）を用いて、式（６）、式（７）、式（８）、式（９）および式（１２）から法線を算出した後に（Ｓ４０３）、前述と同様に繰り返し処理の必要性の有無を判定する（Ｓ４０４）。繰り返し処理が必要ない場合、法線がそのまま出力され、繰り返し処理の必要がある場合、同様の手順で法線を算出することを繰り返す。本実施形態では、繰り返し処理が必要ないと判定された時点で、最終的な法線を算出する。
【００３８】
（実施形態１の効果）
特許文献１では、法線取得位置がある一点であると仮定して法線ベクトルを算出していたために、法線取得位置がその一点からずれた際に、法線取得位置と撮像装置の位置と光源位置から算出される光源ベクトルと視線ベクトルにずれが生じる。そのため、それらのベクトルにより算出される法線の精度が低下する。しかし、本実施形態では法線算出（Ｓ４０３）と深度算出（Ｓ４０６）を繰り返し行うことで、法線と深度を徐々に高精度なものにして行く。そして、法線の精度が所定以上のものなったとき（Ｓ４０４：Ｙｅｓ）、繰り返し処理を終了して、当該法線を画像処理装置１００から出力する。つまり、本実施形態では、法線を算出した後、すでに算出した法線（または、予め用意してある法線）とのなす角度が閾値以上の場合、直前に算出した法線を用いて、深度（法線取得位置）を補正する処理を行う。そして、補正された法線取得位置と、すでに取得している光源の位置と、すでに取得している撮像装置の位置とを用いて、法線を再度算出している。
【００３９】
よって、本実施形態の画像処理装置１００は、物体２０３の大きさ・形状を考慮（つまり、物体２０３上の法線取得位置の違いを考慮）することで、法線取得位置のずれ（入射光線ベクトルと視線ベクトルのずれ）を低減補正し、法線の算出精度を向上している。
本実施形態の効果を実証するため、立方体モデルのＣＧ画像に対して、上記した繰り返し処理を適用した際の法線の角度誤差を算出した。図６は、その算出結果を示している。図６は、横軸に繰り返し回数をとり、縦軸に法線に発生する角度誤差をとった際の法線算出誤差を示したグラフである。図６から、繰り返し処理によって法線の算出精度が向上していることが分かる。
【００４０】
（変形例）
なお、上記した実施形態では、画像処理装置１００に二次記憶装置１０４が含まれるとしたが、二次記憶装置１０４は画像処理装置１００の外に設けてもよい。また、入力装置１０８および表示装置１１０が画像処理装置１００の外に設けられるとしたが、入力装置１０８および表示装置１１０は、画像処理装置１００に含まれてもよい。    
上記した実施形態では、撮影ステージ２０４に球状の被写体（物体２０３）が置かれたが、被写体は人物でもよい。例えば、椅子に座った人物の頭部（顔部）が法線算出対象物体となった場合でも、本発明を適用することができる。また、撮影ステージ２０４は法線算出システム２００に含まれるとしたが、法線算出システム２００に含まれなくてもよい。
【００４１】
上記した実施形態では、画像取得部３０１が法線算出用画像の取得と鏡面反射光の抽出とを行ったが、鏡面反射光の抽出については、鏡面反射光抽出部を設けて、鏡面反射光抽出部に鏡面反射光の抽出を行わせてもよい。
画像処理装置１００は、例えば、ＰＣ（パーソナルコンピュータ）で構成することができる。なお、画像処理装置１００は、ＰＣ以外の装置（例えば、タブレットコンピュータ、ウエアラブルコンピュータ）で構成することもできる。
【００４２】
上記した実施形態では、複数の点光源を有する光源装置２０２を使用したが、光源装置２０２は１つの光源を有するものでもよい。例えば、1つの光源を徐々に移動させながら、物体２０３を連続的に撮像した画像を加算することで、物体２０３に対して複数の光源から光を照射した際の画像を得ることができる。本発明は、光源の数にかかわらず、光源の位置、法線取得位置および撮像装置の位置を用いて、物体の法線取得位置における法線を算出し、算出された法線を用いて、法線取得位置を補正する装置であれば適用することができる。つまり、本発明は、補正された法線取得位置と、光源の位置および撮像装置の位置とを用いて、法線を再度算出させる制御を行う装置であれば適用することができる。また、上記した実施形態では、光源装置２０２が点光源を有するとしたが、光源は点光源以外の光源でもよい。
【００４３】
図３に示した機能ブロック構成は一例であり、複数の機能ブロックが１つの機能ブロックを構成するようにしてもよいし、何れかの機能ブロックが複数の機能を行うブロックに分かれてもよい。また、機能ブロックの少なくとも１つがハードウェアとして実装されてもよい。ハードウェアにより実装する場合、例えば、所定のコンパイラを用いることで、各ステップを実現するためのプログラムからＦＰＧＡ上に自動的に専用回路を生成すればよい。ＦＰＧＡとは、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略である。また、ＦＰＧＡと同様にしてＧａｔｅ  Ａｒｒａｙ回路を形成し、ハードウェアとして実現するようにしてもよい。また、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により実現するようにしてもよい。
【００４４】
（その他の実施形態）
上記した実施形態では、画像処理装置１００を説明したが、本発明はその他の形態でも具現化（実現）することができる。たとえば、上記した実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００４５】
１００…画像処理装置、１０１…ＣＰＵ、２０１…撮像装置、２０２…光源装置、２０３…法線算出対象物体、３０２…制御部、３０３…光源位置算出部、３０４…法線算出部、３０５…繰り返し処理判定部、３０７…深度算出部
【図１】
2018136693.tif 000010
【図２】
2018136693.tif 000011
【図３】
2018136693.tif 000012
【図４】
2018136693.tif 000013
【図５】
2018136693.tif 000014
【図６】
2018136693.tif 000015