3次元に関する用語集
目次
- 3次元モデリング・レンダリング
- アニメーション・シミュレーション
- 3次元データ形式・データ処理
- 3次元再構成・コンピュータビジョン
- 3次元ソフトウェア・ツール
- 3次元地理情報・VR/AR
- ゲームエンジン・データセット
3次元モデリング・レンダリング
メッシュ(Mesh)
3次元オブジェクトの形状を頂点・辺・面で表現するデータ構造である。
ポリゴン(Polygon)
3次元モデルの表面を構成する多角形の面である。
ボクセル(Voxel)
3次元空間における最小単位の立方体要素であり,2次元のピクセルに相当する。
3次元ボリュームデータ(3D Volume Data)
3次元空間をボクセル(立方体要素)の格子で分割し,各ボクセルに値を持たせたデータである。
ブーリアン演算(Boolean Operation)
複数の立体に対して和・差・積の集合演算を行い,新たな形状を生成する手法である。
マテリアル(Material)
オブジェクト表面の色,質感,反射率などの外観属性の定義である。
テクスチャ(Texture)
オブジェクト表面に貼り付ける画像データであり,表面の模様や質感を表現する。
画像テクスチャ(Image Texture)
画像ファイルを用いてオブジェクト表面の外観を定義する手法である。
テクスチャ座標系(Texture Coordinate System)
テクスチャをオブジェクト表面に対応付けるための座標系である。
テクスチャ・ペインティング(Texture Painting)
3次元モデルの表面に直接描画を行う手法である。
スムースシェード(Smooth Shade)
面の法線を補間し,滑らかな陰影を表現するシェーディング手法である。
シェーダー(Shader)
レンダリング時の色・光・影などの計算処理を定義するプログラムである。
光源(Light Source)
3次元シーン内で光を発するオブジェクトである。
ライト(Light)
3次元シーン内の光源オブジェクトであり,シーンの照明を制御する。
カメラ(Camera)
3次元シーンの視点と投影を定義するオブジェクトである。
カメラビュー(Camera View)
3次元シーンにおけるカメラの視点からの表示である。
ワイヤフレーム表示(Wireframe Display)
オブジェクトの辺のみを線で描画する表示方式である。
フラット表示(Flat Display)
各面を単一の色で塗りつぶして描画する表示方式である。
スムージング表示(Smoothing Display)
面間の境界を滑らかに補間して描画する表示方式である。
PBR(Physically Based Rendering)
物理法則に基づいた光の反射・散乱を計算し,写実的な描画を実現するレンダリング手法である。
レンダリング(Rendering)
3次元シーンのデータから2次元画像を生成する処理である。
レンダラー(Renderer)
レンダリング処理を実行するソフトウェアである。
モデラー(Modeler)
3次元モデルの形状を作成・編集するソフトウェアである。
RIB ファイル(RenderMan Interface Bytestream)
RenderMan で使用されるシーン記述ファイル形式である。
3D Gaussian Splatting
3次元空間にガウス分布を配置し,複数視点の画像から3次元シーンを再構成・描画する手法である。
地形生成(Terrain Generation)
アルゴリズムやデータに基づいて3次元の地形モデルを自動生成する技術である。
Utah teapot
Utah teapot は、1975 年に University of Utah の Martin Newell により制作された3次元データである。
Utah teapot のデータは、commons.wikimedia.org の次のページからダウンロードすることができる。
https://commons.wikimedia.org/wiki/File:Utah_teapot_(solid).stl
アニメーション・シミュレーション
キーフレームアニメーション(Keyframe Animation)
時間軸上の主要なフレームにおけるオブジェクトの状態を指定し,中間フレームを補間して動きを生成する手法である。
ボーン(Bone)
キャラクタの骨格を構成する個々の骨要素である。
アーマチャ(Armature)
複数のボーンで構成される骨格構造全体である。
ボーンアニメーション(Bone Animation)
骨格構造(ボーン)を用いてキャラクタの動きを制御するアニメーション手法である。
逆運動学(Inverse Kinematics)
末端の位置から関節の角度を逆算してポーズを決定する手法である。
人体アニメーション(Human Body Animation)
人体モデルに骨格構造を設定し,動きを付与するアニメーション手法である。
パーティクルシステム(Particle System)
多数の粒子の生成・移動・消滅を管理し,視覚効果を実現する仕組みである。
パーティクルアニメーション(Particle Animation)
多数の小さな粒子を用いて炎・煙・水などの視覚効果を表現する手法である。
液体アニメーション(Fluid Animation)
液体の流動挙動を物理計算で再現するアニメーション手法である。
クロス・シミュレーション(Cloth Simulation)
布の変形・揺れなどの挙動を物理計算で再現する手法である。
剛体シミュレーション(Rigid Body Simulation)
変形しない物体の落下・衝突などの物理挙動を計算で再現する手法である。
物理シミュレーション(Physics Simulation)
重力・衝突・摩擦・反発などの物理現象を計算によって再現する技術である。
衝突検出(Collision Detection)
オブジェクト同士の接触や重なりを判定する処理である。
バウンディング形状(Bounding Shape)
衝突検出の高速化のためにオブジェクトを囲む簡易的な形状(球,箱など)である。
3次元データ形式・データ処理
Wavefront OBJ 形式
3次元モデルの頂点・面などの形状データを記述するテキストベースのファイル形式である。
Wavefront Material 形式(MTL)
Wavefront OBJ に対応するマテリアル定義ファイル形式である。
STL 形式
三角形ポリゴンの集合で3次元形状を表現するファイル形式であり,3Dプリンティングで広く使用される。
FBX 形式
3次元モデル・アニメーション・マテリアルなどを格納する汎用的なファイル形式である。
BVH 形式
モーションキャプチャデータを記録するファイル形式であり,骨格階層と動きデータを含む。
CityGML
CityGML は、3次元の都市、3次元の景観を扱う機能を持つデータフォーマットである。 次のようなモジュールがある。
Appearance、Bridge、Building、CityFurniture、LandUse、Relief、Transportation、Tunnel、Vegetation、 WaterBody、TexturedSurface
12-019_OGC_City_Geography_Markup_Language_CityGML_Encoding_Standard.pdf のページ 34 から転載
CityGML の公式情報は、Open Geospatial Consortium のページで公開されている。
Open Geospatial Consortium の CityGML ページ: https://www.ogc.org/standards/citygml
CityGML の仕様書も、このページで公開されている。
CityGML のビューワには FZKViewer がある。 Windows での FZKViewer のインストールは 別ページ »で説明
【関連項目】 FZKViewer
3次元点群データ (3-D point cloud data)
3次元点群データ (3-D point cloud data) を扱うには、MeshLab や CloudCompare が便利である。
- Windows での MeshLab のインストール: 別ページ »で説明
- Windows での CloudCompare のインストール: CloudCompare のインストール(Windows 上)
PointCloudLibrary の3次元点群データ
https://github.com/PointCloudLibrary/data では、 3次元点群データ (3-D point cloud data) が公開されている(オープンデータである)。
Windows では、次のような手順でダウンロードできる。
- Git のインストール: 別項目で説明している。
Git の公式ページ: https://git-scm.com/
- ダウンロード
mkdir /p c:\data cd c:\data mkdir PointCloudLibrary cd PointCloudLibrary git clone --recursive https://github.com/PointCloudLibrary/data echo git clone --recursive https://github.com/PointCloudLibrary/data > download.txt
Ubuntu では、次のようなコマンドでダウンロードできる。
cd /usr/local
sudo mkdir PointCloudLibrary
cd PointCloudLibrary
sudo git clone --recursive https://github.com/PointCloudLibrary/data
echo "git clone --recursive https://github.com/PointCloudLibrary/data" > download.sh
3次元点群データ (3-D point cloud data) を扱うには、MeshLab や CloudCompare が便利である。
ボクセル化 (voxelize)
ボクセル化は、3次元データをボクセル形式に変換することである。
ボクセル化のソフトウェアとしては、binvox、cuda_voxelizer がある。
binvox の URL: https://www.patrickmin.com/binvox/
binvox の文献: Fakir S. Nooruddin and Greg Turk, Simplification and Repair of Polygonal Models Using Volumetric Techniques, IEEE Transactions on Visualization and Computer Graphics, vol. 9, no. 3, pp. 191-205, 2003.
cuda_voxelizer の GitHub のページ: https://github.com/Forceflow/cuda_voxelizer
.binvox 形式ファイルのボクセルデータを、STL 形式のデータに変換するソフトウェアとしては、 binvox2mesh が知られる。
binvox2mesh の GitLab のページ: https://gitlab.com/mandries/binvox2mesh
メッシュ簡略化 (Mesh Simplification)
メッシュ簡略化は、メッシュの頂点数とポリゴン数の削減を行う。
MeshLab を用いて、次の手順で、 メッシュ簡略化を行うことができる。
- MeshLab を使用する。
- MeshLab で 「File」、「Import Mesh...」と操作し、ファイルを選ぶ。
- 「Filters」、「Remeshing, Simplification and Reconstruction」、「Simplification: Quadric Edge Collapse Decimation (with texture)」と操作する。
- 設定し「Apply」をクリックする。
【関連項目】 MeshLab、 メッシュ平滑化 (Mesh Smoothing)
メッシュ平滑化 (Mesh Smoothing)
メッシュ平滑化は、メッシュをなめらかにする。
MeshLab を用いて、次の手順で、 メッシュ平滑化を行うことができる。
- MeshLab を使用する。
- MeshLab で 「File」、「Import Mesh...」と操作し、ファイルを選ぶ。
- 「Filters」、「Smoothing, Fairing and Deformation」、「Laplacian Smooth」と操作する。
- 設定し「Apply」をクリックする。
【関連項目】 MeshLab、 メッシュ簡略化 (Mesh Simplification)
インポート/エクスポート(Import/Export)
異なるソフトウェア間で3次元データを読み込み・書き出しする処理である。
アドオン(Add-on)
ソフトウェアの機能を拡張するための追加プログラムである。
3次元再構成・コンピュータビジョン
コンピュータビジョンのタスク
コンピュータビジョンのタスクは種々あるが、次のようなものをあげることができる。
- シーン
- シーン理解 (scene understanding)
- 画像分類 (image classification)
- image tagging(weather tagging、scene tagging などがある)
- Class Activation Mapping (CAM)
- セマンティック・セグメンテーション (semantic segmentation)(pixelwise classification ともいう)
- インスタンス・セグメンテーション (instance segmentation)
- パノプティックセグメンテーション (panoptic segmentation)
- 物体検出 (object detection)
- salient object detection
- シーン解析 (scene parsing)
- Few-Shot Segmentation
- 動画像の処理
- multi object tracking
- segmentation tracking
- optical flow
- 画像や動画の編集
- image inpainting
- 画像のノイズ除去 (image restoration)
- イメージ・マッティング (image matting)
- 超解像 (super resolution)
- generation
- image content removal(画像コンテンツの除去)
- 人物検出、姿勢推定
- 人物検出 (human detection)
- 姿勢推定 (pose estimation)
- 頭部姿勢推定 (head pose estimation)
- 顔情報処理
- 顔検出 (face detection)
- 顔ランドマーク (facial landmark) の検出
- 顔検証 (face verification)
- 顔識別 (face identification)
- 顔認識 (face recognition)
- 年齢推定、性別推定
- その他、顔に関する処理
- 動作認識
- スケルトンベースの動作認識 (skeleton-based action recognition)
- Spatio-Temporal Action Recognition
- ビデオの動作認識 (action recognition)
- 3次元再構成
- テキスト
- テキスト検知 (text detection)
- テキスト認識 (text recognition)
フォトグラメトリ
フォトグラメトリ (Photogrammetry) は写真測量のことである。
【関連項目】 Meshroom、 3次元再構成 (3D reconstruction)、 3DF Zephyr Free
Structure from Motion (SfM)
SfM (Structure from Motion) は、オブジェクト(動かないもの)を、 周囲の複数の視点から撮影した多数の画像に対して次の処理を行う。
- それぞれの撮影での、視点の位置(3次元)と向きを推定する
- 画像の特徴点について、位置(3次元)を推定する
その結果、各画像の撮影位置と方向が推定されるとともに、オブジェクトの3次元点群が構成される。
SfM (Structure from Motion) の機能を持ったソフトウェアとしては、 Meshroom、OpenMVG などがある。
Ubuntu での OpenMVG のインストールは 別ページ »で説明
【関連項目】 3次元再構成 (3D reconstruction)、 Meshroom、 Multi View Stereo、 OpenMVG、 OpenMVS
Multi View Stereo (MVS)
Multi View Stereo は、オブジェクトの特徴点である低密度の3次元点群と、オブジェクトを周囲から撮影した多数の画像から、高密度の3次元点群を生成する手法である。 色付き3次元点群を生成する場合もある。「Dense Reconstruction」ともいう。
Meshroom、OpenMVS などのソフトウェアがある。 Ubuntu での OpenMVS のインストールは 別ページ »で説明
【関連項目】 3次元再構成 (3D reconstruction)、 Meshroom、 OpenMVS、 Structure from Motion
3次元再構成 (3D reconstruction)
3次元再構成 (3D reconstruction) の機能をもつソフトウェアとしては、 COLMAP、Meshroom がある。
【関連項目】 COLMAP、 Meshroom、 Multi View Stereo、 OpenMVG、 OpenMVS、 Structure from Motion
3次元姿勢推定 (3D pose estimation)
画像から、物体検出を行うとともに、その3次元の向きの推定も行う。
【関連項目】 Objectron
3次元の顔の再構成 (3D face reconstruction)
3次元の顔の再構成 (3D face reconstruction) は、 顔の写った画像から、元の顔の3次元の形状を構成することである。
3次元の顔の再構成には、次の2つの種類がある。
- 3次元の変形可能な顔のモデル (3D Morphable Model) について、そのパラメータを、画像を使って推定すること。 FaceRig などが有名である。
- dense vertices regression: dense は「密な」、vertices は「頂点」、regression は「回帰」を意味する。画像から、顔の3次元データであるポリゴンメッシュを推定する。
顔に関する処理
顔に関する処理には、次のようなものがある。
- 3次元の顔の再構成 (3D face reconstruction)
- 顔検証 (face verification)
- 顔検出 (face detection)
- 顔識別 (face identification)
- 顔認識 (face recognition)
- 顔の 68 ランドマークの検出
- 顔のコード化
- 顔の性別、年齢などの予測
- 顔ランドマーク (facial landmark) の検出
- 顔ランドマークの3次元化
顔ランドマークの3次元化
ディープラーニングを用いて 顔ランドマーク (facial landmark) を3次元化する学習済みモデルは、次のページで公開されている。
https://www.adrianbulat.com/face-alignment
【関連項目】 顔ランドマーク (facial landmark)
3DDFA_V2
3DDFA_V2 は、 3次元の顔の再構成 (3D face reconstruction) のうち dense vertices regression を行う一手法である。論文は 2020年に発表された。
【文献】
Jianzhu Guo, Xiangyu Zhu, Yang Yang, Fan Yang, Zhen Lei, Stan Z. Li, Towards Fast, Accurate and Stable 3D Dense Face Alignment, ECCV 2020.
https://arxiv.org/pdf/2009.09960v2.pdf
【関連する外部ページ】
- GitHub のページ: https://github.com/cleardusk/3DDFA_V2
-
Hugging Face での 3DDFA_V2 のオンライン実行
URL: https://huggingface.co/spaces/PKUWilliamYang/3DDFA_V2
作成された3次元モデルを Blender にインポートした画面。
Google Colaboratory での 3DDFA_V2 のオンライン実行
次のページでは、Google Colaboratory で実行できるプログラムコード、プログラム利用ガイド、プログラムコードの説明などを示している。
URL: https://www.kkaneko.jp/ai/intro/3ddfav2.html
【概要】本記事では、3DDFA_V2 フレームワークを用いた3次元顔モデル生成プログラムについて解説する。単一の顔画像から3次元形状を復元し、OBJ/PLY形式で出力する技術を Google Colab 環境で提供する。
Colab のページ(ソースコードと説明): https://colab.research.google.com/drive/1fNfAdCRxnxxcxj9mH7lFVsP-uz4DAWoV?usp=sharing
PARE
PARE は、3次元人体姿勢推定(3D human pose estimation)の技術である。 オクルージョンの問題を解決するために、 Part Attention REgressor (PARE) が提案されている。 multi person tracker を用いて実装されており、画像の中に複数の人物がいても動作するようになっている。
PARE のデモプログラムの実行結果を次に示す。
この実行結果を得るためのもととなる動画: kaneko_sample_video.mp4
実行結果の動画: kaneko_sample_video__result.mp4
- 文献
Kocabas, Muhammed and Huang, Chun-Hao P. and Hilliges, Otmar and Black, Michael J., PARE: Part Attention Regressor for {3D} Human Body Estimation, Proc. International Conference on Computer Vision (ICCV), also CoRR、abs/2104.08527v2、2021.
- 公式のページ: https://pare.is.tue.mpg.de/
- 公式の GitHub のページ: https://github.com/mkocabas/PARE
- Papers with Code のページ: https://paperswithcode.com/paper/pare-part-attention-regressor-for-3d-human
【関連項目】 3次元姿勢推定 (3D pose estimation)、 3D human pose estimation、 YOLOv3、 multi person tracker
Google Colaboratory での PARE のインストールと事前学習済みモデルのダウンロードとデモの実行
次のコマンドやプログラムは Google Colaboratory で動く(コードセルを作り、実行する)。
- Google Colaboratory で、ランタイムのタイプを GPU に設定する。
- 次を実行する。
!rm -rf PARE !git clone https://github.com/mkocabas/PARE.git %cd PARE !apt -y install libturbojpeg !pip3 uninstall -y torchtext panel datascience !pip3 install -U -r requirements.txt !source scripts/prepare_data.sh !python3 scripts/demo.py --vid_file data/sample_video.mp4 --output_folder logs/demo - 下図のように、/content/logs/demo/sample_video_ の下に結果ができる。
Ubuntu での PARE のインストールとデモの実行
前準備:Python のインストール: 別ページで説明している
- Ubuntu でインストールを行うには、次のコマンドを実行する。
# パッケージリストの情報を更新 sudo apt update sudo apt -y install git cd /usr/local sudo rm -rf PARE sudo git clone https://github.com/mkocabas/PARE.git sudo chown -R $USER PARE # システム Python の環境とは別の Python の仮想環境(システム Python を使用)を作成 sudo apt -y update sudo apt -y install python3-venv python3 -m venv ~/a source ~/a/bin/activate cd /usr/local/PARE sudo apt -y install libturbojpeg sed -i 's/opencv-python==4.1.1.26/opencv-python/g' requirements.txt pip install -U -r requirements.txt pip install -U numba - 事前学習済みモデルのダウンロード
source scripts/prepare_data.sh - デモの実行
python scripts/demo.py --vid_file data/sample_video.mp4 --output_folder logs/demo - 下のように、logs/demo/sample_video_ の下に結果ができる。
出来た動画を表示すると、次のように表示される。
Objectron
Objectron は、3次元姿勢推定 (3D pose estimation) の機能を持つ。 Objectron は、次の公式ページで、プログラムとデータセットが配布されている。
https://github.com/google-research-datasets/Objectron
次は、Objectron の動作画面である。
Objectron は、Google Colaboratory で動かすことができる。 Google Colaboratory で動かすときは、コードセルに、次の3行を貼り付けて実行する。 あとは、公式ページのプログラムのコピー&ペーストで動く。
!pip3 install frozendict
!git clone --recursive https://github.com/google-research-datasets/Objectron
%cd Objectron
【関連項目】 Objectron データセット、 3次元姿勢推定 (3D pose estimation)
DreamGaussian
DreamGaussian は、3Dコンテンツ生成のフレームワークであり、画像から3Dモデルを生成する(Image-to-3D)タスクとテキストから3Dモデルを生成する(Text-to-3D)タスクの2つに対応している。既存の手法である Neural Radiance Fields(NeRF)は高品質な結果を出すものの、計算時間が長いという課題があった。DreamGaussian の特長は、3Dガウシアンスプラッティングモデルを用いることで、メッシュの抽出とUV空間でのテクスチャの精緻化を効率的に行える点である。このアプローチにより、DreamGaussian は既存の NeRF ベースの手法よりも高速な3Dコンテンツ生成を実現している。実験結果では、DreamGaussian が Image-to-3D と Text-to-3D の両方のタスクにおいて既存の方法よりも高速であることが確認されている。
【文献】
Jiaxiang Tang, Jiawei Ren, Hang Zhou, Ziwei Liu, Gang Zeng, DreamGaussian: Generative Gaussian Splatting for Efficient 3D Content Creation, arXiv:2309.16653v1, 2023.
https://arxiv.org/pdf/2309.16653v1.pdf
【関連する外部ページ】
- 公式のオンラインデモ(Google Colaboratory): https://colab.research.google.com/drive/1sLpYmmLS209-e5eHgcuqdryFRRO6ZhFS?usp=sharing
- Image-to-3D の公式のオンラインデモ(Google Colaboratory): https://colab.research.google.com/drive/1sLpYmmLS209-e5eHgcuqdryFRRO6ZhFS?usp=sharing
元画像
中間結果(左)、最終結果のスクリーンショット(右)
処理結果(3次元データ): b.obj、 b.mtl、 b_albedo.png
処理結果のスクリーンショット(動画):
- Text-to-3D の公式のオンラインデモ(Google Colaboratory): https://colab.research.google.com/github/camenduru/dreamgaussian-colab/blob/main/dreamgaussian_colab.ipynb
処理結果(3次元データ): icecream_mesh.obj、 icecream_mesh.mtl、 icecream_mesh_albedo.png、 icecream_model.ply
処理結果のスクリーンショット(動画): icecream.mp4
- GitHub のページ: https://github.com/dreamgaussian/dreamgaussian
- Papers With Code のページ: https://paperswithcode.com/paper/dreamgaussian-generative-gaussian-splatting
Shap-E
Shap-E は、テクスチャ付きメッシュ (textured mesh) や Neural Radiance Fields としてレンダリングできる出力を生成する能力を特徴とする。 Point-E との比較では、高速かつ高品質の生成が可能であるとされている。
【文献】
Heewoo Jun, Alex Nichol, Shap-E: Generating Conditional 3D Implicit Functions, arXiv:2305.02463, 2023.
https://arxiv.org/pdf/2305.02463v1.pdf
【サイト内の関連ページ】
Shap-E のインストールと動作確認(テキストや画像からの立体生成)(Python、PyTorch を使用)(Windows 上)
【関連する外部ページ】
- GitHub の公式ページ: https://github.com/openai/shap-e
- hysts による Hugging Face 上のデモ: https://huggingface.co/spaces/hysts/Shap-E
OpenCV
OpenCV は、実時間コンピュータビジョン (real time computer vision) のアルゴリズムと文書とサンプルコードの集まりである。
- 2500 以上のアルゴリズム
- 顔認識、物体認識、人間の動きの分類、カメラの動きの追跡、オブジェクトの動きの追跡、3次元モデルの抽出、ステレオカメラからの3次元点群の生成、イメージスティッチング、類似画像の検索、赤目の除去、眼球運動の追跡、ARの機能など
- ライセンス: BSD ライセンス
- インタフェース: C++、Python、Java、MATLAB
- 対応 OS: Windows、Linux、Mac OS、iOS、Android
【関連する外部ページ】
- OpenCV の公式ページ: https://opencv.org
- GitHub の OpenCV のページ: https://github.com/opencv/opencv/releases
【サイト内の関連ページ】
【関連項目】 OpenCV Python、 OpenCV のサンプルデータ、 OpenCV のインストールと、C++ プログラムの実行
OpenGV
OpenGV は、 Absolute camera pose computation、 Relative camera-pose computation、 Two methods for point-triangulation、 Arun's method for aligning point clouds の機能を持つ。 Matlab、Python のインタフェースを持つ。
URL: https://laurentkneip.github.io/opengv/
論文: L. Kneip, P. Furgale, "OpenGV: A unified and generalized approach to real-time calibrated geometric vision", Proc. of The IEEE International Conference on Robotics and Automation (ICRA), Hong Kong, China, May 2014.
Ubuntu での OpenGV のインストール
Ubuntu でインストールを行うには、次のコマンドを実行する。
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install git cmake cmake-curses-gui cmake-gui libeigen3-dev
cd /usr/local
sudo rm -rf opengv
sudo git clone --recursive https://github.com/laurentkneip/opengv
sudo chown -R $USER opengv
cd opengv
sudo rm -rf build
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="/usr/local/opengv" \
-DBUILD_PYTHON=ON \
-DBUILD_TESTS=OFF ..
cmake --build . --config Release --target INSTALL -- /m:4
libpointmatcher
Iterative Closest Point (ICP) の機能を持ち、 点群 (point cloud) のアラインメントを行うことができる。 point-to-point の ICP と、point-to-plane の ICP の機能を持つ。 point-to-point の ICP では、剛体変換だけでなく、スケールの変更にも対応している。
- 文献
François Pomerleau, Francis Colas, Roland Siegwart, Stéphane Magnenat, Comparing ICP Variants on Real-World Data Sets, Autonomous Robots, vol. 34, no. 3, pp. 133-148, 2013.
- 文献
François Pomerleau, Stéphane Magnenat, Francis Colas, Ming Liu, Roland Siegwart, Tracking a Depth Camera: Parameter Exploration for Fast ICP, Proc. of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), IEEE Press, pp. 3824-3829, 2011.
- GitHub のページ: https://github.com/ethz-asl/libpointmatcher
【関連項目】 K 近傍探索 (K nearest neighbour)、 ICP
Windows での libpointmatcher のインストール
ソースコードからビルドする。
https://github.com/CAOR-MINES-ParisTech/libpointmatcher/blob/master/doc/CompilationWindows.md の手順に従う。
- Windows では、前準備として次を行う。
- Build Tools for Visual Studio 2022 のインストール: 別項目で説明している。
- Git のインストール: 別項目で説明している。
Git の公式ページ: https://git-scm.com/
- cmake のインストール: 別項目で説明している。
CMake の公式ダウンロードページ: https://cmake.org/download/
- Boost のインストール
- Boost のバージョンとインクルードディレクトリの確認
次のコマンドで確認する。ここで確認したことは、のちほど使用する。
dir "c:\boost\build\include"
- Eigen 3 のインストール
- libnabo のインストール
- インストール
以下のコマンドを管理者権限のx64 Native Tools コマンドプロンプト (x64 Native Tools Command Prompt)で実行する (手順:スタートメニュー →Visual Studio 20xx」の下の「x64 Native Tools コマンドプロンプト (x64 Native Tools Command Prompt)」 → 「管理者として実行」)。
エラーを回避するために「/bigobj」を設定する。
c:\libpointmatcher にインストールされる。
「boost-1_86」のところは、先ほど確認したインクルードディレクトリに一致させること。
cd /d c:%HOMEPATH% rmdir /s /q libpointmatcher git clone --recursive https://github.com/ethz-asl/libpointmatcher cd libpointmatcher rmdir /s /q build mkdir build cd build del CMakeCache.txt rmdir /s /q CMakeFiles cmake -A x64 -T host=x64 ^ -DCMAKE_BUILD_TYPE=Release ^ -DCMAKE_INSTALL_PREFIX="c:/libpointmatcher" ^ -DEIGEN_INCLUDE_DIR="c:/eigen/include/eigen3" ^ -DBoost_USE_STATIC_LIBS=ON ^ -DBOOST_ROOT="c:/boost/build" ^ -DBoost_INCLUDE_DIR="c:/boost/build/include/boost-1_86" ^ -DBoost_DIR="c:/boost/build" ^ -Dlibnabo_DIR="%LOCALAPPDATA%/libnabo/build" ^ -DCMAKE_BUILD_TYPE=RelWithDebInfo ^ -DCMAKE_C_FLAGS="/DWIN32 /D_WINDOWS /W0 /utf-8 /bigobj" ^ -DCMAKE_CXX_FLAGS="/DWIN32 /D_WINDOWS /GR /EHsc /W0 /utf-8 /bigobj" ^ .. msbuild /m:2 libpointmatcher.sln -p:Configuration=Release
Ubuntu での libpointmatcher のインストール
ソースコードからビルドする。
公式ページの https://github.com/CAOR-MINES-ParisTech/libpointmatcher/blob/master/doc/CompilationWindows.md の手順に従う。
- 前準備
libnabo のインストールが必要である。
- インストール
Ubuntu でインストールを行うには、次のコマンドを実行する。
/usr/local/libpointmatcher にインストールされる。
# パッケージリストの情報を更新 sudo apt update sudo apt -y install libboost-all-dev libeigen3-dev git cmake cmake-curses-gui cmake-gui cd /tmp sudo rm -rf libpointmatcher git clone --recursive https://github.com/ethz-asl/libpointmatcher sudo chown -R $USER libpointmatcher cd /tmp/libpointmatcher mkdir build cd build cmake \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX="/usr/local" \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ .. make sudo make install
3次元スキャン(3D Scanning)
実物体の形状を計測し,3次元デジタルデータとして取得する技術である。
立体視(Stereoscopy)
視差のある2枚以上の画像を用いて奥行きを知覚させる技術である。
視差画像(Parallax Image)
異なる視点から撮影・レンダリングされた複数の画像であり,立体視に使用する。
3次元ソフトウェア・ツール
Blender
Blender は、3次元コンピュータグラフィックス・アニメーションソフトウェアである。 3次元モデルの編集、レンダリング、光源やカメラなどを設定しての3次元コンピュータグラフィックス・アニメーション作成機能がある。
- ファイル形式は、Stanford Triangle Format (ply)、Wavefront OBJ (obj)、3D Studio Max (3ds)、Stereo-Litography (stl) などに対応。
- Windows 版、Linux 版、macOS 版などがある。
- Blender の URL: https://www.blender.org/
- Blender の便利な機能、演習教材、実演など: 別ページ »にまとめている。
【関連項目】 bpy (blenderpy)、 yuki-koyama の blender-cli-rendering
Windows での Blender のインストール
Windows での Blender のインストールは、複数の方法がある。
- 公式ページからダウンロードしてインストールする。その詳細は、別ページ »で説明
- Blender の最新版を検証、開発者に貢献したいなどの場合には、 ソースコードからビルドして、インストールする。 その詳細は、別ページ »で説明
Ubuntu での Blender のインストール
Ubuntu での Blender のインストールは、別ページ »で説明
Blender のモーショントラッキング機能
次の動画は、Blender のモーショントラッキング機能を用いた映像作成について説明している。
https://www.youtube.com/watch?v=lY8Ol2n4o4A
次の動画は、作成された映像、グリーンバックの映像である。
https://www.youtube.com/watch?v=FFJ_THGj72U
bpy (blenderpy)
bpy (blenderpy) では、Blender が Python モジュールになっている。
【関連項目】 Blender、 yuki-koyama の blender-cli-rendering
Windows での bpy (blenderpy) のインストール(PyPI を使用)
https://pypi.org/project/bpy/ の記載により、PyPI の bpy (blenderpy) のインストールを行う。
- 次のページで、必要な Python のバージョンを確認する。
- いま確認したバージョンの Python がインストールされていないときは、 Python のインストールを行う。Python のインストールは別ページで説明している
- コマンドプロンプトを管理者として開き、次のコマンドを実行する。
「-3.7」のところには、 いま確認した Python のバージョンを指定する。
py -3.7 -m pip install numpy py -3.7 -m pip install bpy bpy_post_install - インストールできたことの確認
「-3.7」のところには、 いま確認した Python のバージョンを指定する。
エラーメッセージが出ていなければ OK。
py -3.7 -c "import bpy"
Windows での bpy (blenderpy) のインストール(ソースコードを使用)
ソースコードからビルドする。
- Windows では、前準備として次を行う。
- Build Tools for Visual Studio 2022 のインストール: 別項目で説明している。
- Git のインストール: 別項目で説明している。
Git の公式ページ: https://git-scm.com/
- cmake のインストール: 別項目で説明している。
CMake の公式ダウンロードページ: https://cmake.org/download/
- svn のインストール: 別項目で説明している。
SlikSVN のページ: https://sliksvn.com/
- NVIDIA CUDA ツールキット 12.6 のインストール(Windows 上)
- タグの確認
インストールしたい Blender のバージョンに合うタグを、次のページで探す。
- 以下の操作をx64 Native Tools コマンドプロンプト (x64 Native Tools Command Prompt)で実行する
(手順:スタートメニュー →
」の下の「x64 Native Tools コマンドプロンプト (x64 Native Tools Command Prompt)」を選ぶ)。 - Blender のソースコードをダウンロード
「v3.0.1」のところには、使用したいバージョンのタグを指定すること。
cd /d c:%HOMEPATH% rmdir /s /q blender git clone -b v3.0.1 https://github.com/blender/blender- Blender のコンパイル済みのライブラリのダウンロード、Blender のビルド
Visual Studio Community 2022 を使うときは「make update 2022」、「make release 2022」を実行する。
終了まで時間がかかるので、しばらく待つ。
cd /d c:%HOMEPATH% cd blender make update 2022b make release 2022b- Blender の Python モジュールのビルド
cd /d c:%HOMEPATH% cd blender rmdir /s /q build mkdir build cd build del CMakeCache.txt rmdir /s /q CMakeFiles cmake -A x64 -T host=x64 -DWITH_PYTHON_INSTALL=OFF -DWITH_PYTHON_MODULE=ON .. cmake --build . --config Release --target INSTALL -- /m:4- Python のバージョン、Python のインストールディレクトリを確認する。
- インストール
「c:\Program Files\Python39」のところは、 Python のインストールディレクトリを指定すること。
python -m pip install numpy cd /d c:%HOMEPATH%\blender\build\release copy bin\bpy.pyd c:\Program Files\Python39\Lib\site-packages\ copy bin\*.dll c:\Program Files\Python39\Lib\site-packages\ del c:\Program Files\Python39\Lib\site-packages\python36.dll xcopy /E bin\3.0 c:\Program Files\Python39\- インストールできたかの確認
コマンドプロンプトで次のコマンドを実行する。
エラーメッセージが出なければ OK。
python -c "import bpy; scene = bpy.data.scenes['Scene']; print(scene)"
- Blender のソースコードをダウンロード
yuki-koyama の blender-cli-rendering
bpy (blenderpy) を使うときに便利なソフトウェアのライブラリと、そのサンプルプログラムと、各種のアセット。
- 前準備
Git のインストール: 別項目で説明している。
Git の公式ページ: https://git-scm.com/
- yuki-koyama の blender-cli-rendering のダウンロード
mkdir c:\pytools cd c:\pytools rmdir /s /q blender-cli-rendering git clone https://github.com/yuki-koyama/blender-cli-rendering - 確認のため Blender の Cycles レンダラーを用いてレンダリングを行う。
Windows のコマンドプロンプトで、 次を実行する。
Windows で Python のバージョンを指定したいときは、 「python」でなく「py -3.7」のように実行すること。 「-3.7」のところには、使用する Python のバージョンを指定する(バージョンが分からないときは「py -0」で調べる)。cd c:\pytools cd blender-cli-rendering python - その後、次の Python プログラムを実行する。
import bpy import utils # scene utils.clean_objects() scene = bpy.data.scenes["Scene"] monkey = utils.create_smooth_monkey(location=(0, 0, 1)) plane = utils.create_plane(size=20.0) camera = utils.create_camera(location=(5, -3, 3)) utils.add_track_to_constraint(camera, monkey) # light light = utils.create_sun_light(rotation=(0.3, -1.5, 1.2)) # rendering utils.set_output_properties(scene, 20, 'c:/pytools/02') utils.set_cycles_renderer(scene, camera, 16) bpy.ops.render.render(write_still=True)次の画像ができる。
- その後、次の Python プログラムを実行する。
import os import bpy import utils # scene utils.clean_objects() scene = bpy.data.scenes["Scene"] monkey = utils.create_smooth_monkey(location=(0, 0, 1)) plane = utils.create_plane(size=20.0) camera = utils.create_camera(location=(5, -3, 3)) utils.add_track_to_constraint(camera, monkey) # light working_dir_path = os.path.abspath('.') hdri_path = os.path.join(working_dir_path, "assets\HDRIs\green_point_park_2k.hdr") utils.build_environment_texture_background(scene.world, hdri_path) # rendering utils.set_output_properties(scene, 20, 'c:/pytools/03') utils.set_cycles_renderer(scene, camera, 16) bpy.ops.render.render(write_still=True)
謝辞:この項目に記載のソースコードは、 https://github.com/yuki-koyama/blender-cli-rendering/ で公開されているものを改変して使用している。
【関連項目】 bpy (blenderpy)、 Blender
MeshLab
MeshLab は、3次元データ(3次元点群データや、メッシュデータ)について表示、簡易編集、データの間引き、形式変換、張り合わせ、分割、解析などが行えるソフトウェアである。
【関連項目】 メッシュ簡略化 (Mesh Simplification)、 メッシュ平滑化 (Mesh Smoothing)
Windows での MeshLab のインストール
Windows での MeshLab のインストールには、複数の方法がある。次のいずれかによりインストールできる。
- winget をインストールしたのち、コマンドプロンプトを管理者として開き「winget install MeshLab」を実行
- MeshLab のページ https://www.meshlab.net/ からダウンロードしてインストール:
詳しくは: 別ページ »で説明
Ubuntu での MeshLab のインストール
Ubuntu での MeshLab のインストール: 別ページ »で説明
3DF Zephyr Free
3DF Zephyr Free は、フォトグラメトリのソフトウェア 3DF Zephyr の無料版である。
Meshroom
Meshroom はフォトグラメトリのソフトウェアである。 Structure from Motion を、GUI を用いて簡単に行うことができる。 動作画面の一部は次のとおりである。 カメラの撮影位置と、オブジェクトの3次元形状が表示されている。
Meshroom の URL(ここから Meshroom をダウンロード可能): https://alicevision.org/
【関連項目】 3次元再構成 (3D reconstruction)、 OpenMVG、 OpenMMLab、 Structure from Motion (SfM)
COLMAP
COLMAP は、3次元再構成の機能を持ったソフトウェアである。
【文献】
Johannes L. Schönberger, Jan-Michael Frahm, Structure-From-Motion Revisited, CVPR 2016, 2016.
【サイト内の関連ページ】
- COLMAP 3.8 のインストールと3次元再構成の実行(COLMAP 3.8 を使用)(Windows 上): 別ページ »で説明
- COLMAP のインストールと3次元再構成の実行(COLMAP のソースコード、vcpkg、Visual Studio Community 2019 を使用)(Windows 上): 別ページ »で説明
【関連する外部ページ】
- Papers with Code の COLMAP のページ: https://paperswithcode.com/paper/structure-from-motion-revisited
- COLMAP の公式ページ(公式リリース、Vocabulary tree、データセットへのリンクなど): https://demuc.de/colmap
- COLMAP の公式の説明: https://colmap.github.io/
- COLMAP を公開している公式ページ: https://github.com/colmap/colmap/releases
- Gerrard Hall, Graham Hall, Person Hall, South Building データセット: https://colmap.github.io/datasets.html
OpenMVG
OpenMVG は Structure from Motion の機能を持つソフトウェアである。
OpenMVG が持っている Structure from Motion (SfM) の機能に、 Global Structure from Motion がある。 Global Structure from Motion は、 多数の視点からの画像を使う SfM において、視点の位置と向きを(当時の手法よりも)より頑健かつ正確に推定できるとされている。 (その論文: P. Moulon, P. Monasse and R. Marlet, "Global Fusion of Relative Motions for Robust, Accurate and Scalable Structure from Motion," 2013 IEEE International Conference on Computer Vision, 2013, pp. 3248-3255, doi: 10.1109/ICCV.2013.403. https://www.researchgate.net/publication/261622957_Global_Fusion_of_Relative_Motions_for_Robust_Accurate_and_Scalable_Structure_from_Motion)
- OpenMVG の URL (GitHub): https://github.com/openMVG/openMVG
- 公式のドキュメント: https://openmvg.readthedocs.io/en/latest/software/SfM/GlobalSfM/
- OpenMVG の SfM の利用手順: https://github.com/openMVG/openMVG/wiki/OpenMVG-on-your-image-dataset
Windows での OpenMVG のインストール
Windows での OpenMVG のインストールは、複数の方法がある。
- vcpkg を使う。本項目の下で説明している。
- ソースコードからビルド。本項目の下で説明している。その詳細は: 別ページ »で説明
ここでは、 vcpkg を使う方法と、 ソースコードからビルドする方法を説明する。
- ソースコードからビルドする方法
前準備として次を行う。
- Build Tools for Visual Studio 2022 のインストール: 別項目で説明している。
- Git のインストール: 別項目で説明している。
Git の公式ページ: https://git-scm.com/
- cmake のインストール: 別項目で説明している。
CMake の公式ダウンロードページ: https://cmake.org/download/
Windows では、コマンドプロンプトを管理者として開き、 次のコマンドを実行する。
c:\openmvg にインストールされる。
cd /d c:%HOMEPATH% rmdir /s /q openmvg git clone --recursive https://github.com/openMVG/openMVG.git cd openMVG cd src rmdir /s /q build mkdir build cd build del CMakeCache.txt rmdir /s /q CMakeFiles cmake -A x64 -T host=x64 ^ -DCMAKE_BUILD_TYPE=Release ^ -DCMAKE_INSTALL_PREFIX="c:/openmvg" ^ -DOpenMVG_BUILD_DOC=OFF ^ .. cmake --build . --config Release --target INSTALL -- /m:4 - vcpkg を使う方法
- 事前に vcpkg のインストールを行っておく。
- コマンドプロンプトを管理者として開き、次のコマンドを実行する。
c:\vcpkg\vcpkg search openmvg c:\vcpkg\vcpkg install openmvg[opencv,openmp,software]:x64-windows - システムの環境変数 Path に、次を加える。
c:\vcpkg\installed\x64-windows\bin
私がビルドしたもの、非公式、無保証、ソースコードを改変せずにビルドした。OpenMVG の MPL2 ライセンスによる。
Ubuntu での OpenMVG のインストール
Ubuntu でインストールを行うには、次のコマンドを実行する。
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install git cmake cmake-curses-gui cmake-gui libeigen3-dev
cd /usr/local
sudo rm -rf openmvg
sudo git clone --recursive https://github.com/openMVG/openMVG.git
sudo chown -R $USER openMVG
cd openMVG
cd src
sudo rm -rf build
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="/usr/local/openmvg" ..
cmake --build . --config Release --target INSTALL -- /m:4
デモプログラム
デモプログラムとして、 所定の画像データセットをダウンロードし、SfM を実行する Python プログラムが付属している。
Windows では次の手順で行う。
cd c:\openMVG\src
python build\software\SfM\tutorial_demo.py
デモプログラムの実行でできるファイルのうち、ply 形式ファイルの1つを MeshLab を用いて表示すると次のようになる。色付きの3次元点群である。
Global Structure from Motion を行う
いくつかのコマンドを順に実行する。 Windows では次のような手順で行う。
# 画像の準備、ImageDataset_SceauxCastle\images に画像を置くためのプログラム
cd c:\openMVG\src
mkdir ImageDataset_SceauxCastle
mkdir ImageDataset_SceauxCastle\images
copy .\build\software\SfM\ImageDataset_SceauxCastle\images\*.JPG ImageDataset_SceauxCastle\images
echo 1. Intrinsics analysis
.\build\Windows-AMD64-Release\Release\openMVG_main_SfMInit_ImageListing -i ImageDataset_SceauxCastle/images/ -d openMVG/exif/sensor_width_database/sensor_width_camera_database.txt -o ImageDataset_SceauxCastle/matches/
echo 2. Compute features
.\build\Windows-AMD64-Release\Release\openMVG_main_ComputeFeatures -i ImageDataset_SceauxCastle/matches/sfm_data.json -o ImageDataset_SceauxCastle/matches/
echo 3. Compute matches
.\build\Windows-AMD64-Release\Release\openMVG_main_ComputeMatches -i ImageDataset_SceauxCastle/matches/sfm_data.json -o ImageDataset_SceauxCastle/matches/ -g e
echo 4. Do Global reconstruction
.\build\Windows-AMD64-Release\Release\openMVG_main_GlobalSfM -i ImageDataset_SceauxCastle/matches/sfm_data.json -m ImageDataset_SceauxCastle/matches/ -o ImageDataset_SceauxCastle/outReconstruction/
echo 5. Colorize Structure
.\build\Windows-AMD64-Release\Release\openMVG_main_ComputeSfM_DataColor -i ImageDataset_SceauxCastle/outReconstruction/sfm_data.bin -o ImageDataset_SceauxCastle/outReconstruction/colorized.ply
echo 6. compute final valid structure from the known camera poses, Structure from Known Poses (robust triangulation)
.\build\Windows-AMD64-Release\Release\openMVG_main_ComputeStructureFromKnownPoses -i ImageDataset_SceauxCastle/outReconstruction/sfm_data.bin -m ImageDataset_SceauxCastle/matches/ -f ImageDataset_SceauxCastle/matches/matches.e.bin -o ImageDataset_SceauxCastle/outReconstruction/robust.bin
.\build\Windows-AMD64-Release\Release\openMVG_main_ComputeSfM_DataColor -i ImageDataset_SceauxCastle/outReconstruction/robust.bin -o ImageDataset_SceauxCastle/outReconstruction/robust_colorized.ply
最後の処理でできた、色付きの3次元点群のファイル(ply 形式ファイル)を MeshLab を用いて表示すると次のようになる。
続けて、次を実行する。上の結果を、OpenMVS を用いて処理している。実行には OpenMVS のインストールが必要である。
参考ページ: https://openmvg.readthedocs.io/en/latest/software/MVS/OpenMVS/ (公式の資料)
.\build\Windows-AMD64-Release\Release\openMVG_main_openMVG2openMVS -i ImageDataset_SceauxCastle/outReconstruction/sfm_data.bin -d ImageDataset_SceauxCastle/outReconstruction/ -o ImageDataset_SceauxCastle/outReconstruction/scene.mvs
DensifyPointCloud ImageDataset_SceauxCastle/outReconstruction/scene.mvs
ReconstructMesh scene_dense.mvs
TextureMesh scene_dense_mesh.mvs
デモプログラムの実行でできるファイルのうち、ply 形式ファイルの1つを MeshLab を用いて表示すると次のようになる。色付きの3次元点群である。
OpenMVS
OpenMVS は、Multi View Stereo の機能を持ったソフトウェアである。
【関連項目】 Meshroom、 Multi View Stereo、 OpenMVG
Windows での OpenMVS のインストール
Windows での OpenMVS のインストールは、複数の方法がある。
ここでは、 vcpkg を使う方法を説明する。
- 事前に vcpkg のインストールを行っておく。
- コマンドプロンプトを管理者として開き、次のコマンドを実行する。
c:\vcpkg\vcpkg search openmvs c:\vcpkg\vcpkg install openmvs[cuda,openmp]:x64-windows - システムの環境変数 Path に、次を加える。
c:\vcpkg\installed\x64-windows\bin
Open3D
Open3D は、3次元データに関する種々の機能を Python、C++ から扱うことができるソフトウェアである。 次の機能を持つ。
- 3次元再構成
- サーフェスのアラインメント
- 可視化
- PBR
- 3次元データに関する機械学習
- 文献
Qian-Yi Zhou and Jaesik Park and Vladlen Koltun, Open3D: A Modern Library for 3D Data Processing, arXiv:1801.09847, 2018.
- Open3D の URL: http://www.open3d.org/
Windows での Open3D のインストール
http://www.open3d.org/docs/release/compilation.html に記載の手順による。
- Windows で、管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー >
cmdと入力 > 右クリック > 「管理者として実行」)。 - pip を用いて、Open3D のインストール
python -m pip install -U open3d関連ファイルのインストールを行いたいので、下に書いた手順を進める。
- Windows では、前準備として次を行う。
- Build Tools for Visual Studio 2022 のインストール: 別項目で説明している。
- Git のインストール: 別項目で説明している。
Git の公式ページ: https://git-scm.com/
- cmake のインストール: 別項目で説明している。
CMake の公式ダウンロードページ: https://cmake.org/download/
- Eigen 3 のインストール
- Python のインストール: 別項目で説明している。
- Open3D 関連ファイルのインストール
エラーを回避するために「/utf-8」を設定。
python -m pip install -U --ignore-installed numpy scikit-image cd /d c:%HOMEPATH% rmdir /s /q Open3D git clone --recursive https://github.com/isl-org/Open3D cd Open3D del CMakeCache.txt rmdir /s /q CMakeFiles cmake -A x64 -T host=x64 ^ -DCMAKE_C_FLAGS="/DWIN32 /D_WINDOWS /W0 /utf-8" ^ -DCMAKE_CXX_FLAGS="/DWIN32 /D_WINDOWS /GR /EHsc /W0 /utf-8" ^ -DCMAKE_INSTALL_PREFIX="c:/Open3D" . cmake --build . --config Release --target ALL_BUILD cmake --build . --config Release --target INSTALL - 確認のため Open3DViewer を起動してみる。
起動ができれば OK とする。
%LOCALAPPDATA%\Open3D\bin\Open3D\Release\Open3DViewer.exe
- Open3D-ML 関連ファイルのインストール
ここは書きかけ。動作未検証である。
cd %LOCALAPPDATA% rmdir /s /q Open3D-ML git clone --recursive https://github.com/isl-org/Open3D-ML cd Open3D-ML python -m pip install -r requirements.txt python -m pip install -r requirements-torch.txt python -m pip install -U numpy chumpy json-tricks munkres xtcocotools yapf cd ..\Open3D del CMakeCache.txt rmdir /s /q CMakeFiles cmake -A x64 -T host=x64 ^ -DBUILD_PYTORCH_OPS=ON ^ -DBUILD_TENSORFLOW_OPS=OFF ^ -DBUNDLE_OPEN3D_ML=ON ^ -DOPEN3D_ML_ROOT=%LOCALAPPDATA%\Open3D-ML ^ -DGLIBCXX_USE_CXX11_ABI=OFF ^ -DCMAKE_C_FLAGS="/DWIN32 /D_WINDOWS /W0 /utf-8" ^ -DCMAKE_CXX_FLAGS="/DWIN32 /D_WINDOWS /GR /EHsc /W0 /utf-8" ^ -DUSE_SYSTEM_EIGEN3=ON ^ -DEigen3_DIR="c:/eigen/share/eigen3" ^ -DCMAKE_INSTALL_PREFIX="c:/Open3D" . cmake --build . --config Release --target ALL_BUILD cmake --build . --config Release --target INSTALL - Open3D-ML 関連ファイルのインストールの続き。
前の手順でエラーメッセージを確認し、エラーメッセージが出ていないときは、続行することにして、次を実行する。 (確認のときは、エラーメッセージを見落とさないように、表示を確認する。)
cmake --build . --config Release --target install-pip-package python -m pip show open3d - Open3D-ML 関連ファイルのインストールの確認
次を実行し、エラーメッセージが出ないことを確認する。
エラーメッセージが出た場合には、 Open3D-ML 関連ファイルのインストールは断念する。
python -c "import open3d.ml.torch"
PyTorch3D
公式ページ(GitHub): https://github.com/facebookresearch/pytorch3d
Google Colaboratory での PyTorch3D のインストール
次のコマンドは Google Colaboratory で動く(コードセルを作り、実行する)。
- PyTorch3D のインストール
!pip3 install pytorch3d
SDL
SDL は、「Simple DirectMedia Layer」の略で、 次の機能などを持つ。
- オーディオ
- キーボード
- ジョイスティック
- 3次元グラフィックス・カード
- 2次元フレームバッファ
3次元グラフィックス・カードは、OpenGL を経由して使用する。 SDL は、種々の OS (Linux、Windows、macOS、FreeBSD など) で動く。 SDL は C 言語で書かれ、C++ からも使える。Java、Perl、PHP、Python などの種々の言語からも使える。
【関連する外部ページ】
SDL の公式ページ: https://www.libsdl.org/
Windows での SDL のインストール
Windows での SDL のインストール: 別ページ »で説明
私がビルドしたもの、非公式、無保証、 公式サイト https://github.com/libsdl-org/SDL で公開されているソースコードを改変せずにビルドした。 Windows 10、Build Tools for Visual Studio 2022 を用いてビルドした。 SDL のライセンスによる。
zip ファイルは C:\ 直下で展開し、C:\sdl での利用を想定。
GPU
GPU は、グラフィックス・プロセッシング・ユニット(Graphics Processing Unit)の略である。その高い並列計算能力から、3次元コンピュータグラフィックス、3次元ゲーム、動画編集、科学計算、ディープラーニングなど、並列処理が必要な幅広い分野で活用されている。
Mixamo
キャラクタと動きのアセットを公開しているサイトである。fbx 形式でダウンロードできる。
【関連項目】 3次元コンピュータグラフィックス、human pose、human motion
Twinmotion
Twinmotion は、Unreal Engine を用いて実装されている。 3次元メッシュ(Wavefront OBJ、FBX)のインポート、 3次元点群データのインポート、高さマップ(r16、PNG)のインポート、 OpenStreetMap との連携、人物の配置、波の表現、空の表現などの機能がある。
【関連項目】 Unreal Engine
3次元地理情報・VR/AR
高さマップ(Height Map)
地形の標高をピクセルの輝度値で表現した2次元画像データである。
GeoTIFF
地理座標情報を埋め込んだTIFF画像形式であり,地理情報システムで広く使用される。
投影座標系(Projected Coordinate System)
地球の曲面を平面に変換するための座標系である。
EPSG コード
座標参照系を一意に識別する数値コードである。
OpenStreetMap
誰でも編集可能なオープンソースの地図データプロジェクトである。
ESRI Shape 形式
地理情報システムで使用されるベクタデータのファイル形式である。
地図タイル(Map Tile)
地図画像を格子状に分割した個々の画像片であり,Web地図で広く使用される。
標高タイル(Elevation Tile)
標高データをタイル状に分割して提供する形式である。
VR(Virtual Reality,仮想現実)
コンピュータで生成された仮想空間に利用者を没入させる技術である。
AR(Augmented Reality,拡張現実)
現実の映像にデジタル情報を重畳して表示する技術である。
WebVR
Webブラウザ上でVRコンテンツを表示するための技術仕様である。
サイドバイサイド表示(Side-by-Side Display)
VR用に左右の目に対応する2つの映像を並べて表示する方式である。
マーカーベースAR(Marker-based AR)
特定のマーカー画像を認識してデジタル情報を重畳表示するAR手法である。
パノラマ表示(Panorama Display)
全方位の画像を球面状に表示し,視点を自由に変えられる表示方式である。
ゲームエンジン・データセット
3次元ゲームエンジン (3-D game engine)
3次元ゲームエンジン (3-D game engine) の機能を持つソフトウェアとしては、 Godot、Open 3D Engine、Unreal Engine、Panda3D などがある。
Open 3D Engine
Open 3D Engine は、オープンソースの3次元ゲームエンジンである。Amazon の Amazon Lumberyard の後継である。
Open 3D Engine の URL: https://github.com/o3de/o3de
Windows での Open 3D Engine のインストール: 別ページ »で説明
Panda3D
Panda3D は、オープンソースのソフトウェアであり、3次元ゲームエンジン (3-D game engine)、可視化、シミュレーションの機能を持つ。
Panda3D の URL: https://www.panda3d.org/
- Windows での Panda3D のインストール: 別ページ »で説明
- Ubuntu での Panda3D のインストール: 別ページ »で説明
- Panda3D の機能概要(説明資料)[PDF]、[パワーポイント]
- 3次元のゲームエンジン Panda3D を使ってみる: 別ページ »にまとめている。
Panda3D のインストール
【サイト内の関連ページ】
- Panda3D SDK のインストール、サンプルプログラムの実行(3次元のゲームエンジン)(Python を使用)(Windows 上)
- 3次元ゲームエンジン Panda3D 1.11 SDK (dev 版) のインストール(Ubuntu 上)
アクタ(Actor)
ゲームエンジンにおけるシーン内の基本オブジェクト単位である。
ブループリント(Blueprint)
Unreal Engine におけるノードベースのビジュアルプログラミングシステムである。
レベルブループリント(Level Blueprint)
Unreal Engine において特定のレベル(ステージ)に紐づくブループリントである。
シーン遷移(Scene Transition)
ゲーム内の場面切り替えを管理する仕組みである。
イベントハンドラ(Event Handler)
キーボード・マウスなどの入力イベントに対する処理を定義する仕組みである。
アセット(Asset)
ゲームやCGで使用されるモデル・テクスチャ・音声などの素材データである。
ロジックエディタ(Logic Editor)
ゲームオブジェクトの振る舞いをビジュアルに編集するツールである。
Human 3.6M データセット
ディープラーニングにより姿勢推定を行うためのデータとして利用できる。
利用には、 https://vision.imar.ro/human3.6m/register.php での申請を必要とする。
http://vision.imar.ro/human3.6m/description.php
Catalin Ionescu, Dragos Papava, Vlad Olaru and Cristian Sminchisescu, Human3.6M: Large Scale Datasets and Predictive Methods for 3D Human Sensing in Natural Environments, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 36, No. 7, July 2014.
KITTI データセット
カラーのカメラ、モノクロのステレオカメラ、3次元レーザースキャナなどのさまざまなセンサーのデータから構成される。
- 数時間分の交通シナリオ
- セマンティック・セグメンテーションのグランドトゥルースが含まれているわけではない
http://www.cvlibs.net/datasets/kitti
【関連情報】
- A. Geiger, P. Lenz and R. Urtasun, "Are we ready for autonomous driving? The KITTI vision benchmark suite," 2012 IEEE Conference on Computer Vision and Pattern Recognition, 2012, pp. 3354-3361, doi: 10.1109/CVPR.2012.6248074.
- Papers With Code の KITTI データセットのページ: https://paperswithcode.com/dataset/kitti
- PyTorch の KITTI データセット: https://pytorch.org/vision/stable/datasets.html
- TensorFlow データセットの KITTI データセット: https://www.tensorflow.org/datasets/catalog/kitti
【関連項目】 オープンデータ、 物体検出
LS3D-W データセット
LS3D-W データセットは、3次元の顔ランドマーク (facial landmark) のデータセットである。
これは、AFLW、300VW、iBUG 300-W、FDDB の顔画像から生成されたデータセットである。
利用には、 https://www.adrianbulat.com/face-alignment での申請を必要とする。
生成手順については、次の文献に記載されている。
Bulat, Adrian and Tzimiropoulos, Georgios, How Far Are We from Solving the 2D & 3D Face Alignment Problem (and a Dataset of 230,000 3D Facial Landmarks), International Conference on Computer Vision (ICCV), 2017. https://openaccess.thecvf.com/content_ICCV_2017/papers/Bulat_How_Far_Are_ICCV_2017_paper.pdf
【関連項目】 顔ランドマークの3次元化
Objectron データセット
Objectron データセット は、15000 のビデオと 400 万の画像を含む。 これらはバイク、本、ボトル、カメラ、シリアルボックス、椅子、カップ、ラップトップ、靴といったカテゴリでアノテーションされている。 Objectron データセットには、ビデオ、画像、オブジェクトの姿勢、カメラの姿勢、点群、平面のデータが含まれている。 各ビデオは同じオブジェクトを異なる角度から観察している。
【関連する外部ページ】
公式の GitHub のページ: https://github.com/google-research-datasets/Objectron
【関連項目】 Objectron
Objectron データセットのインストール(Windows 上)
- まず、gsutil のインストールを行う。
cd /d c:%HOMEPATH% curl -L -O https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe .\GoogleCloudSDKInstaller.exe - Windows では、
コマンドプロンプトを管理者として開き、
次のコマンドを実行することにより、
データセットのダウンロードを行うことができる。
cd /d c:%HOMEPATH% mkdir records_shuffled gsutil cp -r gs://objectron/v1/records_shuffled records_shuffled
Photo Tourism データセット
Photo Tourism データセットは次の URL で公開されているデータセット(オープンデータ)である。
http://phototour.cs.washington.edu/datasets/
【関連情報】
- 文献
Noah Snavely, Steven M. Seitz, Richard Szeliski, "Photo tourism: Exploring photo collections in 3D," ACM Transactions on Graphics (SIGGRAPH Proceedings), 25(3), 2006, pp. 835-846.
- 公式ページ: http://phototour.cs.washington.edu/patches/default.htm
- PyTorch の PhotoTour データセットの説明: https://pytorch.org/vision/stable/datasets.html#phototour
ShapeNet データセット
ShapeNet データセットは、3次元 CAD モデルのリポジトリである。
- 3億個以上の 3次元 CAD モデル
- 220,000 個のモデルが、WordNet により、3,135 のクラスに分類されている。
- ShapeNet Parts サブセットでは、31,693 個のメッシュ形式データが、16 のオブジェクトクラス(テーブル、椅子、飛行機など)に分類されている。
ShapeNet データセットは次の URL で公開されているデータセット(オープンデータ)である。
【関連情報】
- Angel X. Chang, Thomas Funkhouser, Leonidas Guibas, Pat Hanrahan, Qi-Xing Huang, Zimo Li, Silvio Savarese, Manolis Savva, Shuran Song, Hao Su, Jianxiong Xiao, Li Yi, Fisher Yu, ShapeNet: An Information-Rich 3D Model Repository, arXiv:1512.03012, 2015.
- Papers With Code の ShapeNet データセットのページ: https://paperswithcode.com/dataset/shapenet