Predator's Vision

画像処理、3D点群処理、DeepLearning等の備忘録

PCL

一発でわかる Iterative Closest Point のコンセプト図解

2つの点群を重ね合わせる手法にICP (Iterative Closest Point) というものがあります。 1992年に発表されてから、現在に至るまであらゆる派生手法が提案されています。ベーシックなICPの仕組みは一言で言うと「近傍点との距離の最小化を繰り返す」です。これ…

PCL の Verbosity Level

PCLのAPIが処理途中に出力するログはどれぐらい出力するか設定を変えられる。 全モードを試してみるコードのメモ。 #include <iostream> #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/io/pcd_io.h> #include <pcl/console/print.h> void doSomething() { pcl::PointCloud<pcl::PointXYZ> cloud; pcl::io::loadPCDFile("not_exist.pcd",</pcl::pointxyz></pcl/console/print.h></pcl/io/pcd_io.h></pcl/point_cloud.h></pcl/point_types.h></iostream>…

PCDファイルの保存読込速度・サイズ比較

ポイントクラウドの保存関数(PCD形式)は下記の3通りがある。 pcl::io::savePCDFileASCII 全部テキスト形式で保存 pcl::io::savePCDFileBinary ヘッダはテキスト形式で、データ部分はバイナリ形式で保存 pcl::io::savePCDFileBinaryCompressed ヘッダはテキス…

PCL1.7.2で一部のライブラリがエラーLNK1189でビルドできない問題の対処

PCLのビルド中にpcl_featureについては下記のようなエラーメッセージが出て使えなくなってしまった。 fatal error LNK1189: オブジェクトまたはメンバーの数がライブラリの最大許容数 65535 を超えています。 調べたところ下記のページが見つかった。被害者…

pcl::PointCloudやEigenを含むvectorをresizeするとエラーが発生する場合の対処

C++行列演算ライブラリ「Eigen」を含む構造体などのstd::vectorは、下記のページで説明されているような工夫が必要となる。Eigen: Using STL Containers with Eigen例えばこんなコードが書ける。 #include <vector> #include <Eigen/Core> #include <Eigen/StdVector> struct Hoge { Eigen::Vector</eigen/stdvector></eigen/core></vector>…

VeloViewで出力した点群データ(CSV)をPCLで読み込む

Velodyne社のLIDAR「HDL-32e」や「HDL-64e」用のViewerにVeloViewというものがあります。VeloViewでは点群データをCSV形式でエクスポートできます。そのCSVデータをpcl::PointCloudとして読み込むコードのメモ。CSVデータの1行目は、カラム名が出力されてい…

PCLVisualizerでポイントクラウドの透明度を反映させて描画する方法

pcl::PointXYZRGBAというタイプのポイントクラウドを作り、アルファ値(a)を0にしてもPCLVisualizerで透明にならないなぁと思っていたのですが、カラーハンドラーを設定すればちゃんと透明度に合わせて描画されることに気づきました。以下、サンプル #include <pcl/point_types.h></pcl/point_types.h>…

【PCL入門】 Point Cloud Library について

PCLはまだまだ英語の文献の方が多いと思うので、個人的に学んだことを何回かに分けて投稿しようと思います。次のような読者を想定しています。 PCLをよく知らない そもそもC/C++もあまり慣れていない というかプログラミングにあまり慣れていない ですので、…

Structure Sensor から距離画像やポイントクラウドを取得

前回の「Structure Sensor を Windows へ接続」の続きです。OpenNI2を使って距離画像(深度画像)・赤外線画像・ポイントクラウドを取得してみました。 ソースコード Structure Sensor からデータを取得するC++のモジュール "structure_grabber" をGithubに…

SketchUpにポイントクラウドをインポート

2014/09/04追記 SketchUp2013で「encodeメソッドが未定義」のエラーになるので、スクリプトを修正しました デプスセンサで取得したポイントクラウドをSketchUpで作成した構造データとどれぐらい合うか目視で比較するために、SketchUpにポイントクラウドをイ…