はじめに
コンピュータビジョンやロボットビジョン向けの大規模ライブラリのOpenCV (Open Computer Vision), PCL (Point Cloud Library) や,その他の小規模ライブラリを,一覧にまとめる.
検索から初めて当サイト向けに来た方むけに注意であるが,このサイトは「中級者~上級者層をターゲット」にしており,(教科書や授業のように)「抽象度の高い内容」を中心に記事を執筆している.それゆえ,(プレイヤー向けの内容でもある)ソフトウェアライブラリの紹介やコーディング・実装方法についての記事は,あまり力を入れていない.従って,OpenCVやPCLなどについても,あくまで「おおまかな紹介が中心」であることに注意.
※ ただし,PCLについては,以前私がよく入門・チュートリアルのセミナーを開催していたゆえ,当時の「初心者・3D処理入門書向けのPCLに関してのスライド資料」等は,アップロードすることがある.
ビジョン向け大規模ライブラリ
OpenCV (OpenCV)
- OpenCV: コンピュータビジョン全般の基本的処理を網羅するライブラリ.
Point Cloud Library (PCL)
- Point Cloud Library (PCL) :
- 3D点群データの処理を網羅するライブラリ.ロボットビジョン向け.
- C++で主に使う.ROSとの連携が強力なのでロボット向けでメジャーに
- [2022年12月] ROS の運営会社がIntrinsic AIに買収されたことで,PCLも少し先行き不明.
Open3D
- Open3D
- 2018年に登場した,モダンな設計の3D点群処理ライブラリ.
- PCLと似たようなことが,C++とPython(これが大きい!)で実施できる.深層学習時代の今は,Pythonが中心言語なので,C++でしか触れなかったPCLに対する利点がある.
- 詳解 3次元点群処理でも,メインのコーディング言語として採用されている.
- 一方で,いまだにVer1.0が登場しておらずVer, 0.15, 0.16という段階である.
- いまはPCLと同様,非深層学習手法が中心のライブラリには人があまり寄りつかないので,安定性やサポートに不安あり(研究むけならいいが,プロダクトで使うべきかはよく考える必要がある).
画像処理 向けのライブラリ
- PIL ( Python Imaging Library ): ※ Pytorchのテンソルとデータ構造の相性が良く,合わせて使うと便利でセットで使われることが多い.
- Pillow: discontinued になった PILを使いやすい形でforkした後継ライブラリ.
- scikit-image : 画像処理や画像特徴出が行えるPython言語のライブラリ.scikitの中の1つ.
画像処理用の言語
- Halide language:デジタル画像処理ルーチンの簡単な高速化に特化した,C++で記述する高速処理用のDSL(Domain Specific Language).
- アルゴリズムとスケジューリング(並列化/ベクトル化/ブロック化)を分離して記述して簡単な記述を行うだけで,超高速な画像処理計算を楽に実装できる
- 福嶋先生のQiitaでの入門記事「Halide入門とOpenCVとの比較」が参考になる.
3D Reconstruction
3Dメッシュの可視化・編集用のソフトウェア
- MeshLab (マルチプラットフォーム):3Dメッシュデータ処理を行うツール.無料オープンソース.例えば位置合わせ,Remeshing, テクスチャ処理,ポアソン再構成など,
- CloudCompare:点群データの比較ツール.上記MeshLabよりGUIがアイコンベースなので取り扱いやすい.MeshLabはオブジェクトのMeshデータにフォーカスしているが,CloudCompareはLiDARなどで広範囲に測距した対象環境のシーン点群データを2つ並べて「比較する(違いがどこにあるか探る)」目的にフォーカスしている.
- 以前,私がお手伝いしていたPoint Cloud Consortium による紹介記事:PointCloudデータ編集可能ソフトCloudCompare概要