(57)【要約】【課題】撮影した画像全体に対して連続的で自然なデフォーカス処理を施す技術を提供すること。【解決手段】本発明は、注目画素および当該注目画素を中心とした周辺画素の各々の位置に対応して設定される係数のマトリクスをデフォーカスの度合いに応じて複数設定して成るルックアップテーブルを生成するルックアップテーブル生成部１０と、入力された画像情報のうち注目画素の画素値について、当該注目画素の画素値および前記周辺画素の画素値とルックアップテーブル生成部１０で生成したルックアップテーブルの各画素と対応する位置の係数とを積算し、各画素分を加算することで新たな画素値を求めるにあたり、各画素と対応する位置の係数を得るルックアップテーブルとして、入力された画像情報の撮影時の撮影距離に対応したデフォーカスの度合いとなるルックアップテーブルを適用するデフォーカス処理部２０とを有する画像処理装置１である。【選択図】図１
2011003124.tif 000002
【特許請求の範囲】
【請求項１】
注目画素および当該注目画素を中心とした周辺画素の各々の位置に対応して設定される係数のマトリクスをデフォーカスの度合いに応じて複数設定して成るルックアップテーブルを生成するルックアップテーブル生成部と、
入力された画像情報のうち注目画素の画素値について、当該注目画素の画素値および前記周辺画素の画素値と前記ルックアップテーブル生成部で生成したルックアップテーブルの各画素と対応する位置の係数とを積算し、各画素分を加算することで新たな画素値を求めるにあたり、前記各画素と対応する位置の係数を得るルックアップテーブルとして、前記入力された画像情報の撮影時の撮影距離に対応したデフォーカスの度合いとなるルックアップテーブルを適用するデフォーカス処理部と
を有する画像処理装置。
【請求項２】
前記デフォーカス処理部は、前記新たな画素値を求めるにあたり、前記入力された画像情報のうち注目画素および周辺画素の各画素の撮影距離に応じてグループ分けを行い、当該グループごとに前記画素値と前記係数との積算および各画素分の加算を行って、各グループごとの加算値を合計する
請求項１記載の画像処理装置。
【請求項３】
前記デフォーカス処理部は、前記各グループごとの加算値を合計した後、規格化する
請求項２記載の画像処理装置。
【請求項４】
前記ルックアップテーブル生成部は、前記ルックアップテーブルの係数を設定するにあたり、前記注目画素の位置を中心としたガウス分布に対応した値となるよう設定する
請求項１から３のうちいずれか１項に記載の画像処理装置。
【請求項５】
前記ルックアップテーブル生成部は、前記ガウス分布に対応した値となる前記ルックアップテーブルの係数を設定するにあたり、前記デフォーカスの度合いに応じて各ルックアップテーブルごとに分散の異なるガウス分布に対応した値となるよう設定する
請求項４記載の画像処理装置。
【請求項６】
前記デフォーカス処理部は、前記ルックアップテーブルの係数が予め設定した値を超えるものと対応する画素の画素値を計算対象とする
請求項１から５のうちいずれか１項に記載の画像処理装置。
【請求項７】
画像情報および前記画像情報の撮影時の撮影距離に関する情報を入力するステップと、
注目画素および当該注目画素を中心とした周辺画素の各々の位置に対応して設定される係数のマトリクスをデフォーカスの度合いに応じて複数設定して成るルックアップテーブルを生成するステップと、
入力した前記画像情報のうち注目画素の画素値について、当該注目画素の画素値および前記周辺画素の画素値と前記ルックアップテーブルの各画素と対応する位置の係数とを積算し、各画素分を加算することで新たな画素値を求めるにあたり、前記各画素と対応する位置の係数を得るルックアップテーブルとして、前記撮影距離に対応したデフォーカスの度合いとなるルックアップテーブルを適用して前記新たな画素値を求めるステップと
をコンピュータに実行させる画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理プログラムに関する。詳しくは、画像情報に対して所定のデフォーカス処理を施す画像処理装置および画像処理プログラムに関する。
【背景技術】
【０００２】
従来、画像情報についてデフォーカス（ぼかし）を施す技術が開示されている。例えば、特許文献１では、画像情報を距離ごとのレイヤーに分割して、レイヤーごとにぼかしをかけて合成する技術が開示されている。また、特許文献２では、コンピュータグラフィックス画像において、三次元仮想空間に設置されるカメラからオブジェクトまでの距離に応じてオブジェクトにぼかし処理を施す技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２４４８１０号公報
【特許文献２】特開２０００−３２２５９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、撮影した画像の全体に対して所望のデフォーカス（ぼかし）処理を施すことが困難となっている。すなわち、レイヤーごとに単一的なぼかし処理を施す技術では、レイヤーの区分けによって段階的なぼかし処理となってしまう。また、コンピュータグラフィックス画像におけるぼかし処理では、三次元仮想空間内のオブジェクトごとのぼかし処理となる。
【０００５】
本発明は、撮影した画像全体に対して連続的で自然なデフォーカス処理を施す技術の提供を目的とする。
【課題を解決するための手段】
【０００６】
本発明は、注目画素および当該注目画素を中心とした周辺画素の各々の位置に対応して設定される係数のマトリクスをデフォーカスの度合いに応じて複数設定して成るルックアップテーブルを生成するルックアップテーブル生成部と、入力された画像情報のうち注目画素の画素値について、当該注目画素の画素値および前記周辺画素の画素値とルックアップテーブル生成部で生成したルックアップテーブルの各画素と対応する位置の係数とを積算し、各画素分を加算することで新たな画素値を求めるにあたり、各画素と対応する位置の係数を得るルックアップテーブルとして、入力された画像情報の撮影時の撮影距離に対応したデフォーカスの度合いとなるルックアップテーブルを適用するデフォーカス処理部とを有する画像処理装置である。
【０００７】
このような本発明では、ルックアップテーブル生成部により、注目画素および当該注目画素を中心とした周辺画素の各々の位置に対応して設定される係数のマトリクスをデフォーカスの度合いに応じて複数設定して成るルックアップテーブルを生成する。デフォーカス処理部は、このルックアップテーブル生成部で生成したルックアップテーブルを用いて注目画素の画素値を変換する。この際、入力された画像情報の撮影時の撮影距離に対応したデフォーカスの度合いとなるルックアップテーブルを適用することから、注目画素、周辺画素のそれぞれいついて撮影距離に応じたデフォーカスの度合いとなる係数を用いた分散処理を施すことができるようになる。
【０００８】
ここで、デフォーカス処理部は、新たな画素値を求めるにあたり、入力された画像情報のうち注目画素および周辺画素の各画素の撮影距離に応じてグループ分けを行い、当該グループごとに計算を行って各グループごとの加算値を合計する。
【０００９】
また、ルックアップテーブル生成部は、ルックアップテーブルの係数を設定するにあたり、注目画素の位置を中心としたガウス分布に対応した値となるよう設定する。さらには、デフォーカスの度合いに応じて各ルックアップテーブルごとに分散の異なるガウス分布に対応した値となるよう設定するものでもある。
【００１０】
本発明では、画像情報の撮影時の撮影距離として、カメラによる撮影でレンズから被写体までの距離のことをいうものとする。
【００１１】
また、本発明は、画像情報および前記画像情報の撮影時の撮影距離に関する情報を入力するステップと、注目画素および当該注目画素を中心とした周辺画素の各々の位置に対応して設定される係数のマトリクスをデフォーカスの度合いに応じて複数設定して成るルックアップテーブルを生成するステップと、入力した画像情報のうち注目画素の画素値について、当該注目画素の画素値および周辺画素の画素値とルックアップテーブルの各画素と対応する位置の係数とを積算し、各画素分を加算することで新たな画素値を求めるにあたり、各画素と対応する位置の係数を得るルックアップテーブルとして、撮影距離に対応したデフォーカスの度合いとなるルックアップテーブルを適用して新たな画素値を求めるステップとをコンピュータに実行させる画像処理プログラムである。
【００１２】
このような本発明では、先ず、注目画素および当該注目画素を中心とした周辺画素の各々の位置に対応して設定される係数のマトリクスをデフォーカスの度合いに応じて複数設定して成るルックアップテーブルを生成する。そして、生成したルックアップテーブルを用いて注目画素の画素値を変換する。この際、入力された画像情報の撮影時の撮影距離に対応したデフォーカスの度合いとなるルックアップテーブルを適用することから、注目画素、周辺画素のそれぞれいついて撮影距離に応じたデフォーカスの度合いとなる係数を用いた分散処理を施すことができるようになる。
【発明の効果】
【００１３】
本発明によれば、撮影した画像全体に対して連続的な自然なデフォーカス処理を施すことが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本実施形態に係る画像処理装置の主要部の構成を説明するブロック図である。
【図２】本実施形態に係る画像処理装置を適用した画像処理システムの構成例を示す図である。
【図３】本実施形態の画像処理装置でデフォーカス処理を施す対象となる画像情報を取り込む撮像部の構成例を説明する図である。
【図４】画像情報および距離情報の一例を示す図である。
【図５】画像処理プログラムを実行するコンピュータのハードウェア構成を示すブロック図である。
【図６】本実施形態に係る画像処理プログラムのメインフローチャートである。
【図７】ａｍａｘの設定について説明する模式図である。
【図８】ルックアップテーブルの生成処理の流れを説明するフローチャートである。
【図９】ルックアップテーブルを説明する模式図である。
【図１０】ルックアップテーブルの２次元テーブルの要素（係数）の状態を視覚的に示した図である。
【図１１】処理用データの準備処理の流れを説明するフローチャートである。
【図１２−１】デフォーカス処理の流れを説明するフローチャートである。
【図１２−２】補正後の画像サンプルの図である。
【図１２−３】補正前の画像サンプルの図である。
【図１２−４】各々のサンプルの拡大図である。
【図１３】データのサンプリング処理の流れを説明するフローチャートである。
【図１４】画像情報に対応したサンプリング処理の例を説明する図である。
【図１５】データ列のグループ分けの具体例を説明する図である。
【図１６】サンプルリストのソートの具体例を説明する図である。
【図１７】デフォーカス処理の具体例を説明する図である。
【図１８】視線の束の通過について説明する図である。
【図１９】デフォーカス処理の具体的なサンプルを示す図（その１）である。
【図２０】デフォーカス処理の具体的なサンプルを示す図（その２）である。
【図２１】デフォーカス処理の具体的なサンプルを示す図（その３）である。
【図２２】グラフィックスへ適用する場合の流れを示す図である。
【図２３】ＣＧ作成ソフトウェア内に本実施形態の画像処理プログラムが組み込まれた場合の処理を説明する図である。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態（以下、「実施形態」という。）について説明する。なお、説明は以下の順序で行う。
１．画像処理装置（主要構成例、システム構成例、撮像部の構成例、デフォーカス処理の例）
２．画像処理プログラム（ハードウェア構成例、画像処理の基本的な流れ、ルックアップテーブルの生成、処理用データの準備、デフォーカス処理）
３．具体的な適用例（デフォーカス処理の具体例、具体的なサンプル、グラフィックスへの適用例）
【００１６】
＜１．画像処理装置＞
［主要構成］
図１は、本実施形態に係る画像処理装置の主要部の構成を説明するブロック図である。  本実施形態に係る画像処理装置１は、画像情報および画像情報の撮影時の撮影距離に関する情報（距離情報）を用いて、画像情報にデフォーカス（ぼかし）処理を施すものである。画像処理装置１は、ルックアップテーブル生成部１０とデフォーカス処理部２０とを備えている。
【００１７】
ルックアップテーブル生成部１０は、デフォーカス処理で用いる分散処理の係数を備えるルックアップテーブルを生成する。ルックアップテーブルは、デフォーカス処理の対象となる画像情報の領域（複数の画素が縦横に並ぶ矩形領域）の中の注目画素および当該注目画素を中心とした周辺画素の各々の位置に対応して設定される係数のマトリクスである。ルックアップテーブル生成部１０は、このマトリクスをデフォーカスの度合いに応じて複数設定し、３次元ルックアップテーブルとして生成している。
【００１８】
ルックアップテーブル生成部１０は、ルックアップテーブルの係数を設定するにあたり、注目画素の位置を中心としたガウス分布に対応した値となるよう設定する。しかも、ルックアップテーブル生成部１０は、ガウス分布に対応した値となるルックアップテーブルの係数を設定するにあたり、デフォーカスの度合いに応じて各ルックアップテーブルごとに分散の異なるガウス分布に対応した値となるよう設定する。
【００１９】
デフォーカス処理部２０は、入力された画像情報のうち注目画素の画素値について、当該注目画素の画素値および周辺画素の画素値と、ルックアップテーブル生成部１０で生成したルックアップテーブルの各画素と対応する位置の係数とを用いて画素値の変換を行う。
【００２０】
具体的には、注目画素の画素値について、注目画素および周辺画素の画素値と、ルックアップテーブルの各画素と対応する位置の係数とを積算し、各画素分の積算値を加算することで新たな画素値としている。デフォーカス処理部２０は、この演算を行うにあたり、各画素と対応する位置の係数を得るルックアップテーブルとして、入力された距離情報に対応したデフォーカスの度合いとなるルックアップテーブルを適用している。
【００２１】
デフォーカス処理部２０は、注目画素について新たな画素値を求めるにあたり、入力された画像情報のうち注目画素および周辺画素の各画素の距離情報に応じてグループ分けを行う。そして、このグループごとに画素値と係数との積算および各画素分の加算を行って、各グループごとの加算値を合計する処理を行う。グループごとに演算を行うことで、無駄な演算処理を減らして処理の高速化を図る。
【００２２】
デフォーカス処理部２０は、上記グループごとの加算値を合計する処理において、グループごとの加算値の合計後の値を規格化する。これにより、デフォーカスを行う領域の全体について均一な重み付けで演算を行うことができるようになる。
【００２３】
デフォーカス処理部２０は、上記画素値とルックアップテーブルの係数の積算を行うにあたり、ルックアップテーブルの係数が予め設定した値を超えるものと対応する画素の画素値を計算対象とする。これにより、デフォーカス処理に寄与しない演算処理の発生を抑制する。
【００２４】
［システム構成例］
図２は、本実施形態に係る画像処理装置を適用した画像処理システムの構成例を示す図である。図２に示すシステム構成例では、本実施形態に係る画像処理装置１がパーソナルコンピュータＰＣ等の機器とは別体に設けられている。
【００２５】
画像処理システムは、ＬＡＮ（Local Area Network）等から成るネットワークＮに、パーソナルコンピュータＰＣ、サーバＳＶ、プリンタＰＲおよび本実施形態の画像処理装置１が接続された構成となっている。サーバＳＶやプリンタＰＲは必要に応じて接続されていればよい。
【００２６】
画像処理装置１にはユーザからの指示を画像処理装置１に伝える操作部１ａが設けられている。操作部１ａは、キーボード、マウス、タブレット、タッチパネルディスプレイ等の入力（入出力）デバイスである。
【００２７】
処理対象となる画像情報はパーソナルコンピュータＰＣやサーバＳＶからネットワークＮを介して画像処理装置１へ送られる。画像処理装置１は、送られた画像情報に対してデフォーカス処理を施し、処理後の画像情報をネットワークＮを介してパーソナルコンピュータＰＣやサーバＳＶに送る。また、印刷出力する場合には処理後の画像情報をプリンタＰＲへ送る。
【００２８】
なお、図２に示すように、画像処理装置１がパーソナルコンピュータＰＣ等の機器と別体に設けられている構成のほか、パーソナルコンピュータＰＣや他の電子機器（例えば、撮像装置）に本実施形態に係る画像処理装置１が組み込まれているシステム構成であっても適用可能である。
【００２９】
［撮像部の構成例］
図３は、本実施形態の画像処理装置でデフォーカス処理を施す対象となる画像情報を取り込む撮像部の構成例を説明する図である。撮像部は、画像情報を取り込むカメラ３０と、カメラ３０で画像情報を取り込む際の被写体までの撮像距離を測定する距離測定部４０と、記録装置５０とを備えている。
【００３０】
カメラ３０は、ＣＣＤ（Charge Coupled Devices）やＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサ等の撮像素子によって被写体の画像を取り込む機器である。被写体の画像情報は記録装置５０に蓄積される。距離測定部４０は、カメラ３０で画像情報を取り込む際、カメラ３０と被写体までの距離を距離情報として測定する部分である。距離測定部４０は、例えば、カメラ３０のレンズと被写体との距離を測定するもので、測定値は画素ごとに距離情報として取り込み、記録装置５０に蓄積される。
【００３１】
なお、図３に示す例では、カメラ３０と距離測定部４０とが別体で設けられているが、カメラ３０の機能として距離測定部４０が組み込まれていてもよい。距離測定部４０は、焦点合わせ機構を利用したものや、ステレオマッチングによる方法で被写体までの距離を測定する。
【００３２】
図４は、画像情報および距離情報の一例を示す図で、（ａ）はサンプルの画像情報、（ｂ）はサンプルの距離情報を視覚化したものである。図４（ａ）に示すサンプルの画像情報では、被写体の映像を２次元の画像情報として取り込んでいる。画像情報は複数の画素の情報がマトリクス状に配列された構成となっており、各画素には画素値が対応付けられている。単色画像では、画素値として単色の濃淡の情報が数値として対応付けられている。カラー画像では、画素値としてＲ（赤）、Ｇ（緑）、Ｂ（青）のいずれかの色の濃淡の情報が数値として対応付けられている。
【００３３】
図４（ｂ）に示すサンプルの距離情報では、図４（ａ）に示す画像情報の各画素の位置に対応した被写体までの距離の情報が数値として対応付けられている。図４（ｂ）に示す距離情報は、各画素の位置で取り込んだ被写体のカメラからの距離を０〜１の数値にしたものである。ここでは、０が最も距離が近く、１が最も距離が遠いことを示し、０を黒、１を白として距離の数値に対応した白黒の濃淡の像によって表されている。
【００３４】
［デフォーカス処理］
本実施形態の画像処理装置１では、処理対象となる画像情報と、この画像情報に対応した距離情報とを用い、各画素の距離に応じたデフォーカスの量のルックアップテーブルから参照し、画像情報全体に処理を施している。このため、画像情報の各画素における撮影距離に応じたデフォーカスの度合いで分散処理を施すことができるようになる。画像処理装置１で行うデフォーカス処理は、専用のハードウェアによって実現しても、コンピュータによって実行されるプログラム処理によって実現してもよい。
【００３５】
＜２．画像処理プログラム＞
次に、本実施形態に係る画像処理プログラムを説明する。本実施形態に係る画像処理プログラムはコンピュータに実行させるステップを有している。コンピュータは本実施形態に係る画像処理プログラムを実行する演算部、プログラムや各種データを格納する記憶部、入出力部を備えている。コンピュータはパーソナルコンピュータ等の電子計算機のほか、映像記録再生装置、携帯端末等の情報を取り扱うことのできる電子機器に組み込まれているものでもよい。また、本実施形態の画像処理プログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録されていたり、ネットワークを介して配信されるものでもある。
【００３６】
［ハードウェア構成］
図５は、画像処理プログラムを実行するコンピュータのハードウェア構成を示すブロック図である。コンピュータのハードウェア構成としては、ＣＰＵ（Central Processing Unit）１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３、ＨＤＤ（Hard Disk Drive）１０４、ＨＤＤコントローラ１０５、マウス１０６、キーボード１０７、ディスプレイ１０８、入出力コントローラ１０９およびネットワークコントローラ１１０がバス１１１によって接続された構成となっている。
【００３７】
後述する本実施形態の画像処理プログラムは、上記ハードウェア構成のうちＨＤＤ１０４に格納されており、実行にあたりＲＡＭ１０３に読み出され、ＣＰＵ１０１によって実行される。
【００３８】
［画像処理の基本的な流れ］
図６は、本実施形態に係る画像処理プログラムのメインフローチャートである。先ず、処理対象となる画像情報およびその画像情報に対応した距離情報を入力し、処理後の画像情報を格納するメモリを初期化する（ステップＳ２０）。自然画を対象としている場合には、自然画を撮影して得た画像情報と、撮影時に取り込んだ距離情報とを入力する。コンピュータ等によって生成したグラフィックスから成る画像情報では、この画像情報と計算によって得た距離情報とを入力する。
【００３９】
次に、被写界深度の設定およびａｍａｘの設定を行う（ステップＳ３０）。図７は、ａｍａｘの設定について説明する模式図である。図７では、撮影の際のカメラの被写界深度をａで表している。すなわち、カメラの焦点位置をａ＝０としている。この場合、焦点位置ａ＝０から奥側および手前側の各々の最大深度をｄｄｉｆとし、最大深度となるａをａｍａｘに設定している。また、カメラの焦点距離の設定も行う。ａｍａｘや焦点距離の設定は、予め初期値が決まっていても、ユーザによる操作から得てもよい。ここで設定する焦点距離が、画像情報の中のどの位置を焦点位置とするかの設定値となり、ａｍａｘが、画像情報の焦点位置を中心としたデフォーカスの深さの設定値となる。
【００４０】
次に、ルックアップテーブルの生成（ステップＳ４０）、処理用データの準備（ステップ５０）、デフォーカス処理（ステップＳ６０）を行う。これらの処理の詳細を以下に示す。
【００４１】
［ルックアップテーブルの生成］
図８は、ルックアップテーブルの生成処理の流れを説明するフローチャートである。先ず、Ｇａｕｓ（ａｍａｘ，ｒｍａｘ，０）が所定の値以下となるｒｍａｘを求める（ステップＳ８０）。ここでは、所定の値として０．０１を用いるが、これ以外の数値であってもよい。Ｇａｕｓ関数は、Ｇａｕｓ（ａ，ｘ，ｙ）＝ｅｘｐ（−（ｘ2＋ｙ2）／２ａ2）である。ａは分散を表している。
【００４２】
次に、ｚが０からｒｍａｘ×２となる２次元テーブル（ｚ）の処理を行う（ステップＳ９０〜ステップＳ１５０）。ここで、ｚは、上記Ｇａｕｓ関数のａ（分散）に対応したもので、デフォーカスの度合いを示すものである。２次元テーブル（ｚ）の処理としては、２次元テーブル（ｚ）の各要素テーブル（ｘ，ｙ，ｚ）の処理を行う（ステップＳ１１０〜ステップＳ１４０）。
【００４３】
要素テーブル（ｘ，ｙ，ｚ）はＧａｕｓ（ａ，ｘ，ｙ）に対応している（ステップＳ１１０）。これにより、ｘ，ｙ座標の原点を中心としてガウス分布に対応したテーブルの要素（係数）が、ｚ軸方向、すなわちデフォーカスの度合いに応じて形成される。ここで、ｘ、ｙテーブルの要素（係数）の分布は、ｚ軸方向について、分散の異なるガウス分布となる。なお、要素テーブル（ｘ，ｙ，ｚ）の値が０．０１未満の場合には、要素テーブル（ｘ，ｙ，ｚ）＝０とする（ステップＳ１２０〜ステップＳ１３０）。
【００４４】
次に、２次元テーブル（ｚ）の中の要素（係数）の合計を計算してｔｏｔａｌとする（ステップＳ１６０）。次いで、２次元テーブル（ｚ）の各要素をｔｏｔａｌで除算し、規格化する（ステップＳ１７０）。これにより、２次元テーブル（ｚ）の各要素の合計は１となる。
【００４５】
図９は、ルックアップテーブルを説明する模式図である。ルックアップテーブルは、ｘ，ｙ軸に沿った２次元のテーブルが、ｚ軸方向に複数設けられたものである。１つの２次元テーブルは、ｘ，ｙ軸の原点から周囲にかけてガウス分布に対応するよう要素（係数）の値が設定されている。また、ｚ軸方向では、２次元テーブルの要素（係数）の設定において、ガウス分布のａ（分散）が異なっている。ｘ，ｙ軸は、各々−ｒｍａｘ〜＋ｒｍａｘまでとなっており、ｚ軸は、０〜ｒｍａｘ×２までとなっている。
【００４６】
このルックアップテーブルにおいて、ｚ＝０では分散はなく、ｘ，ｙの原点に対応した要素のみ値（係数）が１、それ以外の要素が０となる。一方、ｚ＝ｒｍａｘ×２では分散が最も大きくなっている。図１０は、ルックアップテーブルの２次元テーブルの要素（係数）の状態を視覚的に示した図であり、（ａ）はｚ＝０の場合、（ｂ）はｚ＝ｒｍａｘ×２の場合である。図において、白が１、黒が０であり、要素の大きさ１〜０を図の白〜黒の色に対応させている。このように、ｚの値によって、２次元テーブルの要素（係数）の大きさの分散が異なるようになっている。
【００４７】
［処理用データの準備］
図１１は、処理用データの準備処理の流れを説明するフローチャートである。先ず、対象となる画像情報の幅ｗ、高さｈに合わせたｗ×ｈの対象領域のデータ列を準備する（ステップＳ２００）。ここで、データ列は、データ列（画素値，距離情報，ｚ）によって構成される。
【００４８】
次に、対象となる画像情報の各画素に対するデータ列の入力処理を行う（ステップＳ２１０〜ステップＳ２３０）。先ず、画素の位置（ｘ，ｙ）に対応したデータ（画素値）をデータ列の画素値に入力し、距離情報をデータ列の距離情報に入力する。また、ｚを算出してデータ列のｚに入力する。
【００４９】
ｚは、ｚ＝ｍｉｎ（１，Ａ／ａｍａｘ）×２×ｒｍａｘによって算出する。ここで、Ａ＝｛｜（画素の距離情報−焦点距離）｜／ｄｄｉｆ｝×ａｍａｘである。また、ｍｉｎは最小値を返す関数であり、ｍｉｎ（１，Ａ／ａｍａｘ）によって、１を超えないよう制限している。このｚは、画素に対応する被写体の撮影距離に応じたグループ分けを示す値であり、焦点位置を０として、被写体の焦点位置からのずれに応じて最大ｒｍａｘまで設定される値である。すなわち、ｚは、焦点位置を０として、奥側、手前側、各々最大ｒｍａｘまでの値を取ることになる。
【００５０】
上記の処理によって、画素の位置（ｘ、ｙ）に対応したデータ列が、データ（ｘ，ｙ）として記録される。すなわち、データ（ｘ，ｙ）＝データ列（位置ｘ，ｙの画素値，位置ｘ，ｙの距離情報，位置ｘ，ｙのｚ）として記録される。
【００５１】
［デフォーカス処理］
図１２−１は、デフォーカス処理の流れを説明するフローチャートである。デフォーカス処理は、対象となる画像情報の全画素について処理を行う（ステップＳ２６０〜ステップＳ３８０）。この処理において、各画素の画素値をデフォーカス処理によって新たな画素値に変換する。処理の対象となる画素を注目画素、注目画素を中心とした縦横所定の複数画素分の周辺の画素を周辺画素とする。デフォーカス処理は、注目画素および周辺画素の画素値と、各画素の位置および距離情報に対応したルックアップテーブルの係数とを用いた演算によって行う。
【００５２】
先ず、注目画素および周辺画素のデータをサンプリングする。図１３は、データのサンプリング処理の流れを説明するフローチャートである。データ（ｘ，ｙ）を注目画素（中心画素）とした周囲のサンプリングでは、データ（ｕ，ｖ）として、ｘ−ｒｍａｘ≦ｕ≦ｘ＋ｒｍａｘ、ｙ−ｒｍａｘ≦ｖ≦ｙ＋ｒｍａｘの範囲でサンプリングを行う（ステップＳ４１０〜ステップＳ４４０）。
【００５３】
サンプリングは、データ（ｕ，ｖ）におけるｕ，ｖを上記の範囲で可変し、３次元ルックアップテーブルの要素テーブル（ｘ，ｙ，ｚ）における、要素テーブル（ｕ−ｘ，ｖ−ｙ，ｚ）の値を読み出す、そして、要素テーブル（ｕ−ｘ，ｖ−ｙ，ｚ）＞０であれば、データ（ｕ，ｖ）をサンプルリストに追加する（ステップＳ４３０）。
【００５４】
図１４は、画像情報に対応したサンプリング処理の例を説明する図である。先ず、図１４（ａ）に示す処理対象の画像について、注目画素（ｘ，ｙ）を中心としたサンプリング対象領域を設定する。図１４（ｂ）は、サンプリング対象領域近傍の拡大図、図１４（ｃ）は、サンプリング対象領域近傍に対応した距離情報の拡大図である。サンプリング対象領域は、注目画素（ｘ，ｙ）の上下左右各々ｒｍａｘ分である。したがって、サンプリング対象領域のサイズは、注目画素（ｘ，ｙ）を中心として、注目画素（ｘ，ｙ）の１画素分を含め、縦×横＝（２×ｒｍａｘ＋１）×（２×ｒｍａｘ＋１）の画素サイズとなる。
【００５５】
サンプリングは、サンプリング対象領域内の全ての画素について行う。すなわち、各画素のデータ列から対応する３次元ルックアップテーブルの要素テーブルの値を参照し、これが０を超える場合にその画素のデータ列をサンプルリストに追加する。
【００５６】
図１４（ｄ）に示すように、注目画素（ｘ，ｙ）について、データ（ｘ，ｙ）の要素テーブル（ｘ，ｙ，ｚ）の値が０を超えている場合、注目画素（ｘ，ｙ）のデータ（ｘ，ｙ）をサンプルリストに追加する。また、図１４（ｅ）に示すように、周辺画素（ｕ，ｖ）について、データ列（ｕ，ｖ）の要素テーブル（ｕ−ｘ，ｖ−ｙ、ｚ）の値が０の場合には、データ列（ｕ，ｖ）はサンプルリストに追加されない。つまり、サンプルリストには、要素テーブルの値が０を超えるデータ列のみが追加されることになる。
【００５７】
次に、図１２−１の処理に戻り、上記処理でサンプリングしたサンプルリストを距離情報の値の大きさ順にソートする（ステップＳ２８０）。例えば、距離情報の値の降順にソートする。次に、後に用いる変数Ａｌｐｈａを０に初期化する（ステップＳ２９０）。
【００５８】
次の、ステップＳ３００〜ステップＳ３８０によって、デフォーカス処理における演算を行う。この処理を行うにあたり、サンプルリストの先頭から、グループ分けを行う。グループをｇｚとした場合、ｇｚは、サンプルリストの各データ列のｚの値について、距離情報が焦点距離より小さいときに−(負)、それ以外のときに＋（正）の符号を付加する。なお、グループ分けの間隔はｄｄｉｆによって決定される。同じａｍａｘであればｄｄｉｆが小さいとグループ分けの間隔が狭く、ｄｄｉｆが大きいとグループ分けの間隔が広くなる。また、グループの数は、ａｍａｘによって決定される。ａｍａｘが小さいとグループの数が少なく、大きいとグループの数が多くなる。
【００５９】
次に、後に用いる変数ｔｍｐＣ、ｔｍｐＡを０に初期化する。次に、ｇｚグループでグループ分けされたすべてのデータ列（ｕ，ｖ）について、グループごとにデフォーカスの演算処理を施す（ステップＳ３２０〜ステップＳ３４０）。
【００６０】
先ず、データ（ｕ，ｖ）について、要素テーブル（ｕ−ｘ，ｖ−ｙ，｜ｇｚ｜）の値（係数）とデータ（ｕ，ｖ）の画素値とを積算し、ｔｍｐＣに加算する。また、要素テーブル（ｕ−ｘ，ｖ−ｙ，｜ｇｚ｜）の値をｔｍｐＡに加算する（ステップＳ３３０）。
【００６１】
これを、すべてのｕ，ｖについて繰り返す。この処理によって、ｔｍｐＣには、１つのグループ内の各画素の画素値と、各画素の距離に応じたルックアップテーブルの係数との積算値が各画素分加算されていくことになる。また、ｔｍｐＡには、１つのグループ内の各画素に対応したルックアップテーブルの係数が加算されていくことになる。
【００６２】
次に、補正処理を行う（ステップＳ３５０）。先ず、補正値として１−Ａｌｐｈａを求める。そして、ｔｍｐＣにこの補正値を積算して変数Ｃｏｌｏｒに加算していく。また、ｔｍｐＡに補正値を積算して変数Ａｌｐｈａに加算していく。なお、ステップＳ３００〜ステップＳ３６０について最初のループでは、Ａｌｐｈａが０であるため補正値は１、つまり補正なしとなる。
【００６３】
次に、Ａｌｐｈａが１以上であるか否かを判断し（ステップＳ３５５）、１以上でなければステップＳ３００へ戻り、次のグループについて処理を行う。一方、１以上であれば、ステップＳ３７０へ進む。
【００６４】
ここまでの処理で、Ｃｏｌｏｒには、全てのグループｇｚにおける各画素の画素値とルックアップテーブルの係数との積算値が加算されることになる。ステップＳ３７０では、Ｃｏｌｏｒ／Ａｌｐｈａを行い、新たなＣｏｌｏｒとする。これにより、Ｃｏｌｏｒの値を規格化する。すなわち、画面端でサンプル対象の画素が画像の外にあり、処理をスキップするサンプルがあった場合、計算結果の画素は暗くなる。この対策として、ステップＳＳ３７０では、サンプルが不足した場合、１未満になるＡｌｐｈａを使い計算結果に補正をかけ、画像端の明るさがデフォーカス処理の前後で大きく異ならないようにする。また、デフォーカス処理に複数のｇＺが関係した場合、上記と同じように暗くなる。これは、各ルックアップテーブルは個別に正規化されているため、複数のｇＺグループが関係し、複数のルックアップテーブルが使われた場合、誤差として表れるためである。そこで、ステップＳ３７０では、この誤差に対する補正も行っている。図１２−２は、補正後の画像サンプルの図、図１２−３は、補正前の画像サンプルの図である。また、図１２−４は、各々のサンプルの拡大図である。このように、補正前には発生していた画面の暗くなる部分が補正によって解消しているのが分かる。
【００６５】
以上説明したステップＳ２６０〜ステップＳ３８０までの処理を、処理対象である幅ｗ×高さｈの画像情報の全ての画素を注目画素として実行する。これにより、幅ｗ×高さｈの画像情報についてデフォーカス処理が施される。
【００６６】
＜３．具体的な適用例＞
［デフォーカス処理の具体例］
図１５は、データ列のグループ分けの具体例を説明する図である。本実施形態では、カメラのように光がレンズによって集められ、各画素の色を記録するのとは逆に、各画素から出た視線の束がレンズで曲がり、焦点で交差するモデルを基に、図１５に示すようなグループ分けを行う。視線の束の中は、ルックアップテーブルにおける各Ｚのような分布となっている。図１５に示すように、グループ分けは、焦点位置に対応したｇＺ＝０を中心として、レンズ側にｇＺ＝−１、−２、−３、−４…、被写体側にｇＺ＝１、２、３、４…の区分けとなる。
【００６７】
図１６は、サンプルリストのソートの具体例を説明する図である。サンプルリストに登録されるデータ列（ｕ，ｖ）は、色（位置ｕ，ｖの画素値）、デプス（位置ｕ，ｖの距離情報）、ｚ（位置ｕ，ｖのｚ）の要素を各々備えている。サンプルリストに登録されたデータ列は、当初ｕ，ｖすなわちｘ、ｙの位置の順に登録されているが、これをデプスの順にソートする。図１６に示す例では、ソート後、ｇＺ＝−３、−２、−１、０、３、４の順にデータ列が並び替えられている。これにより、ｇＺグループの順に並び替えられることになる。サンプルリストがｇＺグループの順に並び替えられることで、ｇＺグループごとにデフォーカス処理の演算を効率良く行うことになる。
【００６８】
図１７は、上記のサンプルリストの例におけるデフォーカス処理の具体例を説明する図である。この処理は、図１２−１に示すステップＳ３００〜ステップＳ３６０の処理となっている。デフォーカス処理は、ｇＺグループごとに行われる。
【００６９】
上記のサンプルリストの例では、ｇＺ＝−３から処理が始まる。ｇＺ＝−３のグループは、データ列（ｕ１，ｖ１）であり、要素（色，デプス，ｚ）が（色１，０．１，３）となっている。これにより、ｔｍｐＣ＝要素テーブル（ｕ１−ｘ，ｖ１−ｙ，３）×色１を行い、ｔｍｐＡ＝要素テーブル（ｕ１−ｘ，ｖ１−ｙ，３）を行う。また、補正＝（１−０）、Ｃｏｌｏｒ＋＝ｔｍｐＣ×補正、Ａｌｐｈａ＋＝ｔｍｐＡ×補正を行う。ここで、「＋＝」は、左辺の変数値に右辺を加算して新たな左辺の変数値とする演算のことである。
【００７０】
次に、ｇＺ＝−２の処理を行う。ｇＺ＝−２のグループは、データ列（ｕ３，ｖ３）およびデータ列（ｕ６，ｖ６）であり、要素（色，デプス，ｚ）が（色３，０．２，２）および（色６，０．２，２）となっている。これにより、ｔｍｐＣ＝要素テーブル（ｕ３−ｘ，ｖ３−ｙ，２）×色３＋要素テーブル（ｕ６−ｘ，ｖ６−ｙ，２）×色６を行い、ｔｍｐＡ＝要素テーブル（ｕ３−ｘ，ｖ３−ｙ，２）＋（ｕ６−ｘ，ｖ６−ｙ，２）を行う。また、補正＝（１−Ａｌｐｈａ）、Ｃｏｌｏｒ＋＝ｔｍｐＣ×補正、Ａｌｐｈａ＋＝ｔｍｐＡ×補正を行う。
【００７１】
次に、ｇＺ＝−１の処理を行う。ｇＺ＝−１のグループは、データ列（ｕ４，ｖ４）であり、要素（色，デプス，ｚ）が（色４，０．３，１）となっている。これにより、ｔｍｐＣ＝要素テーブル（ｕ４−ｘ，ｖ４−ｙ，１）×色４を行い、ｔｍｐＡ＝要素テーブル（ｕ４−ｘ，ｖ４−ｙ，１）を行う。また、補正＝（１−Ａｌｐｈａ）、Ｃｏｌｏｒ＋＝ｔｍｐＣ×補正、Ａｌｐｈａ＋＝ｔｍｐＡ×補正を行う。
【００７２】
次に、ｇＺ＝０の処理を行う。ｇＺ＝０のグループは、データ列（ｘ，ｙ）であり、要素（色，デプス，ｚ）が（色５，０．４，０）となっている。これにより、ｔｍｐＣ＝要素テーブル（ｘ−ｘ，ｙ−ｙ，０）×色５＝色５を行い、ｔｍｐＡ＝要素テーブル（ｘ−ｘ，ｙ−ｙ，０）＝１を行う。また、補正＝（１−Ａｌｐｈａ）、Ｃｏｌｏｒ＋＝ｔｍｐＣ×補正、Ａｌｐｈａ＋＝ｔｍｐＡ×補正＝１−Ａｌｐｈａを行う。
【００７３】
図１８は、視線の束の通過について説明する図である。ここで、各ピクセルではレンズで集まった無数の光線を記録しているが、光線の逆ベクトルの関係にある視線も無数に存在する。この無数の視線が焦点と記録画素で交わる束となっており、これを視線の束と呼んでいる。図１８（ａ）は、ｇＺ＝−３のグループでの視線の束の到達、通過を示している。なお、図１８の例では、ｇＺ＝−４のグループに該当する画素がないため、ｇＺ＝−３の区間に入っている視線は１００％となる。ｇＺ＝−３のグループには該当する画素があるため、視線の束のうちｔｍｐＡが到達する。したがって、１−ｔｍｐＡの視線がｇＺ＝−３のグループを通過する。
【００７４】
図１８（ｂ）は、ｇＺ＝−２のグループでの視線の束の通過を示している。本実施形態の処理では、各ｇＺグループで処理を完結させるため、各ｇＺグループでどの視線が到達したかを考えず、ｔｍｐＡの視線が到達したことを考えている。したがって、ｇＺ＝−２のグループでは、ｇＺ＝−３のグループから通過した１−ｔｍｐＡの視線のうち、ｔｍｐＡを掛けた分が到達し、残り、すなわち１−（Ａｌｐｈａ＋（１−ｔｍｐＡ）×ｔｍｐＡ）の視線が通過する。
図１８（ｃ）は、ｇＺ＝０のグループでの視線の束の通過を示している。ｇＺ＝０のグループでは、対応するルックアップテーブル（ｚ＝０）の中央の１画素が１、他の画素が０になっている。したがって、ｇＺ＝０のグループにデータが１つあった場合、ｔｍｐＡは１になり、視線が全て到達することになる。
【００７５】
［具体的なサンプル］
図１９〜図２１は、デフォーカス処理の具体的なサンプルを示す図である。図１９は、焦点距離を変化させた例であり、分散ａ＝４、ｄｄｉｆ＝０．４として、焦点距離を（ａ）で０．３、（ｂ）で０．４５、（ｃ）で０．６に変化させた例である。図１９（ａ）〜（ｃ）に示すように、焦点距離０．３である（ａ）が最も手前に焦点が合っており、（ｂ）、（ｃ）の順に奥へ焦点位置が移動している。各々、焦点位置を中心として手前および奥側となる画素は距離に応じた強さのデフォーカス処理が施されている。
【００７６】
図２０は、分散ａを変化させた例であり、焦点距離０．４５、ｄｄｉｆ＝０．４として、分散ａを（ａ）で２、（ｂ）４、（ｃ）で６、（ｄ）で１０、（ｅ）で２０に変化させた例である。図２０（ａ）〜（ｅ）に示すように、同じ焦点位置を中心として手前および奥側となる画素は距離に応じた強さのデフォーカス処理が施されているが、分散が大きいほどデフォーカスの強さが大きくなっている。
【００７７】
図２１は、ｄｄｉｆを変化された例であり、焦点距離０．４５、分散０．４として、ｄｄｉｆを（ａ）で０．７５、（ｂ）で０．４、（ｃ）で０．０６に変化された例である。図２１（ａ）〜（ｃ）に示すように、同じ焦点位置を中心として手前および奥側となる画素は距離に応じた強さのデフォーカス処理が施されているが、ｄｄｉｆが小さいほどデフォーカスの幅が大きくなっている。
【００７８】
［グラフィックスへの適用例］
本実施形態に係る画像処理装置および画像処理プログラムは、カメラで取り込んだ写真（イメージ）のほか、コンピュータによって作成したグラフィックスに対しても適用可能である。図２２は、グラフィックスへ適用する場合の流れを示す図である。
【００７９】
先ず、コンピュータで実行されるコンピュータグラフィックス（以下、単に「ＣＧ」と言う。）作成ソフトウェアを用い、ＣＧ記述データを作成する。次いで、このＣＧ記述データからモニタに表示可能な画像情報を生成するとともに、各画素ごとの距離情報を生成する。そして、この生成した画像情報および距離情報を本実施形態に係る画像処理装置もしくは画像処理プログラムに渡し、ここでデフォーカス処理を施して最終画像を得る。
【００８０】
図２３は、ＣＧ作成ソフトウェア内に本実施形態の画像処理プログラムが組み込まれた場合の処理を説明する図である。ＣＧ画像も仮想のカメラを設定して生成するものであり、本実施形態の画像処理プログラムは、ＣＧ作成ソフトウェアの一つの画像処理機能として組み込むことができる。この場合、ＣＧ作成ソフトウェアによってレンダリングを行い、ＣＧ記述データを生成するとともに、画像情報を生成する。次いで、撮影時の撮影距離に相当する距離情報をＣＧ記述データから生成し、生成した距離情報と画像情報とを本実施形態の画像処理プログラムに渡す。そして、ここでデフォーカス処理を施して最終画像を得る。
【符号の説明】
【００８１】
１…画像処理装置、１０…ルックアップテーブル生成部、２０…デフォーカス処理部
【図１】
2011003124.tif 000003
【図２】
2011003124.tif 000004
【図３】
2011003124.tif 000005
【図４】
2011003124.tif 000006
【図５】
2011003124.tif 000007
【図６】
2011003124.tif 000008
【図７】
2011003124.tif 000009
【図８】
2011003124.tif 000010
【図９】
2011003124.tif 000011
【図１０】
2011003124.tif 000012
【図１１】
2011003124.tif 000013
【図１２−１】
2011003124.tif 000014
【図１２−２】
2011003124.tif 000015
【図１２−３】
2011003124.tif 000016
【図１２−４】
2011003124.tif 000017
【図１３】
2011003124.tif 000018
【図１４】
2011003124.tif 000019
【図１５】
2011003124.tif 000020
【図１６】
2011003124.tif 000021
【図１７】
2011003124.tif 000022
【図１８】
2011003124.tif 000023
【図１９】
2011003124.tif 000024
【図２０】
2011003124.tif 000025
【図２１】
2011003124.tif 000026
【図２２】
2011003124.tif 000027
【図２３】
2011003124.tif 000028