以下、本発明の実施の形態について説明する。
<画像処理装置の使用例>
図1は、本発明の一実施形態に係る画像処理システムの全体構成の一例を説明する図である。図示する例では、画像処理システムでは、撮影装置の例である全天球カメラ1と、画像処理装置の例であるPC(Personal Computer)2とが接続される。また、PC2は、画像形成装置の例であるプリンタ3に接続される。
全天球カメラ1は、複数の光学系を有するカメラ等である。例えば、全天球カメラ1は、複数の光学系を用いて撮影した画像に基づいて、全天球カメラ1の全周等の広い範囲を示す撮影画像(例えば、水平360°を写す画像である。)を生成する。
なお、撮影画像は、全周をすべて示す画像に限られない。例えば、撮影画像は、360°のうち、一部の範囲が欠けた画像であったり、半球分を示す画像であったり又は一部の範囲が除去された画像等でもよい。
次に、全天球カメラ1は、撮影画像をPC2に入力する。そして、PC2は、撮影画像を画像処理して出力画像を生成する。続いて、PC2が出力画像をプリンタ3に出力すると、プリンタ3は、出力画像に基づいて、紙又はプラスチックシート等の媒体に画像形成を行う。
このようにして、画像形成が行われた紙等は、画像形成が行われた箇所が切り抜かれる。そして、切り抜かれた箇所が組み立てられると、4面体、6面体、8面体、12面体、20面体、円筒体、錐又は柱等の多面体となる。なお、多面体は、これらに限られず、他の形状でもよい。
また、この例では、全天球カメラ1、PC2及びプリンタ3は、有線又は無線で接続される。例えば、PC2は、全天球カメラ1が生成する全天球画像等の撮影画像を示すデータを全天球カメラ1からダウンロードして入力する。なお、接続は、ネットワーク又はサーバ等を介してもよい。
なお、画像処理装置の使用する構成は、図示する構成に限られない。例えば、全天球カメラ1及びPC2は、一体の装置であってもよい。また、画像処理装置は、PCに限られず、他の種類の情報処理装置でもよい。
各装置は、例えば、以下のような装置である。
<撮影装置例>
図2は、本発明の一実施形態に係る撮影装置の一例を説明する図である。なお、図2は、全天球カメラ1の外観の一例を示す図である。具体的には、図2(a)は、全天球カメラ1の正面図の一例である。一方で、図2(b)は、全天球カメラ1の左側面図の一例である。さらに、図2(c)は、全天球カメラ1の平面図の一例である。
そして、全天球カメラ1は、前面撮影素子1H1と、後面撮影素子1H2と、スイッチ1H3とを有する。この例では、前面撮影素子1H1及び後面撮影素子1H2等の光学系が撮影に用いられる。そして、それぞれの光学系を用いて撮影されたそれぞれの画像に基づいて、全天球カメラ1は、全天球画像等の撮影画像を生成する。
また、スイッチ1H3は、いわゆるシャッタボタンであり、ユーザが全天球カメラ1に対して撮影の指示を行うための入力装置の例である。
例えば、図2(a)に示すように、ユーザが全天球カメラ1を手で持ち、全天球カメラ1が有するスイッチ1H3がユーザによって押されると、全天球カメラ1は、撮影を行う。具体的には、全天球カメラ1は、図3のようにして撮影に用いられる。
図3は、本発明の一実施形態に係る撮影装置による撮影の一例を説明する図である。ユーザは、全天球カメラ1を手で持ち、図2に示すスイッチ1H3を押すことによって撮影を行う。このようにすると、全天球カメラ1は、図示するように、前面撮影素子1H1(図2)と、後面撮影素子1H2(図2)とによって、全天球カメラ1の全周等の広範囲を撮影することができる。このようにして撮影される画像は、例えば、以下のような画像である。
図4は、本発明の一実施形態に係る撮影装置によって撮影された画像の一例を説明する図である。具体的には、図4(a)は、前面撮影素子1H1(図2)によって撮影される画像の一例である。一方で、図4(b)は、後面撮影素子1H2(図2)によって撮影される画像の一例である。そして、図4(c)は、前面撮影素子1H1によって撮影される画像、すなわち、図4(a)に示す画像と、後面撮影素子1H2によって撮影される画像、すなわち、図4(b)に示す画像とに基づいて生成される画像の一例である。
まず、前面撮影素子1H1によって撮影される画像は、図4(a)に示すように、全天球カメラ1の前方側の広い範囲、例えば、画角で180°の範囲を撮影範囲とする画像である。また、図示するように、前面撮影素子1H1によって撮影される画像は、前面撮影素子1H1が広い範囲を撮影するための光学系、例えば、いわゆる魚眼レンズを用いる場合には、歪曲収差を有する。すなわち、図4(a)に示す画像は、全天球カメラ1の一方の広い範囲を示し、かつ、歪曲収差を有する、いわゆる半球画像(以下「半球画像」という。)である。
なお、各光学系のそれぞれの画角は、180°以上かつ200°以下の範囲が望ましい。特に、画角が180°以上を超える場合には、図4(a)に示す半球画像と、図4(b)に示す半球画像とを合成する際、重畳する画像領域があるため、撮影装置は、重畳する画像領域を利用してつなぎ合わせ等を行うことができるので、全天球画像を生成しやすい。
一方で、後面撮影素子1H2によって撮影される画像は、図4(b)に示すように、全天球カメラ1の後方側の広い範囲、例えば、画角で180°の範囲を撮影範囲とする画像である。このように、後面撮影素子1H2によって撮影される画像は、図4(a)と同様の半球画像である。
次に、全天球カメラ1は、歪補正処理及び合成処理等の処理を行い、図4(a)に示す前方側の半球画像と、図4(b)に示す後方側の半球画像とに基づいて、図4(c)に示す撮影画像を生成する。すなわち、図4(c)に示す画像は、いわゆるメルカトル(Mercator)図法又は正距円筒図法等の方法で生成される画像、すなわち、撮影画像の例である。このように、撮影画像は、図4(c)に示すような、いわゆる全方位カメラ又はいわゆる広角レンズのカメラ等によって、広い視野角の範囲を撮影した画像であるのが望ましい。
さらに、スイッチ1H3がユーザによって押されることでシャッタボタンを制御するものとしているが、PC2等の表示装置から遠隔でシャッタボタンを制御するように構成してもよい。
<撮影装置のハードウェア構成例>
図5は、本発明の一実施形態に係る撮影装置のハードウェア構成の一例を説明するブロック図である。図示するように、全天球カメラ1は、撮影ユニット1H4と、画像処理ユニット1H7、撮影制御ユニット1H8と、CPU(Central Processing Unit)1H9と、ROM(Read−Only Memory)1H10とを有する。また、全天球カメラ1は、SRAM(Static Random Access Memory)1H11と、DRAM(Dynamic Random Access Memory)1H12と、操作I/F(Interface)1H13とを有する。さらに、全天球カメラ1は、ネットワークI/F1H14と、無線I/F1H15と、アンテナ1H16とを有する。また、全天球カメラ1が有するハードウェアは、バス1H17で接続され、バス1H17を介してデータ又は信号を入出力する。
撮影ユニット1H4は、前面撮影素子1H1と、後面撮影素子1H2とを有する。また、前面撮影素子1H1に対応してレンズ1H5、後面撮影素子1H2に対応してレンズ1H6がそれぞれ設置される。
前面撮影素子1H1及び後面撮影素子1H2は、いわゆるカメラユニットである。具体的には、前面撮影素子1H1及び後面撮影素子1H2は、CMOS(Complementary Metal Oxide Semiconductor)又はCCD(Charge Coupled Device)等の光学センサをそれぞれ有する。そして、前面撮影素子1H1は、レンズ1H5を通して入射する光を変換し、半球画像等を示す画像データを生成する。同様に、後面撮影素子1H2は、レンズ1H6を通して入射する光を変換し、半球画像等を示す画像データを生成する。
次に、撮影ユニット1H4は、前面撮影素子1H1及び後面撮影素子1H2が生成するそれぞれの画像データを画像処理ユニット1H7へ出力する。なお、出力される画像データは、例えば、図4(a)に示す前方の半球画像及び図4(b)に示す後方の半球画像等である。
さらに、前面撮影素子1H1及び後面撮影素子1H2は、高画質の撮影を行うため、レンズ以外に、絞り又はローパスフィルタ等の他の光学要素を更に有してもよい。また、前面撮影素子1H1及び後面撮影素子1H2は、高画質の撮影を行うために、いわゆる欠陥画素補正又はいわゆる手振れ補正等を行ってもよい。
画像処理ユニット1H7は、撮影ユニット1H4から入力される画像データに基づいて、図4(c)に示す全天球画像を生成する。なお、全天球画像を生成する処理の詳細は、後述する。
撮影制御ユニット1H8は、全天球カメラ1が有するハードウェアを制御する制御装置である。
CPU1H9は、各処理を実現するための演算及びデータの加工を行う演算装置並びにハードウェアの制御を行う制御装置である。例えば、CPU1H9は、あらかじめインストールされるプログラムに基づいて、各処理を実行する。
ROM1H10、SRAM1H11及びDRAM1H12は、記憶装置の例である。具体的には、ROM1H10は、例えば、CPU1H9に処理を実行させるためのプログラム、データ又はパラメータ等を記憶する。また、SRAM1H11及びDRAM1H12は、例えば、CPU1H9がプログラムに基づいて処理を実行するのに用いられるプログラム、プログラムが使用するデータ、プログラムが生成するデータ等を記憶する。なお、全天球カメラ1は、ハードディスク等の補助記憶装置を更に有してもよい。
操作I/F1H13は、スイッチ1H3等の入力装置と接続され、全天球カメラ1に対するユーザの操作を入力する処理を行うインタフェースである。例えば、操作I/F1H13は、スイッチ等の入力装置、入力装置を接続するためのコネクタ、ケーブル、入力装置から入力される信号を処理する回路、ドライバ及び制御装置等である。なお、操作I/F1H13は、ディスプレイ等の出力装置を更に有してもよい。また、操作I/F1H13は、入力装置と、出力装置とが一体となったいわゆるタッチパネル等でもよい。さらに、操作I/F1H13は、USB(Universal Serial Bus)等のインタフェースを有し、フラッシュメモリ等の記録媒体を全天球カメラ1に接続してもよい。これによって、操作I/F1H13は、全天球カメラ1から記録媒体にデータを入出力してもよい。
なお、スイッチ1H3は、シャッタに係る操作以外の操作を行うための電源スイッチ及びパラメータ入力スイッチ等でもよい。
ネットワークI/F1H14、無線I/F1H15及びアンテナ1H16は、無線又は有線で、外部装置と全天球カメラ1を接続させる。例えば、全天球カメラ1は、ネットワークI/F1H14によって、ネットワークに接続し、PC2(図1)へデータを送信する。なお、ネットワークI/F1H14、無線I/F1H15及びアンテナ1H16は、USB等の有線で他の外部装置と接続するハードウェアでもよい。すなわち、ネットワークI/F1H14、無線I/F1H15及びアンテナ1H16は、コネクタ及びケーブル等でもよい。
バス1H17は、全天球カメラ1が有するハードウェア間で、データ等を入出力するのに用いられる。すなわち、バス1H17は、いわゆる内部バスである。具体的には、バス1H17は、例えば、PCI Express(Peripheral Component Interconnect Bus Express)等である。
なお、全天球カメラ1は、撮影素子が2つである場合に限られない。例えば、3つ以上の撮影素子を有してもよい。さらに、全天球カメラ1は、1つの撮影素子の撮影角度を変えて、複数の部分画像を撮影してもよい。また、全天球カメラ1は、魚眼レンズを用いる光学系に限られない。例えば、広角レンズを用いてもよい。
なお、全天球カメラ1が行う処理は、他の装置が行ってもよい。例えば、処理の一部又は全部は、全天球カメラ1がデータ及びパラメータ等を送信し、PC2又はネットワークで接続される他の情報処理装置が行ってもよい。このようにして、画像処理システムは、複数の情報処理装置を有し、処理を分散、冗長又は並列に行ってもよい。
<画像処理装置のハードウェア構成例>
図6は、本発明の一実施形態に係る画像処理装置のハードウェア構成の一例を説明するブロック図である。図示するように、画像処理装置の一例であるPC2は、補助記憶装置2H1と、主記憶装置2H2と、入力装置2H3と、出力装置2H4と、CPU2H5と、ネットワークI/F2H6とを有する。また、PC2が有するハードウェアは、バス2H7で接続され、バス2H7を介してデータ又は信号を入出力する。
補助記憶装置2H1は、データ、パラメータ又はプログラム等を記憶する。具体的には、補助記憶装置2H1は、例えば、ハードディスク、フラッシュSSD(Solid State Drive)等である。なお、補助記憶装置2H1が記憶するデータは、ネットワークI/F2H6で接続されるファイルサーバ等が一部又は全部を冗長又は代わりに記憶してもよい。
主記憶装置2H2は、処理を実行するためのプログラムが使用する記憶領域となる、いわゆるワークメモリ等である。すなわち、主記憶装置2H2は、データ、プログラム又はパラメータ等を記憶する。具体的には、主記憶装置2H2は、例えば、SRAM又はDRAM等である。なお、主記憶装置2H2は、記憶及び取出を行う制御装置を更に有してもよい。
入力装置2H3は、画像又は処理結果等を表示する出力装置及びユーザによる操作を入力する入力装置である。具体的には、入力装置2H3は、キーボード又はマウス等の入力装置である。そして、入力装置2H3は、例えば、表示されるGUI(Graphical User Interface)等に対するユーザによる操作を入力する。
出力装置2H4は、PC2による処理結果又は画像等をユーザに表示するディスプレイ等である。なお、入力装置2H3及び出力装置2H4は、いわゆるタッチパネル等のように、一体の装置でもよい。
CPU2H5は、各処理を実現するための演算及びデータの加工を行う演算装置並びにハードウェアの制御を行う制御装置である。なお、CPU2H5は、並列、冗長又は分散して処理するために、複数のCPU、デバイス又は複数のコア(core)から構成されてもよい。また、PC2は、処理を行うため、GPU(Graphics Processing Unit)等の補助装置を内部又は外部に更に有してもよい。
ネットワークI/F2H6は、無線又は有線で、ネットワークを介して外部装置と接続する。具体的には、ネットワークI/F2H6は、データ等を入出力するためのアンテナ、周辺回路及びドライバ等である。例えば、PC2は、CPU2H5及びネットワークI/F2H6によって、全天球カメラ1(図1)等から画像データを入力する。一方で、PC2は、CPU2H5及びネットワークI/F2H6によって、全天球カメラ1等へデータ等を出力する。
なお、画像処理装置は、PCに限られない。すなわち、画像処理装置は、PC以外のコンピュータでもよい。例えば、画像処理装置は、スマートフォン、PDA(Personal Digital Assistance)、タブレット、携帯電話器又はこれらの組み合わせ等でもよい。また、画像処理装置は、1つの装置に限られず、複数の装置で構成されてもよい。
<撮影画像の例>
図7は、本発明の一実施形態に係る撮影画像の一例を説明する図である。図は、図7(a)及び図7(b)に示す半球画像から、撮影画像を生成する例を示す。なお、図7(a)は、図4(a)に示す半球画像を光軸に対して水平方向及び垂直方向の入射角が等位となる箇所を線で結んで示す図である。以下、光軸に対して水平方向の入射角を「θ」、光軸に対して垂直方向の入射角を「φ」という。さらに、図7(b)は、図7(a)と同様に、図4(b)に示す半球画像を光軸に対して水平方向及び垂直方向の入射角が等位となる箇所を線で結んで示す図である。
また、図7(c)は、メルカトル図法によって処理された画像の一例を説明する図である。具体的には、図7(c)に示す画像は、例えば、図7(a)及び図7(b)に示す画像をあらかじめ生成されるLUT(LookUpTable)等で対応させ、正距円筒図法によって処理されると、生成される画像である。そして、画像が図7(c)に示す状態となった後、それぞれの画像を図7(d)に示すように合成すると、全天球画像が、撮影装置によって生成される。このように、合成処理は、例えば、図7(c)に示す状態の半球画像を2つ以上用いて、全天球画像を生成する処理である。なお、合成処理は、図7(d)に示すように、図7(c)に示す状態の半球画像を単に連続して配置する処理に限られない。例えば、全天球画像の水平方向中心がθ=180°以外の角度であると、合成処理において、撮影装置は、まず、図4(a)に示す半球画像を前処理し、前処理された画像を全天球画像の中心に配置する。次に、撮影装置は、生成する画像の左右部分に、図4(b)に示す半球画像を前処理した画像を左右部分に配置できる大きさに分割し、半球画像を合成して図4(c)に示す全天球画像を生成してもよい。
なお、全天球画像を生成する処理は、正距円筒図法による処理に限られない。例えば、φ方向において、図7(b)に示す半球画像が有する画素の並びと、図7(a)に示す半球画像が有する画素並びとが、上下が逆であり、かつ、θ方向においてそれぞれの画素の並びが左右逆である、いわゆる天地逆転となる場合がある。このように、天地逆転の状態であると、撮影装置は、前処理において、図7(b)に示す半球画像を図7(a)のφ方向及びθ方向の画素の並びと揃えるために、180°Roll回転させる処理等を行ってもよい。
また、全天球画像を生成する処理は、図7(a)及び図7(b)に示す半球画像が有するそれぞれの歪曲収差を補正する歪補正処理等が行われてもよい。さらに、全天球画像を生成する処理は、例えば、シェーディング補正、ガンマ補正、ホワイトバランス、手振れ補正、オプティカル・ブラック補正処理、欠陥画素補正処理、エッジ強調処理又はリニア補正処理等が行われてもよい。なお、合成処理は、例えば、半球画像の撮影範囲と、他方の半球画像の撮影範囲とが重複する場合には、重複する撮影範囲に撮影される被写体の画素を利用して補正を行うと、精度良く半球画像を合成することができる。
このような全天球画像を生成する処理によって、全天球カメラ1は、撮影される複数の半球画像から全天球画像を生成する。なお、全天球画像は、別の処理によって生成されてもよい。
<画像処理装置による全体処理例>
図8は、本発明の一実施形態に係る画像処理装置による全体処理の一例を示すフローチャートである。例えば、図1に示すPC2は、図示するような処理を行う。
<撮影画像の入力例>
ステップS101では、PC2は、撮影画像を入力する。例えば、まず、全天球カメラによる図7に示すような処理によって、全天球画像等の撮影画像が生成される。そして、図1に示すように、全天球カメラ1から、PC2に撮影画像が送信されると、PC2に、撮影画像が入力される。
<多面体の種類の設定例>
ステップS102では、PC2は、多面体の種類を設定する。例えば、PC2は、以下のような設定画面をユーザに表示して、多面体の種類をユーザに選択させる操作を入力する。
図9は、本発明の一実施形態に係る画像処理装置によって表示される多面体の種類の設定画面例を示す図である。例えば、ステップS102では、PC2は、図示するような第1設定画面PN1を表示する。
図示する例では、第1設定画面PN1は、多面体を選択する操作を入力するためのGUIを表示する。具体的には、GUIは、例えば、第1ボタンBT1、第2ボタンBT2、第3ボタンBT3、第4ボタンBT4及び第5ボタンBT5である。より具体的には、ユーザは、第1ボタンBT1を押す操作を行うと、「4面体」の種類を選択することができる。同様に、ユーザは、第2ボタンBT2を押す操作を行うと、「6面体」の種類を選択することができる。このようにして、第1ボタンBT1、第2ボタンBT2、第3ボタンBT3、第4ボタンBT4及び第5ボタンBT5等のGUIを用いて、多面体の種類を設定するユーザの操作がPCに入力される。
図8に戻り、ステップS103では、PC2は、多面体の種類が設定されたか否かを判断する。そして、多面体の種類が設定されたとPC2が判断すると(ステップS103でYES)、PC2は、S104に進む。一方で、多面体の種類が設定されてないとPC2が判断すると(ステップS103でNO)、PC2は、S102に進む。
<置き方の設定例>
ステップS104では、PC2は、多面体の置き方を設定する。例えば、PC2は、以下のような設定画面をユーザに表示して、多面体の置き方をユーザに選択させる操作を入力する。
図10は、本発明の一実施形態に係る画像処理装置によって表示される多面体の置き方の設定画面例を示す図である。例えば、ステップS104では、PC2は、図示するような第2設定画面PN2を表示する。図示する第2設定画面PN2は、3種類の置き方を表示する画面の例である。置き方は、例えば、以下の3種類である。なお、以下の説明では、多面体の種類に「6面体」が設定された例で説明する。
図11は、本発明の一実施形態に係る画像処理装置によって表示される多面体の置き方の一例を示す図である。図11(a)は、多面体POLが有する複数の面のうち、1面が接地する置き方の例を示す。なお、図11(a)に図示するような置き方を以下の説明では「床置き」という。図示するように、「床置き」は、多面体POLを床FRに置く場合に、床FRと接地する範囲が「面」となる場合である。なお、多面体POLを床FRに置くと、底になる面を以下の説明では「底面BF」という。また、底面BFは、多面体POLが床FRに置かれると、面に画像形成された画像が隠れる面である。
図11(b)は、多面体POLが有する複数の頂点のうち、1点が接地する置き方の例を示す。なお、図11(b)に図示するような置き方を以下の説明では「ぶら下げ」という。例えば、図11(b)に図示するように、多面体POLが有する複数の頂点のうち、1点(以下「支点SP」という。)が接地する置き方である。なお、支点SPには、棒等が支えとして設置され、多面体POLが支えられてもよい。図示するように、「ぶら下げ」は、多面体POLを床FRに置く場合に、床FR等と接地する範囲が「点」となる場合である。
図11(c)は、多面体POLが有する複数の辺のうち、1辺が接地する置き方の例を示す。なお、図11(c)に図示するような置き方を以下の説明では「ケース置き」という。図示するように、「ケース置き」は、多面体POLを床FRに置く場合に、床FRと接地する範囲が「辺」となる場合である。なお、多面体POLを床FRに置くと、底になる辺を以下の説明では「底辺SSI」という。図示するように、「ケース置き」では、底辺SSIが接地する。
このように、置き方が変わると、同じ多面体であっても、最上部となる箇所が異なる。例えば、最上部は、置き方によって、以下のようになる。
図12は、本発明の一実施形態に係る多面体における最上部の一例を示す図である。例えば、図11(a)に示すように、多面体POLが「床置き」にされると、多面体POLの最上部は、図12(a)に示すように、面SDの中心となる。また、図11(b)に示すように、多面体POLが「ぶら下げ」にされると、多面体POLの最上部は、図12(b)に示すように、点PTとなる。さらに、図11(c)に示すように、多面体POLが「ケース置き」にされると、多面体POLの最上部は、図12(c)に示すように、辺SIの中心となる。
図10に戻り、図示する第2設定画面PN2では、第6ボタンBT6が押されると、「床置き」が設定され、第7ボタンBT7が押されると、「ぶら下げ」が設定される。また、第8ボタンBT8が押されると、「ケース置き」が設定される。
図8に戻り、ステップS105では、PC2は、置き方が設定されたか否かを判断する。そして、置き方が設定されたとPC2が判断すると(ステップS105でYES)、PC2は、S106に進む。一方で、置き方が設定されてないとPC2が判断すると(ステップS105でNO)、PC2は、S104に進む。
<座標の変換例>
ステップS106では、PC2は、座標を変換する。例えば、以下のように、PC2は、3次元座標に対応する撮影画像上の2次元座標を計算する。以下、3次元座標を(X,Y,Z)とし、撮影画像における2次元座標を(x,y)とする。なお、Z軸は、垂直方向、すなわち、重力方向を示す軸である。また、Y軸は、奥行き方向を示す軸である。さらに、X軸は、奥行き方向に対して直交方向を示す軸である。
図13のステップS201では、PC2は、3次元座標を正規化する。例えば、PC2は、下記(1)式を用いて3次元座標(X,Y,Z)を正規化する。
上記(1)式では、正規化した「X」、「Y」、「Z」をそれぞれ「tmpx」、「tmpy」、「tmpz」とする。
続いて、PC2は、正規化された3次元座標のうち、X座標成分及びY座標成分、すなわち、(tmpx,tmpy)に基づいて、ステップS202を行う。
ステップS202では、PC2は、「tmpx=0」かつ「tmpy=0」であるか否かを判断する。そして、「tmpx=0」かつ「tmpy=0」であるとPC2が判断すると(ステップS202でYES)、PC2は、ステップS206に進む。一方で、「tmpx=0」かつ「tmpy=0」でないとPC2が判断すると(ステップS202でNO)、PC2は、ステップS203に進む。
ステップS203では、PC2は、下記(2)式に基づく計算を行う。
ステップS204では、PC2は、「tmpy2」が「0」より大きいか否かを判断する。そして、「tmpy2」が「0」より大きいとPC2が判断すると(ステップS204でYES)、PC2は、ステップS205に進む。一方で、「tmpy2」が「0」より大きくないとPC2が判断すると(ステップS204でNO)、PC2は、ステップS206に進む。
ステップS205では、PC2は、下記(3)式に基づく計算を行う。
一方で、ステップS206では、PC2は、下記(4)式に基づく計算を行う。このとき、ステップS202でYESと判断されてステップS206に進む場合には、上記(2)式によって、「tmpx2」が計算されていない。そのため、PC2は、「tmpx」を「tmpx2」として(すなわち、tmpx2=tmpxとして)、下記(4)式に基づく計算を行う。
以上のように、PC2は、上記(3)式又は上記(4)式に基づいて、2次元座標のうち、「x」を計算する。
ステップS207では、PC2は、下記(5)式に基づく計算を行う。
なお、上記(3)式、(4)式及び(5)式において、「width」は、撮影画像の幅方向、すなわち、x軸方向の撮影画像の大きさを示す。また、「height」は、撮影画像の高さ方向、すなわち、y軸方向の撮影画像の大きさを示す。
以上のように計算すると、PC2は、3次元座標(X,Y,Z)を2次元座標(x,y)に変換することができる。そのため、PC2は、多面体における各3次元座標(X,Y,Z)に画像形成させる撮影画像における2次元座標(x,y)を特定できる。
図8に戻り、ステップS107では、PC2は、出力画像に基づいて画像形成を行う。例えば、生成される出力画像は、以下のような画像である。
図14は、本発明の一実施形態に係る出力画像の表示画面例を示す図である。図示する表示画面PN3は、いわゆる印刷プレビュー画面等である。
図示するように、出力画像は、いわゆる展開図の形式で生成される。図示する展開図は、画像形成された画像を紙から切り抜いて組み立てると、「6面体」が形成される図の例を示す。このように、表示画面PN3に表示される出力画像が、プリンタ3(図1)に送られると、図示する展開図と同様の画像が紙等に画像形成される。
PC2は、以下のようなデータを用いて展開図を示す出力画像を生成する。
<データ例>
まず、PC2には、あらかじめ下記(表1)に示すようなテーブルデータが入力される。
上記(表1)に示すテーブルデータは、PC2に登録される多面体の種類を定める。つまり、上記(表1)に登録されている形状が、図9に示す第1設定画面PN1において設定できる多面体の種類となる。上記(表1)において、「面の形」は、多面体が有する各面の形状を示し、例えば、「3」は、「三角形」であり、同様に、「4」は、「四角形」を示す。また、「面数」は、展開図において形成される面の数を示す。さらに、「形状ID」は、上記(表1)に示す各形状を特定する番号等である。さらにまた、「形状名」は、各形状の一般名称を示す。また、「形状画像」は、各形状を示す画像のファイル名を示す。
そして、上記(表1)に示す各形状には、例えば、下記(表2)に示す頂点が対応付けされる。
上記(表2)は、上記(表1)に示す各形状の多面体が有する頂点と、各頂点の3次元座標とを対応付けさせるテーブルである。なお、上記(表2)に示すテーブルデータは、あらかじめPC2に入力される。上記(表2)において、「頂点ID」は、各頂点を特定する番号等である。また、「頂点No.」は、各形状において各頂点を特定する番号である。さらに、「形状ID」は、上記(表1)に示す各形状を特定する番号等である。さらにまた、「座標」は、各頂点の3次元座標を示す。上記(表2)に示す例では、「形状ID」が「001」である行は、上記(表1)における「形状ID」が「001」に対応する。すなわち、上記(表2)において、「頂点ID」が「001」乃至「004」の行は、「4面体」についての頂点を示す。したがって、頂点に係るデータは、4つである。
次に、置き方は、例えば、下記(表3)に示すテーブルデータに基づいて定まる。
上記(表3)は、上記(表1)に示す各形状と、置き方とを対応付けさせるテーブルである。なお、上記(表3)に示すテーブルデータは、あらかじめPC2に入力される。上記(表3)において、「形状ID」は、上記(表1)に示す各形状を特定する番号等である。また、「置き方ID」は、置き方の種類を特定する番号である。さらに、「置き方の名称」は、各置き方の名称を示す。さらにまた、「最上部となる箇所の座標」は、多面体が「置き方ID」に示す置き方となると、最上部となる箇所の座標を示す。また、「置き方画像」は、置き方を示す画像のファイル名を示す。上記(表3)に基づいて、図10に示す第2設定画面PN2が表示される。この例では、置き方は、「床置き」、「ぶら下げ」及び「ケース置き」の3種類が上記(表3)に入力されているため、第2設定画面PN2では、3種類の置き方が設定できる。また、上記(表3)に示す「最上部となる箇所の座標」が、撮影画像の2次元座標に、図13による処理によって変換される。
次に、形状ごとに、各展開図が有する面と、各面が有する頂点とは、例えば、下記(表4)に示すテーブルデータに基づいて定まる。なお、上記(表4)に示すテーブルデータは、あらかじめPC2に入力される。
上記(表4)に示すテーブルデータは、まず、上記(表1)で定まる形状と、各形状において多面体が有する面とを対応付けさせる。具体的には、「形状ID」が「001」となる場合は、上記(表1)に示すように、多面体の種類が「4面体」となる場合である。「4面体」である場合には、多面体が有する面は、「4つ」である。そこで、上記(表4)では、「面No.」は、「1」乃至「4」の番号によって、「4面体」が有する各面を特定する。つまり、上記(表4)では、「4面体」が有する「4つ」の面に、それぞれ異なる「面No.」が設定される。
このように、上記(表4)において、「形状ID」は、上記(表1)に示す「形状ID」と対応する。また、「面No.」は、多面体が有する各面を特定する番号等である。さらに、「面頂点No.」は、各面が有する頂点を特定する番号等である。具体的には、「4面体」である場合には、各面は、「三角形」であるため、各面は、3つずつ頂点を有する。したがって、上記(表4)において、各面には、3つずつ「面頂点No.」が設定される。さらにまた、「座標」は、各頂点の展開図における2次元座標を示す。
また、各多面体が有する各頂点は、2次元座標と、3次元座標とが下記(表5)に示すテーブルデータによって対応付けされる。
上記(表5)に示すテーブルデータは、まず、上記(表4)で定まる各頂点と、上記(表2)で定まる各頂点とを対応付けさせる。具体的には、上記(表5)は、「面頂点No.」で示す頂点と、「頂点No.」とをリンクさせる。「面頂点No.」は、上記(表4)によって、2次元座標、すなわち、展開図における座標が特定できる番号等である。一方で、「頂点No.」は、上記(表2)によって、3次元座標、すなわち、多面体を組み立てた場合における3次元座標が特定できる番号等である。
さらに、画像処理装置は、以下のような補正処理を更に行うのが望ましい。
画像処理装置は、まず、展開図における2次元面上で、注目点が、展開図の境界線上に位置するか否かを判断する。具体的には、画像処理装置は、上記(表4)によって、展開図を構成する各面の頂点となる座標が分かる。したがって、画像処理装置は、注目点が、展開図において、どの面の境界の内側となるかが判断できる。
次に、画像処理装置は、展開図の境界の内側にある各点が、展開図を組み立てると形成される多面体上において、どこの3次元座標となるかを計算する必要がある。そこで、まず、画像処理装置は、展開図における2次元面上で、注目点が、どの面に位置するかを特定する。そして、画像処理装置は、特定された面の中で補完を行う。例えば、展開図における2次元面上の注目点(以下「スタート頂点」という。)は、特定される面の頂点から、特定される面に対して隣接する2つの頂点(以下「終了頂点」という。)に向かう2つのベクトルの重み付け加算で表現される。
なお、展開図における2次元面上で、1つのスタート頂点及び2つの終了頂点は、多面体上の3次元座標における3つの頂点と、各頂点のそれぞれの3次元座標とを上記(表2)、上記(表4)及び上記(表5)を用いると特定できる。このようにして、画像処理装置は、2次元面上の2つのベクトルに対応する3次元空間上の2つのベクトルを特定できる。そして、画像処理装置は、スタート頂点から展開する2つのベクトルの重み付け加算の終了点として、注目点の3次元座標を特定する。
さらに、撮影画像の天頂の3次元座標が、置き方に基づいて定まる最上部となる箇所の3次元座標(0,0,Z1)(Z1は、任意の値となる。)と異なる場合には、画像処理装置は、3次元での回転変換等によって、注目点の3次元座標を補正する。この回転変換は、原点から頂点までのベクトルと、原点から(0,0,Z1)、つまり、頂点を(0,0,Z1)とする場合のベクトルとの両方のベクトルに対して、垂直となる軸を中心にした回転となる。なお、原点は、多面体の中心であるとする。
このような回転変換を行うため、まず、画像処理装置は、原点から頂点までのベクトルと、原点から(0,0,Z1)までのベクトルとの外積を計算する。このような外積が計算できると、画像処理装置は、回転変換の回転軸を特定できる。
また、原点から頂点までのベクトルと、原点から(0,0,Z1)までのベクトルとの内積を計算すると、画像処理装置は、回転変換の回転角度を特定できる。このようにして特定された回転変換によって補正すると、画像処理装置は、撮像画像上の天頂に、最上部となる箇所を配置させる天頂補正を行うことができる。次に、図13に示す変換等を行うと、画像処理装置は、最上部となる箇所に、撮影画像における天頂が配置される展開図を画像形成できる。
以上のようなデータを用いると、画像処理装置は、多面体を組み立てた場合の3次元座標と、展開図における2次元座標とを対応させることができる。そして、図13に示す変換処理によって、各3次元座標と、撮影画像における座標とが対応付けされると、画像処理装置は、展開図の各座標に画像形成させる撮影画像の座標を特定することができる。
<変形例1>
展開図の形状は、ユーザが以下のように選択できてもよい。
図15は、本発明の一実施形態に係る展開図の選択画面例を示す図である。例えば、PC2は、図示するような選択画面PN4を表示してもよい。具体的には、この例では、選択画面PN4は、「6面体」の展開図をユーザに選択させる選択画面の例を示す。
図15(a)に図示するように、選択画面PN4は、第1選択肢SEL1と、第2選択肢SEL2との展開図を選ぶことができる選択画面である。例えば、選択画面PN4において、ユーザの操作によって、第1選択肢SEL1が選択されると、印刷プレビュー画面となる表示画面PN3は、図15(b)に示すようになる。一方で、選択画面PN4において、ユーザの操作によって、第2選択肢SEL2が選択されると、印刷プレビュー画面となる表示画面PN3は、図15(c)に示すようになる。このように、ユーザは、同じ種類の多面体を画像形成させる場合であっても、展開図の種類を選択することができる。
<変形例2>
他にも、PC2には、ユーザの設定によって、所定の面に撮影画像と異なる所定の画像が画像形成されるように設定できてもよい。以下、所定の画像の例としてQRコード(登録商標)が画像形成される場合の例で説明する。
図16は、本発明の一実施形態に係る所定の画像の設定画面例を示す図である。例えば、PC2は、図16(a)に図示するような画像設定画面PN5を表示する。この例では、ユーザの操作によって、「あり」が選択されると、入力するファイル名の画像が、展開図において所定の面に画像形成される。一方で、ユーザの操作によって、「なし」が選択されると、展開図のすべての面には、撮影画像が示す画像が画像形成される。
なお、所定の面は、底面BFであるのが望ましい。すなわち、QRコード(登録商標)等の所定の画像は、図16(b)に示すように、底面BFに画像形成されるのが望ましい。底面BFは、床に置かれている場合には、画像が隠れてしまう面である。そのため、QRコード(登録商標)のような画像は、底面BFに画像形成され、床に置かれている間では、見えない状態であるのが望ましい。なお、所定の面は、ユーザが設定できてもよい。
一方で、図16(a)に示す画像設定画面PN5において、「なし」が選択されると、図16(c)に示すように、底面BFには、他の面と同様に、撮影画像が画像形成される。なお、所定の画像は、QRコード(登録商標)に限られず、他の画像又はコード等でもよい。
<変形例3>
展開図には、組み立てにおいて糊付けに用いられる余白、いわゆる糊代が作成されてもよい。
図17は、本発明の一実施形態に係る出力画像の一例を示す図である。なお、図示する展開図は、撮影画像に図4(c)に示す画像が用いられる例である。また、図示する展開図は、組み立てると「12面体」の多面体になる展開図である。
図17(a)に示す出力画像は、糊代となる余白BLが各面の辺に形成される例を示す。ユーザは、展開図を紙等から切り抜いて、多面体を組み立てるのに、各面を貼り合わせる。このように、各面を貼り合わせるのに、図示するような余白BLがあると、貼り合わせに用いる接着剤又は糊等を付着させるスペースを確保することができる。
また、図17(b)に示す出力画像は、貼り合わせるための面の例である第1面BS1が形成される例を示す。この例では、第1面BS1は、第2面BS2と同様の画像が画像形成された面である。第1面BS1は、組み立てると、第2面BS2に重なる面である。すなわち、組み立てにおいて、第1面BS1が第2面BS2に重ねられると、多面体が完成する。第1面BS1のような面があると貼り合わせが容易となる。なお、第1面BS1は、図示する形状に限られず、例えば、1面の半分の大きさでもよい。
このようにして、貼り合わせるための余白又は面が形成されると、画像処理装置は、組み立てやすい展開図を示す出力画像を生成することができる。また、多面体に持ち手となるスペースができるように、余白又は面等が展開図に形成されてもよい。
<変形例4>
画像処理装置は、例えば、以下のように、撮影画像を縮小又は平行移動させてもよい。
図18は、本発明の一実施形態に係る撮影画像の縮小例を示す図である。以下、図4(c)に示す画像をPC2に入力する例で説明する。したがって、この例では、入力画像IMG1は、図4(c)に示す画像と同様である。そして、画像処理装置は、入力画像IMG1を図示するように縮小して縮小画像IMG2を生成する。
図示するように、縮小画像IMG2は、入力画像IMG1を縦方向(y軸)について縮小した画像である。このように、撮影画像の天頂方向(図では、上方向である。)に画像が縮小された縮小画像IMG2が用いられると、撮影画像には、空白BLSが発生する。例えば、図11(a)に示すように、「4面体」の「床置き」である場合には、空白BLSが、底面BFに相当するようになる。したがって、このように、縮小がされると、撮影画像に写る被写体等が底面BF以外の面に画像形成されるため、画像処理装置は、撮影画像に写る被写体等を組み立てた多面体において見える位置に画像形成する出力画像を生成することができる。
なお、画像処理装置は、以下のように、撮影画像を平行移動させてもよい。
図19は、本発明の一実施形態に係る撮影画像の平行移動例を示す図である。以下、図18と同様に、図4(c)に示す画像をPC2に入力する例で説明する。そして、画像処理装置は、入力画像IMG1を図示するように平行移動させて平行移動画像IMG3を生成する。例えば、入力画像IMG1において天頂に近い上部分(図では、入力画像IMG1の上部分である。)に、被写体がなく、空等の風景が写る場合には、上部分は、多面体に画像形成される画像から省略されてもよい場合がある。
そこで、図示するように、画像処理装置は、入力画像IMG1を天頂方向に向かって平行移動させて平行移動画像IMG3を生成する。このように、平行移動が行われると、平行移動画像IMG3は、入力画像IMG1の上部分が省略され、平行移動画像IMG3の下部分に、図18と同様に空白BLSが発生する。
このようにして、画像処理装置は、撮影画像に写る被写体等を組み立てた多面体において見える位置に画像形成する出力画像を生成することができる。
他にも、入力画像の下部分に所定の被写体が写る場合がある。例えば、全天球カメラを用いて撮影する場合には、シャッタボタンを押すユーザの指等が所定の被写体となって写る場合がある。なお、画像処理装置は、例えば、肌色が所定の範囲以上あるか否か等を判定することによって、指等の所定の被写体を認識することができる。このように、所定の被写体が入力画像の下部分に写る場合には、画像処理装置は、所定の被写体が底面に画像形成されるように、画像を縮小又は平行移動させてもよい。
<変形例5>
撮影画像において天頂となる座標は、指定できてもよい。以下、図4(c)に示す画像をPC2に入力する例で説明する。例えば、画像処理装置は、以下のような処理を行う。
図20は、本発明の一実施形態に係る画像処理装置による天頂となる座標を変更する処理の一例を示すフローチャートである。
ステップS301では、PC2は、新しく天頂となる座標を指定する。以下、図を用いて座標の指定方法を説明する。
図21は、本発明の一実施形態に係る撮影画像における天頂となる座標の指定例を示す図である。図示するように、入力画像IMG1において、例えば、天頂となる座標が第1座標P1であるとする。すなわち、第1座標P1が、初期値である。そして、ユーザの操作等による指定によって、天頂とする座標は、変更されてもよい。具体的には、ユーザは、例えば、第2座標P2を指定する。このようにすると、指定された第2座標P2が、天頂となるように変更される。具体的には、PC2は、以下のように処理する。
図20に戻り、ステップS302では、PC2は、指定された座標の3次元座標を計算する。例えば、PC2は、下記(6)式に基づいて、指定された座標の3次元座標を計算する。
上記(6)式では、上記(3)式、(4)式及び(5)式と同様に、「width」は、撮影画像の幅方向、すなわち、x軸方向の撮影画像の大きさを示す。また、「height」は、撮影画像の高さ方向、すなわち、y軸方向の撮影画像の大きさを示す。さらに、(x,y)は、指定された撮影画像における2次元座標である。そして、上記(6)式によって計算される3次元座標(X,Y,Z)が、(x,y)によって指定された新たな天頂に対応した座標となる。
以上のように、処理が行われると、PC2は、ユーザが指定する撮影画像における座標を撮影画像の天頂とすることができる。
<機能構成例>
図22は、本発明の一実施形態に係る画像処理装置の機能構成の一例を示す機能ブロック図である。例えば、PC2は、設定部2F1と、変換部2F2と、出力画像生成部2F3とを備える。また、図示するように、PC2は、指定部2F4を更に備える機能構成であるのが望ましい。
設定部2F1は、多面体の種類を設定する。なお、設定部2F1は、例えば、入力装置2H3(図6)等によって実現される。
変換部2F2は、展開図が画像形成された媒体を組み立てると最上部となる箇所に、撮影画像における天頂が画像形成されるように、撮影画像における座標を、組み立てると多面体となり、媒体に画像形成される展開図における座標に変換する。なお、変換部2F2は、例えば、CPU2H5(図6)等によって実現される。
出力画像生成部2F3は、変換部2F2によって変換された座標に基づいて、出力画像IMGOUTを生成する。なお、出力画像生成部2F3は、例えば、CPU2H5(図6)等によって実現される。
指定部2F4は、頂点となる座標を指定する。例えば、指定部2F4は、入力装置2H3(図6)等によって実現される。
展開図は、組み立てると、多面体となる図である。そして、多面体は、様々な種類があり、さらに、多面体は、様々な置き方がされる。そこで、PC2は、設定部2F1によって、例えば、図9及び図10のように、多面体の種類及び多面体の置き方等をユーザに設定させる設定画面を表示する。このような、設定画面があると、ユーザは、多面体の種類及び多面体の置き方等をPC2に設定することができる。
そして、例えば、図12に示すように、多面体は、種類及び置き方によって、最上部となる箇所が異なる。そこで、PC2は、例えば、上記(表3)のように、多面体の種類及び置き方ごとに、最上部となる座標をあらかじめ記憶する。このようにすると、PC2は、各多面体の種類及び置き方において、最上部となる箇所の3次元座標を把握できる。
さらに、PC2は、変換部2F2による処理、例えば、図13に示す処理によって、最上部となる箇所の3次元座標を撮影画像上の2次元座標に変換することができる。すなわち、図13に示す処理によって、PC2は、撮影画像が有する所定の画素を多面体において配置することができる。そのため、PC2は、撮影画像の天頂となる点を多面体の最上部となるように出力画像IMGOUTを生成できる。
出力画像IMGOUTは、展開図を媒体に画像形成するための画像である。そして、例えば、上記(表5)等によって、展開図における2次元座標と、3次元座標とが対応できると、PC2は、出力画像IMGOUTを生成できる。このようにして、PC2は、撮影画像を印刷した紙等を組み立てた多面体における最上部と、撮影画像の天頂とを一致させて出力画像を生成することができる。
また、指定部2F4を備える機能構成であると、例えば、図20及び図21に示すように頂点となる座標が、指定できる。
(その他の実施形態)
なお、本発明に係る実施形態は、プログラミング言語等で記述されるプログラムによって実現されてもよい。すなわち、本発明に係る実施形態は、画像処理装置等のコンピュータに画像処理方法を実行させるためのプログラムによって実現されてもよい。なお、プログラムは、フラッシュメモリ、SD(登録商標)カード又は光学ディスク等のコンピュータが読み取り可能な記録媒体に記憶して頒布することができる。また、プログラムは、インターネット等の電気通信回線を通じて頒布することができる。
また、本発明に係る実施形態において、処理の一部又は全部は、例えば、フィールド・プログラマブル・ゲート・アレイ(FPGA)等のプログラマブル・デバイス(PD)で処理され、実現されてもよい。さらに、本発明に係る実施形態において、処理の一部又は全部は、ASIC(Application Specific Integrated Circuit)で処理され、実現されてもよい。
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施形態に限定されない。すなわち、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。