Yusuke Saitoの雑記

センサー類, Python, Unity(C#), Unreal Engine, 機械学習とかについてのメモ

Point Cloud Library 1.8.1をvisual studio 2017で動かす(C++, windows 10)

はじめに

点群処理といえばコレ、といったくらいメジャーなPoint CLoud Library(http://pointclouds.org/)をwidows + visual studio 2017でプログラミングできるようにしていきます。

...とはいっても、先行的に@UnaNancyOwenさんなどがall-in-one packageを作成しており、導入を楽にしていただいています。とても助かっていますw

環境

  • OS:Windows 10 Home Insider Preview (64-bit)
  • visual studio community 2017(version 15.6.7)
  • cmake 3.11.0(本稿でインストールします)
  • 今後C++で実装していきます

参考

1 . パッケージのダウンロード

まずはじめに、パッケージをインストールしましょう。

http://unanancyowen.com/pcl181/

にアクセスします。次に、以下の図1の中の自分の環境に合わせたものをダウンロードします。 (私の場合、PCL 1.8.1 All-in-One Installer MSVC2017 x64です。)

f:id:stopengin0012:20180521013232p:plain

図1:All-in-One packageのダウンロード

2 . パッケージのインストールと設定

ダウンロードしたら、exeファイルを起動してインストールしていきます。 今回、PATHは自動で追加しないようにします。 (最近のブログを見ると、追加しても大丈夫になってるっぽい。) 他は、defaultのままで大丈夫です。

次に、環境変数を設定していきます。 大雑把に説明すると、「PCLの実行ファイルはここにあるよ!」ということをPCに教えてあげます。
「winsowsキー(窓が書いてあるキー)+R」で「sysdm.cpl」をファイル名を指定して実行し、システムのプロパティを呼びます。 そして、詳細設定タブ->環境変数をクリックすると、図2のような画面が現れるはずです。

f:id:stopengin0012:20180521015305p:plain

図2:環境変数設定の呼び出し

システム環境変数において、「PCL_ROOT」「OPENNI2_REDIST64」があることを確認してください。
(なければ、図2と同様に上記二つの変数と値を入力してください。)

次に、pathを設定します。pathの列をクリックし、編集ボタンをクリックすると、図3のような画面が現れます。 図3の下部5行を追加してください。(3rdPartyの部分は要らないかもですが、念のため)

f:id:stopengin0012:20180521015933p:plain

図3:path環境変数の設定

3 . CMakeのインストール

PCLはCmake(https://cmake.org/)でのプロジェクト生成を推奨されています。そこで、CMakeをインストールします。 公式ページのdownloadから環境に合わせたwindowsインストーラーパッケージをダウンロードし、インストールします。 この際、PATHを自動登録し、デスクトップアイコンにチェックを入れましょう(この辺は好みでw)

インストールしたら、「winsowsキー+R」で「cmd」を実行、コマンドプロンプト上で「cmake -version」と打ち、以下の図4にようになればOKです。 ここで、一度PCを再起動させてください。(環境変数の変更を適用するため)

f:id:stopengin0012:20180521021420p:plain

図4:cmake versionの確認

4 . CMakeによるプロジェクト生成

Point Cloud Library 1.8.1 has been releasedhttp://unanancyowen.com/pcl181/に、「Basic CMakeLists for PCL」の項があります。 Basic CMakeLists.txt for PCL(https://gist.github.com/UnaNancyOwen/f4dcd74ab870a0fc9e7a)の右上にDownload ZIPをクリックし、解凍し、フォルダ名を分かりやすいように変更しましょう。今回は、図5のように、フォルダ名を「sampleProject」に変更しています。

f:id:stopengin0012:20180521022252p:plain

図5:最小プロジェクトの構成

次に、CMakeを起動し、上部二つのダイアログボックスに先ほどのsampleProjectのパスを指定します。 configureをクリックし、お使いの環境のvisual studio(今回ならvisual studio 15 2017 WINI64)、use default native compliersを選択、Finishボタンをクリック。 そのまま「Generate」をクリック、Generate doneというログが出たら、「Open Project」でプロジェクトを開きましょう。

5 . サンプルプロジェクトの実行

以下の図6のようなプロジェクトが開かれていると思います。この状態で、「Ctrl + F5キー」を押すと、main.cppが実行されます。

f:id:stopengin0012:20180521024601p:plain

図6:visual studioでのプロジェクト画面

main.cppの実行を確認したあとは、PCLのサンプルを実行してみましょう。 project->Source Files->main.cpp をダブルクリックして開き、以下のコードに置き換えて「Ctrl + F5キー」で実行してみてください。
(source codeはこちらのものを変更しています:http://www.pointcloud.jp/blog_n14/)

#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>

int user_data;

void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{
    viewer.setBackgroundColor(1.0, 0.5, 1.0);
    pcl::PointXYZ o;
    o.x = 1.0;
    o.y = 0;
    o.z = 0;
    viewer.addSphere(o, 0.25, "sphere", 0);
    std::cout << "i only run once" << std::endl;

}

void
viewerPsycho(pcl::visualization::PCLVisualizer& viewer)
{
    static unsigned count = 0;
    std::stringstream ss;
    ss << "Once per viewer loop: " << count++;
    viewer.removeShape("text", 0);
    viewer.addText(ss.str(), 200, 300, "text", 0);
    user_data++;
}

int main()
{
    pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);

    pcl::visualization::CloudViewer viewer("Cloud Viewer");
    viewer.showCloud(cloud);

    //This will only get called once
    viewer.runOnVisualizationThreadOnce(viewerOneOff);

    //This will get called once per visualization iteration
    viewer.runOnVisualizationThread(viewerPsycho);
    while (!viewer.wasStopped())
    {
        user_data++;
    }
    return 0;
}

マウスのホイールを引き、左クリックを押したまま移動で、原点を中心に回転できたりします。 すると、以下の図7のような画面が出てくると思います。これが出てきたら、PCLのセッティングは一旦完了となります。

f:id:stopengin0012:20180521030557p:plain

図7:サンプル実行画面

まとめ

windows10 + visual sturido 2017の環境にて、PCLのセットアップを行いました。 今後は、さまざまな点群処理の実装を行っていこうかと思います。

RICHO THETA VとMirage Cameraについて比較ーその1:簡易比較とその目的

はじめに

RGBカメラセンサといえば視野の範囲内の映像を平面上に表示するのが一般的でした。 しかし近年AR(Augumented Reality)やVR(Virtual Reality)技術の発展により、 平面ではなく立体的に展開された映像を体験することが容易となっています。

そして立体的に展開された映像を撮影するために、様々なデバイスが提案されています。 その中でも、今回はRICHO THETA VとMirage Cameraについて着目します。


RICHO THETA V は上下左右360度全ての方向を撮影することができるカメラです。
4K画質(3840 x 1920、56Mbps)、30fpsの動画を撮影することができます。

Mirage Camera は VRヘッドセットであるMirage soloと同時に発表されたデバイスです。 全面に1300万画素のカラーカメラが二つ付いており、こちらは前方を基準に上下左右180度の映像を撮影できます。
また、仕様を見るとこちらもRICHO THETA Vと同様に4K画質、30fpsの動画を撮影することができます。


比較と目的

f:id:stopengin0012:20180515211617p:plain

図1:RICHO THETA VとMirage Cameraの比較

図1にカメラ性能などの比較した図を載せます。また、これらは各公式サイトから引用しています。 RICHO THETA V も Mirage Cameraも、どちらも4K画質で動画を取得することができます。 しかしながら、前者は360°、後者は180°の映像出力に最適化されているため、当然見え方が変わってくるはずです。

次に同じ4K画質で動画を撮影できるため、Mirage Cameraの方が狭い視野の反面、綺麗な見た目で撮影できると予想しています。
その際、どの程度綺麗にとれるのか?ということに興味が湧いています。 さらに、この解像度次第では高度な画像処理にも耐えうるかもしれません。

....と、妄想が膨らむところで、今後実際の使用感について書いていこうと考えています。

python(pyDev)+windowsで始める機械学習(2015年6月現在)

自分はlinux上でpythonの開発環境を構築しているのですが、

・学校ではEclipseを使っている学生が多い(VimとかEmacsとかは使ってない)
→ (もうVisual Studioでいいんじゃない?)

・学校が推奨しているOSがwindows

ですので、windows上で仮想OSとか使わずに機械学習のライブラリが使えるような
環境構築をしていきたいと思います。


確認済み環境:Windows 8.1 Pro, 64bit

参考:基本的にはこの二つを参考にしています。

参考1 : やってみよう分析!第8章:PythonとEclipse(PyDev)で作る分析環境 for Windows - Qiita

 

参考2 : 

PythonでNumpyとMatplotlibを利用する(Windows) - Gobble up pudding



1. pythonのインストール


1.1 download

Welcome to Python.org

ここからpython2.7の最新版をダウンロードしてください。

f:id:stopengin0012:20150601232817p:plain

 
ページ下部の、windows x86-64 MSI installerを選択してください。

f:id:stopengin0012:20150601232831p:plain


1.2 install

インストーラを起動した後は、主にインストーラに従う形でOKです。

1.3 環境変数の設定

環境変数のPathに、
C:¥Python27;
を追加してください
(ここら辺は他にも解説しているサイトがありますので、割愛します)


[確認]
コマンドプロンプト
python
と打ち、以下の画面になればOKです。

f:id:stopengin0012:20150601232929p:plain



 

2. numpy, scipy, pandas, matplotlibのインストール 

参考1とここから少しづつ変わっていきます。
具体的には、.whlファイルのインストール方法と、msiインストーラを使わないことが
記事と違うところです。

 

2.1 numpyのインストール

http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

から、適切なバージョンのものを選んでダウンロードしてください。

f:id:stopengin0012:20150601233016p:plain


(今回の場合, 64bit でpython 2.7なので、
numpy‑1.9.2+mkl‑cp27‑none‑win amd64.whl
を選びます。)

 

ダウンロードが完了したら、C:¥Python27¥Scripts
のフォルダに入れて下さい。

f:id:stopengin0012:20150601233057p:plain



これから、whlファイルをインストールします。
具体的には、pipというパッケージ管理ツールを利用します。

まず、コマンドプロンプト上で、C:¥Python27¥Scriptsへ移動します。

f:id:stopengin0012:20150601232956p:plain



次に、

pip install (インストールしたいwhlファイル(!!ファイル名は変えてはダメ!!))

と打ち、以下のようなコンソールが出て来ればnumpyのインストールが完了します。


f:id:stopengin0012:20150601233119p:plain



[確認]
コマンドプロンプト上で

python

と打ったあと、

import numpy

と打ち、Errorが出てなければ大丈夫です。

f:id:stopengin0012:20150601233140p:plain

2.2 scipy, pandasのインストール

次に、numpyと同様にして、以下の二つのライブラリを導入してください。

scipy

http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy

pandas
http://www.lfd.uci.edu/~gohlke/pythonlibs/#pandas

f:id:stopengin0012:20150601233153p:plain



[確認]
numpyの時と同様、確認してください。

f:id:stopengin0012:20150601233212p:plain

2.3 matplotlibのインストール

参考1で言われている通り、matplotlibは楽です。
コマンドプロンプト上で、
C:¥Python27¥Scriptsへ移動します。

そして、以下のコマンドを打つだけですw

 

pip install matplotlib

 

f:id:stopengin0012:20150601233227p:plain

 

2.4 scikit-learnのインストール

機械学習ライブラリである、scikit-learnをインストールします。
(念のため、このライブラリを最後にしています。)

numpyの時と同様にして、インストールをしてください。

http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-learn



3. pyDevのインストール

参考1の通りです。
Eclipseをインストールし、pyDevをインストールしてください。

f:id:stopengin0012:20150601233508p:plain

4. pyDevでの開発方法

4.1プロジェクトの作成

Eclipseを再起動したのち、「File -> New -> Other..」を選択 

f:id:stopengin0012:20150601233558p:plain

 

PyDev Project を選択

f:id:stopengin0012:20150601233645p:plain

 

青いリンクのような場所をクリックし、Pythonの情報をEclipse側に設定します.

(自動設定のような項が真ん中のボタンに出るので、その真ん中のボタンを押してください(画像なし))

そして、Finishを押します。

f:id:stopengin0012:20150601233729p:plain

 

出現したプロジェクトフォルダのところで右クリック→ PyDev Module
を選択します。

f:id:stopengin0012:20150601233924p:plain

 

このような形でパッケージ名とmodule名を命名したください。

f:id:stopengin0012:20150601234036p:plain


適当な場所から、サンプルを拾ってきて、実行(上部の再生ボタン)を押し、
Python Run を選択して実行し、できればOK!

サンプル:

http://scikit-learn.org/stable/auto_examples/plot_cv_predict.html#example-plot-cv-predict-py

f:id:stopengin0012:20150601234133p:plain



表示されない場合

以下のページを参考にしてください。

 

hope-is-dream.hatenablog.com

 

はてなブログに移行しました

ほとんど記述してなかったですが、以下のはてなダイアリーから移行しました。
時々何か書こうと思います。


d.hatena.ne.jp