Predator's Vision

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

C++

Direct Sparse Odometry (DSO) の要点まとめ

過去のエントリではWindowsへのインストール方法をまとめたが、今回は論文から理解したことをまとめる。 数学的な細かな話は最小限に抑え、私なりに要点だけまとめる。 # 間違ってるところがあるかもしれないので随時修正していくつもり。 論文 [1607.02565]…

Direct Sparse Odometry (DSO) を Win10, VS2017 でビルド

SLAM手法の1つである Direct Sparse Odometry (DSO) をWindows上でTUMのデータセットを使って動かしたくトライ。 ※DSOの要点まとめはこちらのエントリを参照: predator.hateblo.jp 環境 Windows 10 Home x64 Visual Studio Community 2017 CMake 3.10.2 ス…

OpenCVを使いたいときのcmakeの書き方

次のように書けばよい。かなりシンプル。link_directoriesの指定は不要。 なぜならば、${OpenCV_LIBS}でライブラリへの絶対パスが指定されるためOpenCVが見つかった場合のみプロジェクトを作成したければif(DEFINED ${OpenCV_VERSION})でadd_executableやtar…

OpenCV3では視差画像が作れない?

OpenCVで視差画像を作ろうと思って調べたところ下記のサイトを発見。ちなみに2008年の情報。 Momma's Wiki: OpenCV/距離計測 - ステレオマッチング(二眼カメラ)による距離計測 ※CvCalibFilte...これに従って、最新であるOpenCV3を使って試してみたら、cvFind…

PTAMをVS2013でWebカメラ使用版に改造してビルド

C++

PTAMビルド手順はいろんなサイトに載ってますが、100%その通りにやればビルドできたというわけではないので、そのメモ。 ビルド手順 参考サイト Win7(64bit)で初めてのPTAM コンパイル編│黒い森から来た少年 Goodbye, World! 【PTAM(1/3)】 PTAMコンパイル 2…

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>…

BGRとRGBを間違えて静止画/動画を保存してしまったときの変換

個人的に赤と青が逆の状態で保存してしまったー!ということがよくあります。 ちょっと検索した感じ、BGR→RGB変換のソフトウェアは公開されていないようだったので、OpenCVを使って自作。以下、C++のコード。

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>…

VS2013 で FLANN 1.8.4 をビルド

VS2013 での FLANN 1.8.4 のビルドのメモ。あるヘッダファイルを修正しないとうまくビルドできなかった。 環境 Windows 7 Professional x64 Microsoft Visual Studio Premium 2013 エラー内容 ここと全く同じ FLANN errors on 64bit MSVC2010 (debug) · Issu…

VS2013 で Boost 1.55.0 をビルド

VS2013 での Boost 1.55.0 のビルドのメモ。あるヘッダーファイルに修正を加えてからでないとビルドが成功しなかった。 環境 Windows 7 Professional x64 Visual Studio Premium 2013 エラー内容 c:\Boost\boost_1_55_0\boost/archive/iterators/transform_w…

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

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

boostでXMLの読み書き

boostを使ったXML読み書きのサンプル。参考: https://sites.google.com/site/boostjp/tips/xml http://stackoverflow.com/questions/6656380/boost-1-46-1-property-tree-how-to-iterate-through-ptree-receiving-sub-ptreesこんな感じのサンプルXMLを読み…