JP2023110454A - 画像処理装置、プログラム及び画像処理方法 - Google Patents
画像処理装置、プログラム及び画像処理方法 Download PDFInfo
- Publication number
- JP2023110454A JP2023110454A JP2022011923A JP2022011923A JP2023110454A JP 2023110454 A JP2023110454 A JP 2023110454A JP 2022011923 A JP2022011923 A JP 2022011923A JP 2022011923 A JP2022011923 A JP 2022011923A JP 2023110454 A JP2023110454 A JP 2023110454A
- Authority
- JP
- Japan
- Prior art keywords
- image
- control unit
- real space
- line segment
- panoramic image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 124
- 238000003672 processing method Methods 0.000 title claims description 4
- 238000000034 method Methods 0.000 claims description 110
- 238000012937 correction Methods 0.000 claims description 95
- 230000008569 process Effects 0.000 claims description 78
- 238000004364 calculation method Methods 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 37
- 238000004891 communication Methods 0.000 description 31
- 238000003384 imaging method Methods 0.000 description 27
- 230000003287 optical effect Effects 0.000 description 19
- 230000008859 change Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 11
- 230000010365 information processing Effects 0.000 description 8
- 230000011218 segmentation Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000005428 wave function Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000004308 accommodation Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000002945 steepest descent method Methods 0.000 description 1
Images
Landscapes
- Image Generation (AREA)
- Studio Devices (AREA)
- Processing Or Creating Images (AREA)
Abstract
【課題】パノラマ画像に対する幾何学的な演算によって、撮影対象の空間の3Dモデルを適切に生成することが可能な画像処理装置等を提供する。【解決手段】画像処理装置は、閉鎖された実空間内で撮影されたパノラマ画像を取得し、前記実空間の高さ及び平面視での多角形の角数を取得する。また、画像処理装置は、パノラマ画像上で、前記実空間の鉛直方向の辺に対応する位置を特定し、取得した前記実空間の高さを用いて前記実空間の多角柱の形状を推定し、推定した多角柱を構成する3Dモデルを生成する。【選択図】図3
Description
本発明は、画像処理装置、プログラム及び画像処理方法に関する。
特許文献1では、部屋を撮影したパノラマ画像から部屋の形を示すVR立体画像を生成し、家具と部屋の実際の縮尺と同様の条件で、家具の3D画像をVR立体画像内に配置する技術が開示されている。特許文献1に開示された技術では、パノラマ画像内の基準線の長さと、前記基準線の実測値及び家具の寸法の比率とに基づいて、家具のモデリングデータの大きさを調整し、モデリングデータに基づいてVR立体画像内に家具が配置された状態を描画することができる。
特許文献1では、深層学習のアルゴリズムを用いてパノラマ画像からVR立体画像を自動生成することが開示されている。即ち、特許文献1に開示された技術は、パノラマ画像に対する幾何学的な演算によってVR立体画像を生成する構成ではない。
本発明は、このような事情に鑑みてなされたものであり、その目的とするところは、パノラマ画像に対する幾何学的な演算によって、撮影対象の空間の3Dモデルを適切に生成することが可能な画像処理装置等を提供することにある。
本開示の一態様に係る画像処理装置は、閉鎖された実空間内で撮影されたパノラマ画像を取得する画像取得部と、前記実空間の高さ及び平面視での多角形の角数を取得する空間情報取得部と、前記パノラマ画像上で、前記実空間の鉛直方向の辺に対応する位置を特定し、取得した前記実空間の高さを用いて前記実空間の多角柱の形状を推定する推定部と、推定した前記多角柱を構成する3Dモデルを生成する生成部とを備える。
本開示の一態様によれば、実写画像に対する幾何学的な演算によって、撮影対象の空間の3Dモデルを適切に生成できる。よって、適切に生成された3Dモデルをユーザに提供することができる。
以下に、本開示の画像処理装置、プログラム及び画像処理方法について、その実施形態を示す図面に基づいて詳述する。
(実施形態1)
図1は、画像処理システムの構成例を示す模式図である。本実施形態の画像処理システム100は、サーバ10(画像処理装置)、登録用端末20、カメラ30及び閲覧用端末40を含む。サーバ10、登録用端末20及び閲覧用端末40は、インターネット、公衆通信回線又はLAN(Local Area Network)等のネットワークNに接続可能であり、ネットワークN経由で情報の送受信を行う。登録用端末20及びカメラ30は例えば無線通信可能であり、無線通信にて情報の送受信を直接行う。なお、カメラ30がネットワークNに接続可能である場合、カメラ30及び登録用端末20はネットワークN経由で情報の送受信を行う構成でもよい。
図1は、画像処理システムの構成例を示す模式図である。本実施形態の画像処理システム100は、サーバ10(画像処理装置)、登録用端末20、カメラ30及び閲覧用端末40を含む。サーバ10、登録用端末20及び閲覧用端末40は、インターネット、公衆通信回線又はLAN(Local Area Network)等のネットワークNに接続可能であり、ネットワークN経由で情報の送受信を行う。登録用端末20及びカメラ30は例えば無線通信可能であり、無線通信にて情報の送受信を直接行う。なお、カメラ30がネットワークNに接続可能である場合、カメラ30及び登録用端末20はネットワークN経由で情報の送受信を行う構成でもよい。
サーバ10は、サーバコンピュータ又はパーソナルコンピュータ等の情報処理装置であり、複数台設けられてもよく、大型計算機等の1台の装置内に設けられた複数の仮想マシンによって実現されてもよく、クラウドサーバを用いて実現されてもよい。登録用端末20は、パーソナルコンピュータ又はタブレット端末等であり、複数台設けられてもよい。カメラ30は、撮影装置の一例である。本実施形態においては、カメラ30を用いて、賃貸住宅及び販売住宅等の不動産物件の部屋、ホテル及び民宿等の宿泊施設の部屋等の空間内(実空間内)の任意の位置で撮影を行う。カメラ30を用いて撮影する空間は、博物館、美術館、テーマパーク、アミューズメント施設、観光地、商業施設等であってもよいが、本実施形態では、撮影空間は閉鎖された略多角柱形状の部屋とする。カメラ30は、1回のシャッターで前後左右上下の撮影を行う全天球カメラを使用する。
本実施形態では、例えば不動産物件の管理会社の従業員等(パノラマ画像の登録者)が、カメラ30を用いて不動産物件の室内(空間内)で撮影を行う。カメラ30によって撮影された撮影画像(パノラマ画像)は、登録用端末20を介してサーバ10へ送信され、サーバ10の撮影画像DB12a(図3参照)に記録される。なお、カメラ30は撮影によって画像データ(撮影画像データ)を取得するが、以下では画像データを単に画像という場合がある。従って、撮影画像は撮影画像データを意味する場合があり、パノラマ画像はパノラマ画像データを意味する場合がある。撮影画像は、複数の画素を含み、撮影画像データは、各画素の撮影画像中の位置(座標)を示す位置情報と各画素の輝度(画素値)とを対応付けて有する。
サーバ10は、撮影画像DB12aに登録されたパノラマ画像をネットワークN経由で公開しており、不動産物件の部屋を内見したいユーザ(閲覧者)は、閲覧用端末40を用いてサーバ10にアクセスし、所望の部屋のパノラマ画像を閲覧できる。なお、サーバ10は、撮影画像DB12aに登録されたパノラマ画像から、閲覧用端末40で再生するための閲覧用画像を生成し、閲覧用画像を閲覧用端末40に提供する。閲覧用端末40は、スマートフォン、タブレット端末又はパーソナルコンピュータ等の汎用の情報処理装置であり、複数台設けられてもよい。閲覧用端末40は、例えば入力部44(図3参照)を介して撮影空間内の任意の位置(仮想位置)と仮想位置から室内を見た方向との入力を受け付け、受け付けた仮想位置から、受け付けた方向(仮想位置からの視線方向)を見た状態の3Dモデル(仮想画像)を生成して表示する。なお、閲覧用端末40は、閲覧者が装着して使用するHMD(Head Mounted Display)型の情報処理装置であってもよい。この場合、閲覧用端末40には、各種センサが内蔵され、装着した閲覧者の頭部の位置及び向き(視線方向)を検出し、検出した閲覧者の頭部の位置及び向きに基づいて3Dモデルを生成する。また、閲覧用端末40は、汎用の情報処理装置とHMD等の表示装置との組合せでもよく、スマートフォン等の軽量の携帯型情報処理装置と、携帯型情報処理装置を閲覧者の目の前に固定する固定部材との組合せでもよい。
このような構成により、閲覧者は、撮影対象となった部屋の中を仮想的に歩き回り、任意の向きを向いて、部屋の広さ、家具の配置、窓の外の景色等を感覚的に把握することができる。なお、閲覧者は回転可能な椅子に着席した状態で、ジョイスティック等を操作することで仮想視点(仮想位置)及び仮想視点からの向きを移動させてもよい。この場合、転倒及び衝突のおそれなく、部屋の中を仮想的に歩き回り、あるいは飛翔し、任意の向きを向いて、室内空間を把握することができる。
図2は、カメラ30及び登録用端末20の構成例を示すブロック図である。カメラ30は、制御部31、記憶部32、通信部33、シャッターボタン34、撮影部35等を含み、これらはバスを介して相互に接続されている。制御部31は、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)又はGPU(Graphics Processing Unit)等の1又は複数のプロセッサを含む。制御部31は、記憶部32に記憶してある制御プログラムを実行すると共に、バスを介してカメラ30を構成するハードウェア各部の動作を制御する。これにより、制御部31は、カメラ30が行うべき種々の制御処理及び情報処理を実行する。記憶部32は、RAM(Random Access Memory)、フラッシュメモリ、ハードディスク等を含む。記憶部32は、制御部31が実行する制御プログラム及び制御プログラムの実行に必要な各種のデータ等を予め記憶している。また記憶部32は、制御部31が制御プログラムを実行する際に発生するデータ等を一時的に記憶する。
通信部33は、例えばBluetooth(登録商標)又はWi-Fi等の無線通信を行うためのインタフェースであり、無線通信によって外部装置(例えば登録用端末20)との間で情報の送受信を直接行う。なお、通信部33は、ケーブルを介した有線通信によって外部装置との間で情報の送受信を行うためのインタフェースであってもよい。また通信部33は、無線通信又は有線通信によってネットワークNに接続するためのインタフェースであってもよく、この場合、ネットワークN経由で外部装置との間で情報の送受信を行う。
シャッターボタン34は、静止画を撮影する指示を受け付けるためのボタンである。なお、制御部31は、無線通信によって、又はネットワークNを通じてシャッターボタン34の操作を受け付けてもよい。撮影部35は、撮影を行う光学系及び撮像素子等を有する撮像装置である。制御部31は、シャッターボタン34から受け付けた指示に基づいて撮影部35による撮影を行い、光学系を介して入射した光が撮像素子にて光電変換されて得られたデータに対して各種の画像処理を行い、撮影画像を取得する。カメラ30は、上述した構成のほかに、液晶ディスプレイ等による表示部、ユーザによる各種の操作入力を受け付ける入力部等を有する構成でもよい。
登録用端末20は、制御部21、記憶部22、通信部23、入力部24、表示部25、読み取り部26等を含み、これらはバスを介して相互に接続されている。制御部21は、CPU、MPU又はGPU等の1又は複数のプロセッサを含む。制御部21は、記憶部22に記憶してある制御プログラム22Pを実行すると共に、バスを介して登録用端末20を構成するハードウェア各部の動作を制御する。これにより、制御部21は、登録用端末20が行うべき種々の制御処理及び情報処理を実行する。記憶部22は、RAM、フラッシュメモリ、ハードディスク、SSD(Solid State Drive)等を含む。記憶部22は、制御部21が実行する制御プログラム22P(プログラム製品)及び制御プログラム22Pの実行に必要な各種のデータ等を予め記憶している。また記憶部22は、制御部21が制御プログラム22Pを実行する際に発生するデータ等を一時的に記憶する。また記憶部22は、ネットワークN経由で公開されているウェブサイトを閲覧するためのウェブブラウザ22aを記憶している。
通信部23は、有線通信又は無線通信によってネットワークNに接続するためのインタフェースであり、ネットワークN経由で外部装置との間で情報の送受信を行う。また通信部23は、無線通信又は有線通信によって外部装置(例えばカメラ30)との間で情報の送受信を直接行うためのインタフェースを有する構成でもよい。入力部24は、マウス及びキーボード等を含み、ユーザ(登録者)による操作入力を受け付け、操作内容に対応した制御信号を制御部21へ送出する。表示部25は、液晶ディスプレイ又は有機ELディスプレイ等であり、制御部21からの指示に従って各種の情報を表示する。入力部24及び表示部25は一体として構成されたタッチパネルであってもよい。
読み取り部26は、CD(Compact Disc)-ROM、DVD(Digital Versatile Disc)-ROM、USB(Universal Serial Bus)メモリ、SD(Secure Digital)カード等を含む可搬型記憶媒体2aに記憶された情報を読み取る。記憶部22に記憶される制御プログラム22P及びデータは、制御部21が読み取り部26を介して可搬型記憶媒体2aから読み取って記憶部22に記憶してもよい。また、記憶部22に記憶される制御プログラム22P及びデータは、制御部21が通信部23を介してネットワークN経由で外部装置からダウンロードして記憶部22に記憶してもよい。更に、制御部21が半導体メモリ2bから制御プログラム22P及びデータを読み出してもよい。
図3は、サーバ10及び閲覧用端末40の構成例を示すブロック図である。サーバ10は、制御部11、記憶部12、通信部13、入力部14、表示部15、読み取り部16等を含み、これらはバスを介して相互に接続されている。これらの各部11~16は、登録用端末20の各部21~26と同様の構成を有するので、構成についての詳細な説明は省略する。なお、サーバ10の記憶部12は、制御プログラム12P(プログラム製品)のほかに、後述する撮影画像DB12a及び閲覧用画像DB12bを記憶する。撮影画像DB12a及び閲覧用画像DB12bは、サーバ10に接続された外部の記憶装置に記憶されてもよく、ネットワークNを介してサーバ10が通信可能な外部の記憶装置に記憶されてもよい。なお、サーバ10の入力部14及び表示部15は必須ではなく、サーバ10は、接続されたコンピュータを通じて操作を受け付ける構成でもよく、表示すべき情報を外部の表示装置へ出力する構成でもよい。
閲覧用端末40は、制御部41、記憶部42、通信部43、入力部44、表示部45等を含み、これらはバスを介して相互に接続されている。これらの各部41~45は、登録用端末20の各部21~25と同様の構成を有するので、構成についての詳細な説明は省略する。なお、閲覧用端末40がHMD型の情報処理装置である場合、閲覧用端末40を装着した閲覧者の頭部の位置及び向きを検出するセンサ部(図示せず)を有する。センサ部は、例えば地磁気センサ、傾きセンサ、GPS(Global Positioning System )センサ等の複数のセンサの組合せであり、閲覧用端末40の位置及び向きを検出する。例えばGPSセンサによって閲覧用端末40の現在位置を検出し、地磁気センサによって閲覧用端末40の向きを検出し、傾きセンサによって閲覧用端末40の重力方向(即ち、鉛直方向の下向き)に対する傾きを検出する。センサ部は、閲覧用端末40の位置及び向きを検出することにより、閲覧用端末40を頭部に装着しているユーザの頭部の位置及び向きを検出する。
図4は、サーバ10に記憶されるDB12a,12bの構成例を示す模式図であり、図4Aは撮影画像DB12aを、図4Bは閲覧用画像DB12bをそれぞれ示す。撮影画像DB12aは、カメラ30を用いて撮影されたパノラマ画像(撮影画像)を記憶する。図4Aに示す撮影画像DB12aは、画像ID列、撮影位置情報列、撮影画像列等を含み、画像IDに対応付けて撮影場所の情報及び撮影画像(パノラマ画像)を記憶する。画像ID列は、撮影画像に割り当てられた識別情報を記憶する。撮影位置情報列は、撮影画像を撮影した場所、部屋、空間に関する情報を記憶し、例えば撮影した部屋の住所、建物名及び部屋番号、ランドマーク名、緯度及び経度等を用いることができる。撮影画像列は、カメラ30を用いて撮影されたパノラマ画像のデータ(撮影画像データ)を記憶する。なお、パノラマ画像のデータ(撮影画像データ)は、撮影画像DB12aに記憶されずに、記憶部12の所定領域又はサーバ10に接続された外部記憶装置に記憶されてもよい。この場合、撮影画像列は、撮影画像(パノラマ画像)のデータを読み出すための情報(例えばデータの記憶場所を示すファイル名)を記憶する。撮影画像DB12aに記憶される画像IDは、サーバ10が新たなパノラマ画像を通信部13にて取得した場合に、制御部11によって発行されて記憶される。撮影情報DB12aに記憶される他の情報は、制御部11が通信部13を介して登録用端末20から取得した場合に、制御部11によって記憶される。なお、撮影位置情報は、登録用端末20からパノラマ画像と共にサーバ10へ送信される。撮影画像DB12aの記憶内容は図4Aに示す例に限定されず、例えば撮影日時、撮影者の情報、撮影対象の空間(部屋)に関する情報等が記憶されてもよい。
閲覧用画像DB12bは、サーバ10がネットワークN経由で提供する閲覧用のパノラマ画像(閲覧用画像)を記憶する。なお、閲覧用画像は、撮影画像DB12aに登録された撮影画像を、サーバ10が所定の画像処理を行うことによって得られたデータであり、具体的にはポリゴンデータ及びテクスチャ画像データを含む。図4Bに示す閲覧用画像DB12bは、撮影画像DB12aと同様の構成を有し、撮影画像DB12aにおける撮影画像の代わりに、撮影画像から生成された閲覧用画像を記憶する。なお、閲覧用画像のデータも、閲覧用画像DB12bに記憶されずに、記憶部12の所定領域又はサーバ10に接続された外部記憶装置に記憶されてもよい。この場合、閲覧用画像列は、閲覧用画像のデータ(ポリゴンデータ及びテクスチャ画像データ)を読み出すための情報(例えばデータの記憶場所を示すファイル名)を記憶する。閲覧用画像DB12bに記憶される画像ID及び撮影位置情報は、サーバ10が撮影画像から閲覧用画像を生成した場合に、この撮影画像に対応する画像ID及び撮影位置情報が制御部11によって撮影画像DB12aから読み出されて記憶される。閲覧用画像DB12bに記憶される閲覧用画像は、制御部11が撮影画像から閲覧用画像を生成した場合に、制御部11によって記憶される。閲覧用画像DB12bの記憶内容は図4Bに示す例に限定されず、例えば処理前の撮影画像の撮影日時、撮影者の情報、撮影対象の空間(部屋)に関する情報等が記憶されてもよい。また、撮影画像DB12a及び閲覧用画像DB12bを1つのDBで構成してもよく、撮影画像DB12aに閲覧用画像を記憶する構成としてもよい。
以下に、本実施形態の画像処理システム100におけるカメラ30及びカメラ30によって撮影されるパノラマ画像について説明する。図5は、カメラ30の外観例を示す模式図である。本実施形態のカメラ30は、略長方形板状の板状部38を有する。本実施形態のカメラ30は、図5に示すように板状部38の長辺方向を上下方向に向けた状態で撮影するので、以後の説明においては、板状部38の長辺方向をカメラ30の上下方向と記載する。また、板状部38の長辺方向を上下方向に向けた状態のカメラ30において、板状部38の第1広面381側をカメラ30の前側(正面側)、第2広面382側をカメラ30の後側(背面側)、板状部38の短辺方向をカメラ30の左右方向とそれぞれ記載する。
カメラ30は、第1広面381の上寄りに、ドーム状の第1レンズ371が設けられている。第2広面382の上寄りに、ドーム状の第2レンズ372が設けられている。第1レンズ371及び第2レンズ372の内側には、図示しない複数のレンズ及びプリズム等の光学部品が配置されており、180度以上の視野角を有する光学系を形成している。以後の説明では、第1レンズ371側の光学系の光軸を第1光軸、第2レンズ372側の光学系の光軸を第2光軸とそれぞれ記載する。第1光軸と第2光軸とは、同一の直線上に配置されている。第1広面381にシャッターボタン34が配置されている。
上述した構成のカメラ30が撮影時に行う処理について説明する。図6は撮影画像の構成例の説明図である。図6Aは、全天球画像を示す模式図である。図6Bは、図6Aの全天球画像を正距円筒図法により展開した画像を示す模式図である。カメラ30の制御部31は、シャッターボタン34から受け付けた指示に基づいて撮影部35による撮影を行った場合、第1光軸側で撮影した画像と第2光軸側で撮影した画像とを合成することにより、図6Aに示すように撮影位置を撮影中心Cとする全天球画像を生成する。
全天球画像上の各画素の位置を定める座標系について説明する。全天球画像上の画素の位置は、直交座標系及び極座標系により表現することができる。直交座標系は、図5に示した右方向をX軸の正側、上方向をY軸の正側、後ろ方向をZ軸の正側とする右手系の直交座標系を用いる。極座標系は、方位角φ及び天頂角θ、並びに撮影中心Cからの距離rによって座標が示される座標系を用いる。極座標系の方位角は、第2光軸側(Z軸の正側)を基準として、XZ面(カメラ30の前後左右方向を含む平面)内の反時計回りの角度φを示す。第1光軸(Z軸の負側)は、方位角φがπラジアンの位置に存在する。ここでπは円周率を意味する。第2光軸は、方位角φが0ラジアンかつ2πラジアンの位置に存在する。極座標系の天頂角は、撮影中心Cから天頂への上方向(Y軸の正側)を基準として、撮影中心Cを中心として下に向かう角度θを示す。上方向は、天頂角θが0ラジアンの位置に存在する。下方向(Y軸の負側)は、天頂角θがπラジアンの位置に存在する。全天球画像上の任意の画素aの位置は、直交座標系で表した座標(xa ,ya ,za )と、極座標系で表した座標(r,θa ,φa)とによって表現することができる。なお、直交座標系の座標(x,y,z)及び極座標系の座標(r,θ,φ)は以下の(1)式及び(2)式によって相互に変換可能である。
カメラ30の制御部31は、全天球画像を方位角φ=0の線に沿って切断して、正距円筒図法により図6Bに示すように横軸を方位角φとし縦軸を天頂角θとする平面に展開した長方形の撮影画像(以下では、パノラマ画像という)を生成する。このパノラマ画像を構成する各画素には、全天球画像における各画素の輝度(画素値)が割り当てられる。なお、図6Bに示すように、長方形(平面)のパノラマ画像は、左下を原点(0,0)とし、原点(0,0)は、方位角φが2πラジアンで天頂角θがπラジアンの位置の画素を示す。また、パノラマ画像は、右方向に方位角φが小さくなり、パノラマ画像の右端は方位角φが0ラジアンの位置の画素であり、上方向に天頂角θが小さくなり、パノラマ画像の上端は天頂角θが0ラジアンの位置の画素である。
例えば登録者は、カメラ30を用いて撮影対象の空間内で撮影を行い、取得したパノラマ画像を登録用端末20に取り込む。このとき、カメラ30の制御部31は、図6Bに示すようなパノラマ画像を通信部33から登録用端末20へ送信する。なお、カメラ30の制御部31は、図6Bに示すパノラマ画像の代わりに、図6Aに示すような全天球画像の撮影画像を登録用端末20へ送信してもよく、この場合、登録用端末20が、全天球画像から、図6Bに示すパノラマ画像を生成する処理を行ってもよい。また、全天球画像からパノラマ画像を生成する処理は、パノラマ画像を記憶するサーバ10で行ってもよい。この場合、カメラ30によって撮影された全天球画像が、登録用端末20によってサーバ10へ送信され、サーバ10が、全天球画像からパノラマ画像を生成する処理を行う。なお、カメラ30は、パノラマ画像と共に撮影中心Cの位置情報(撮影位置の情報)を登録用端末20へ送信してもよく、例えばExif(Exchangeable image file format)形式を使用することにより、撮影位置の情報と撮影画像とを一つのファイルで送信することが可能である。撮影位置の情報は、例えばカメラ30に内蔵されているGPSセンサを用いて取得される。
以下に、本実施形態の画像処理システム100における各装置が行う処理について説明する。図7は、撮影画像の登録処理手順の一例を示すフローチャート、図8は登録画面例を示す模式図である。図7では左側に登録用端末20が行う処理を、右側にサーバ10が行う処理をそれぞれ示す。登録者はまず、撮影対象の部屋内部でカメラ30を用いて撮影を行い、パノラマ画像(撮影画像)を取得する。このとき、カメラ30は、撮影画像と共に撮影位置の情報を取得してもよい。カメラ30の制御部31は、シャッターボタン34からの指示に基づいて撮影部35による撮影を行い、図6Aに示すような全天球画像を生成し、更に全天球画像から図6Bに示すような平面のパノラマ画像を生成する。制御部31は、例えば登録用端末20からの要求に応じて、取得した撮影画像を登録用端末20へ送信する。なお、撮影位置の情報がカメラ30に内蔵されたセンサによって測定される場合、制御部31は、測定した撮影位置の情報も撮影画像と共に登録用端末20へ送信する。
登録用端末20の制御部21は、カメラ30によって取得した撮影画像を取得しておく(S11)。なお、カメラ30が撮影位置の情報も取得している場合、制御部21は、撮影画像と共に撮影位置の情報も取得しておく。登録者は、撮影画像の登録を行う場合、サーバ10が提供するウェブサイトに登録用端末20を用いてアクセスし、ウェブサイトを介してサーバ10に撮影画像の登録を要求する。なお、サーバ10はウェブサーバとしての機能を有しており、撮影画像の登録指示を受け付けるためのウェブサイトをネットワークN経由で公開している。登録用端末20の制御部21は、サーバ10にアクセスし、撮影画像の登録を要求する(S12)。
サーバ10の制御部11は、撮影画像の登録を要求された場合、図8に示すような登録画面を登録用端末20へ送信する(S13)。登録用端末20の制御部21は、サーバ10が送信した登録画面を受信し、受信した登録画面を表示部25に表示する(S14)。図8に示す登録画面は、登録対象の撮影画像(パノラマ画像)を指定するための入力欄25aと、撮影位置(撮影場所)の情報を入力するための入力欄25b,25cとを有する。なお、入力欄25bは、撮影した部屋の住所、建物名及び部屋番号を入力する入力欄を含み、入力欄25cは、撮影位置の緯度及び経度を入力する入力欄を含む。登録画面は、入力欄25aにファイル名が入力されて登録対象の撮影画像が指定された場合、指定された撮影画像が表示され、指定された撮影画像に撮影位置の情報(緯度及び経度)が含まれる場合、撮影位置の緯度及び経度が入力欄25cに表示される。なお、登録用端末20がカメラ30から受信した撮影画像に撮影位置の情報が付加されていない場合、入力欄25cに撮影位置の情報(緯度及び経度)は表示されない。このとき、入力欄25cは空欄でもよく、例えば登録者が入力部24を介して撮影位置の緯度及び経度を入力してもよい。登録者は、登録画面において、撮影場所の住所、建物名及び部屋番号を入力部24から入力欄25bに入力する。登録画面は、画面を介して入力された各情報の登録を指示するための登録ボタンを有する。登録画面の構成は図8に示す例に限定されず、撮影位置の情報は住所等のほかに、ランドマーク名、店舗名等が入力される構成としてもよい。
制御部21は、登録画面において入力欄25aに対して撮影画像の指定を受け付け、入力欄25bに対して撮影位置の情報(住所等)の入力を受け付ける(S15)。制御部21は、登録画面中の登録ボタンが操作されたか否かに応じて、登録画面を介して入力された情報の登録指示を受け付けたか否かを判断する(S16)。制御部21は、登録指示を受け付けていないと判断した場合(S16:NO)、ステップS15の処理に戻り、登録画面を介した各情報の受付を継続する。登録指示を受け付けたと判断した場合(S16:YES)、即ち、登録画面中の登録ボタンが操作された場合、制御部21は、登録画面を介して受け付けた撮影画像及び撮影位置の情報を対応付けてサーバ10へ送信する(S17)。
サーバ10の制御部11(画像取得部)は、登録用端末20が送信した撮影画像及び撮影位置の情報を受信(取得)し、受信した情報を対応付けて登録する(S18)。具体的には、制御部11は、受信した撮影画像に画像IDを発行し、画像IDに対応付けて、受信した撮影位置の情報及び撮影画像を撮影画像DB12aに記憶する。上述した処理により、撮影対象の部屋で撮影されたパノラマ画像(撮影画像)が、撮影位置の情報と共にサーバ10に登録される。なお、撮影画像は、1つの部屋において異なる複数の撮影位置で撮影してもよいが、それぞれの撮影画像について上述した処理を行うことによって、それぞれの撮影画像をサーバ10に登録する。
次に、上述した処理によってサーバ10の撮影画像DB12aに登録された撮影画像から閲覧用の画像(閲覧用画像)を生成する処理について説明する。図9は、閲覧用画像の生成処理手順の一例を示すフローチャート、図10及び図11は、閲覧用画像の生成処理の説明図である。サーバ10は、以下の処理を記憶部12に記憶してある制御プログラム12Pに従って制御部11によって実行するが、処理の一部を専用のハードウェア回路で実現する構成でもよい。サーバ10の制御部11は、例えば登録用端末20から撮影画像を受信した場合に、受信した撮影画像を撮影画像DB12aに登録すると共に以下の処理を行う。また制御部11は、定期的に、又は撮影画像DB12aにある程度の撮影画像が登録された後に以下の処理を行ってもよい。
サーバ10の制御部11は、例えば入力部14を介したユーザによる操作によって、閲覧用画像の生成処理の実行指示を受け付けた場合、図10Aに示すような閲覧用画像の生成画面を表示部15に表示する(S21)。図10Aに示す画面は、閲覧用画像の生成対象のパノラマ画像を指定するための入力欄15aと、このパノラマ画像の撮影対象の部屋の床面から天井までの高さを入力するための入力欄15bと、撮影対象の部屋の平面視での多角形の角数(辺数)を入力するための入力欄15cとを有する。各入力欄15a~15cは、任意の文字及び数字を入力できる構成でもよく、複数の選択肢から任意の1つを選択できるプルダウンメニューが設けられていてもよい。また、図10Aに示す画面は、入力された各情報に基づいて閲覧用画像の生成処理の実行を指示するためのOKボタンを有する。
制御部11は、生成画面中の入力欄15aにファイル名が入力された場合、処理対象の撮影画像の指定を受け付ける(S22)。処理対象の撮影画像の指定を受け付けた場合、制御部11は、指定された撮影画像を撮影画像DB12aから読み出し、読み出した撮影画像を、図10Aに示すように表示中の生成画面に表示する(S23)。また、制御部11(空間情報取得部)は、画面中の入力欄15b,15cを介して、撮影対象の部屋の高さ及び平面視での多角形の角数の入力を受け付け、入力された高さ及び角数をそれぞれの入力欄15b,15cに表示する(S24)。以下では、平面視での形状が凸字状の多角形である略8角柱の部屋で撮影されたパノラマ画像を処理対象として閲覧用画像を生成する処理について説明する。従って、図10Aに示す画面中の入力欄15cには「8」が入力されている。
なお、サーバ10による閲覧用画像の生成処理の実行を、例えば登録用端末20を介して指示できる構成でもよい。この場合、サーバ10は、閲覧用画像の生成画面を登録用端末20へ送信して登録用端末20の表示部25に表示し、登録用端末20の入力部24を介して、閲覧用画像の生成処理に必要な情報の入力を受け付けてもよい。
制御部11は、図10Aに示す画面中のOKボタンが操作されたか否かを判断しており(S25)、OKボタンが操作されていないと判断した場合(S25:NO)、ステップS22の処理に戻り、生成画面を介した各情報の受付を継続する。OKボタンが操作されたと判断した場合(S25:YES)、制御部11は、生成画面を介して受け付けた情報に基づく閲覧用画像の生成処理を実行する。まず制御部11(線分表示部)は、ステップS23で撮影画像DB12aから読み出した撮影画像(パノラマ画像)を表示し、撮影画像上に重ねて、撮影画像の上下方向の線分であって、生成画面を介して入力された角数(ここでは8個)の線分を表示する(S26)。図10Bは、撮影画像の上下方向に伸びる8本の線分が表示された撮影画像の例を示しており、図10Bに示す例では、撮影画像の左右方向に等間隔の位置に8本の線分が表示され、各線分の上端及び下端はそれぞれ撮影画像の左右方向の線分で接続されている。なお、撮影画像の上下方向に伸びる線分のみが表示されればよく、また、各線分の表示箇所は撮影画像中のどこでもよく、更に画面中の撮影画像の表示領域以外の領域に表示されてもよい。
制御部11(受付部)は、撮影画像上に表示した8本の線分に対して、撮影空間の8隅で実空間上の鉛直方向に存在する8本の線分(鉛直線)への移動指示を受け付ける(S27)。そして制御部11は、受け付けた移動指示に従って、撮影画像上に表示した8本の線分を移動させる(S28)。図11Aは、図10Bに示した上下方向の8本の線分を、撮影画像中の8本の鉛直線L0~L8に移動させた後の状態を示している。登録用端末20のユーザ(登録者)又はサーバ10のユーザは、入力部24,14を用いた所定の操作(例えばマウスによるドラッグ操作)によって、図10Bに示す画面に表示された8本の線分のそれぞれの端点(上下端部)を、図11Aに示す画面に表示された撮影画像上の8本の鉛直線L0~L7のそれぞれの端点に移動させる指示を行う。なお、各鉛直線L0~L7の上端点は鉛直線L0~L7が天井に接する位置であり、各鉛直線L0~L7の下端点は鉛直線L0~L7が床面に接する位置である。これにより、図11Aに示すように、撮影画像において、撮影空間の8隅に対応する8本の鉛直線L0~L7が設定される。
制御部11は、図11Aに示す画面中のOKボタンが操作されたか否かを判断しており(S29)、OKボタンが操作されていないと判断した場合(S29:NO)、ステップS27の処理に戻り、撮影画像上に表示した線分に対する移動指示の受付を継続する。OKボタンが操作されたと判断した場合(S29:YES)、制御部11は、移動後の8本の鉛直線L0~L7を取得する(S30)。具体的には、制御部11は、8本の鉛直線L0~L7のそれぞれの両端点(上下端点)、即ち、合計16頂点の座標値を取得する。
ここで、図11Bに示すように、撮影画像中の各画素の位置を、画像の左上を原点(0,0)とし、原点から右方向をX軸とし下方向をY軸とした画像座標系の座標(xI ,yI )で表すとする。なお、撮影画像の高さ(上下方向の長さ)はHとし、幅(左右方向の長さ)はWとする。よって、鉛直線L0~L7のそれぞれの両端点(各頂点)の座標値は、画像座標系の座標値(xI ,yI )によって表される。これにより、制御部11は、撮影画像上で、撮影空間(実空間)の8隅で鉛直方向に存在する8本の線分(鉛直線)を特定できる。制御部11は、取得した16頂点の座標値を記憶部12に記憶しておく。
なお、制御部11は、撮影画像DB12aから読み出した撮影画像に基づいて、画像認識処理によって撮影空間上で鉛直方向に存在する8隅の鉛直線(8本の鉛直線)を自動的に特定してもよい。例えば、撮影空間(実空間)の隅で鉛直方向に伸びる鉛直線に対応する撮影画像中の線分(鉛直線)の特徴量を予め抽出して記憶部12に記憶しておき、制御部11は、記憶した特徴量を有する箇所を撮影画像から自動的に抽出することによって、撮影画像中の鉛直線を特定してもよい。
また制御部11は、撮影画像(パノラマ画像)が入力された場合に、撮影画像中の各画素を、鉛直線(撮影空間上の鉛直線に対応する線分)の領域又は他の領域に分類するように学習された学習済みモデルを用いて、撮影画像中の鉛直線を特定してもよい。ここでの学習済みモデルは、SegNetモデル、FCN(Fully Convolutional Network )モデル、U-Netモデル等のセグメンテーションDNN(Deep Neural Network )を用いて構成することができる。セグメンテーションDNNは、入力画像(撮影画像)と、入力画像中の各画素に対して、鉛直線であるか否かを示す情報(クラスラベル)が対応付けられたラベル画像とを含む教師データを用いて学習する。セグメンテーションDNNは、教師データに含まれる入力画像が入力された場合に、教師データに含まれるラベル画像を出力するように学習する。学習処理においてセグメンテーションDNNは、入力値に対して行う所定の演算を規定する各種の関数の係数や閾値等のデータを、最急降下法、誤差逆伝播法等を用いて最適化する。これにより、撮影画像(パノラマ画像)が入力された場合に、入力画像中の各画素を、鉛直線の領域、又は他の領域にそれぞれ分類するように学習したセグメンテーションDNNが得られる。
制御部11が撮影画像に基づいて自動的に撮影画像中の鉛直線を特定する場合、制御部11は、撮影画像DB12aから読み出した撮影画像を表示部15,25に表示させる必要がなく、図10Bに示すような8本の線分を表示させる必要もない。よって、この場合、制御部11は、ステップS26~S29の処理をスキップし、ステップS30で、撮影画像に基づいて撮影画像中の8本の鉛直線を特定して取得する。
次に制御部11(補正部)は、ステップS30で取得した8本の鉛直線に基づいて、ステップS23で読み出した撮影画像に対して天頂補正を行う(S31)。図12は天頂補正の処理手順の一例を示すフローチャート、図13及び図14は天頂補正に含まれる回転軸の特定処理手順の一例を示すフローチャート、図15は天頂補正に含まれる回転量の特定処理手順の一例を示すフローチャート、図16は天頂補正の説明図である。
ここで天頂補正処理について説明する。図16Aは天頂補正前の撮影画像の例を示し、図16Bは天頂補正後の撮影画像の例を示す。カメラ30の上下方向(板状部38の長辺方向)が実空間上の鉛直方向に対して傾斜している場合、カメラ30の第1光軸及び第2光軸は、実空間上の水平方向に対して傾斜を有する。このような状態で撮影した場合、カメラ30の前後左右方向を含む平面(以下では撮影時平面という)が、実空間上の水平面に対して傾斜を有するので、実空間上の撮影位置を含む水平面上にある被写体が、撮影画像中の上下方向の中央部に写らず、歪みが生じたパノラマ画像が得られる。そこで、図16Aに示すように歪みが生じたパノラマ画像を、図16Bに示すように実空間上の撮影位置を含む水平面上にある被写体が、撮影画像中の上下方向の中央部に写るパノラマ画像に補正する天頂補正を行う。なお、図16Bから分かるように、天頂補正後のパノラマ画像では、8本の鉛直線L0~L7は画像の上下方向に配置される。
天頂補正処理において、制御部11はまず、ステップS30で取得した8本の鉛直線の両端点である16頂点の座標を取得する(S41)。具体的には制御部11は、記憶部12に記憶した16頂点の座標値を読み出す。そして制御部11は、読み出した16頂点の座標値に基づいて、8本の鉛直線のそれぞれを表すパラメータを算出する(S42)。ここでは、それぞれの鉛直線を画像の原点(例えば左下端)からの距離ρ及び傾きθで表すパラメータを算出する。よって、制御部11は、8本の鉛直線のそれぞれについて、各鉛直線を表すパラメータ(θ,ρ)を算出する。なお、傾きθは例えば0~πラジアンの範囲の値とし、距離ρは0~L(Lは画像の対角線の長さ)の範囲の値とする。
次に制御部11は、8本の鉛直線に基づいて、図16Aに示すようなパノラマ画像を、図16Bに示すようなパノラマ画像に補正するための補正量を特定する。ここでは、撮影画像中の鉛直線のそれぞれが、図16Bに示すように、補正後の撮影画像(パノラマ画像)において上下方向に配置されるために行うべき天頂補正における補正量を特定する。具体的には、制御部11は、撮影時におけるカメラ30の前後左右方向を含む撮影時平面が、実空間上の水平面に対して傾斜する中心軸(回転軸)及び回転角度(回転量)をそれぞれ特定する。即ち、制御部11は、実空間上の水平面を基準として撮影時平面が回転する中心軸及び回転角度を天頂補正における補正量として特定する。
図11Bから分かるように、それぞれの鉛直線の傾きは、パノラマ画像の左右方向の画像幅を1周期とする増減関数で表現でき、画像の上下方向の中央を通る中央ライン上で傾きが最大となる位置が回転の中心(回転軸)であり、その傾きが回転量(回転角度)とすることができる。そこで、それぞれの鉛直線の傾きを正弦波で近似することを考える。ここでの正弦波の周期はパノラマ画像の画像幅に一致するため、正弦波は位相φ及び振幅Aの2つのパラメータで特定できる。また、それぞれの鉛直線の傾きは、各鉛直線を表すパラメータθ(0≦θ≦π)としてステップS42で算出されている。よって、推定する正弦波は、y=A・sin(x+φ)と表現でき、各鉛直線に基づいて、位相φ及び振幅Aの各組合せに対して投票法を用いて最小二乗法で正弦波を推定する(1回目の推定処理)。なお、θ=0及びθ=πは共に鉛直方向を示すので、後の演算のためにθ>π/2の場合は、θ:=θ-πとし、-π/2≦θ≦π/2の範囲とする。
補正量の特定において、制御部11はまず、撮影時平面が実空間上の水平面に対して傾斜する中心軸(回転軸)の位置を特定する(S43)。具体的には、制御部11は、8本の鉛直線に基づいて、補正後のパノラマ画像において各鉛直線が画像の上下方向に配置されるために、実空間上の水平面に一致するように撮影時平面を回転すべき回転軸の位置を特定する。図13及び図14に示す回転軸の特定処理において、制御部11はまず、各鉛直線の傾きを近似する正弦波を表す振幅A及び位相φの2つのパラメータを各軸とした2次元配列(投票空間)を設定し、配列中の各要素を全て0に初期化する(S51)。具体的には、制御部11は、投票空間である2次元配列を例えば記憶部12に定義し、配列の各軸に振幅A及び位相φを割り当て、振幅A及び位相φで表される配列(A,φ)中の各要素を全て0に初期化する。なお、配列の分割数Sは例えば、振幅Aについては0~π/2の範囲を1000等分し、位相φについてはパノラマ画像の画像幅0~W(Wは画像の左右方向の長さ)の範囲をW等分(1画素単位)する。配列(A,φ)の各要素には、y=A・sin(x+φ)に対する、各鉛直線の傾きθの誤差(差異)の二乗が累積されて記憶される。
次に制御部11は、推定する正弦波における振幅Aの候補値を0に設定し(S52)、位相φの候補値を0に設定する(S53)。制御部11は、ステップS42でパラメータを算出した鉛直線のうちの1つを取得し(S54)、取得した鉛直線について、設定した振幅A及び位相φによって表される正弦波に基づく値と、ステップS42で算出された傾きθ(パラメータ)との誤差を算出する(S55)。鉛直線の横位置xC (画像座標系のX座標値)を、各鉛直線がパノラマ画像の中央ラインと交差する位置のX座標値とし、各鉛直線の横位置xC は既知であるから、0~2πに正規化するために、x=2π×xC /Wとする。また投票空間においてφ方向(φ軸)のi番目の位相は2π×i/S(ただし、Sは分割数であり、ここではW)で表される。これらより、配列(A,φ)の要素に対応する鉛直線の横位置xC における正弦波の値は、y=A・sin(2π×xC /W-2π×i/S)となる。従って、制御部11は、このように算出した正弦波の値yと、既にこの鉛直線について算出した傾きθとの差異(誤差)を算出する。
制御部11は、算出した差異(誤差)の二乗(y-θ)2 を算出し、算出した誤差の二乗を配列(A,φ)の要素に加算する(S56)。制御部11は、ステップS42でパラメータを算出した全ての鉛直線に対してステップS55~S56の処理を終了したか否かを判断する(S57)。終了していないと判断した場合(S57:NO)、制御部11はステップS54の処理に戻り、未処理の鉛直線を1つ取得し(S54)、取得した鉛直線についてステップS55~S56の処理を繰り返す。これにより、配列(A,φ)の1つの要素に対して、位相φ及び振幅Aに基づく正弦波による各鉛直線の関数値と、算出された各鉛直線の傾きとの誤差の二乗が累積される。
制御部11は、ステップS42で算出した全ての鉛直線に対してステップS55~S56の処理を終了したと判断した場合(S57:YES)、この時点の位相φにW/S(Wは画像の左右方向の幅、Sは配列の分割数)を加算し(S58)、加算後の位相φがW(画像幅)以上であるか否かを判断する(S59)。加算後の位相φがW未満であると判断した場合(S59:NO)、制御部11はステップS54の処理に戻る。そして制御部11は、この時点の位相φ及び振幅Aに基づいて、ステップS42でパラメータを算出した全ての鉛直線に対してステップS54~S57の処理を繰り返す。
加算後の位相φがW以上であると判断した場合(S59:YES)、制御部11は、この時点の振幅Aにπ/2S(Sは配列の分割数)を加算し(S60)、加算後の振幅Aがπ/2以上であるか否かを判断し(S61)、加算後の振幅Aがπ/2未満であると判断した場合(S61:NO)、ステップS53の処理に戻る。そして制御部11は、この時点の振幅Aに基づいて、ステップS53~S59の処理を繰り返す。このように制御部11は、位相φの候補値をW/Sずつ増加させ、振幅Aの候補値をπ/2Sずつ増加させつつ、ステップS54~S57の処理を行うことにより、配列(A,φ)の各要素に対して、位相φの候補値及び振幅Aの候補値に基づく正弦波による各鉛直線の関数値と、算出された各鉛直線の傾きとの誤差の二乗を累積する。
ステップS60で加算後の振幅Aがπ/2以上であると判断した場合(S61:YES)、即ち、配列(A,φ)の全ての要素に対して全ての鉛直線についての誤差の二乗の累積が完了した場合、制御部11は、配列(A,φ)の要素の中から最小値を特定し、最小値の要素に対応する振幅A及び位相φを、8本の鉛直線の傾きを近似した正弦波を表す仮パラメータ(At ,φt )に特定する(S62)。なお、ここで特定した仮パラメータ(At ,φt )が1回目の推定結果である。制御部11は、1回目の推定結果を用いて、ロバスト推定と呼ばれる手法によって正弦波を表すパラメータを精査する(2回目の推定処理)。ロバスト推定では、各鉛直線が正弦波の推定に与える影響を、仮パラメータの推定結果(At ,φt )との差異に基づいた重みを用いて表現する。例えば、仮パラメータ(At ,φt )において各鉛直線の横位置xC における正弦波の関数値y=At ・sin(2π×xC /W-φt )と、ステップS42で算出した各鉛直線の傾きθ(パラメータ)との差異d=y-θに対する重みωを、所定の許容値Ωを用いて以下の(3)式のように設定する。なお、許容値Ωは例えば、全鉛直線における差異dの中央値の1.25倍とすることができる。そして制御部11は、以下の(3)式を用いて特定した重みωを用いて、2回目の正弦波の推定処理を行う。
よって、制御部11は、1回目の推定処理と同様に、ステップS51~S54と同様の処理を行い(S63~S66)、取得した鉛直線について、仮パラメータが示す正弦波に基づく関数値と、ステップS42で算出された傾きθとの差異に応じた重みを特定する(S67)。また制御部11は、ステップS55と同様の処理を行い(S68)、算出した誤差の二乗に、ステップS67で特定した重みを乗じた値を算出し、配列(A,φ)の対応する要素に加算する(S69)。よって、2回目の推定処理では配列(A,φ)の各要素に対して、各鉛直線について、正弦波の関数y=A・sin(x+φ)と各鉛直線について算出された傾きθとの誤差(差異)の二乗を累積するが、このとき、上記(3)式で表される重みωを掛けた後に加算する。これにより、1回目の推定結果である仮パラメータ(At ,φt )で表される正弦波から許容値Ωよりも離れている鉛直線が正弦波の推定に与える影響を小さくすることができ、より精度の高い正弦波の推定が可能となる。
制御部11は、ステップS42でパラメータを算出した全ての鉛直線に対してステップS67~S69の処理を終了したか否かを判断する(S70)。終了していないと判断した場合(S70:NO)、制御部11はステップS66の処理に戻り、未処理の鉛直線を1つ取得し(S66)、取得した鉛直線についてステップS67~S69の処理を繰り返す。制御部11は、ステップS42でパラメータを算出した全ての鉛直線に対してステップS67~S69の処理を終了したと判断した場合(S70:YES)、ステップS58~S61と同様の処理を行い(S71~S74)、位相φの候補値をW/Sずつ増加させ、振幅Aの候補値をπ/2Sずつ増加させつつ、ステップS66~S70の処理を行う。これにより、配列(A,φ)の各要素に対して、位相φの候補値及び振幅Aの候補値に基づく正弦波による各鉛直線の関数値と、算出された各鉛直線の傾きとの誤差の二乗に、この鉛直線に設定された重みを乗じた値を累積できる。ステップS73で加算後の振幅Aがπ/2以上であると判断した場合(S74:YES)、即ち、配列(A,φ)の全ての要素に対して、全ての鉛直線についての誤差の二乗に重みωを乗じた値の累積が完了した場合、制御部11は、配列(A,φ)の要素の中から最小値を特定し、最小値の要素に対応する振幅A及び位相φを、各鉛直線の傾きを近似した正弦波を表すパラメータ(A,φ)に特定する(S75)。
図16Aは、上述の処理によって推定された正弦波の例を示しており、図16A中の破線は1回目の推定処理によって推定された正弦波を示し、実線は2回目の推定処理によって推定された正弦波を示し、一点破線は画像の中央ラインを示す。上述した処理により、各鉛直線の傾きθを近似した正弦波を推定することができる。なお、2回目の推定処理において、1回目の推定結果である仮パラメータで表される正弦波から離れている鉛直線が正弦波の推定に与える影響を小さくすることにより、信頼性の高い推定結果が得られる。なお、回転軸の特定処理において、制御部11は、ロバスト推定(2回目の推定処理)を行わずに、1回目の推定処理によって得られた正弦波を、各鉛直線の傾きθを近似した正弦波としてもよい。この場合、1回目の推定処理で得られたパラメータである位相φを、天頂補正に用いる補正量(回転軸の位置)としてもよい。
ここで、上述のように算出(推定)した正弦波の位相φは、画像の中央ラインにおいて、正弦波の関数値yが0となる位置(鉛直線の傾きが0である位置)を示しているので、回転軸は、位相φの位置から中央ライン上でπ/2ずれた位置となる。これは、鉛直線の傾きが最大となる中央ライン上の位置が回転軸となるためである。よって、制御部11は、上述のように算出(推定)した正弦波の位相φにπ/2を加算する(φ:=φ+π/2)ことにより、回転軸の位置(位相φ)を特定する。なお、ここまでパノラマ画像の左端をφ=0とし、右端をφ=2πとして扱ってきたが、ステップS45で行う天頂補正で扱う極座標系ではパノラマ画像の左端がφ=2πとなり、右端がφ=0となる。よって、制御部11は、特定した位相(φ:=φ+π/2)を2πから減算して位相φ(φ:=3π/2-φ)を算出し、算出した位相φを、ステップS45で行う天頂補正に用いる補正量(回転軸の位置を示す位相φ)に特定する(S76)。制御部11は、回転軸の特定処理を終了し、図12の処理に戻る。
次に制御部11は、ステップS43で特定した回転軸の位置(位相φ)に基づいて、ステップS45で行う天頂補正に用いる回転量(回転角度)αを特定する(S44)。具体的には、制御部11は、補正後のパノラマ画像において各鉛直線が上下方向に配置されるために、特定した回転軸を中心に撮影時平面を回転すべき回転量を特定する。なお、回転量αの推定においても、投票法を用いて最小二乗法を利用する。即ち、制御部11は、ステップS43で特定した正弦波を基準とした各鉛直線の誤差を算出し、算出した誤差に応じて、上記(3)式に従って各鉛直線に対する重みωを設定する。具体的には、ステップS43で特定した正弦波のパラメータ(A,φ)において各鉛直線の横位置xC における正弦波の関数値y=A・sin(2π×xC /W-φ)と、ステップS42で算出された鉛直線の傾きθとの差異d=y-θに応じて、各鉛直線に対する重みωを設定する。回転量αを推定(特定)する際の最小二乗法による投票処理は、1次元配列を用いること以外は、正弦波を推定する際に用いた投票処理と同様である。
図15に示す回転量の特定処理において、制御部11は、回転量αをパラメータとした1次元配列を設定し、配列α中の各要素を全て0に初期化する(S81)。具体的には、制御部11は、投票空間として1次元配列を例えば記憶部12に定義し、配列α中の各要素を全て0に初期化する。なお、配列の要素数Sを例えば1000とし、±30°(±π/6ラジアン)の範囲の回転量を1000等分する。配列に用いる±30°の範囲は、カメラ30を用いた撮影時に生じる傾きがせいぜい30°以内であるとの前提に基づいて設定しており、この範囲に限定されず、例えば±45°の範囲を用いてもよい。投票空間における配列αにおいて、i番目の回転量αは、α=(i/1000)×(π/3)-(π/6)で表される。配列の各要素には、ステップS43で特定した位相φを中心軸としてそれぞれの回転量αを回転させたときの各鉛直線の回転後(天頂補正後)のパノラマ画像における傾きの二乗に、先に設定しておいた各鉛直線に対する重みωを乗じた値が累積されて記憶される。特定した位相φが示す軸を中心軸として適切な回転量だけ回転させた場合、各鉛直線は天頂補正後のパノラマ画像上で上下方向に配置されるはずであるから、配列の要素の中の最小値に対応する回転量αが、ステップS45で行われる天頂補正に用いる回転量とすることができる。
制御部11は、回転量αの候補値を-π/6に設定する(S82)。制御部11は、ステップS42でパラメータを算出した鉛直線のうちの1つを取得し(S83)、取得した鉛直線について、回転軸の特定処理によって特定したパラメータ(振幅A及び位相φ)が示す正弦波に基づく関数値と、ステップS42で算出された傾きとの差異に応じた重みを特定する(S84)。
制御部11は、取得した鉛直線に対して、ステップS43で特定した回転軸φ及びステップS82で設定した回転量αに基づく天頂補正(回転)を行い(S85)、補正後の鉛直線における傾きを算出する(S86)。具体的には、制御部11は、処理対象の鉛直線の両端点に対応する画素P1,P2を特定し、位相φを回転軸として回転量αだけ回転した回転後(天頂補正後)のパノラマ画像において、端点P1,P2が移動した写像先の画素P1´,P2´の位置を算出する。なお、位相φ及び回転量αに基づく天頂補正(回転)をパノラマ画像に行う場合、パノラマ画像中の端点P1,P2の座標値を画像座標系から、撮影位置を原点としたワールド直交座標系に変換し、ワールド直交座標系において天頂補正を行う。画像座標系からワールド直交座標系に変換する場合、一旦極座標系に変換した後にワールド直交座標系に変換する。
よって、制御部11は、パノラマ画像中の端点P1,P2のそれぞれの画像座標系の座標(xI ,yI )を以下の(4)式によって極座標系の座標(r,θ,φ)に変換する。極座標系における座標値は、画像座標系における座標値と1対1で対応しているので、以下の(4)式により変換可能であり、極座標系における半径rは便宜上1とする。そして制御部11は、端点P1,P2のそれぞれの極座標系の座標(r,θ,φ)を以下の(5)式によってワールド直交座標系の座標(xW ,yW ,zW )に変換する。
図17は極座標系及びワールド直交座標系の関係を示す模式図である。ワールド直交座標系には、実空間上の鉛直上方向をYW 軸の正側、実空間上の水平面をXW 軸及びZW 軸で表す3次元の右手系の直交座標系を用いる。図17に示すように極座標系は、実空間上の鉛直上方向(YW 軸の正側)を基準とした天頂角θと、鉛直上方向から見てZW 軸の正側を基準として水平面であるXW ZW 平面内の反時計回りの方位角φと、原点0からの距離rとによって表される。よって、3次元空間中の任意の位置Pは、ワールド直交座標系の座標(xW ,yW ,zW )と極座標系の座標(r,θ,φ)とで表すことができる。なお、ワールド直交座標系の座標(xW ,yW ,zW )は、以下の(6)式によって極座標系の座標(r,θ,φ)に変換可能である。
そして制御部11は、変換したワールド直交座標系の座標(xW ,yW ,zW )に基づいて、パノラマ画像(端点P1,P2)に天頂補正(回転)処理を行う。なお、制御部11は、位相φ及び回転量αに基づく天頂補正を行う場合、まずワールド直交座標系のYW 軸を中心に時計回りにφだけ回転させて、位相φに基づく回転軸を一旦ワールド直交座標系のZW 軸に一致させ、その後、ワールド直交座標系のZW 軸を中心に回転量αだけ回転させる。そして制御部11は、最初のYW 軸を中心とした回転を戻すために、ワールド直交座標系のYW 軸を中心に反時計回りにφだけ回転させ、回転後のパノラマ画像中の端点(画素)P1´,P2´の座標値を再び、座標変換により極座標系を経由して画像座標系の座標値に戻す。これにより、位相φ及び回転量αに基づく天頂補正によって、補正前のパノラマ画像中の端点P1,P2が移動する補正後のパノラマ画像中の画素P1´,P2´の位置が算出される。なお、ワールド直交座標系のYW 軸を中心とした角度θの回転、及びZW 軸を中心とした角度θの回転は、3×3の行列を用いて、以下の(7)式のように表される。よって、回転前のワールド直交座標系の座標(xW ,yW ,zW )から、以下の(8)式により回転後の座標(xW ´,yW ´,zW ´)が得られる。また、ワールド直交座標系の座標(xW ,yW ,zW )は、上記の(6)式によって極座標系の座標(r,θ,φ)に変換され、極座標系の座標(r,θ,φ)は、以下の(9)式により画像座標系の座標(xI ,yI )に変換される。これにより、回転軸φ及び回転量αに基づく天頂補正(回転)によって、補正前のパノラマ画像中の端点P1,P2が移動する補正後のパノラマ画像中の位置P1´,P2´が算出される。
制御部11は、上述したように算出した天頂補正後のパノラマ画像中の画素P1´,P2´の座標値に基づいて、線分P1´P2´の傾きを算出する。そして制御部11は、算出した線分P1´P2´の傾きの二乗に、ステップS84で特定した重みを乗じた値を、配列αの対応する要素に加算する(S87)。制御部11は、ステップS42でパラメータを算出した全ての鉛直線に対してステップS84~S87の処理を終了したか否かを判断する(S88)。終了していないと判断した場合(S88:NO)、制御部11はステップS83の処理に戻り、未処理の鉛直線を1つ取得し(S83)、取得した鉛直線についてステップS84~S87の処理を繰り返す。これにより、配列αの1つの要素に対して、ステップS43で特定した回転軸φ及びここでの回転量αに基づく天頂補正を行った後の各鉛直線の傾きの二乗に、各鉛直線に設定された重みを乗じた値が累積される。ステップS42でパラメータを算出した全ての鉛直線に対してステップS84~S87の処理を終了したと判断した場合(S88:YES)、制御部11は、この時点の回転量αにπ/3S(Sは配列の分割数)を加算し(S89)、加算後の回転量αがπ/6以上であるか否かを判断する(S90)。
回転量αがπ/6未満であると判断した場合(S90:NO)、制御部11は、ステップS83の処理に戻る。そして制御部11は、この時点の回転量αに基づいて、ステップS42でパラメータを算出した全ての鉛直線に対してステップS83~S88の処理を繰り返す。制御部11は、回転量αの候補値をπ/3Sずつ増加させつつ、ステップS83~S88の処理を行うことにより、配列αの各要素に対して、ステップS43で特定した回転軸φ及び回転量αの各候補値に基づく天頂補正を行った後のそれぞれの鉛直線の傾きの二乗に、それぞれの鉛直線に設定された重みを乗じた値を累積できる。ステップS89で加算後の回転量αがπ/6以上であると判断した場合(S90:YES)、即ち、配列αの各要素に対して全ての鉛直線について補正後の傾きの二乗に重みωを乗じた値の累積を完了した場合、制御部11は、配列αの要素の中から最小値を特定し、最小値の要素に対応する回転量αを、ステップS45で行う天頂補正に用いる補正量(回転量α)に特定する(S91)。制御部11は、回転量の特定処理を終了し、図12の処理に戻る。
制御部11は、ステップS43で特定した回転軸の位置(位相φ)と、ステップS44で特定した回転量αとに基づく天頂補正を、ステップS23で読み出したパノラマ画像に対して行う(S45)。ここでは、制御部11は、図15中のステップS85の天頂補正と同様の処理をパノラマ画像に対して行う。具体的には、制御部11は、補正前のパノラマ画像中の各画素の画像座標系における座標(xI ,yI )を上記の(4)式によって極座標系の座標(r,θ,φ)に変換し、更に上記の(5)式によってワールド直交座標系の座標(xW ,yW ,zW )に変換する。そして制御部11は、各画素のワールド直交座標系における座標(xW ,yW ,zW )を、ワールド直交座標系のYW 軸を中心に時計回りにφ回転させて、位相φに基づく回転軸をZW 軸に一致させた後、各画素を、ワールド直交座標系のZW 軸を中心に回転角度α回転させ、回転量αに基づく天頂補正(回転)を行う。その後、制御部11は、最初のYW 軸を中心とした回転を戻すために、天頂補正後の各画素を、ワールド直交座標系のYW 軸を中心に反時計回りにφ回転させ、更に天頂補正後の各画素の座標値を、座標変換により極座標系を経由して画像座標系の座標値に戻す。これにより、位相φ及び回転量αに基づく天頂補正によって補正前のパノラマ画像中の各画素が移動する補正後のパノラマ画像中の画素位置が算出される。
そして制御部11は、補正前のパノラマ画像中の各画素の輝度を、それぞれ算出した補正後のパノラマ画像における各位置にコピーし、補正後のパノラマ画像を生成する。なお、パノラマ画像はデジタル画像であるため、上述のように算出した補正後の座標値によっては、補正後のパノラマ画像中の画素の位置を特定できない可能性がある。従って、例えばバイリニア法等の補間演算を行うことによって、補正後のパノラマ画像中の各画素の輝度を、演算によって算出された周囲の画素の輝度に基づいて算出してもよい。また、補正後のパノラマ画像中の各画素の位置から、対応する補正前のパノラマ画像中の各画素の位置を算出し、補正前後での各画素の位置(座標値)を対応付けてもよい。この場合、算出した補正前の画素位置の輝度を、補正後の画素位置にコピーすることにより、補正後のパノラマ画像が得られる。
制御部11は、ステップS45と同様の天頂補正を、ステップS30で取得した8本の鉛直線に対して行い(S46)、補正前のパノラマ画像中の各鉛直線の両端点が、天頂補正によって移動する天頂補正後のパノラマ画像中の画素位置を算出する。その後、制御部11は天頂補正処理を終了し、図9の処理に戻る。上述した天頂補正により、図16Aに示すように歪んだパノラマ画像が、図16Bに示すようなパノラマ画像に補正される。また、図11Bに示すように設定された8本の鉛直線L0~L7は、図16Bに示すパノラマ画像ではそれぞれ上下方向に伸びる状態となる。
撮影画像及び鉛直線に対して天頂補正を行った場合、制御部11(推定部)は、天頂補正後の撮影画像に基づいて、天頂補正後の鉛直線を高さとする撮影空間の形状を推定する(S32)。ここでは制御部11は8角柱の形状を推定する。図18は撮影空間の推定処理手順の一例を示すフローチャート、図19及び図20は撮影空間の推定処理の説明図である。図18に示す撮影空間の推定処理において、制御部11は、ステップS31の天頂補正処理によって得られた天頂補正後の撮影画像と、天頂補正後の鉛直線とを取得する(S101)。具体的には、制御部11は、天頂補正後の撮影画像と、天頂補正後の各鉛直線における両端点の撮影画像中の位置(画像座標系の座標値)とを取得する。なお、これらの情報は、天頂補正を行った後に記憶部12に記憶されている。
図19Aは天頂補正後の撮影画像及び8本の鉛直線L0~L7を示している。図19A中の一点破線は撮影画像の中央ラインを示しており、中央ラインには、撮影位置と同じ高さにある被写体が写っている。即ち、撮影画像中の各鉛直線L0~L7において、中央ラインから上端までの長さ(画像上での長さ)は、撮影位置から天井までの距離(実空間での距離)に相当し、中央ラインから下端までの長さは、撮影位置から床面までの距離に相当する。従って、制御部11は、1つの鉛直線における中央ラインから上端までの長さと、中央ラインから下端までの長さとの比率に基づいて、撮影位置の高さを算出する(S102)。
例えば制御部11は、図19Aに示す鉛直線L0に基づいて撮影位置の高さを算出する。具体的には、制御部11は、ステップS101で取得した鉛直線L0の上下端の画像座標系の座標値に基づいて、鉛直線L0の長さLと、中央ラインから鉛直線L0の上端までの長さLCと、中央ラインから鉛直線L0の下端までの長さLFとを算出する。図19Bは実空間内で鉛直線L0に対応する部屋の隅(鉛直方向に伸びる隅)と撮影位置との関係を示しており、当該隅の長さは、床面から天井までの部屋の高さHとなり、当該隅において、撮影位置の高さから天井までの距離HCと、撮影位置の高さから床面までの距離HFとの比率は、図19Aに示す長さLCと長さLFとの比率に一致する。従って、制御部11(撮影位置算出部)は、画像上での長さLCと長さLFとの比率に基づいて、撮影空間の高さHを、撮影位置から天井までの距離と、撮影位置から床面までの距離とに按分し、撮影位置の高さを算出する。具体的には、制御部11は、以下の(10)式を用いて、撮影位置から天井までの距離HCと、撮影位置から床面までの距離HFとを算出する。ここでの高さHは、図9中のステップS24で入力された撮影対象の部屋の高さである。なお、制御部11は、撮影位置から天井までの距離HCと、撮影位置から床面までの距離HFとのいずれか1つを算出すればよい。
次に制御部11は、撮影位置から各鉛直線L0~L7までの実空間上での距離を算出する。図19Bに示すように、実空間上での撮影位置から鉛直線(部屋の隅)までの距離dは、撮影位置から天井までの距離HCと、撮影位置を含む水平方向を基準として撮影位置と鉛直線の上端とを結ぶ線分の仰角θCとに基づいて、例えば以下の(11)式を用いて算出できる。なお、撮影位置と鉛直線の上端とを結ぶ線分の仰角θCは、図6Bに示すように正距円筒図法で表されたパノラマ画像において、縦軸で示す天頂角θから求められる。よって、制御部11は、ステップS101で取得した天頂補正後の撮影画像から、当該鉛直線の上端に対応する画素の画像座標系の座標(xI ,yI )を抽出し、上記の(4)式によって極座標系の座標(r,θ,φ)に変換することによって、当該鉛直線の上端に対応する画素の天頂角θを取得し、θC=π/2-θを計算することによって仰角θCを取得できる。なお、撮影位置から鉛直線までの距離dは、撮影位置から床面までの距離HFと、撮影位置を含む水平方向を基準として撮影位置と鉛直線の下端とを結ぶ線分の俯角θFとに基づいて同様に算出することができる。
制御部11は、撮影画像中の1つの鉛直線の情報として、上端位置の画素又は下端位置の画素の天頂角θを取得する(S103)。具体的には、制御部11は、1つの鉛直線の上端位置の画素又は下端位置の画素の画像座標系の座標(xI ,yI )を抽出し、上記の(4)式によって極座標系の座標(r,θ,φ)に変換し、上端位置の画素又は下端位置の画素の天頂角θを取得する。そして制御部11(距離算出部)は、算出した天頂角θと、撮影位置の高さとに基づいて、撮影位置から当該鉛直線までの距離を、上記の(11)式によって算出する(S104)。
制御部11は、撮影画像中の鉛直線のうちで、上述した距離の算出処理が行われていない鉛直線(未処理の鉛直線)があるか否かを判断する(S105)。未処理の鉛直線があると判断した場合(S105:YES)、制御部11はステップS103の処理に戻り、未処理の鉛直線についてステップS103~S104の処理を繰り返す。これにより、撮影画像中の各鉛直線について、撮影位置からの距離dを算出することができる。未処理の鉛直線がないと判断した場合(S105:NO)、制御部11(平面推定部)は、撮影空間の平面視での形状(ここでは8角形の形状)を推定する(S106)。撮影空間の平面視での形状は、図20Aに示すように、撮影位置を原点としたワールド直交座標系において実空間上の鉛直方向を示すYW 軸の正側から撮影空間を見たXW ZW 平面で表すことができる。YW 軸の正側から各鉛直線を見た場合、それぞれの鉛直線は点と見なすことができ、図20Aに示すように各鉛直線L0~L7のそれぞれは頂点P0~P7で表すことができる。よって、制御部11は、各鉛直線L0~L7の方位角φ0~φ7と、撮影位置から各鉛直線L0~L7までの距離d0~d7とに基づいて、各頂点P0~P7をXW ZW 平面上にプロットすることにより撮影空間の平面形状を推定する。なお、図20Bに示すように撮影画像中の各鉛直線L0~L7において、例えば画像の右端(カメラ30の背面方向)を基準とする方位角φ0~φ7は既知である。
制御部11は、XW ZW 平面上にプロットした各頂点P0~P7の座標値(ワールド直交座標系の座標値)を算出することによって、撮影空間の平面形状(XW ZW 平面での断面)を推定する。具体的には、制御部11は、各鉛直線L0~L7の方位角φ0~φ7と、撮影位置から各鉛直線L0~L7までの距離d0~d7とに基づいて、以下の(12)式に従って、各頂点P0~P7のワールド直交座標系の座標値を算出する。なお、ここでは、(12)式中のkは0~7となる。
なお、各鉛直線L0~L7は厳密には画像の上下方向に配置されていない場合があるので、例えば各鉛直線L0~L7の両端点のX座標値(画像座標系のX座標値)の平均値から、各鉛直線L0~L7の方位角φ0 ~φ7 を特定(算出)してもよい。具体的には、制御部11は、天頂補正後の各鉛直線について、鉛直線の両端点のX座標値(画像座標系のX座標値xI )の平均値を算出し、算出したX座標値の平均値を上記の(4)式によって極座標系の座標値φに変換する。制御部11は、鉛直線L0~L7のそれぞれについて極座標系の座標値φ0 ~φ7 を算出することにより、XW ZW 平面において、各鉛直線L0~L7に対応する頂点P0~P7についてZW 軸の正方向を基準とした方位角φ0 ~φ7 を特定できる。制御部11は、撮影空間の形状を推定した後、図9の処理に戻る。
次に制御部11は、ステップS32の撮影空間の形状推定で算出した8角柱の16頂点に対するワールド直交座標系の座標(XW ,YW ,ZW )に基づいて、8角柱を構成する10面について、各面の頂点の座標値と各頂点の接続関係とを規定するポリゴンデータを生成する(S33)。なお、8角柱を構成する10面において、8個の側面は矩形であるので、制御部11は、各側面の4頂点の座標値と各頂点の接続関係とを規定するポリゴンデータを生成する。天井面及び床面は凸字状の8角形であるので、天井面及び床面については、制御部11は、図21Bに示すように8角形を包含する外接矩形の4頂点の座標値と各頂点の接続関係とを規定するポリゴンデータを生成する。
図21はポリゴンデータの説明図である。図21Aは、ワールド直交座標系における8角柱を示しており、図21Bは、撮影空間をワールド直交座標系のYW 軸正側から見た平面図を示している。制御部11は、図21Cに示す頂点データ及びポリゴンデータを生成する。まず制御部11(座標値取得部)は、図21Aに示すように、推定した8角柱の各頂点にそれぞれ頂点ID(V0~V15)を割り当て、各頂点のワールド直交座標系の座標(XW ,YW ,ZW )を取得して、頂点IDに対応付けて記憶する。また制御部11は、図21Bに示すように天井面を包含する外接矩形を特定し、特定した外接矩形の4頂点にそれぞれ頂点ID(V16~V19)を割り当て、各頂点のワールド直交座標系の座標を頂点IDに対応付けて記憶する。同様に制御部11は、床面を包含する外接矩形を特定し、特定した外接矩形の4頂点にそれぞれ頂点IDを割り当て、各頂点のワールド直交座標系の座標を頂点IDに対応付けて記憶する。なお、本実施形態では、天井面及び床面が凸字状であるので、図21Bに示すように、天井面及び床面の外接矩形の4頂点のうちの2頂点(図21Bに示す天井面では頂点IDがV18,V19の2頂点)は、8角柱の頂点と共通となる。よって、本実施形態では、制御部11は、8角柱の16頂点に加えて、天井面の外接矩形の4頂点のうちで8角柱の頂点と共通ではない2頂点(図21Bでは頂点IDがV16,V17の2頂点)と、床面の外接矩形の4頂点のうちで8角柱の頂点と共通ではない2頂点とに頂点IDを割り当て、各頂点のワールド直交座標系の座標を頂点IDに対応付けて記憶する。なお、天井面の外接矩形において8角柱の頂点と共通ではない2頂点の座標値は、天井面上の他の頂点の座標から算出することができ、床面の外接矩形において8角柱の頂点と共通ではない2頂点の座標値は、床面上の他の頂点の座標から算出することができる。これにより、図21Cに示すような頂点データが生成される。次に制御部11は、8角柱の各面にそれぞれポリゴンID(Po0~Po9)を割り当て、ポリゴンIDに対応付けて、各面の4頂点の頂点ID(第1頂点ID~第4頂点ID)を対応付けて記憶する。なお、本実施形態では、天井面及び床面のポリゴンを、8角形の天井面及び床面を包含する外接矩形状とするが、8角形のポリゴンでポリゴンデータを生成してもよい。制御部11は、ポリゴンIDに対応付けて、後述するテクスチャ画像に割り当てられるテクスチャIDを記憶する。これにより、図21Cに示すようなポリゴンデータが生成される。
次に制御部11(テクスチャ画像生成部)は、8角柱の各面(各ポリゴン)にパノラマ画像の各画素を割り当ててテクスチャ画像(テクスチャ画像データ)を生成する(S34)。図22及び図23はテクスチャ画像の説明図である。図22Aは、ステップS31で天頂補正が行われた撮影画像を示す。制御部11は、図22Aに示す撮影画像(パノラマ画像)を、各ポリゴンの頂点の座標値に基づいて各ポリゴンに写像変換することにより、10面分のテクスチャ画像を生成する。なお、本実施形態では、それぞれのテクスチャ画像を正方形とするが、長方形のテクスチャ画像であってもよい。また、本実施形態では、側面の8個のテクスチャ画像は同じ大きさとするが、撮影空間の各側面の大きさに応じてテクスチャ画像の大きさを異ならせてもよい。
制御部11はまず、処理対象のポリゴンについて、頂点データ及びポリゴンデータから、4頂点のワールド直交座標系の座標値を取得する。次に制御部11は、4頂点の座標値に基づいて、このポリゴンを縦方向及び横方向のそれぞれに均等に分割し、例えば1024画素×1024画素を設定し、各画素の座標値(ワールド直交座標系)を算出する。次に制御部11は、各画素のワールド直交座標系の座標値(XW ,YW ,ZW )をそれぞれ、上記の(6)式を用いて極座標系の座標値(θ,φ)に変換し、極座標系の座標値(θ,φ)をそれぞれ、上記の(9)式を用いて画像座標系の座標値(XI ,YI )に変換し、得られた撮影画像中の各座標値(XI ,YI )の画素の画素値(輝度値)をポリゴンの各画素にコピーする。これにより、1つのポリゴンに対するテクスチャ画像が生成され、生成されたテクスチャ画像は、ポリゴンデータに記憶されたテクスチャIDに対応付けて記憶部12に記憶される。例えば図22B中に太線矩形で示す手前側の側面(ポリゴン)内の各画素が、図22A中に太線の閉領域で示す撮影画像中の領域内の各画素に対応する場合、図22A中の太線閉領域内の各画素をコピーすることによって、図22Cに示すようなテクスチャ画像が生成できる。
なお、パノラマ画像はデジタル画像であるため、上述のように算出した画像座標系の座標値によっては、パノラマ画像中の画素の位置を特定できない可能性がある。この場合、例えばバイリニア法、ニアレストネイバー法等の補間演算を行うことにより、算出した座標値の周囲の画素の画素値に基づいて、ポリゴンの各画素の輝度を算出してもよい。また、撮影画像中の各画素の位置から、対応するポリゴン中の各画素の位置を算出し、撮影画像中の各画素の画素値を、算出したポリゴン中の各画素にコピーしてもよい。制御部11は、全てのポリゴンについて上述した処理を行うことにより、8角柱の10面分のテクスチャ画像を生成する。図23は10面分のテクスチャ画像を示しており、上側に2列に並ぶ8つのテクスチャ画像は撮影空間の8個の側面に対応しており、左下側のテクスチャ画像は撮影空間の下面(床面)に対応しており、右下側のテクスチャ画像は撮影空間の上面(天井面)に対応している。
なお、天井面及び床面のポリゴンについては、例えば図22Dに示すように天井面及び床面の8角形の外側の領域、図22Dではハッチングで示す領域に対しては、例えば、この領域と接続している側面の画像の画素が割り当てられる。なお、この領域には、白画素又は黒画素等の任意の画素値が割り当てられてもよい。
10個のテクスチャ画像を生成した後、制御部11は、ステップS33で生成した頂点データ及びポリゴンデータと、ステップS34で生成した10個のテクスチャ画像とを閲覧用画像として、記憶部12の閲覧用画像DB12bに記憶する(S35)。なお、制御部11は、生成した10個のテクスチャ画像を表示部15又は登録用端末20の表示部25に表示し、入力部14又は24を介してサーバ10又は登録用端末20のユーザからの閲覧用画像の登録指示を受け付けた後に、閲覧用画像DB12bに記憶してもよい。閲覧用画像は、OBJ形式等の3Dモデルの既存フォーマットのファイルデータとして記憶することができる。
以上の処理により、カメラ30で撮影された撮影画像から、閲覧用端末40のユーザ(閲覧者)に提供するための閲覧用画像を生成して記憶部12(閲覧用画像DB12b)に登録することができる。また本実施形態では、撮影画像に対して指定された8本の鉛直線L0~L7を、撮影空間の多角形状を推定する処理だけでなく、撮影画像に行う天頂補正でも利用するので、効率の良い処理が可能である。なお、本実施形態では、サーバ10が、閲覧用画像を記憶しており、閲覧用端末40からの要求に応じて、閲覧用画像を閲覧用端末40に提供する。しかし、サーバ10とは異なる画像提供サーバを設け、画像提供サーバが、サーバ10から閲覧用画像を取得しておき、閲覧用端末40からの要求に応じて、閲覧用画像を閲覧用端末40に提供するように構成することもできる。またサーバ10は、閲覧用画像を生成した後は、閲覧用画像の生成前の撮影画像を撮影画像DB12aから消去してもよい。
次に、サーバ10の閲覧用画像DB12bに登録された閲覧用画像に基づいて、カメラ30で撮影したパノラマ画像を、閲覧用端末40で再生(表示)する際に、サーバ10及び閲覧用端末40が行う処理について説明する。図24は、パノラマ画像の再生処理手順の一例を示すフローチャート、図25は、パノラマ画像の表示画面例を示す模式図である。図24では左側に閲覧用端末40が行う処理を、右側にサーバ10が行う処理をそれぞれ示す。
閲覧者は、サーバ10に登録されているいずれかのパノラマ画像を閲覧したい場合、例えば閲覧用端末40のウェブブラウザ(図示せず)を用いてサーバ10にアクセスし、サーバ10が提供するウェブサイトを介して所望のパノラマ画像(閲覧用画像)の送信を要求する。なお、サーバ10はウェブサーバとしての機能を有しており、パノラマ画像(閲覧用画像)の要求を受け付けるためのウェブサイトをネットワークN経由で公開している。よって、閲覧用端末40の制御部41は、入力部44を介した閲覧者からの指示に従って、サーバ10が提供するウェブサイトを介して、パノラマ画像(閲覧用画像)を要求する(S111)。なお、制御部41は、ウェブブラウザによってサーバ10にアクセスするほかに、サーバ10が提供するウェブサイトにアクセスするためのアプリケーションプログラムを用いてもよい。
サーバ10の制御部11は、閲覧用端末40からいずれかのパノラマ画像を要求された場合、要求されたパノラマ画像(撮影画像)から生成された閲覧用画像を閲覧用画像DB12bから選択して読み出す(S112)。なお、閲覧用端末40の制御部41は、閲覧者が閲覧したいパノラマ画像を撮影した部屋の指定を受け付け、指定された部屋の情報(撮影位置情報)に基づいてパノラマ画像をサーバ10に要求してもよい。この場合、サーバ10の制御部11は、指定された部屋の情報(撮影位置情報)に対応付けて閲覧用画像DB12bに記憶してある閲覧用画像を読み出せばよい。なお、閲覧用画像は、図21Cに示す頂点データ及びポリゴンデータと、図23に示すテクスチャ画像とを含む。
制御部11は、閲覧用画像DB12bから読み出した閲覧用画像と、閲覧用画像を再生(表示)するための閲覧プログラムとを通信部13にて閲覧用端末40へ送信する(S113)。これにより、制御部11(送信部)は、撮影空間の形状を示す情報(頂点データ及びポリゴンデータ)とテクスチャ画像とを外部装置へ送信できる。閲覧プログラムは例えばJavaScriptとWebGLとで記述されており、予め記憶部12に記憶してある。閲覧用端末40の制御部41は、サーバ10が送信した閲覧用画像及び閲覧プログラムを通信部43にて受信し、記憶部42に記憶する(S114)。制御部41は、閲覧プログラムを実行することにより、閲覧用画像に基づいて、撮影空間内の仮想位置から見た状態の3Dモデルを生成して表示部45に表示することができる。
例えば制御部41は、予め設定されたデフォルトの仮想位置及び視線方向(向き)を読み出す(S115)。デフォルトの仮想位置及び視線方向は例えば閲覧プログラムに設定されている。そして制御部41は、閲覧プログラムによるレンダリング機能(テクスチャマッピング)を利用して、閲覧用画像(頂点データ、ポリゴンデータ、テクスチャ画像)に基づいて、デフォルトの仮想位置から、デフォルトの視線方向を見た状態の3Dモデルを生成する(S116)。具体的には、制御部41(生成部)は、頂点データ及びポリゴンデータに基づいて、撮影空間の8角柱の形状を3次元(3D)の仮想空間上に生成し、生成した8角柱の各面にテクスチャ画像の各画素をマッピングして3次元の仮想画像(3Dモデル)を生成する。なお、制御部41は、テクスチャ画像の各画素を、仮想位置での各画素位置に対応付けることによって、デフォルトの仮想位置からデフォルトの視線方向を見た状態の3Dモデルを生成する。制御部41は、3Dモデルを生成した場合、生成した3Dモデルを表示部45に表示する(S117)。
図25は3Dモデルの画面例を示しており、制御部41は、3Dモデルと、視線変更ボタン441及び移動ボタン442とを表示する。視線変更ボタン441は、上視線ボタン、下視線ボタン、左視線ボタン及び右視線ボタンの4つのボタンを有しており、それぞれのボタンに対する操作を受け付けた場合、制御部41は、視線方向を上向き、下向き、左向き又は右向きに変更する指示を受け付ける。移動ボタン442は、前ボタン及び後ボタンの2つのボタンを有しており、それぞれのボタンに対する操作を受け付けた場合、制御部41は、仮想位置を前方向又は後方向に変更する指示を受け付ける。なお、移動ボタン442は左方向又は右方向への移動を指示するためのボタンを有していてもよい。閲覧者は、入力部44を介して視線変更ボタン441及び移動ボタン442のいずれかに対する操作を行うことにより、視線方向の変更及び仮想位置の変更を指示することができる。
制御部41は、入力部44を介して移動ボタン442又は視線変更ボタン441のいずれかに対する操作を受け付けることにより、仮想位置又は視線方向の変更指示を受け付ける。よって、制御部41は、移動ボタン442又は視線変更ボタン441に対する操作によって、仮想位置又は視線方向の変更指示を受け付けたか否かを判断する(S118)。制御部41は、仮想視点又は視線方向の変更指示を受け付けたと判断した場合(S118:YES)、受け付けた変更指示に従って、仮想位置又は視線方向を変更する(S119)。例えば移動ボタン442の前ボタン又は後ボタンが操作された場合、制御部41は、現在の仮想位置を現在の視線方向に対して前方向又は後方向に所定距離だけ移動させた位置を仮想位置に設定する。また視線変更ボタン441の上視線ボタン、下視線ボタン、左視線ボタン又は右視線ボタンが操作された場合、制御部41は、現在の視線方向を上方向、下方向、左方向又は右方向に所定角度だけ変更させた方向を視線方向に設定する。その後、制御部41はステップS116の処理に戻り、ステップS116~S117の処理を行う。これにより、変更後の仮想位置から変更後の視線方向を見た状態の3Dモデルが生成されて表示部45に表示される。
制御部41は、仮想視点又は視線方向の変更指示を受け付けていないと判断した場合(S118:NO)、入力部44を介してパノラマ画像の閲覧処理の終了指示を受け付けたか否かを判断する(S120)。例えばサーバ10(ウェブサイト)へのアクセスの終了指示を入力部44にて受け付けた場合、制御部41は、パノラマ画像の閲覧処理を終了する指示を受け付けたと判断する。パノラマ画像の閲覧処理の終了指示を受け付けていないと判断した場合(S120:NO)、制御部41はステップS118の処理に戻る。制御部41は、視線変更ボタン441又は移動ボタン442に対する閲覧者からの操作を入力部44にて受け付ける都度、ステップS119、S116~S117の処理を行うことにより、3Dモデルを更新して表示する。パノラマ画像の閲覧処理の終了指示を受け付けたと判断した場合(S120:YES)、制御部41は処理を終了する。上述した処理により、カメラ30で撮影された実写データに基づいて、撮影空間内の任意の視点から見た画像(3Dモデル)を閲覧者に提供することができる。よって、閲覧者は、撮影空間の部屋の中を仮想的に移動しながら、任意の方向に視線を変えることができ、部屋の広さ、家具の配置、窓の外の景色等を感覚的に把握することができる。
本実施形態では、カメラ30で撮影したパノラマ画像に対して、撮影空間の鉛直方向に伸びる隅を示す鉛直線を入力することで、天頂補正を行うことができ、また、閲覧用端末40で再生可能な閲覧用画像を生成することができる。よって、撮影空間の平面視での形状に関わらず、天頂補正を適切に行うことができる。また、撮影位置から各隅までの距離及び方向を算出することにより、撮影空間の平面視での形状を推定するので、どのような形状であっても撮影空間の平面形状を適切に推定することができる。よって、適切に推定された撮影空間の形状に基づいて、適切なテクスチャ画像を生成することができる。更に、適切に生成されたテクスチャ画像に基づいて、任意の位置から見た状態の3Dモデルを適切に生成することができる。また本実施形態では、閲覧用端末40が、サーバ10で生成された閲覧用画像(頂点データ及びポリゴンデータ、並びにテクスチャ画像)をダウンロードすることによって、閲覧用端末40で再生処理が行われる。よって、サーバ10は、登録用端末20を介して登録されたパノラマ画像(撮影画像)から閲覧用の画像を生成し、閲覧用の画像を閲覧用端末40に提供すればよい。なお、サーバ10が閲覧用画像からテクスチャマッピングによって3Dモデルを生成し、生成した3Dモデルを閲覧用端末40へ送信してもよい。この場合、閲覧用端末40は、サーバ10から受信した3Dモデルを表示部45に表示すればよい。
本実施形態では、閲覧用端末40として、HMD型の情報処理装置を使用してもよく、この場合、コンピュータ等の操作に不慣れなユーザであっても容易に様々な視点から室内を見た状態の画像を確認できる画像処理システム100を提供できる。本実施形態によると、市販の全天球カメラ等を用いて撮影したJPEG(Joint Photographic Experts Group)形式等の汎用の形式の画像を使用して、様々な視点から室内を見た状態の画像を提供できる画像処理システム100を提供できる。なお、カメラ30は、全天球カメラに限定しない。たとえば、半球型の範囲を撮影可能なカメラであっても、通常の平面画像撮影用のカメラであってもよい。
(実施形態2)
実空間上の鉛直方向に存在する撮影空間の隅を示す線分(鉛直線)の上端又は下端が、撮影空間内に配置された什器によって写っていない撮影画像に基づいて閲覧用画像を生成する画像処理システム100について説明する。本実施形態の画像処理システム100は、図1に示す実施形態1の画像処理システム100と同様の装置を用いて実現されるので、構成についての説明は省略する。本実施形態では、上述した実施形態1の画像処理システム100において各装置が行う処理とは異なる内容についてのみ説明する。
実空間上の鉛直方向に存在する撮影空間の隅を示す線分(鉛直線)の上端又は下端が、撮影空間内に配置された什器によって写っていない撮影画像に基づいて閲覧用画像を生成する画像処理システム100について説明する。本実施形態の画像処理システム100は、図1に示す実施形態1の画像処理システム100と同様の装置を用いて実現されるので、構成についての説明は省略する。本実施形態では、上述した実施形態1の画像処理システム100において各装置が行う処理とは異なる内容についてのみ説明する。
図26は、実施形態2の閲覧用画像の生成処理手順の一例を示すフローチャート、図27は、実施形態2の閲覧用画像の生成処理の説明図、図28は、実施形態2の撮影空間の推定処理手順の一例を示すフローチャートである。図26に示す処理は、図9に示す処理において、ステップS28,S29の間にステップS131~S132を追加し、ステップS30の代わりにステップS133を追加したものである。図9と同じステップについては説明を省略する。また図26では、図9中のステップS33~S35の図示を省略している。図28に示す撮影空間の推定処理は、図26中のステップS32の処理である。図28に示す処理は、図18に示す処理において、ステップS106の後にステップS141~S142を追加したものである。
本実施形態のサーバ10の制御部11は、図9中のステップS21~S28と同様の処理を行う。これにより、撮影画像において、撮影空間の8隅に対応する8本の鉛直線L0~L7が設定される。なお、本実施形態では、いずれかの鉛直線の上端又は下端が、室内に配置された什器によって撮影画像中に写っていない場合、写っていない上端又は下端を不可視点に設定する。図27は、図10Bに示した上下方向の8本の線分が、撮影画像中の8本の鉛直線L0~L7に移動され、鉛直線L5の下端が不可視点に設定された状態を示している。図27に示す画面は、不可視点の設定を指示するための不可視点設定ボタンを有しており、例えば不可視点設定ボタンを操作した後に、撮影画像中のいずれかの鉛直線の端点(上端又は下端)を選択操作することにより、選択された端点を不可視点に設定する指示を行うことができる。なお、図27では、不可視点に設定した鉛直線の端点が、当該端点の正確な位置に近い箇所に移動されているが、不可視点に設定された端点の位置は任意の位置でよい。
制御部11は、ステップS28の処理後、撮影画像上のいずれかの鉛直線の上端又は下端に対して不可視点に設定する指示を受け付ける(S131)。そして制御部11は、画面中の撮影画像において、不可視点に設定指示された鉛直線の上端又は下端の位置に、不可視点を示すマークを表示する(S132)。図27に示す例では、白い四角のマークによって不可視点の位置が示されている。その後、制御部11は、図27に示す画面中のOKボタンが操作されたと判断した場合(S29:YES)、移動後の鉛直線を取得する(S133)。ここでは制御部11は、8本の鉛直線L0~L7において、移動後の位置を指定された端点(上下端点)の画像座標系の座標値を取得し、不可視点に設定された端点については不可視点であることを示すラベル(移動指示できず位置が指定できない点であることを示す情報)を取得する。
その後、制御部11は、ステップS31以降の処理を実行する。本実施形態では、撮影画像中に写っていない鉛直線L0~L7の上端又は下端が不可視点に設定されているので、ステップS31において制御部11は、ステップS133で上端及び下端の両方の位置が指定された鉛直線を用いて天頂補正を行う。室内において什器は床面に設置されていることが多く、鉛直線の上端(天井側の端点)は撮影画像に移っている可視点である可能性が高く、また、室内の複数(ここでは8本)の鉛直線において、上下端の両方の位置が指定される鉛直線は複数あると考えられる。従って、制御部11は、上下端の両方の位置が指定された複数の鉛直線に基づいて撮影画像の天頂補正を行うことができる。
具体的には、図12に示す処理において、制御部11は、ステップS41で、上下端の両方の位置が指定された鉛直線の両端の座標値を取得し、ステップS42で、取得した鉛直線の両端の座標値に基づいて、各鉛直線を表すパラメータを算出する。そして制御部11は、算出した複数の鉛直線のパラメータ(θ,ρ)に基づいて、ステップS43~S44の処理を実行し、得られた回転軸の位置(位相φ)と回転量αとに基づく天頂補正を、撮影画像及び鉛直線に対して行う(S45,S46)。
また制御部11は、図26中のステップS32において、図28に示す処理を実行する。図28に示す処理において、制御部11は、図18中のステップS101~S106と同様の処理を行う。なお、ステップS101において、制御部11は、天頂補正後の撮影画像と、天頂補正後の各鉛直線における上下端の画像座標系の座標値とを取得する。ここでは、制御部11は、不可視点に設定されている端点については、不可視点を示すラベルを対応付けておく。またステップS102において、制御部11は、ステップS101で上下端の座標値を取得した1つの鉛直線における中央ラインから上端までの長さと、中央ラインから下端までの長さとの比率に基づいて、撮影位置の高さを算出する。またステップS103において、制御部11は、1つの鉛直線の情報として、不可視点に設定されていない端点(上端又は下端)の画素の天頂角θを取得する。具体的には、制御部11は、取得した端点の画素の画像座標系の座標(xI ,yI )から、当該端点の画素の天頂角θを算出する。更に、ステップS104において、制御部11は、算出した天頂角θと、ステップS102で算出した撮影位置の高さとに基づいて、撮影位置から当該鉛直線までの距離を算出する。
ステップS106で撮影空間の平面形状を推定した後、制御部11は、ステップS101で取得した各鉛直線の上下端の情報(座標値又は不可視点を示すラベル)に基づいて、不可視点に設定された端点があるか否かを判断する(S141)。不可視点に設定された端点があると判断した場合(S141:YES)、制御部11は、不可視点に設定された端点の座標値を算出する(S142)。図27中の鉛直線L5の下端のワールド直交座標系のXw座標値及びZw座標値は、図20Aに示すように鉛直線L5の上端のワールド直交座標系のXw座標値及びZw座標値と同じである。また、鉛直線L5の下端のワールド直交座標系のYw座標値は、他の鉛直線L0~L4,L6~L7の下端のワールド直交座標系のYw座標値と同じである。従って、制御部11(座標値算出部)は、不可視点に設定された端点のワールド直交座標系の座標値を、当該端点の近傍の他の端点の座標値から算出することができ、算出した座標値を記憶部12に記憶する。具体的には、制御部11は、不可視点に設定された端点に対して鉛直方向に位置する他の端点の座標値と、水平方向に位置する他の端点の座標値とに基づいて、不可視点に設定された端点の座標値を算出することができる。
不可視点に設定された端点がないと判断した場合(S141:NO)、制御部11はステップS142の処理をスキップし、図26の処理に戻る。その後、制御部11は、図28に示す処理によって推定した撮影空間の形状に基づいて、ステップS33~S35の処理を実行する。これにより、推定した撮影空間の形状、具体的には8角柱を示す頂点データ及びポリゴンデータと、10面分のテクスチャ画像とを生成して記憶することができる。
上述した処理により、本実施形態においても、カメラ30で撮影された撮影画像から閲覧用画像を生成することができる。また本実施形態では、撮影空間の隅(鉛直線)の上端又は下端が、室内に配置された什器によって撮影画像中に写っていない場合であっても、この上端又は下端の座標値を、撮影画像中に写っている他の端点(他の鉛直線の上端又は下端)の座標値に基づいて算出することができるので、撮影空間の多角形状を精度よく推定することができる。また、本実施形態においても、サーバ10は、閲覧用画像DB12bに登録してある閲覧用画像を、閲覧用端末40からの要求に応じて提供することができる。また、閲覧用端末40が、閲覧用画像に基づいて、撮影空間内の仮想位置から見た状態の3Dモデルを生成して表示部45に表示することができる。
(実施形態3)
サーバ10で生成された閲覧用画像を、サーバ10とは別のサーバ(閲覧用画像提供サーバ)で閲覧用端末40に提供する画像処理システム100について説明する。本実施形態の画像処理システム100は、実施形態1のサーバ10が行っていた処理のうち、閲覧用画像を閲覧用端末40に提供する処理を別のサーバが行うこと以外は、実施形態1と同様である。図29は、実施形態3の画像処理システム100の構成例を示す模式図である。本実施形態の画像処理システム100は、実施形態1の画像処理システム100と同様の装置に加えて、閲覧用画像をネットワークN経由で提供する閲覧用画像提供サーバ50を備える。閲覧用画像提供サーバ50は、サーバ10と同様の構成を有しており、ネットワークN経由で他の装置との間で情報の送受信を行う。
サーバ10で生成された閲覧用画像を、サーバ10とは別のサーバ(閲覧用画像提供サーバ)で閲覧用端末40に提供する画像処理システム100について説明する。本実施形態の画像処理システム100は、実施形態1のサーバ10が行っていた処理のうち、閲覧用画像を閲覧用端末40に提供する処理を別のサーバが行うこと以外は、実施形態1と同様である。図29は、実施形態3の画像処理システム100の構成例を示す模式図である。本実施形態の画像処理システム100は、実施形態1の画像処理システム100と同様の装置に加えて、閲覧用画像をネットワークN経由で提供する閲覧用画像提供サーバ50を備える。閲覧用画像提供サーバ50は、サーバ10と同様の構成を有しており、ネットワークN経由で他の装置との間で情報の送受信を行う。
本実施形態の画像処理システム100では、サーバ10は、図7に示す撮影画像の登録処理を行い、登録用端末20を介して取得した撮影画像(パノラマ画像)を記憶部12(撮影画像DB12a)に登録する。またサーバ10は、図9,12-15,18に示す閲覧用画像の生成処理を行い、登録された撮影画像のそれぞれから閲覧用画像を生成する。ここで、本実施形態のサーバ10は、撮影画像から生成した閲覧用画像を、撮影場所の情報(撮影位置情報)に対応付けて閲覧用画像提供サーバ50へ送信する。具体的には、サーバ10は、図4Bに示すような閲覧用画像DB12bを閲覧用画像提供サーバ50に送信し、閲覧用画像提供サーバ50が、受信した閲覧用画像DB12bを記憶部に記憶する。そして、本実施形態では、閲覧用画像提供サーバ50が、図24に示す閲覧用画像の提供処理を行い、閲覧用端末40からの要求に応じて閲覧用画像を閲覧用端末40に提供する。
本実施形態では、実施形態1のサーバ10が行っていた処理を分散させることにより、サーバ10による処理負担を軽減できる。また、例えば不動産物件を撮影したパノラマ画像を提供対象(閲覧対象)とする場合、地域毎に閲覧用画像提供サーバ50を設け、それぞれの閲覧用画像提供サーバ50が、各地域内の物件の閲覧用画像を管理するように構成してもよい。この場合、例えば不動産会社の従業員が撮影を行い、得られたパノラマ画像をサーバ10に登録し、サーバ10は、登録されたパノラマ画像から閲覧用画像を生成し、生成した閲覧用画像を、撮影対象の物件の地域に対応する閲覧用画像提供サーバ50に登録する。このような構成とした場合、地域毎の閲覧用画像提供サーバ50にて各物件の閲覧用画像を管理できる。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
10 サーバ
11 制御部
12 記憶部
13 通信部
20 登録用端末
21 制御部
22 記憶部
23 通信部
30 カメラ
40 閲覧用端末
41 制御部
42 記憶部
43 通信部
100 画像処理システム
12a 撮影画像DB
12b 閲覧用画像DB
11 制御部
12 記憶部
13 通信部
20 登録用端末
21 制御部
22 記憶部
23 通信部
30 カメラ
40 閲覧用端末
41 制御部
42 記憶部
43 通信部
100 画像処理システム
12a 撮影画像DB
12b 閲覧用画像DB
Claims (15)
- 閉鎖された実空間内で撮影されたパノラマ画像を取得する画像取得部と、
前記実空間の高さ及び平面視での多角形の角数を取得する空間情報取得部と、
前記パノラマ画像上で、前記実空間の鉛直方向の辺に対応する位置を特定し、取得した前記実空間の高さを用いて前記実空間の多角柱の形状を推定する推定部と、
推定した前記多角柱を構成する3Dモデルを生成する生成部と
を備える画像処理装置。 - 前記推定部は、画像認識により前記実空間の鉛直方向の辺に対応する位置を特定する
請求項1に記載の画像処理装置。 - 前記推定部は、前記パノラマ画像上で前記実空間の鉛直方向の辺の端部の位置の入力を受け付けて特定する
請求項1に記載の画像処理装置。 - 推定した前記多角柱を構成する各面に、前記パノラマ画像の各画素を対応付けてテクスチャ画像を生成するテクスチャ画像生成部を備え、
前記生成部は、推定した前記多角柱の形状を3Dの仮想空間上に生成し、生成した形状の各面に前記テクスチャ画像の各画素をマッピングして前記3Dモデルを生成する
請求項1から3までのいずれかひとつに記載の画像処理装置。 - 推定した前記多角柱の形状を示す情報と、生成した前記テクスチャ画像とを外部装置へ送信する送信部
を備える請求項4に記載の画像処理装置。 - 前記パノラマ画像上に、前記パノラマ画像の上下方向の線分であって、取得した前記多角形の角数の線分を表示する線分表示部と、
前記パノラマ画像上に表示された前記線分の上下端に対する移動指示を受け付ける受付部とを備え、
前記推定部は、移動指示に従った移動後の前記線分の上下端の位置を受け付ける
請求項1から3までのいずれかひとつに記載の画像処理装置。 - 前記受付部は、前記パノラマ画像上の前記線分の上下端に対して、移動指示又は移動指示できない点であることを示す情報を受け付け、
前記推定部は、上下端に対して移動指示を受け付けた線分の移動後の上下端の位置を受け付ける
請求項6に記載の画像処理装置。 - 取得した前記実空間の鉛直方向の辺に対応する線分のそれぞれがパノラマ画像の上下方向に存在するように、前記パノラマ画像を補正する補正部
を更に備える請求項1から7までのいずれかひとつに記載の画像処理装置。 - 撮影位置と、前記実空間の鉛直方向の辺に対応する各線分との距離を算出する距離算出部と、
各線分について算出した距離に基づいて、前記多角形の形状を推定する平面推定部と
を備える請求項1から8までのいずれかひとつに記載の画像処理装置。 - 前記パノラマ画像中の1つの前記線分における前記パノラマ画像の上下方向の中央から上端までの長さと、前記中央から下端までの長さとの比率に基づいて、前記線分に対応する実空間の高さを、撮影位置から天井までの距離と、前記撮影位置から床面までの距離とに按分し、前記撮影位置の天井又は床面からの距離を算出する撮影位置算出部を備え、
前記距離算出部は、前記撮影位置の天井からの距離と、前記撮影位置から前記線分の天井側の上端への仰角とに基づいて、前記撮影位置から前記線分までの距離を算出し、もしくは、前記撮影位置の床面からの距離と、前記撮影位置から前記線分の床面側の下端への俯角とに基づいて、前記撮影位置から前記線分までの距離を算出する
請求項9に記載の画像処理装置。 - 前記撮影位置算出部は、上下両端の位置を特定できる線分における前記比率に基づいて、前記撮影位置の天井又は床面からの距離を算出し、
前記距離算出部は、前記線分の床面側の下端が位置を特定できない点である場合、前記撮影位置から天井までの距離と、前記撮影位置から前記線分の天井側の上端への仰角とに基づいて、前記撮影位置から前記線分までの距離を算出し、前記線分の天井側の上端が位置を特定できない点である場合、前記撮影位置から床面までの距離と、前記撮影位置から前記線分の床面側の下端への俯角とに基づいて、前記撮影位置から前記線分までの距離を算出する
請求項10に記載の画像処理装置。 - 推定した前記多角柱を構成する複数の側面、天井面、及び床面のそれぞれについて、各面の頂点の前記パノラマ画像上の座標値を取得する座標値取得部を備え、
前記テクスチャ画像生成部は、前記複数の側面、天井面、及び床面の各面の頂点の座標値に基づいて、各面のテクスチャ画像を生成する
請求項4又は5に記載の画像処理装置。 - 推定した前記多角柱を構成する複数の側面、天井面、及び床面の頂点のいずれかが位置を特定できない点である場合、前記位置を特定できない点である頂点の座標値を、他の頂点の座標値に基づいて算出する座標値算出部
を備える請求項12に記載の画像処理装置。 - 閉鎖された実空間内で撮影されたパノラマ画像を取得し、
前記実空間の高さ及び平面視での多角形の角数を取得し、
前記パノラマ画像上で、前記実空間の鉛直方向の辺に対応する位置を特定し、取得した前記実空間の高さを用いて前記実空間の多角柱の形状を推定し、
推定した前記多角柱を構成する3Dモデルを生成する
処理をコンピュータに実行させるプログラム。 - 閉鎖された実空間内で撮影されたパノラマ画像を取得し、
前記実空間の高さ及び平面視での多角形の角数を取得し、
前記パノラマ画像上で、前記実空間の鉛直方向の辺に対応する位置を特定し、取得した前記実空間の高さを用いて前記実空間の多角柱の形状を推定し、
推定した前記多角柱を構成する3Dモデルを生成する
処理をコンピュータが実行する画像処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022011923A JP2023110454A (ja) | 2022-01-28 | 2022-01-28 | 画像処理装置、プログラム及び画像処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022011923A JP2023110454A (ja) | 2022-01-28 | 2022-01-28 | 画像処理装置、プログラム及び画像処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023110454A true JP2023110454A (ja) | 2023-08-09 |
Family
ID=87546564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022011923A Pending JP2023110454A (ja) | 2022-01-28 | 2022-01-28 | 画像処理装置、プログラム及び画像処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023110454A (ja) |
-
2022
- 2022-01-28 JP JP2022011923A patent/JP2023110454A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11721067B2 (en) | System and method for virtual modeling of indoor scenes from imagery | |
US11200734B2 (en) | Method for reconstructing three-dimensional space scene based on photographing | |
WO2021036353A1 (zh) | 基于拍照的3d建模系统及方法、自动3d建模装置及方法 | |
CN112154486B (zh) | 用于多用户增强现实购物的系统和方法 | |
JP2010109783A (ja) | 電子カメラ | |
US11481970B1 (en) | Modeling indoor scenes using measurements captured using mobile devices | |
US11062422B2 (en) | Image processing apparatus, image communication system, image processing method, and recording medium | |
JP2017212510A (ja) | 画像管理装置、プログラム、画像管理システム及び情報端末 | |
JP2024114712A (ja) | 撮像装置、撮像方法、及び、プログラム | |
KR102389762B1 (ko) | 디지털 트윈 연동 증강현실 카메라를 통한 공간 형성 및 인식 시스템 및 그 방법 | |
JP6816614B2 (ja) | 画像出力プログラム、画像出力方法および画像出力装置 | |
JP7415496B2 (ja) | 画像処理装置、プログラム及び画像処理システム | |
KR20230007477A (ko) | 객체 바텀 위치에 기초하여 한 깊이 추정 | |
JP7192526B2 (ja) | 画像処理装置、画像処理方法及びプログラム | |
US9503677B1 (en) | Rectifying camera pairs | |
JP2016194784A (ja) | 画像管理システム、通信端末、通信システム、画像管理方法、及びプログラム | |
JP7439398B2 (ja) | 情報処理装置、プログラム及び情報処理システム | |
JP2023110454A (ja) | 画像処理装置、プログラム及び画像処理方法 | |
CN117078762A (zh) | 一种虚拟现实设备、相机标定装置及方法 | |
WO2022011560A1 (zh) | 图像裁剪方法与装置、电子设备及存储介质 | |
JP2017184025A (ja) | 通信端末、画像通信システム、画像送信方法、画像表示方法、及びプログラム | |
JP2004020398A (ja) | 空間情報獲得方法、空間情報獲得装置、空間情報獲得プログラム、及びそれを記録した記録媒体 | |
JP2024037496A (ja) | 画像処理装置、プログラム及び画像処理方法 | |
JP7358868B2 (ja) | 通信端末、通信システム、位置管理方法、及びプログラム | |
JP7552167B2 (ja) | 設定装置、通信システム、設定方法、及びプログラム |