以下、本発明の実施の形態について説明する。
<第1実施形態>
<システムの全体構成>
図1は、本発明の一実施形態に係る撮影システムの全体構成の一例を説明する図である。
撮影システム10は、撮影装置1と、スマートフォン2と、を有する。
撮影装置1は、複数の光学系を有し、例えば撮影装置1の全方位など広い範囲を撮影した画像(以下、全天球画像という。)を生成し、スマートフォン2へ出力する。撮影装置1、および全天球画像の詳細は、後述する。撮影システム10で処理される画像は、例えば全天球画像である。パノラマ画像は、例えば全天球画像である。以下、全天球画像の例で説明する。
情報処理装置は、例えばスマートフォン2である。以下、スマートフォン2を例に説明する。スマートフォン2は、撮影装置1から取得した全天球画像をユーザに操作させるための装置である。スマートフォン2は、取得した全天球画像をユーザ出力するための装置である。スマートフォン2の詳細は、後述する。
撮影装置1、およびスマートフォン2は、有線、または無線で接続されている。例えば、スマートフォン2は、撮影装置1が出力する全天球画像などのデータを撮影装置1からダウンロードし、スマートフォン2に入力する。なお、接続は、ネットワークを介してもよい。
なお、全体構成は、図1に示した構成に限られない。例えば撮影装置1、およびスマートフォン2は、一体の装置となっていてもよい。また、撮影装置1、およびスマートフォン2以外の別のコンピュータを接続し、3以上の装置で構成してもよい。
<撮影装置>
図2は、本発明の一実施形態に係る撮影装置の一例を説明する図である。
図2は、撮影装置1の外観の一例を説明する図である。図2(a)は、撮影装置1の正面図の一例である。図2(b)は、撮影装置1の左側面図の一例である。図2(c)は、撮影装置1の平面図の一例である。
撮影装置1は、前面撮影素子1H1と、後面撮影素子1H2と、スイッチ1H3と、を有する。撮影装置1が内部に有するハードウェアについては後述する。
前面撮影素子1H1と、後面撮影素子1H2と、によって撮影された画像を用いて、撮影装置1は、全天球画像を生成する。
スイッチ1H3は、いわゆるシャッタボタンであり、ユーザが撮影装置1に撮影の指示を行うための入力装置である。
撮影装置1は、例えば図2(a)で示すようにユーザが手で持ち、スイッチ1H3を押すことによって撮影を行う。
図3は、本発明の一実施形態に係る撮影装置による撮影の一例を説明する図である。
図3に示すように、ユーザは、撮影装置1を手で持ち、図2のスイッチ1H3を押すことによって撮影を行う。撮影装置1は、図3に示すように、図2の前面撮影素子1H1と、図2の後面撮影素子1H2と、によって、撮影装置1の全方位を撮影することができる。
図4は、本発明の一実施形態に係る撮影装置によって撮影された画像の一例を説明する図である。
図4(a)は、図2の前面撮影素子1H1によって撮影された画像の一例である。図4(b)は、図2の後面撮影素子1H2によって撮影された画像の一例である。図4(c)は、図2の前面撮影素子1H1によって撮影された画像と、図2の後面撮影素子1H2によって撮影された画像と、に基づいて生成される画像の一例である。
図2の前面撮影素子1H1によって撮影された画像は、図4(a)に示すように、撮影装置1の前方方向の広い範囲、例えば画角で180°の範囲を撮影範囲とした画像である。図2の前面撮影素子1H1によって撮影された画像は、図2の前面撮影素子1H1が広い範囲を撮影するための光学系、例えばいわゆる魚眼レンズを用いる場合、図4(a)に示すように、歪曲収差を有する。図4(a)の図2の前面撮影素子1H1によって撮影された画像は、撮影装置1の一方の広い範囲、かつ、歪曲収差を有するいわゆる半球画像(以下、半球画像という。)である。
なお、画角は、180°以上200°以下の範囲が望ましい。特に画角が180°以上を超えた場合、後述する図4(a)の半球画像と、図4(b)の半球画像と、を合成する際、重畳する画像領域があるため、合成がしやすくなる。
図2の後面撮影素子1H2によって撮影された画像は、図4(b)に示すように、撮影装置1の後方方向の広い範囲、例えば画角で180°の範囲を撮影範囲とした画像である。
図4(b)の図2の後面撮影素子1H2によって撮影された画像は、図4(a)と同様の半球画像である。
撮影装置1は、歪補正処理、および合成処理などの処理を行い、図4(a)の前方の半球画像と、図4(b)の後方の半球画像と、から図4(c)に示す画像を生成する。図4(c)は、例えばいわゆるメルカトル(Mercator)図法、または正距円筒図法などで生成される画像、すなわち全天球画像である。
なお、全天球画像は、撮影装置1によって生成された画像に限られない。全天球画像は、例えば他のカメラなどで撮影された画像、または他のカメラで撮影された画像に基づいて生成された画像でもよい。全天球画像は、いわゆる全方位カメラ、またはいわゆる広角レンズのカメラなど広い視野角の範囲を撮影した画像が望ましい。
また、画像は、全天球画像を例に説明するが、全天球画像に限られない。画像は、例えばコンパクトカメラ、一眼レフカメラ、またはスマートフォンなどで撮影された画像などでもよい。画像は、水平、または垂直に伸びるパノラマ画像などでもよい。
<撮影装置のハードウェア構成>
図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で接続されて、データ、または信号の入出力を行う。
撮影ユニット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)の全天球画像を生成するための処理を行う。全天球画像を生成するための処理の詳細は後述する。なお、画像処理ユニット1H7が行う処理は、処理の一部または全部を他のコンピュータによって並列、または冗長して行ってもよい。
撮影制御ユニット1H8は、撮影装置1の各構成要素を制御する制御装置である。
CPU1H9は、撮影装置1が行う各処理のための演算、制御を行う。例えばCPU1H9は、各種のプログラムを実行する。なお、CPU1H9は、並列処理によって高速化を行うために、複数のCPU、デバイス、または複数のコア(core)から構成されていてもよい。また、CPU1H9による処理は、撮影装置1の内部、または外部に別のハードウェアリソースを有し、撮影装置1の処理の一部、または全部を行わせてもよい。
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からデータを入出力してもよい。
なお、スイッチ1H3は、シャッターの操作以外の操作を行う電源スイッチ、およびパラメータ入力スイッチなどを有してもよい。
ネットワークI/F1H14、無線I/F1H15、およびアンテナ1H16は、無線、または有線で撮影装置1と、ネットワークを介して他のコンピュータと、を接続するためのデバイス、および周辺回路などである。例えば撮影装置1は、ネットワークI/F1H14を介してネットワークに接続し、スマートフォン2へデータを送信する。なお、ネットワークI/F1H14、無線I/F1H15、およびアンテナ1H16は、USBなどコネクタ、およびケーブルなどを用いて接続する構成としてもよい。
バス1H17は撮影装置1の各構成要素間においてデータなどの入出力に用いられる。バス1H17は、いわゆる内部バスである。バス1H17は、例えばPCI Express(Peripheral Component Interconnect Bus Express)である。
なお、撮影装置1は、撮影素子が2つの場合に限られない。例えば、3つ以上の撮影素子を有してもよい。さらに、撮影装置1は、1つの撮影素子の撮影角度を変えて、複数の部分画像を撮影するでもよい。また、撮影装置1は、魚眼レンズを用いる光学系に限られない。例えば、広角レンズを用いてもよい。
なお、撮影装置1の行う処理は、撮影装置1が行うに限られない。撮影装置1の行う処理の一部、または全部は、撮影装置1がデータ、およびパラメータを送信し、スマートフォン2、またはネットワークで接続された別のコンピュータが行ってもよい。
<情報処理装置のハードウェア構成>
図6は、本発明の一実施形態に係るスマートフォンを含む情報処理装置のハードウェア構成の一例を説明するブロック図である。
情報処理装置は、コンピュータである。情報処理装置は、スマートフォンの他には、例えばノート型PC(Personal Computer)、PDA(Personal Digital Assistance)、タブレット、または携帯電話器などでもよい。
情報処理装置の一例であるスマートフォン2は、補助記憶装置2H1と、主記憶装置2H2と、入出力装置2H3と、状態センサ2H4と、CPU2H5と、ネットワークI/F2H6と、を有する。スマートフォン2の各構成要素は、バス2H7で接続されて、データ、または信号の入出力を行う。
補助記憶装置2H1は、CPU2H5、および制御装置などの制御によって、CPU2H5が行う処理の中間結果を含む各種データ、パラメータ、またはプログラムなどの情報を記憶する。補助記憶装置2H1は、例えば、ハードディスク、フラッシュSSD(Solid State Drive)などである。なお、補助記憶装置2H1が記憶する情報は、情報の一部または全部を補助記憶装置2H1に代えてネットワークI/F2H6で接続されたファイルサーバなどが記憶してもよい。
主記憶装置2H2は、CPU2H5が実行するプログラムが使用する記憶領域、いわゆるメモリ(Memory)などの主記憶装置である。主記憶装置2H2は、データ、プログラム、またはパラメータなどの情報を記憶する。主記憶装置2H2は、例えばSRAM(Static Random Access Memory)、DRAMなどである。主記憶装置2H2は、メモリに記憶、および取出を行う制御装置を有してもよい。
入出力装置2H3は、表示を行うための出力装置、およびユーザの操作を入力するための入力装置の機能を有する装置である。
入出力装置2H3は、いわゆるタッチパネル、周辺回路、およびドライバなどである。
入出力装置2H3は、例えば所定のGUI(Graphical User Interface)、およびスマートフォン2に入力された画像をユーザに表示するための処理を行う。
入出力装置2H3は、例えば表示しているGUI、または画像をユーザが操作する場合、ユーザの操作を入力するための処理を行う。
状態センサ2H4は、スマートフォン2の状態を検出するためのセンサである。状態センサ2H4は、ジャイロ(gyro)センサ、または角度センサなどである。状態センサ2H4は、例えばスマートフォン2の有する一辺が水平に対して所定の角度以上になったか否かを判定する。すなわち、状態センサ2H4は、スマートフォン2が縦方向の姿勢の状態となっているか横方向の姿勢の状態の検出を行う。
CPU2H5は、スマートフォン2が行う各処理の演算、およびスマートフォン2の有する装置の制御を行う。例えばCPU2H5は、各種プログラムを実行する。なお、CPU2H5は、並列、冗長、または分散して処理するために、複数のCPU、デバイス、または複数のコア(core)から構成されていてもよい。また、CPU2H5による処理は、スマートフォン2の内部、または外部に別のハードウェアリソースを有し、スマートフォン2の処理の一部、または全部を行わせてもよい。例えばスマートフォン2は、画像処理を行うためのGPU(Graphics Processing Unit)などを有してもよい。
ネットワークI/F2H6は、無線、または有線でネットワークを介して他のコンピュータと接続し、データなどを入出力するためのアンテナなどの装置、周辺回路、およびドライバなどである。例えば、スマートフォン2は、CPU2H5、およびネットワークI/F2H6によって撮影装置1から画像データを入力するための処理を行う。スマートフォン2は、CPU2H5、およびネットワークI/F2H6によって撮影装置1へ所定のパラメータなどを出力するための処理を行う。
<撮影システムによる全体処理>
図7は、本発明の一実施形態に係る撮影システムによる全体処理の一例を説明するシーケンス図である。
ステップS0701では、撮影装置1は、全天球画像を生成する処理を行う。
図8は、本発明の一実施形態に係る全天球画像の一例を説明する図である。
図8は、ステップS0701の全天球画像を生成する処理の一例を説明する図である。
図8(a)は、図4(a)の半球画像を光軸に対して水平方向、および垂直方向の入射角が等位となる箇所を線で結んで示した図である。以下、光軸に対して水平方向の入射角をθ、光軸に対して垂直方向の入射角をφと記載する。
図8(b)は、図8(a)と同様に、図4(b)の半球画像を光軸に対して水平方向、および垂直方向の入射角が等位となる箇所を線で結んで示した図である。
図8(c)は、メルカトル図法によって処理された画像の一例を説明する図である。図8(c)は、図8(a)、または図8(b)示した状態の画像を、例えばあらかじめ作成してあるLUT(LookUpTable)などで対応させ、正距円筒図法によって処理した場合の例である。
図8(d)は、図8(c)で説明した処理を図8(a)、および図8(b)に行った画像を合成する合成処理の一例である。
図8(d)で示すように、合成処理は、例えば図8(c)で示した状態の画像を複数用いて画像を生成する。なお、合成処理は、前処理された画像を単に連続して配置する処理に限られない。例えば全天球画像の水平方向中心がθ=180°としない場合、合成処理は、図4(a)の前処理した画像を全天球画像の中心に配置し、左右に図4(b)の前処理した画像を分割して配置して合成処理を行い図4(c)に示す全天球画像を生成する処理でもよい。
なお、全天球画像を生成する処理は、正距円筒図法による処理に限られない。例えば図8(b)のようにφ方向の画素の並びが図8(a)の並びに対して上下が逆、およびθ方向の画素の並びが図8(a)の並びに対して左右が逆となっている、いわゆる天地逆転の場合である。天地逆転の場合、撮影装置1は、前処理して図8(b)の状態の画像を図8(a)のφ方向、およびθ方向の画素の並びと揃えるために、180°Roll回転させる処理をおこなってもよい。
また、全天球画像を生成する処理は、図8(a)、および図8(b)の状態の画像が有する歪曲収差を補正するために補正処理を行ってもよい。さらに全天球画像を生成する処理は、画質を向上させるための処理、例えばシェーディング補正、ガンマ補正、ホワイトバランス、手振れ補正、オプティカル・ブラック補正処理、欠陥画素補正処理、エッジ強調処理、またはリニア補正処理などを行ってもよい。
なお、合成処理は、例えば半球画像の撮影範囲と、他方の半球画像の撮影範囲と、が重複する場合、高精度に合成処理をするために、重複する範囲を利用して補正を行ってもよい。
全天球画像を生成する処理によって、撮影装置1は、撮影装置1が撮影する半球画像から全天球画像を生成する。
ステップS0702では、スマートフォン2は、ステップS0701で生成された全天球画像を取得する処理を行う。以下、スマートフォン2が、図8(d)の全天球画像を取得した場合を例に説明する。
ステップS0703では、スマートフォン2は、ステップS0702で取得した全天球画像から全天球パノラマ画像を生成する。
図9は、本発明の一実施形態に係る全天球パノラマ画像の一例を説明する図である。
ステップS0703では、スマートフォン2は、図8(d)の全天球画像から図9の全天球パノラマ画像を生成する処理を行う。全天球パノラマ画像は、全天球画像を球形状に張り付けた画像である。
全天球パノラマ画像を生成する処理は、例えばOpenGL ES(OpenGL(登録商標) for Embedded Systems)などのAPI(Application Programming Interface)で実現される。
全天球パノラマ画像は、画像を三角形に分割し、三角形の頂点P(以下、頂点Pという。)をつなぎ合わせて、ポリゴンとして貼り付けて生成する。
ステップS0704では、スマートフォン2は、ユーザに画像の出力を開始するための操作を入力させる処理を行う。ステップS0704では、スマートフォン2は、例えばステップS0703で生成した全天球パノラマ画像を縮小して出力する、いわゆるサムネイル(thumbnail)画像を表示する。複数の全天球パノラマ画像がスマートフォン2に記憶されている場合、スマートフォン2は、例えば出力する画像をユーザに選択させるため、サムネイル画像を一覧で出力する。ステップS0704では、スマートフォン2は、例えばユーザがサムネイル画像の一覧から1つの画像を選択する操作を入力させる処理を行う。
ステップS0705では、スマートフォン2は、ステップS0704で選択された全天球パノラマ画像に基づいて初期画像を生成する処理を行う。
図10は、本発明の一実施形態に係る初期画像の一例を説明するための図である。
図10(a)は、本発明の一実施形態に係る初期画像の一例を説明するための3次元座標系を説明する図である。
以下、図10(a)で示すように、XYZ軸の3次元座標系で説明する。スマートフォン2は、原点の位置に仮想カメラ3を設置し、仮想カメラ3の視点で各種の画像を生成する。全天球パノラマ画像は、図10(a)の座標系の場合、例えば立体球CSのように表現される。仮想カメラ3は、設置された位置から立体球CSとした全天球パノラマ画像に対して、全天球パノラマ画像を見るユーザの視点に相当する。
図10(b)は、本発明の一実施形態に係る仮想カメラによる所定領域の一例を説明するための図である。
図10(b)は、図10(a)を三面図で表した場合である。図10(b)は、図10(a)の原点に仮想カメラ3を設置した場合である。図10(c)は、本発明の一実施形態に係る仮想カメラによる所定領域の一例を投影図である。
所定領域Tは、仮想カメラ3の視野角を立体球CSに投影した領域である。スマートフォン2は、所定領域Tに基づいて画像を生成する。
図10(d)は、本発明の一実施形態に係る仮想カメラによる所定領域を決定するための情報の一例を説明するための図である。
所定領域Tは、例えば所定領域情報(x,y,α)によって決定される。
視野角αは、図10(d)に示すように仮想カメラ3の画角を示す角度である。視野角αによって表される所定領域Tの対角線画角2Lの場合、所定領域Tの中心点CPの座標は、所定領域情報の(x,y)で示される。
なお、仮想カメラ3からの中心点CPまでの距離は、下記(1)式で示される。
初期画像は、予め設定されている初期設定に基づいて所定領域Tを決定し、決定された所定領域Tに基づいて生成される画像である。初期設定は、例えば(x,y,α)=(0,0,34)などである。
ステップS0706では、スマートフォン2は、ユーザに画像の編集を行うモードに切り替えさせる操作を行わせる。なお、ユーザが画像の編集を行うモードに切り替える操作を行わない場合、スマートフォン2は、例えば初期画像を出力する。
ステップS0707では、スマートフォン2は、画像の編集ための出力画像を出力する処理を行う。
図11は、本発明の一実施形態に係る画像の編集を行うための初期状態の出力画像の一例を説明する図である。
出力画像は、例えば初期状態の出力画像21である。出力画像は、初期状態の編集画像31と、初期状態の変更画像41と、を有する。
出力画像は、ユーザの操作を受け付けるため、GUI(Graphical User Interface)用のボタンを表示する。GUIは、例えば、ぼかし編集ボタン51、および取消編集ボタン52などである。なお、出力画像は、他のGUIを有してもよい。
初期状態の編集画像31は、例えばステップS0705で生成された初期画像である。
初期状態の変更画像41は、例えばステップS0703で生成した全天球パノラマ画像を縮小した画像である。
ユーザは、画像の編集を行うモードで画像を編集するため、出力画像で表示された編集画像、または変更画像に対して操作を行う。
ステップS0708では、スマートフォン2は、画像の編集ための操作をユーザに入力させる処理を行う。
ステップS0709では、スマートフォン2は、入出力装置2H3にユーザが操作を入力した座標を取得する。ステップS0709では、スマートフォン2は、取得した座標に基づいて図11の初期状態の編集画像31の領域に対して操作を行ったか、図11の初期状態の変更画像41の領域に対して操作を行ったかを判定する処理を行う。
画像の編集は、ユーザの操作に基づいて行う編集である。出力する領域の編集は、変更画像に基づいて画像で出力する領域を変更する編集、または編集画像に基づいて所定の領域に対して行う編集である。
出力する領域を変更する編集は、ステップS0709で変更画像の領域に操作があった場合に行われる。
編集画像に基づいて所定の領域に対して行う編集は、ステップS0709で編集画像の領域に操作があった場合に行われる。
変更画像に対してユーザが操作した場合(ステップS0709で変更画像の領域と判定)、スマートフォン2は、ステップS0710に進む。編集画像に対してユーザが操作した場合(ステップS0709で編集画像の領域と判定)、スマートフォン2は、ステップS0712に進む。
<出力する領域を変更する編集>
図12は、本発明の一実施形態に係る出力する領域の編集の一例を説明するための図である。
図12(a)は、本発明の一実施形態に係る出力する領域の編集後の出力画像の一例を説明する図である。
出力画像は、例えば出力する領域の編集後の出力画像22である。出力する領域の編集後の出力画像22は、出力する領域の編集後の編集画像32と、出力する領域の編集後の変更画像42と、を有する。
出力する領域の編集後の編集画像32は、図11の初期状態の編集画像31から図10で説明した所定領域Tを変更して生成された画像である。
出力する領域の編集後の変更画像42は、図11の初期状態の変更画像41から図10で説明した所定領域Tを変更して生成された画像である。
図12(b)は、本発明の一実施形態に係る出力する領域の編集後の所定領域の一例を説明する図である。
出力する領域の編集後の出力画像22は、例えば図12(b)で示すように図10(b)の状態にあった仮想カメラ3をパン(Pan)回転させた場合の視点である。
図12(c)は、本発明の一実施形態に係る出力する領域の編集の際の操作の一例を説明する図である。
出力する領域の編集は、ユーザが、変更画像が出力される画面の領域を操作することによって行われる。
ステップS0708で入力される操作は、例えば出力する領域を画像の左右方向について変更する操作などである。
ユーザが入力する操作は、図12の場合、図12(c)で示すように図11の初期状態の変更画像41が出力される画面を画面の左右方向に指でなぞる、いわゆるスワイプ(swipe)の操作などである。
ここで、スワイプの操作による入力量を(dx,dy)とする。
図8の全天球の極座標系(φ,θ)、および入力量を(dx,dy)は、下記(2)の式で関係を示せる。
上述の(2)式でkは、調整を行うための所定の定数である。
スワイプの操作で入力した入力量に基づいて出力画像が変更されるため、ユーザは、地球儀のような球体を回転させるような感覚で画像を操作することができる。
なお、処理を簡単にするため、スワイプの操作が画面のどの位置で入力されたかを考慮しなくともよい。すなわち、初期状態の変更画像41が出力される画面のどの位置でスワイプの操作を行っても(2)式での入力量を(dx,dy)は、同様の値が入力されるとしてもよい。
出力する領域の編集後の変更画像42は、(2)式で計算された(φ,θ)に基づいて頂点Pの3次元空間上の座標(Px,Py,Pz)を透視投影変換する。
ユーザが図12(a)の場合で入力量(dx2,dy2)のスワイプの操作を行った場合、全天球の極座標系(φ,θ)は、下記(3)式で示される。
上述の(3)で示すように、全天球の極座標系(φ,θ)は、各スワイプの操作の入力量を合計した値に基づいて計算される。複数のスワイプの操作が行われた場合などでも全天球の極座標系(φ,θ)の計算から行うことで、一貫した操作性を保つことができる。
なお、出力する領域の編集は、パン回転に限られない。例えば画像の上下方向である仮想カメラ3のチルト(Tilt)回転で実現されてもよい。
ステップS0708で入力される操作は、例えば出力する領域を拡大、または縮小する操作などである。
図13は、本発明の一実施形態に係る出力する領域の拡大、および縮小の一例を説明するための図である。
ユーザが入力する操作は、出力する領域の拡大を行う場合、図13(a)、で示すように図11の初期状態の変更画像41が出力される画面で二本の指を広げる、いわゆるピンチアウト(pinch out)の操作などである。
ユーザが入力する操作は、出力する領域の縮小を行う場合、図13(b)、で示すように図11の初期状態の変更画像41が出力される画面で二本の指を狭める、いわゆるピンチイン(pinch in)の操作などである。
なお、ピンチアウト、およびピンチインの操作は、ユーザの指が接触する最初の位置が変更画像が表示されている領域であればよく、その後、編集画像が表示されている領域を用いる操作であってもよい。また、操作は、タッチパネルを操作するための道具である、いわゆるスタイラスペンなどで行ってもよい。
図13で説明した操作が入力された場合、スマートフォン2は、いわゆるズーム(Zoom)処理を行う。
ズーム処理は、入力されたユーザの操作に基づいて所定の領域を拡大、または縮小した画像を生成する処理である。
図13で説明した操作が入力された場合、スマートフォン2は、入力されたユーザの操作に基づいて変化量dzを取得する。
ズーム処理は、変化量dzに基づいて下記(4)式の計算を行う処理である。
上述の(4)式で示すαは、図10で説明した仮想カメラ3の視野角αである。(4)式で示すmは、ズーム量を調整するための係数である。(4)式で示すα0は、初期状態の視野角α、すなわちステップS0705で初期画像を生成した際の視野角αである。
図13で説明した操作が入力された場合、スマートフォン2は、(4)式で計算された視野角αを投影行列に用いて図10の所定領域Tの範囲を決定する。
(4)式で計算される場合にユーザが変化量dz2となる操作を行った場合、スマートフォン2は、下記(5)式の計算を行う。
上述の(5)で示すように、視野角αは、図13で説明した操作による変化量を合計した値に基づいて計算される。複数の図13で説明した操作が行われた場合などでも全天球の視野角αの計算から行うことで、一貫した操作性を保つことができる。
なお、ズーム処理は、(4)式、または(5)式による処理に限られない。
ズーム処理は、仮想カメラ3の視野角α、および視点位置の変更を組み合わせて実現してもよい。
図14は、本発明の一実施形態に係る別のズーム処理の一例を説明するための図である。
図14は、別のズーム処理を説明するためのモデル図である。図14の立体球CSは、図10の立体球CSと同様である。図14では、立体球CSの半径を「1」として説明する。
図14の原点は、仮想カメラ3の初期位置である。仮想カメラ3は、光軸、すなわち図10(a)のZ軸上で位置を変更する。仮想カメラ3の移動量dは、原点からの距離で示せる。例えば仮想カメラ3が原点に位置している場合、すなわち初期状態の場合、移動量dは、「0」となる。
仮想カメラ3の移動量d、および視野角αに基づいて図10の所定領域Tとなる範囲は、画角ωで表される。図14で図示する画角ωは、仮想カメラ3が原点に位置する場合、すなわちd=0の場合の画角である。
仮想カメラ3が原点に位置する場合、すなわちd=0の場合、画角ω、および視野角αは、一致する。仮想カメラ3が原点から離れた場合、すなわちdの値が大きくなった場合、画角ω、および視野角αは、異なる範囲を示す。
別のズーム処理は、画角ωを変更する処理である。
図15は、本発明の一実施形態に係る別のズーム処理の一例を説明するための表である。
説明表4は、画角ωの範囲が60°乃至300°の場合を例に説明する。
説明表4で示すように、スマートフォン2は、ズーム指定値ZPに基づいて視野角α、および仮想カメラ3の移動量dのどちらを優先的に変更するかを決定する。
「範囲」は、ズーム指定値ZPに基づいて決定する範囲である。
「出力倍率」は、別のズーム処理によって決定した画像パラメータに基づいて計算された画像の出力倍率である。
「ズーム指定値ZP」は、出力させる画角に対応した値である。別のズーム処理は、ズーム指定値ZPに基づいて移動量d、および視野角αの決定する処理を変更する。別のズーム処理の行う処理は、説明表4に示すようにズーム指定値ZPに基づいて4つの方法のいずれかに決定される。ズーム指定値ZPの範囲は、A〜Bの範囲、B〜Cの範囲、C〜Dの範囲、およびD〜Eの範囲の4つの範囲に区分される。
「画角ω」は、別のズーム処理によって決定した画像パラメータに対応する画角ωである。
「変更するパラメータ」は、ズーム指定値ZPに基づいて4つの方法でそれぞれ変更するパラメータを説明する記載である。「備考」は、「変更するパラメータ」についての備考である。
説明表4の「viewWH」は、出力領域の幅、または高さを示す値である。出力領域が横長の場合、「viewWH」は、幅の値である。出力領域が縦長の場合、「viewWH」は、高さの値である。すなわち、「viewWH」は、出力領域の長手方向のサイズを示す値である。
説明表4の「imgWH」は、出力画像の幅、または高さを示す値である。出力領域が横長の場合、「viewWH」は、出力画像の幅の値である。出力領域が縦長の場合、「viewWH」は、出力画像の高さの値である。すなわち、「viewWH」は、出力画像の長手方向のサイズを示す値である。
説明表4の「imgDeg」は、出力画像の表示範囲の角度を示す値である。出力画像の幅を示す場合、「imgDeg」は、360°である。出力画像の高さを示す場合、「imgDeg」は、180°である。
図16は、本発明の一実施形態に係る別のズーム処理の「範囲」の一例を説明するための図である。
以下、図16でいわゆるズームアウトの場合を例に説明する。なお、図16の各図の左図は、出力する画像の一例を示す。図16の各図の右図は、出力の際の仮想カメラ3の状態の一例を図14で説明したモデル図で示している図である。
図16(a)は、図15の説明表4の「範囲」が「A〜B」となるズーム指定値ZPが入力された場合の出力の一例である。「A〜B」の場合、仮想カメラ3の視野角αは、例えばα=60°と固定される。「A〜B」の場合、仮想カメラ3の移動量dは、図16(a)で図示するように視野角αが固定された状態で変更される。視野角αが固定された状態で仮想カメラ3の移動量dが大きくなっていく場合、画角ωは、広げられる。「A〜B」の場合、視野角αを固定し、仮想カメラ3の移動量dを大きくすることでズームアウト処理が実現できる。なお、「A〜B」の場合の仮想カメラ3の移動量dは、0から立体球CSの半径までである。すなわち、図16の場合、立体球CSの半径が「1」であるため、仮想カメラ3の移動量dは、0〜1の範囲の値となる。仮想カメラ3の移動量dは、ズーム指定値ZPに対応する値となる。
図16(b)は、図15の説明表4のが「B〜C」となるズーム指定値ZPが入力された場合の出力の一例である。「B〜C」は、「A〜B」よりズーム指定値ZPが大きい値の場合である。「B〜C」の場合、仮想カメラ3の移動量dは、仮想カメラ3が立体球CSの外縁に位置する値に固定される。すなわち、図16(b)で図示するように、仮想カメラ3の移動量dは、立体球CSの半径である「1」に固定される。「B〜C」の場合、仮想カメラ3の移動量dが固定された状態で視野角αが変更される。仮想カメラ3の移動量dが固定された状態で視野角αが大きくなっていく場合、画角ωは、図16(a)から図16(b)になるように広げられる。「B〜C」の場合、仮想カメラ3の移動量dを固定し、視野角αを大きくすることでズームアウト処理が実現できる。「B〜C」の場合、視野角αは、ω/2で計算される。「B〜C」の場合、視野角αの範囲は、「A〜B」の場合に固定されていた値である60°から120°である。
「A〜B」、および「B〜C」の場合、画角ωは、ズーム指定値ZPと一致する。「A〜B」、および「B〜C」の場合、画角ωは、値が増加する。
図16(c)は、図15の説明表4の「範囲」が「C〜D」となるズーム指定値ZPが入力された場合の出力の一例である。「C〜D」は、「B〜C」よりズーム指定値ZPが大きい値の場合である。「C〜D」の場合、視野角αは、例えばα=120°と固定される。「C〜D」の場合、仮想カメラ3の移動量dは、図16(c)で図示するように視野角αが固定された状態で変更される。視野角αが固定された状態で仮想カメラ3の移動量dが大きくなっていく場合、画角ωは、広げられる。仮想カメラ3の移動量dは、図15の説明表4で示すズーム指定値ZPに基づいた式で計算される。「C〜D」の場合、仮想カメラ3の移動量dは、最大表示距離dmax1まで変更される。
最大表示距離dmax1は、スマートフォン2の出力領域で立体球CSを最大に表示する距離である。出力領域は、例えばスマートフォン2が画像などを出力する画面のサイズなどである。最大表示距離dmax1は、例えば図16(d)の場合である。最大表示距離dmax1は、下記(6)で計算される。
上述の(6)式で「viewW」は、スマートフォン2の出力領域の幅を示す値である。上述の(6)式で「viewH」は、スマートフォン2の出力領域の高さを示す値である。以下、同様に示す。
最大表示距離dmax1は、スマートフォン2の出力領域である「viewW」、および「viewH」の値に基づいて計算される。
図16(d)は、図15の説明表4の「D〜E」となるズーム指定値ZPが入力された場合の出力の一例である。「D〜E」は、「C〜D」よりズーム指定値ZPが大きい値の場合である。「D〜E」の場合、視野角αは、例えばα=120°と固定される。「D〜E」の場合、仮想カメラ3の移動量dは、図16(d)で図示するように視野角αが固定された状態で変更される。仮想カメラ3の移動量dは、限界表示距離dmax2まで変更される。限界表示距離dmax2は、スマートフォン2の出力領域で立体球CSが内接して表示される距離である。限界表示距離dmax2は、下記(7)で計算される。限界表示距離dmax2は、例えば図16(e)の場合である。
限界表示距離dmax2は、スマートフォン2の出力領域である「viewW」、および「viewH」の値に基づいて計算される。限界表示距離dmax2は、スマートフォン2が出力できる最大の範囲、すなわち仮想カメラ3の移動量dの限界の値を示す。実施形態は、ズーム指定値ZPが図15の説明表4で説明した範囲に収まる、すなわち、仮想カメラ3の移動量dの値が限界表示距離dmax2以下となるように制限してもよい。制限によって、スマートフォン2は、出力領域である画面に出力画像をフィットさせた状態、または所定の出力倍率で画像をユーザに出力した状態となり、ズームアウトを実現できる。
「D〜E」の処理によって、スマートフォン2は、ユーザに出力されている画像が全天球パノラマであることを認識させることができる。
なお、「C〜D」、および「D〜E」の場合、画角ωは、ズーム指定値ZPと一致しない。また、図15の説明表4、および図16で示した通り各範囲間では、画角ωは、連続しているが、広角側へのズームアウトによって画角ωは、一様に増加しない。すなわち、仮想カメラ3の移動量dが変更される「C〜D」の場合、画角ωは、仮想カメラ3の移動量dに伴い増加する。仮想カメラ3の移動量dが変更される「D〜E」の場合、画角ωは、仮想カメラ3の移動量dに伴い減少する。「D〜E」の仮想カメラ3の移動量dの減少は、立体球CSの外側の領域が写り込むためである。ズーム指定値ZPによって240°以上の広視野域を指定する場合、スマートフォン2は、仮想カメラ3の移動量dを変更することによって、ユーザに違和感の少ない画像を出力し、かつ、画角ωを変化させることができる。
ズーム指定値ZPで広角方向に変更する際、画角ωは、広くなる場合が多い。画角ωが広くなる場合、スマートフォン2は、仮想カメラ3の視野角αを固定し、仮想カメラ3の移動量dを大きくする。スマートフォン2は、仮想カメラ3の視野角αを固定することによって、仮想カメラ3の視野角αの増加を少なくすることができる。仮想カメラ3の視野角αの増加を少なくすることによって、スマートフォン2は、歪みの少ない画像をユーザに出力することができる。仮想カメラ3の視野角αが固定された場合、スマートフォン2は、仮想カメラ3の移動量dを大きくする、すなわち仮想カメラ3を遠ざける方向に動かすことで広角表示の開放感をユーザに与えることができる。また、仮想カメラ3を遠ざける方向に動かす動きは、人間が広範囲を確認する際の動きと類似であるため、スマートフォン2は、仮想カメラ3を遠ざける方向に動かす動きによって違和感の少ないズームアウトを実現できる。
「D〜E」の場合、画角ωは、ズーム指定値ZPで広角方向に変更するに伴い、減少する。「D〜E」の場合、スマートフォン2は、画角ωを減少させることで、ユーザに立体球CSから遠ざかっていく感覚を与えることができる。スマートフォン2は、ユーザに立体球CSから遠ざかっていく感覚を与えることで、ユーザに違和感の少ない画像を出力することができる。
よって、図15の説明表4で説明した別のズーム処理によって、スマートフォン2は、ユーザに違和感の少ない画像を出力することができる。
なお、実施形態は、図15の説明表4で説明した仮想カメラ3の移動量d、または視野角αのみを変更する場合に限られない。実施形態は、図15の説明表4で説明した条件において、優先的に仮想カメラ3の移動量d、または視野角αを変更する形態であればよく、例えば調整のため、固定となっている値を十分小さい値変更してもよい。
また、実施形態は、ズームアウトに限られない。実施形態は、例えばズームインを実現してもよい。
なお、出力する領域の編集が行われる場合は、変更画像に対して操作が行われた場合に限られない。スマートフォン2は、例えば編集画像に対して操作が行われる場合に出力する領域の編集を行ってもよい。
<編集画像に基づいて所定の領域に対して行う編集>
編集画像に基づいて所定の領域に対して行う編集は、所定の画素をぼかすぼかしの編集である。ここで、他の編集としては、画像中の指定範囲の消去、画像の色調、色深度などの変更、および画像中の指定範囲の色変更などが挙げられる。
以下、ユーザがぼかしの編集を図12の出力する領域の編集後の出力画像22に対して行った場合を例に説明する。
ユーザがぼかし編集ボタン51を押す操作を行った場合、スマートフォン2は、ユーザに図12の出力する領域の編集後の出力画像22の編集画像32が表示されている領域に、いわゆるタップ(tap)の操作を入力させる。
スマートフォン2は、ユーザがタップした点を中心に所定の範囲をぼかす処理を行う。
図17は、本発明の一実施形態に係る編集画像に基づいて所定の領域に対して行う編集の一例を説明するための図である。
図17(a)は、本発明の一実施形態に係るぼかしの編集の一例を説明するための図である。図17(a)は、ぼかしの編集後の出力画像23を示す図である。ぼかしの編集後の出力画像23は、ぼかしの編集後の編集画像33と、ぼかしの編集後の変更画像43と、を有する。
ぼかしの編集後の編集画像33は、図12の出力する領域の編集後の出力画像に対してぼかしの編集を行って生成される。ぼかしの編集は、例えばガウス(Gauss)関数、周辺の画素の平均、またはローパスフィルタ(Low−pass filter)などで実現される。ぼかしの編集は、例えばぼかし編集領域5のように図示される。
ぼかしの編集は、変更画像に対して行われる。スマートフォン2は、ユーザがタップした点の座標から3次元空間上の点(Px,Py,Pz)の計算を行う。スマートフォン2は、(Px,Py,Pz)を視錐台を用いる透視投影変換の逆の変換によって2次元の座標から計算する。2次元の座標が奥行きの情報がないため、(Px,Py,Pz)は、球上の点であることを用いて連立方程式で計算される。スマートフォン2は、投影の座標系からPzの符号は一定であるため、連立方程式で計算することができる。(Px,Py,Pz)と全天球パノラマ画像の座標は対応しているため、スマートフォン2は、計算された(Px,Py,Pz)から全天球パノラマ画像上の座標を計算することができる。したがって、ぼかしの編集後の変更画像43は、図17(a)で示すようにぼかしの編集が反映された状態にされる。
図17(b)は、本発明の一実施形態に係るぼかしを取り消す編集の一例を説明するための図である。
編集画像に基づいて所定の領域に対して行う編集は、ぼかしの編集でぼかされたぼかし編集領域5についてぼかしの編集を取り消す編集である。
ユーザが取消編集ボタン52を押す操作を行った場合、スマートフォン2は、ぼかしの編集を行ったぼかし編集領域5を塗りつぶし領域6で示す取消の編集用の出力画像24を出力する。取消の編集用の出力画像24は、図17(b)で図示するように、図17(a)のぼかしの編集後の編集画像33のぼかし編集領域5を、塗りつぶし領域6で示す画像である。ユーザは、表示された塗りつぶし領域6、すなわちぼかしが行われた領域に対してタップの操作を行う。スマートフォン2は、ユーザがタップした点を中心に所定の範囲をぼかしの編集を取り消す処理を行う。すなわち、ぼかしの編集を取り消す編集では、スマートフォン2は、ぼかしの編集後の編集画像33でユーザがタップした点を中心に所定の範囲を図12の出力する領域の編集後の出力画像22の状態にする。
人の顔、または撮影禁止の建物が撮影された画像は、インターネット上に公開、または共有されてしまうと、トラブルの原因のなる場合がある。特に広範囲を撮影するパノラマ画像の場合、広範囲を撮影するため、被写体が多くなる場合が多い。したがって、公開、または共有の際、ユーザは、問題となる可能性の被写体をぼかす処理によってトラブルを少なくすることができる。編集画像に基づいて所定の領域に対して行う編集によって、スマートフォン2は、画像で写っている人の顔などをぼかす処理を操作しやすくできる。よって、スマートフォン2は、編集画像に基づいて所定の領域に対して行う編集によって、ユーザが画像の操作を行いやすくできる。
なお、出力する領域の編集が行われる場合、スマートフォン2は、編集画像に基づいて所定の領域に対して行われた編集を倍率に合わせて範囲などを変更してもよい。
ステップS0710では、スマートフォン2は、出力する座標の移動量を計算する。すなわち、ステップS0710では、スマートフォン2は、例えば上述の(2)に基づいてユーザのスワイプ操作に対応する図10の所定領域Tの位置を計算する。
ステップS0711では、スマートフォン2は、ステップS0710で計算した位置に図10の所定領域Tの位置を更新する。
ステップS0712では、スマートフォン2は、編集の対象となる点の座標を計算する。すなわち、ステップS0712では、スマートフォン2は、ユーザのタップ操作に対応する座標を計算し、3次元上の座標に射影する計算を行う。
ステップS0713では、スマートフォン2は、ステップS0712で計算された座標を中心として編集画像に基づいて編集を行う所定の領域を計算する。すなわち、ステップS0713では、スマートフォン2は、ユーザのタップ操作で指定された点、および点の周辺であるぼかしなどの編集の対象となる画素を計算する。
ステップS0714では、スマートフォン2は、編集画像を生成する。ステップS0714では、ユーザが変更画像に対して操作を行った場合、スマートフォン2は、ステップS0711で更新された所定領域Tに基づいて変更画像を生成する。ステップS0714では、ユーザが編集画像に対して操作を行った場合、スマートフォン2は、ステップS0713で計算された画素にぼかし処理を反映した編集画像を生成する。
ステップS0715では、スマートフォン2は、変更画像を生成する。ステップS0715では、ユーザが変更画像に対して操作を行った場合、スマートフォン2は、ステップS0711で更新された所定領域Tに基づいて変更画像を生成する。ステップS0715では、ユーザが編集画像に対して操作を行った場合、スマートフォン2は、ステップS0713でぼかしの対象となっている箇所を示した変更画像を生成する。
スマートフォン2は、ステップS0708乃至ステップS0715の処理を繰り返す。
<スマートフォンによる処理>
図18は、本発明の一実施形態に係るスマートフォンによる全体処理の一例を説明するフローチャートである。
ステップS1801では、スマートフォン2は、図1の撮影装置1などから画像を取得する処理を行う。ステップS1801の処理は、図7のステップS0702の処理に対応する。
ステップS1802では、スマートフォン2は、パノラマ画像を生成する処理を行う。ステップS1802の処理は、ステップS1801で取得した画像に基づいて行う。ステップS1802の処理は、図7のステップS0703の処理に相当する。
ステップS1803では、スマートフォン2は、出力する画像をユーザに選択させる処理を行う。ステップS1803の処理は、図7のステップS0704の処理に相当する。出力する画像をユーザに選択させる処理は、具体的にはサムネイル画像を出力、およびサムネイル画像に対してユーザが操作を行うためのUIを提供する処理などである。
ステップS1804では、スマートフォン2は、初期画像を生成する処理を行う。ステップS1804の処理は、図7のステップS0705の処理に相当する。ステップS1804では、スマートフォン2は、ステップS1803でユーザに選択された画像を初期画像として生成し、出力する。
ステップS1805では、スマートフォン2は、画像の編集を行うモードに切り替えるか否かの判断を行う。ステップS1805の処理は、図7のステップS0706におけるユーザの操作があるか否かによって判断を行う。ステップS1805で画像の編集を行うモードに切り替えがあったと判断した場合(ステップS1805でYES)、スマートフォン2は、ステップS1807に進む。ステップS1805で画像の編集を行うモードに切り替えがないと判断した場合(ステップS1805でNO)、スマートフォン2は、ステップS1804に戻る。
ステップS1805で画像の編集を行うモードに切り替えがあったと判断される場合は、ユーザによって画像の編集を開始する旨が入力された場合である。ステップS1805で画像の編集を行うモードに切り替えがないと判断される場合は、ユーザが操作を行わない場合である。したがって、スマートフォン2は、ユーザによる操作がない場合、初期画像を出力し続けてユーザの画像の編集を開始する旨が入力されるのを待機する。
ステップS1806では、スマートフォン2は、画像を編集するための出力画像を出力する処理を行う。ステップS1806の処理は、図7のステップS0707の処理に相当する。また、スマートフォン2は、出力画像を出力することによって図7のステップS0708に係るユーザの操作を受け付ける。
ステップS1807では、スマートフォン2は、ユーザの操作が編集画像に対してか変更画像に対してかの判断を行う。ステップS1807の処理は、図7のステップS0709の処理に相当する。スマートフォン2は、図7のステップS0708に係るユーザの操作が編集画像に対してか変更画像に対してかの判断を行う。
ユーザの操作が変更画像に対してであると判断する場合(ステップS1807で変更画像)、スマートフォン2は、ステップS1808に進む。ユーザの操作が編集画像に対してであると判断する場合(ステップS1807で編集画像)、スマートフォン2は、ステップS1810に進む。
ステップS1808では、スマートフォン2は、操作による所定領域の移動量を計算する処理を行う。ステップS1808の処理は、図7のステップS0710の処理に相当する。ステップS1808では、スマートフォン2は、ユーザが行った所定領域を変更するスワイプ操作に基づいて所定領域を移動させる移動量を計算する。
ステップS1809では、スマートフォン2は、所定領域を更新する処理を行う。ステップS1809の処理は、図7のS0711の処理に相当する。ステップS1809では、スマートフォン2は、ステップS1808で計算した移動量に対応する位置に図10の所定領域Tを移動させ、所定領域Tを初期画像の位置からユーザのスワイプ操作に対応する位置に更新する。
ステップS1810では、スマートフォン2は、操作の対象となる座標を計算し、3次元上に射影する処理を行う。ステップS1810の処理は、図7のステップS0712の処理に相当する。ステップS1810では、スマートフォン2は、ユーザのタップ操作で指定された点に対応する全天球画像上の座標を計算する。
ステップS1811では、スマートフォン2は、ぼかしの対象となる画素を計算する処理を行う。スマートフォン2は、例えばぼかしの対象になるか否かのフラグデータを各画素に対応させた編集状態テーブルを有する。編集状態テーブルは、各画素がぼかしの状態で出力されるか否かを表す。スマートフォン2は、編集状態テーブルを参照し、出力画像の各画素をぼかしの状態で出力するか否かを判定し、画像を出力する。ステップS1811の処理は、すなわち編集状態テーブルを更新する処理である。ユーザによるタップの操作で、図17(a)で説明したぼかし、または図17(b)で説明した取り消しのいずれかの操作があった場合、スマートフォン2は、操作に基づいて編集状態テーブルを更新する。
ステップS1812では、スマートフォン2は、編集画像を生成する処理を行う。ステップS1812の処理は、図7のステップS0714の処理に相当する。
ステップS1813では、スマートフォン2は、変更画像を生成する処理を行う。ステップS1813の処理は、図7のステップS0715の処理に相当する。
ステップS1812、およびステップS1813の処理によって、スマートフォン2は、出力画像を生成し、ユーザに対して出力を行う。
スマートフォン2は、ステップS1807に戻り、先に示した処理を繰り返す。
ステップS1812、およびステップS1813の処理では、スマートフォン2は、編集状態テーブルに基づいてぼかしの対象となっている場合、例えば図17(a)で説明したようにぼかしの処理を行って出力する。
スマートフォン2がユーザに出力する画像は、ユーザが動画の再生を滑らかに感じる1秒間に30フレーム以上で出力される。スマートフォン2は、特にユーザが再生を滑らかに感じる1秒間に60フレーム以上を出力するが望ましい。なお、フレームレートは、1秒間に60フレームを例えば1秒間に59.94フレームとする出力でもよい。
なお、ステップS1812、およびステップS1813の処理は、スマートフォン2がぼかし処理を行って出力を行う処理に限られない。
例えばスマートフォン2は、予め出力する画像の全画素をぼかし処理した画像と、ぼかし処理をしていない画像と、を有する。スマートフォン2は、編集状態テーブルに基づいてぼかし処理した画像と、ぼかし処理をしていない画像と、を選択しながら各画素を出力する。スマートフォン2は、予めぼかし処理をしておくことによって画像を出力する際の計算量を少なくできる。すなわち、選択しながら各画素を出力することによって、スマートフォン2は、1秒間に60フレームなど高速な画像の出力を実現することができる。
また、例えば選択しながら各画素を出力した場合、スマートフォン2は、出力した画像を記憶してもよい。ユーザが編集の操作を行わない場合、スマートフォン2は、記憶した画像を出力する。記憶によって、出力する画像の各画素を選択して生成する処理が不要になるため、スマートフォン2は、計算量を少なくできる。したがって、スマートフォン2は、出力した画像を記憶することによって、1秒間に60フレームなど高速な画像の出力を実現することができる。
なお、出力画像は、図11などで説明した画像に限られない。例えば編集画像、および変更画像の形状、位置、大きさ、および範囲は、変更されてもよい。
図19は、本発明の一実施形態に係る変更画像の位置、向きなどの出力変更の一例を説明するための図である。
出力画像を表示する装置の一例である情報処理装置は、例えばスマートフォン2である。以下、スマートフォン2を例に説明する。
図19(a)は、本発明の一実施形態に係るスマートフォン2の姿勢変更の一例を説明する図である。
変更画像は、例えば図19(a)で示すように変更前の位置7に出力される。以下、図19(a)の場合を例に説明する。
スマートフォン2は、ユーザによって例えば図19(a)で示す回転方向に姿勢が変更される。スマートフォン2は、図6の状態センサ2H4によって姿勢を検出する。スマートフォン2は、検出結果であるスマートフォン2の姿勢に基づいて出力画像を回転させて出力する。スマートフォン2は、検出結果に基づいて変更画像を出力する領域の位置、または向きを変更させてもよい。
図19(b)は、本発明の一実施形態に係る検出結果に基づいて変更画像が表示される領域の位置、または向きを変更する一例を説明する図である。
図19(a)で示したようにスマートフォン2をユーザが回転させた場合、スマートフォン2は、図19(a)の変更前の位置7で示した位置から第一変更位置71、または第二変更位置72に変更画像を出力する領域の位置を変更する。
なお、変更画像は、図19(b)に示すように検出結果に基づいて出力する向きを変更、すなわち図19(a)の状態から図19(b)に示すように回転した状態で出力されてもよい。
スマートフォン2は、検出結果に基づいて変更画像を出力する領域の位置、または向きを変更させる。すなわち、スマートフォン2は、姿勢に合わせた画像を出力するため、スマートフォン2の姿勢が変更されてもユーザに対して操作の行いやすい位置、または向きで画像を出力することができる。
また、スマートフォン2は、変更画像の位置、または向きの変更の際、変更の途中で変更画像を跳ねるように表示してもよい。
<機能構成>
図20は、本発明の一実施形態に係る撮影システムの機能構成の一例を説明する機能ブロック図である。
撮影システム10は、撮影装置1と、スマートフォン2と、を有する。撮影システム10は、第一撮影部1F1と、第二撮影部1F2と、全天球画像生成部1F3と、を有する。撮影システム10は、画像取得部2F1と、生成部2F2と、入出力部2F3と、検出部2F4と、記憶部2F5と、制御部2F6と、を有する。
第一撮影部1F1、および第二撮影部1F2は、全天球画像の素材となる画像を撮影し、生成する。第一撮影部1F1は、例えば図2の前面撮影素子1H1などによって実現される。第二撮影部1F2は、例えば図2の後面撮影素子1H2などによって実現される。全天球画像の素材となる画像は、例えば図4(a)、および図4(b)で示す半球画像などである。
全天球画像生成部1F3は、全天球画像などスマートフォン2に出力する画像を生成する。全天球画像生成部1F3は、例えば図5の画像処理ユニット1H7などによって実現される。全天球画像生成部1F3は、第一撮影部1F1、および第二撮影部1F2が撮影した半球画像から全天球画像を生成する。
画像取得部2F1は、撮影装置1から全天球画像など画像データを取得する。画像取得部2F1は、例えば図6のネットワークI/F2H6などによって実現される。画像取得部2F1は、スマートフォン2が全天球画像など画像データを取得するための処理を行う。
生成部2F2は、各種画像を生成する処理、および画像の生成のために必要な各種計算を行う。生成部2F2は、変更画像生成部2F21と、編集画像生成部2F22と、を有する。生成部2F2は、図6のCPU2H5などによって実現される。
変更画像生成部2F21は、変更画像の生成を行うための処理を行う。変更画像生成部2F21は、例えば記憶部2F5から画像データと、編集状態テーブルと、を取得する。変更画像生成部2F21は、取得した編集状態テーブル、および画像データに基づいて変更画像を生成する。
編集画像生成部2F22は、編集画像の生成を行うための処理を行う。編集画像生成部2F22は、例えば記憶部2F5から画像データと、編集状態テーブルと、を取得する。編集画像生成部2F22は、取得した編集状態テーブル、および画像データに基づいて編集画像を生成する。
生成部2F2は、ユーザがタップ、およびスワイプの操作を行った場合、操作に係る座標を計算し、編集状態テーブルとして記憶する。また、生成部2F2が生成した画像は、記憶部2F5に記憶し、処理に応じて取り出してもよい。
生成部2F2は、検出部2F4から取得する検出結果に基づいて各種画像を生成してもよい。
入出力部2F3は、ユーザの操作を入力するための処理を行う。入出力部2F3は、ユーザに生成部2F2が生成した画像を出力する処理を行う。入出力部2F3は、例えば図6の入出力装置2H3などによって実現される。
検出部2F4は、スマートフォン2の姿勢を検出するための処理を行う。検出部2F4は、例えば図6の状態センサ2H4などによって実現される。
記憶部2F5は、スマートフォン2が取得、または生成した各種情報を記憶する。記憶部2F5は、例えば編集状態テーブル記憶部2F51と、画像記憶部2F52と、を有する。記憶部2F5は、例えば図6の補助記憶装置2H1、または主記憶装置2H2などによって実現される。
編集状態テーブル記憶部2F51は、ぼかし処理が行われる画素を示すテーブルのデータを記憶する。
画像記憶部2F52は、画像取得部2F1が取得した全天球画像、および生成部2F2が生成した出力画像などを記憶する。
制御部2F6は、スマートフォン2の有する各種要素を制御する。制御部2F6は、各種処理および各種処理を補助する処理などを、各種要素を制御することによって実現する。制御部2F6は、例えば図6のCPU2H5などによって実現される。
なお、全体処理は、図7に示した場合に限られない。例えば各処理の一部、または全部は、図7で示した装置以外の他の装置によって処理されてもよい。
スマートフォン2は、撮影装置1などから取得した全天球画像などに基づいて、編集画像と、変更画像と、を生成する。編集画像は、所定領域Tで決まる所定の領域を出力し、ぼかし、およびぼかしの取消などの編集の操作をユーザに行わせるための画像である。変更画像は、所定領域Tの位置、大きさ、および範囲などの変更する操作をユーザに行わせるための画像である。スマートフォン2は、少なくとも編集画像と、変更画像と、を有する出力画像を出力する。出力画像が、編集画像と、変更画像と、を有することによって、スマートフォン2は、ユーザにぼかしなどの編集を行いながら編集画像で出力される領域を変更画像で変更させることができる。したがって、スマートフォン2は、ユーザが全天球画像などに対してぼかしの操作を行う場合、操作の行いやすい画像を出力することができる。ゆえに、スマートフォン2が編集画像と、変更画像と、を有する出力画像を出力することによって、ユーザが画像の操作を行いやすくできる。
なお、スマートフォン2は、アセンブラ、C、C++、C#、およびJava(登録商標)などのレガシープログラミング言語、またはオブジェクト指向プログラミング言語などで記述されたコンピュータが実行できるプログラムによって実現されてもよい。プログラムは、ROM、またはEEPROM(Electrically Erasable Programmable ROM)などの記録媒体に格納して頒布することができる。プログラムは、EPROM(Erasable Programmable ROM)などの記録媒体に格納して頒布することができる。プログラムは、フラッシュメモリ、フレキシブルディスク、CD−ROM、CD−RW、DVD−ROM、DVD−RAM、またはDVD−RWなどの記録媒体に格納して頒布することができる。プログラムは、ブルーレイディスク、SD(登録商標)カード、またはMOなど装置可読な記録媒体に格納して、あるいは電気通信回線を通じて頒布することができる。
なお、実施形態における画像は、静止画に限られない。例えば画像は、動画でもよい。
また、実施形態の各処理の一部または全部は、例えばフィールド・プログラマブル・ゲート・アレイ(FPGA)などのプログラマブル・デバイス(PD)で実現されてもよい。さらに、実施形態の各処理の一部または全部は、ASIC(Application Specific Integrated Circuit)で実現されてもよい。
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。