残念ながらKinectの開発環境は未だできておらず、その目処も立っていない。このままではこのブログを腐らせるだけだと判断したので、しばらくはログの解析などに使用できるコードを作っていこうと思う。 大掛かりな機械制御のソフトや、コード数が膨大なソフトそのものでは、不具合への...
生存報告、加えて3次元情報の取得ができるセンサの紹介 Kinect
かなり久しぶりの更新で申し訳ない 相変わらず新しい開発環境の構築はできていないのでPCLを用いた点群処理についての更新は行えない。 なので今回は現在存在する3次元情報を取得できるセンサについて、今後のためにもまとめておこうと思う。 対象はあくまでも3次元なので2次...
前回に引き続き3次元情報の取得ができるセンサの紹介を行う 今回は どちらかというと入力装置としての側面が強いがLeap Motionについて 赤外を照射して物体までの距離情報を取得する。10本の指をそれぞれ認識することが可能で、検知範囲は半径50cmほど、きわめて精度の高い...
VFH 、 SIFT に続いて今回はHarris特徴量を点群から抽出する。Harris特徴量(特徴点とも)は簡単に言えば入力されたデータの角を検出する特徴量である。、このHarris特徴量もSIFT同様PCLでは機能が実装されているので簡単に使うことができる。 コード #i...
以前記事にしたのは3次元点群のために作られた特徴量VFH(Viewpoint Feature Histogram)だったが、今回はSIFT( Scale-Invariant Feature Transform )特徴量の取得を行う。このSIFT特徴量の計算を行う機能もVFH同様...
題意の通り、極めて簡単なものなので必要がないと言われればその通りかもしれないが、なにかの機会に使用することがあるかもしれない。 コード #include "stdafx.h" #include <iostream> #include <pcl/io/io.h> #inc...
センサーから取得される点群データには、特に設定をしなければ壁などの構造物のデータも当然含まれる。こういったデータは目的によっては使われることがないので除去されるのが望ましい場合があったり、むしろ壁情報の方が重要である場合も当然あるので、いずれにせよ検知する必要がある。 コー...
点群データはあくまでも点の集まりにすぎないので、今回は点のそれぞれを結びメッシュデータを作成する。 コード #include "stdafx.h" #include <pcl/point_types.h> #include <pcl/io/pcd_io.h> #...
以前記事に載せたPCDファイルを表示するプログラム はまさにPCDをファイルしか読み込めないので今回はこのプログラムを改良してVFHファイルも読み込んで表示できるようにする。自分が出力ファイルはひと目で分かるように「元となったファイル+”_***.pcd”」などの形式となって...
現在3次元のデータには複数のファイルフォーマットが存在するが、それらの多くは点群データに変換可能である。今回は有名なPLYファイルを点群データファイルPCDに変換する。 短すぎるので関数化はしていない。 コード #include "stdafx.h" #includ...
センサから得られる点群データは、実空間上では平面であってもいざ点群データとして出力された場合は、微妙の誤差があり、まるで凹凸があるかのようになってしまう。勿論これはセンサの原理的に起こりうる事象なので仕方がない。PCLではこの微妙な誤差を修正するためにスムージングを行う機能があ...
点群データの特徴を抽出する Viewpoint Feature Histogram
物体検出などを行う際にはかならずと言っていいほどデータから特徴を抽出する。2次元においてはそういった特徴は無数に存在するが、比較的最近研究が行われるようになった3次元の点群においてはまだ数えるほどしかない。(2次元で使用される特徴量を3次元点群からも抽出できるようにしたものもあ...
Kinectから得られる点群データは基本的に背景や、空間内に存在する物体情報が一つのファイルの中に含まれている。物体認識などを点群データを用いて行う場合は、ラスタースキャンなどによって3次元空間中をマッチングしていくことも勿論可能であるが、2次元での探索以上に時間がかかってしま...
Kinectなどの3次元点群を取得するセンサーは便利であるが、度々ある点の座標値が以上であったりすることがある。こういった点のことをよくノイズだとかエラーだとか外れ値という。原理的にこれは発生しうる。またこれらを放置すると、法線の正確な計算など後に適用される処理に悪影響を与える...
点群データは、時に移動させたり回転させたりしなければならないことが多々ある。今回は座標軸を回転させるプログラムを作る。尚PCLでは赤の座標軸がX軸、緑がY軸、青がZ軸を表している コード #include "stdafx.h" #include <iostream...
日本人は議論が下手だとよく言われる。それに関しては、我々は議論や討論を行う訓練をつんでいないため仕方がないと思う。議論の際にその議論をより良いものとできるように留意しなければならないと考えたものをいかにまとめてみた。 議論するときにやめるべきこと 意見を述べている人を...
PCLではOctreeを使って2つの点群を比較し、その差分(片方に無いもの)を取り出す機能がある。なにが便利かというと、静的な(動きがない)環境で唯一動いているものがあればそれを検出できるということ。絶対に何者かが入って行動することがないような場所だとこのOctreeは使える。...
法線の推定などは入力された点群データの全ての点について、一定範囲内の近隣の点を探し、それらを基に法線を推定していた。この処理は点の数が多いほど時間が増大する。Kinectを使用する場合だと得られる点群の数が理論上307200個なので膨大な時間を要し、リアルタイムに処理を行う必要...
これはチュートリアルにあるのをそのまま使えばいい話だが一応記事にしておく 引数に与えられた2つのPCDファイルをひとつにまとめて表示+保存するプログラム。 コード #include "stdafx.h" #include <iostream> #includ...
3次元の点郡を扱う上で重要になってくるのが各点が持つ法線である。3次元点郡を扱う研究では、頻繁にこの法線を使う。ものによってはこの法線情報のみを特徴として人間の検知をやってしまっている研究さえある。今回は入力された点郡の法線を取得して表示するプログラムを作る。 今のところ...
Kinectなどのセンサは通常307200個の点郡が取れるはずであるが、あくまでも赤外線を照射して帰ってきた情報しか取得できないため、ガラスなどの点郡はとることができない。しかし、一応データは存在するものとして扱われる(QNANのような感じになり、Viewerなどでは表示されな...
通常Kinectから得られる点郡データはz軸(奥行き)方向に一定の距離があるはずだが、色々処理をしたい場合は座標(0,0,0)にあったほうがやり易かったりするので、入力点郡の重心を求め、全体をその重心の座標が(0,0,0)になるように移動するプログラムを作る。 コード ...
Kinectからの点群データの取得はできるようになったはずなのでそのデータを以前に作ったViewerで表示する。 一々プログラムを書き換えて読み込むファイルを指定するのは面倒なので引数を使用してPCDファイルならエラーなく読み込めるプログラムにする。尚前のViwerには、球...
PCLではKinectから点群データを取得する際はOpenNIを用いる。 PCLのチュートリアルではリアルタイムにデータを取得→画面に表示を行っているのみで取得された点群データは保存されないので数行コードを足してやる必要がある。コードは以下 コード #i...
一つ前の記事 でプロジェクトの設定などは完了しているので、ちゃんと動作するかの確認のためにPCLを使った短いコードを動かしてみる。 コード #include "stdafx.h" #include <pcl/visualization/cloud_vi...
「ブログリーダー」を活用して、VMさんをフォローしませんか?