Enviar búsqueda
Cargar
PCL
•
40 recomendaciones
•
42,628 vistas
Masafumi Noda
Seguir
Educación
Tecnología
Arte y fotografía
Denunciar
Compartir
Denunciar
Compartir
1 de 83
Descargar ahora
Descargar para leer sin conexión
Recomendados
3次元レジストレーション(PCLデモとコード付き)
3次元レジストレーション(PCLデモとコード付き)
Toru Tamaki
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
Toru Tamaki
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
Ryohei Ueda
三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)
Tomohiro Motoda
コンピュータビジョンの最新ソフトウェア開発環境 SSII2015 チュートリアル hayashi
コンピュータビジョンの最新ソフトウェア開発環境 SSII2015 チュートリアル hayashi
Masaki Hayashi
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII
オープンソース SLAM の分類
オープンソース SLAM の分類
Yoshitaka HARA
ORB-SLAMの手法解説
ORB-SLAMの手法解説
Masaya Kaneko
Recomendados
3次元レジストレーション(PCLデモとコード付き)
3次元レジストレーション(PCLデモとコード付き)
Toru Tamaki
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
Toru Tamaki
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
Ryohei Ueda
三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)
Tomohiro Motoda
コンピュータビジョンの最新ソフトウェア開発環境 SSII2015 チュートリアル hayashi
コンピュータビジョンの最新ソフトウェア開発環境 SSII2015 チュートリアル hayashi
Masaki Hayashi
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII
オープンソース SLAM の分類
オープンソース SLAM の分類
Yoshitaka HARA
ORB-SLAMの手法解説
ORB-SLAMの手法解説
Masaya Kaneko
三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ
Naoya Chiba
【DL輪読会】Novel View Synthesis with Diffusion Models
【DL輪読会】Novel View Synthesis with Diffusion Models
Deep Learning JP
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Masaya Kaneko
画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
takaya imai
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
MobileRoboticsResear
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII
Structure from Motion
Structure from Motion
Ryutaro Yamauchi
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
SSII
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向
SSII
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
MPRG_Chubu_University
[解説スライド] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
[解説スライド] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Kento Doi
SLAM開発における課題と対策の一例の紹介
SLAM開発における課題と対策の一例の紹介
miyanegi
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
[DL輪読会]Depth Prediction Without the Sensors: Leveraging Structure for Unsuper...
[DL輪読会]Depth Prediction Without the Sensors: Leveraging Structure for Unsuper...
Deep Learning JP
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII
backbone としての timm 入門
backbone としての timm 入門
Takuji Tahara
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII
Sift特徴量について
Sift特徴量について
la_flance
cvsaisentan20141004 kanezaki
cvsaisentan20141004 kanezaki
kanejaki
夏前ゼミ
夏前ゼミ
メタボ ようじょ
Más contenido relacionado
La actualidad más candente
三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ
Naoya Chiba
【DL輪読会】Novel View Synthesis with Diffusion Models
【DL輪読会】Novel View Synthesis with Diffusion Models
Deep Learning JP
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Masaya Kaneko
画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
takaya imai
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
MobileRoboticsResear
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII
Structure from Motion
Structure from Motion
Ryutaro Yamauchi
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
SSII
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向
SSII
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
MPRG_Chubu_University
[解説スライド] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
[解説スライド] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Kento Doi
SLAM開発における課題と対策の一例の紹介
SLAM開発における課題と対策の一例の紹介
miyanegi
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
[DL輪読会]Depth Prediction Without the Sensors: Leveraging Structure for Unsuper...
[DL輪読会]Depth Prediction Without the Sensors: Leveraging Structure for Unsuper...
Deep Learning JP
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII
backbone としての timm 入門
backbone としての timm 入門
Takuji Tahara
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII
Sift特徴量について
Sift特徴量について
la_flance
La actualidad más candente
(20)
三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ
【DL輪読会】Novel View Synthesis with Diffusion Models
【DL輪読会】Novel View Synthesis with Diffusion Models
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用
Structure from Motion
Structure from Motion
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
画像局所特徴量と特定物体認識 - SIFTと最近のアプローチ -
[解説スライド] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
[解説スライド] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
SLAM開発における課題と対策の一例の紹介
SLAM開発における課題と対策の一例の紹介
tf,tf2完全理解
tf,tf2完全理解
[DL輪読会]Depth Prediction Without the Sensors: Leveraging Structure for Unsuper...
[DL輪読会]Depth Prediction Without the Sensors: Leveraging Structure for Unsuper...
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
backbone としての timm 入門
backbone としての timm 入門
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
Sift特徴量について
Sift特徴量について
Destacado
cvsaisentan20141004 kanezaki
cvsaisentan20141004 kanezaki
kanejaki
夏前ゼミ
夏前ゼミ
メタボ ようじょ
Pcl180+vs2015インストールマニュアル
Pcl180+vs2015インストールマニュアル
hateblo pcl
20090924 姿勢推定と回転行列
20090924 姿勢推定と回転行列
Toru Tamaki
20110326 CG・CVにおける散乱
20110326 CG・CVにおける散乱
Toru Tamaki
20110415 Scattering in CG and CV
20110415 Scattering in CG and CV
Toru Tamaki
ICASSP2012 Poster Estimating the spin of a table tennis ball using inverse co...
ICASSP2012 Poster Estimating the spin of a table tennis ball using inverse co...
Toru Tamaki
20110606PRMU 2D-3Dマッチングを用いた3次元点群の時間的な剛体変化検出
20110606PRMU 2D-3Dマッチングを用いた3次元点群の時間的な剛体変化検出
Toru Tamaki
20120629PRMU CVPR2012報告
20120629PRMU CVPR2012報告
Toru Tamaki
201109CVIM/PRMU Inverse Composite Alignment of a sphere under orthogonal proj...
201109CVIM/PRMU Inverse Composite Alignment of a sphere under orthogonal proj...
Toru Tamaki
広島大学工学部における医用画像処理の取り組み:放射線科,眼科,内科
広島大学工学部における医用画像処理の取り組み:放射線科,眼科,内科
Toru Tamaki
SSII2012 2D&3Dレジストレーション ~画像と3次元点群の合わせ方~ 第1部
SSII2012 2D&3Dレジストレーション ~画像と3次元点群の合わせ方~ 第1部
Toru Tamaki
スパースモデリング入門
スパースモデリング入門
Hideo Terada
Destacado
(13)
cvsaisentan20141004 kanezaki
cvsaisentan20141004 kanezaki
夏前ゼミ
夏前ゼミ
Pcl180+vs2015インストールマニュアル
Pcl180+vs2015インストールマニュアル
20090924 姿勢推定と回転行列
20090924 姿勢推定と回転行列
20110326 CG・CVにおける散乱
20110326 CG・CVにおける散乱
20110415 Scattering in CG and CV
20110415 Scattering in CG and CV
ICASSP2012 Poster Estimating the spin of a table tennis ball using inverse co...
ICASSP2012 Poster Estimating the spin of a table tennis ball using inverse co...
20110606PRMU 2D-3Dマッチングを用いた3次元点群の時間的な剛体変化検出
20110606PRMU 2D-3Dマッチングを用いた3次元点群の時間的な剛体変化検出
20120629PRMU CVPR2012報告
20120629PRMU CVPR2012報告
201109CVIM/PRMU Inverse Composite Alignment of a sphere under orthogonal proj...
201109CVIM/PRMU Inverse Composite Alignment of a sphere under orthogonal proj...
広島大学工学部における医用画像処理の取り組み:放射線科,眼科,内科
広島大学工学部における医用画像処理の取り組み:放射線科,眼科,内科
SSII2012 2D&3Dレジストレーション ~画像と3次元点群の合わせ方~ 第1部
SSII2012 2D&3Dレジストレーション ~画像と3次元点群の合わせ方~ 第1部
スパースモデリング入門
スパースモデリング入門
Similar a PCL
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
Yosuke Onoue
130710 02
130710 02
openrtm
130329 04
130329 04
openrtm
20130329 rtm4
20130329 rtm4
openrtm
OpenCLに触れてみよう
OpenCLに触れてみよう
You&I
Introduction to cython
Introduction to cython
Atsuo Ishimoto
170622 02
170622 02
openrtm
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
cocos2d-x公開講座 in 鹿児島
cocos2d-x公開講座 in 鹿児島
Tomoaki Shimizu
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)
Takahiro Harada
Python で munin plugin を書いてみる
Python で munin plugin を書いてみる
ftnk
[CB16] マイクロソフトウィンドウズカーネルのデスノート by Peter Hlavaty & Jin Long
[CB16] マイクロソフトウィンドウズカーネルのデスノート by Peter Hlavaty & Jin Long
CODE BLUE
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
Ryuuta Tsunashima
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
Yosuke Onoue
GTC Japan 2017
GTC Japan 2017
Hitoshi Sato
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
ssuser3a4b8c
Exploring the x64
Exploring the x64
FFRI, Inc.
Similar a PCL
(20)
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
130710 02
130710 02
130329 04
130329 04
20130329 rtm4
20130329 rtm4
OpenCLに触れてみよう
OpenCLに触れてみよう
Introduction to cython
Introduction to cython
170622 02
170622 02
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
cocos2d-x公開講座 in 鹿児島
cocos2d-x公開講座 in 鹿児島
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)
Python で munin plugin を書いてみる
Python で munin plugin を書いてみる
[CB16] マイクロソフトウィンドウズカーネルのデスノート by Peter Hlavaty & Jin Long
[CB16] マイクロソフトウィンドウズカーネルのデスノート by Peter Hlavaty & Jin Long
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
GTC Japan 2017
GTC Japan 2017
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
Exploring the x64
Exploring the x64
Último
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Tokyo Institute of Technology
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ssusere0a682
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
Takayuki Itoh
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
Último
(7)
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
PCL
1.
PCL(Point Cloud Library)
第13回 名古屋CV・PRML勉強会 野田 雅文@miyabiarts
2.
発表の流れ •
紹介編 • 導入編 • 基礎編 • 応用編 2
3.
紹介編
3
4.
PCLの紹介 • Point Cloud
Library – 点群(ポントクラウド)処理のためのラ ブラリ • PCL開発チーム – スポンサー:Willow Garage, NVidia, Google, Toyota, Trimble, Urban Robotics. 4
5.
姉妹プロジェクト • OpenCV
5
6.
ポントクラウド(点群)データ • 3次元の点の集合 –
深度(距離)センサから取得 – (ステレオカメラ) 6
7.
どんなことができるか •
filters • features • keypoints • registration • kdtree • octree • segmentation • sample_consensus • surface • range_data • io • visualization 7
8.
どんなことができるか
8
9.
フゖルタリング • 点群の削減 • 外れ値・無効値の除去 •
値の平滑化 削減前 削減後 9
10.
特徴量 • 3次元の特徴量計算 –
任意の点周辺の点群から算出 10
11.
特徴点 • 対応付けなどに利用するユニークな点の
検出 – SIFT、NARF 11
12.
レジストレーション • 複数の点群間の位置合わせ –
ICPゕルゴリズム 12
13.
kd木 • 空間構造 • 最近傍探索
13
14.
八分木 • 空間構造(グリッド構造) • 点群データの圧縮などに利用
14
15.
セグメンテーション • モデルフゖッテゖング –
モデル:平面、シリンダーなど • 領域分割 15
16.
サンプリングコンセンサス • モデルフゖッテゖングなどにおけるサン
プリング – RANSACなど 直線フゖッテゖング 球面フゖッテゖング 16
17.
表面データ • 点群データからの面の再構成
17
18.
レンジデータ • 点群データからレンジデータを復元
18
19.
入出力 • Kinect/Xtionからの入力 • フゔル入出力
– PCD(点群)、OBJ・PLY(メッシュ) 19
20.
可視化 • VTK(Visual Toolkit)
– 点群・レンジ・メッシュデータ可視化 – GUI表示 20
21.
応用ゕプリケーション • 3次元再構成 • SLAM •
ロボットの自律制御 21
22.
導入編
22
23.
PCLの仕様 •
プログラミング言語:C++ • 対応OS:Windows、MacOS、Linux • ラセンス:BSD • 公式サト: – http://pointclouds.org/ 23
24.
ドキュメント&チュートリゕル • http://pointclouds.org/documentation/
24
25.
その他の情報 • ICCV2011・IROS2011 チュートリゕル
25
26.
ダウンロード • http://pointclouds.org/download
26
27.
導入 • 今回は64bit 、Visual
Studio 2010を対象 • 最新版:PCL 1.4.0(2012/1/1) • ンストーラで関連するラブラリを一 括でンストール可能 – OpenNIだけは別途ンストール • デフォルトのンストールデゖレクトリ – C:¥Program files¥PCL1.4.0 27
28.
関連するラブラリ • Boost:C++準標準ラブラリ
– スマートポンタ、関数オブジェクト、ス レッド、シグナルなど • VTK:GUIツールキット • Eigen:行列ラブラリ • FLANN:最近傍探索ラブラリ • qHull:凸包、三角面化、ドロネー分割 • OpenNI:Kinect 28
29.
ンクルードパス •
C:¥Program files¥PCL1.4.0¥include¥pcl-1.4 • C:¥Program files¥PCL1.4.0¥3rdParty¥Boost¥include • C:¥Program files¥PCL1.4.0¥3rdParty¥Eigen¥include • C:¥Program files¥PCL1.4.0¥3rdParty¥flann¥include • C:¥Program files¥PCL1.4.0¥3rdParty¥qhull¥include • C:¥Program files¥PCL1.4.0¥3rdParty¥VTK 5.8.0¥include¥vtk-5.8 • C:¥Program files¥OpenNI¥include 29
30.
ラブラリパス •
C:¥Program files¥PCL1.4.0¥lib • C:¥Program files¥PCL1.4.0¥3rdParty¥Boost¥lib • C:¥Program files¥PCL1.4.0¥3rdParty¥flann¥lib • C:¥Program files¥PCL1.4.0¥3rdParty¥qhull¥lib • C:¥Program files¥PCL1.4.0¥3rdParty¥VTK 5.8.0¥lib¥vtk-5.8 • C:¥Program files¥OpenNI¥lib 30
31.
リンクするラブラリ(Release版) pcl_common.lib
openNI64.lib vtkIO.lib pcl_features.lib OpenNI.jni64.lib vtkjpeg.lib pcl_filters.lib NiSampleModule64.lib vtklibxml2.lib pcl_io.lib NiSampleExtensionModule64.lib vtkmetaio.lib pcl_kdtree.lib MapReduceMPI.lib vtkNetCDF.lib pcl_keypoints.lib mpistubs.lib vtkNetCDF_cxx.lib pcl_octree.lib vtkalglib.lib vtkpng.lib pcl_range_image.lib vtkCharts.lib vtkproj4.lib pcl_range_image_border_extractor.lib vtkCommon.lib vtkRendering.lib pcl_registration.lib vtkDICOMParser.lib vtksqlite.lib pcl_sample_consensus.lib vtkexoIIc.lib vtksys.lib pcl_segmentation.lib vtkexpat.lib vtktiff.lib pcl_surface.lib vtkFiltering.lib vtkverdict.lib pcl_visualization.lib vtkfreetype.lib vtkViews.lib flann.lib vtkftgl.lib vtkVolumeRendering.lib flann_s.lib vtkGenericFiltering.lib vtkWidgets.lib flann_cpp_s.lib vtkGeovis.lib vtkzlib.lib qhull6.lib vtkGraphics.lib opengl32.lib qhullcpp.lib vtkHybrid.lib qhullstatic.lib vtkImaging.lib qhullstatic_p.lib vtkInfovis.lib 31
32.
リンクするラブラリ • Debug版では「ラブラリ名-gd.lib」 –
PCL関連のラブラリのみ • OpenNIは32bit版だとラブラリ名が変わ るので注意 32
33.
基礎編
33
34.
サンプル • 点群をフゔルから読み込んで画面に表示
34
35.
サンプルコード int main() {
pcl::PointCloud<pcl::PointXYZ>::Ptr data( new pcl::PointCloud<pcl::PointXYZ>() ); pcl::io::loadPCDFile( “filename.pcd", *data ); pcl::visualization::CloudViewer *viewer = new pcl::visualization::CloudViewer( “Sample" ); viewer->showCloud( cloud_filtered ); while( !viewer->wasStopped() ) { boost::this_thread::sleep (boost::posix_time::microseconds (100000)); } return 0; } 35
36.
点群データ pcl::PointCloud< PointT >::Ptr
cloud( new PointCloud< PointT >() ); 点群データクラス スマートポンタ PointT:点の型 pcl::PointXYZ :位置 pcl::PointXYZI :位置+輝度 pcl::PointXYZRGB :位置+輝度(RGB) pcl::PointNormal :位置+法線 ・・・ 36
37.
スマートポンタ • pcl::PointCloud< PointT
>::Ptr • pcl::PointCloud< PointT >::ConstPtr – 中身はboost::shared_ptr • 通常のポンタ – newしたら必ずdeleteする必要がある • スマートポンタ – deleteをスマートポンタが担当 37
38.
フゔル入力 pcl::io::loadPCDFile( “filename.pcd", *cloud
); • フゔルフォーマット:.pcd • 戻り値:-1で読み込み失敗 38
39.
フゔル出力 pcl::io::savePCDFile( “filename.pcd", *cloud
); 39
40.
点群データの表示 • pcl::visualization::CloudViewerを利用 pcl::visualization::CloudViewer viewer(
"Sample" ); viewer.showCloud( data ); while( !viewer.wasStopped() ) { boost::this_thread::sleep (boost::posix_time::microseconds (100000)); } 40
41.
Viewer
41
42.
Viewer • pcl::visualization名前空間内に存在
– CloudViewer:点群データのみを表示 – PCLVisualizer:点群・法線・メッシュデータな どを表示 • 操作方法自体はどれも同じ 42
43.
Viewerの操作方法 •
左ドラッグ:視点の回転 • Shift+左ドラッグ:視点の平行移動 • Ctrl+左ドラッグ:画面上の回転 • 右ドラッグ:ズーム • g:メジャーの表示 • j:スクリーンショットの保存 43
44.
Viewerの機能拡張 • コールバック関数を登録することで機能
を拡張できる – registerKeyboardCallback – registerMouseCallback – registerMousePickCallback 44
45.
pcl::visualization::PCLVisualizer pcl::visualization::PCLVisualizer *viewer =
new pcl::visualization::PCLVisualizer(); viewer->setBackgroundColor (0, 0, 0); viewer->addCoordinateSystem (0.1); viewer->initCameraParameters (); viewer->addPointCloud( cloud ); while( !viewer->wasStopped() ) { viewer->spinOnce(); boost::this_thread::sleep (boost::posix_time::microseconds( 100000 ) ); } 45
46.
点群の作成 •
テスト用などに点群を作成したい場合 pcl::PointCloud< PointT >::Ptr cloud( new PointCloud< PointT >() ); for( int i = 0 ; i < 10000 ; ++i ) { // PointT = PointXYZの場合 PointXYZ point; point.x = rand(); point.y = rand(); point.z = rand(); cloud->points.push_back( point ); } cloud->width = cloud->points.size(); cloud->height = 1; 46
47.
boost::random • C標準のrand関数は線形合同法
– 高次元で乱数に周期が発生 • 任意の乱数生成器、分布を設定可能 boost::mt19937 gen( static_cast<unsigned long>(time(0)) ); boost::uniform_real<> dst( -0.1, 0.1 ); boost::variate_generator< boost::mt19937&, boost::uniform_real<> > rand( gen, dst ); // 乱数生成 rand() 47
48.
Kinectからの入力 • 内部でOpenNIを利用 pcl::Grabber* interface
= new pcl::OpenNIGrabber(); boost::function<void (const pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr&)> func = boost::bind ( capture, _1); interface->registerCallback ( func ); interface->start (); while (!viewer.wasStopped()) { sleep (1); } interface->stop (); コールバック関数 void capture(const pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr &cloud ) { viewer.showCloud( cloud ); } 48
49.
無効値の除去 • Kinectからの入力には、NaNが含まれる
– NaNが存在すると、レジストレーションなど の結果がおかしくなる pcl::PassThrough<pcl::PointXYZRGB> pass; pass.setInputCloud( input ); pass.filter( output ); pass.setFilterLimits( 0.0, 1.0 )とすることで、特定の範囲に制限することも可能 49
50.
応用編
50
51.
応用編の流れ • 2つの点群間を位置合わせし、面を再構成 –
ICCV2011 チュートリゕルに基づく – 画像処理で言うと、モザキング 統合 51
52.
処理の流れ 複数の点群データ 平面検出と除去
初期対応付け クラスタリング 対応付けの高精度化 対象物体の抽出 点群の統合 特徴点検出 メッシュ化 特徴量記述 メッシュデータ 52
53.
平面の検出と除去 • 平面推定x2 • 平面に属する点群の除去
53
54.
平面フゖッテゖング • 点群を平面にフゖッテゖング –
平面のパラメータの推定 – 平面に所属する点群の推定 54
55.
平面フゖッテゖング pcl::SACSegmentation< pcl::PointXYZ >
seg; seg.setInputCloud ( data ); seg.setOptimizeCoefficients ( true ); seg.setModelType ( pcl::SACMODEL_PLANE ); seg.setMethodType ( pcl::SAC_RANSAC ); seg.setDistanceThreshold ( 0.02 ); pcl::ModelCoefficients::Ptr coefficients ( new pcl::ModelCoefficients() ); pcl::PointIndices::Ptr inliers ( new pcl::PointIndices() ); seg.segment ( *inliers, *coefficients ); 55
56.
点群の抽出(除去) pcl::ExtractIndices< pcl::PointXYZRGB >
extract; extract.setInputCloud( cloud ); extract.setIndices( inliers ); extract.setNegative( true ); extract.filter( *segmented ); これを2回繰り返す 56
57.
クラスタリングによる対象領域の抽出 • 大きな点群クラスタのみを対象領域とし
て残し、ノズを除去する 57
58.
クラスタリング pcl::PointCloud< pcl::PointXYZRGB >::Ptr
tmp( new pcl::PointCloud< pcl::PointXYZRGB >() ); pcl::PointCloud< pcl::PointXYZRGB >::Ptr segmented( new pcl::PointCloud< pcl::PointXYZRGB >() ); removePlanar( cloud, tmp ); removePlanar( tmp, segmented ); pcl::search::KdTree<pcl::PointXYZRGB>::Ptr tree (new pcl::search::KdTree<pcl::PointXYZRGB>); tree->setInputCloud (segmented); std::vector< pcl::PointIndices > cluster_indices; pcl::EuclideanClusterExtraction<pcl::PointXYZRGB> clustering; clustering.setClusterTolerance( 0.03 ); clustering.setMinClusterSize( 1000 ); clustering.setMaxClusterSize( 300000 ); clustering.setSearchMethod( tree ); clustering.setInputCloud( segmented ); clustering.extract( cluster_indices ); 58
59.
対象領域の抽出 pcl::ExtractIndices< pcl::PointXYZRGB >
extract; extract.setInputCloud( segmented ); pcl::IndicesPtr indices (new std::vector<int>); *indices = cluster_indices[0].indices; extract.setIndices( indices ); extract.setNegative( false ); extract.filter( *result ); 59
60.
レジストレーションの流れ
特徴点検出 特徴量記述 初期対応付け 対応付けの高精度化 60
61.
特徴点検出 • 点群から特徴的な点(Keypoint)を検出
61
62.
特徴点検出 • いくつかの特徴点検出手法が存在 –
SIFT – Harris(Harris, Tomasi, Noble, Lowe) – Curvature(曲率) 62
63.
特徴点検出
• SIFT特徴点検出 pcl::SIFTKeypoint<pcl::PointXYZRGB, pcl::PointXYZI> sift3D; sift3D.setScales( 0.01, 3, 2 ); sift3D.setMinimumContrast( 0.0 ); pcl::PointCloud<pcl::PointXYZI>::Ptr keypoints( new pcl::PointCloud<pcl::PointXYZI>() ); sift3D.setInputCloud( cloud ); sift3D.compute(*keypoints); 63
64.
特徴量抽出 • いくつかの特徴量記述手法が存在 –
PFH(Point Feature Histograms) – PFH(RGB) – FPFH(faster approximation of) – SHOT(RGB) 64
65.
特徴量抽出 • キーポント周辺からFPFHを算出
• FPFHを算出するためには、点の法線が必要 – 法線の算出法は、後のスラドで説明 pcl::Feature<pcl::PointXYZRGB, pcl::FPFHSignature33> feature_extractor ; feature_extractor.setSearchMethod( pcl::search::Search<pcl::PointXYZRGB>::Ptr( new pcl::search::KdTree<pcl::PointXYZRGB>() ) ); feature_extractor.setRadiusSearch( 0.05 ); pcl::PointCloud<pcl::PointXYZRGB>::Ptr kpts(new pcl::PointCloud<pcl::PointXYZRGB>); kpts.points.resize(keypoints->points.size()); pcl::copyPointCloud(*keypoints, *kpts); feature_from_normals->setInputNormals( normals ); pcl::PointCloud<pcl::FPFHSignature33>::Ptr features( new pcl::PointCloud<pcl::FPFHSignature33>() ); feature_extractor->compute (*features); 65
66.
初期対応付け • 点群1 ->
点群2の対応付けを算出 • 点群2 -> 点群1の対応付けを算出 • 以上2つ対応付けのうち、共通する対応の みを取得 66
67.
初期対応付け • 点群1から点群2への対応を計算
– 反対も計算 correspondences.resize(source->size() ); pcl::KdTreeFLANN<FeatureType> descriptor_kdtree; descriptor_kdtree.setInputCloud ( cloud2 ); const int k = 1; std::vector<int> k_indices (k); std::vector<float> k_squared_distances (k); for (size_t i = 0; i < source->size (); ++i) { descriptor_kdtree.nearestKSearch (*cloud1, i, k, k_indices, k_squared_distances); correspondences[i] = k_indices[0]; } 67
68.
初期対応付け • 両方向に共通する対応のみを残す
– RANSACを行うことにより、一部の対応を除去 std::vector<std::pair<unsigned, unsigned> > c; for (unsigned cIdx = 0; cIdx < c1.size (); ++cIdx) { if ( c2[c1[cIdx]] == cIdx) { c.push_back( std::make_pair( cIdx, c1[cIdx] ) ); } } correspondences->resize( c.size()); for (unsigned cIdx = 0; cIdx < c.size(); ++cIdx) { (*correspondences)[cIdx].index_query = c[cIdx].first; (*correspondences)[cIdx].index_match = c[cIdx].second; } pcl::registration::CorrespondenceRejectorSampleConsensus<pcl::PointXYZI> rejector; rejector.setInputCloud( keypoints1 ); rejector.setTargetCloud( keypoints2 ); rejector.setInputCorrespondences( correspondences ); rejector.getCorrespondences( *correspondences ); 68
69.
初期対応付け • 2つの点群間の幾何関係を計算 pcl::registration::TransformationEstimation<pcl::PointXYZI,
pcl::PointXYZI>::Ptr transformation_estimation(new pcl::registration::TransformationEstimationSVD<pcl::PointXYZI, pcl::PointXYZI>); Eigen::Matrix4f initial_transformation_matrix_; transformation_estimation->estimateRigidTransformation( *keypoints1, *keypoints2, *correspondences, initial_transformation_matrix_); pcl::transformPointCloud( *cloud1, *transformed1, initial_transformation_matrix_); 69
70.
対応付けの高精度化 • ICP(Iterative Closest
Point)ゕルゴリズム – 距離が最小となる点同士を対応付ける – 点群間の距離の和を最小化 70
71.
対応付けの高精度化 pcl::IterativeClosestPoint<pcl::PointXYZRGB, pcl::PointXYZRGB> icp; icp.setInputCloud(
cloud1 ); icp.setInputTarget( cloud2 ); icp.setTransformationEpsilon( 1e-6 ); icp.setMaxCorrespondenceDistance( 5.0 ); icp.setMaximumIterations( 200 ); icp.setEuclideanFitnessEpsilon( 1.0 ); icp.setRANSACOutlierRejectionThreshold( 1.0 ); pcl::PointCloud<pcl::PointXYZRGB> final; icp.align(final); 71
72.
点群の統合 • 2つの点群をマージ *merged
= *cloud1 + *cloud2 ここでは、 *merged = *cloud1_final + *cloud2 点群間の重なりがあるので除去する必要がある 72
73.
点群の削減(ダウンサンプリング) • 不必要な点(同じ座標の点)の除去 • 後の処理の計算コストの削減 •
点群の分布の均一化 削減前 削減後 73
74.
点群の削減(ダウンサンプリング) • VoxelGridによる削減手法
– 点間の距離が一定以上になるように削減 pcl::VoxelGrid< pcl::PointXYZ > vg; vg.setInputCloud( cloud ); vg.setLeafSize( 0.01f, 0.01f, 0.01f ); vg.setDownsampleAllData(true); vg.filter( *cloud_filtered ); 他に、pcl::ApproximateVoxelGridがある 74
75.
メッシュ化
75
76.
メッシュ化の流れ 点の法線を計算
メッシュ化 76
77.
法線計算 • 任意の点中心から一定の範囲の点群を用
いて法線方向を算出 pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne; ne.setInputCloud (data); pcl::search::KdTree<pcl::PointXYZ >::Ptr tree (new pcl::search::KdTree<pcl::PointXYZ > ()); ne.setSearchMethod (tree); pcl::PointCloud<pcl::Normal>::Ptr normals (new pcl::PointCloud<pcl::Normal>); ne.setRadiusSearch (1.0); ne.compute( *normals ); 77
78.
法線の表示
• pcl::visualization::PCLVisualizerを利用 pcl::visualization::PCLVisualizer> viewer ("3D Viewer"); viewer.setBackgroundColor (0, 0, 0); viewer.addPointCloud<pcl::PointXY> (cloud, "sample cloud"); viewer.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud"); viewer.addPointCloudNormals<pcl::PointXYZ, pcl::Normal> (cloud, normals, 10, 0.05, "normals"); viewer.addCoordinateSystem (1.0); viewer.initCameraParameters (); 78
79.
法線付き点群の計算
• 点群(位置)と点群(法線)をまとめて、 一つの点群(位置+法線)に変換 位置 法線 位置+法線 位置 法線 位置+法線 位置 + 法線 位置+法線 位置 法線 位置+法線 pcl::PointCloud<pcl::PointNormal>::Ptr cloud_with_normals (new pcl::PointCloud<pcl::PointNormal>); pcl::concatenateFields (*cloud, *normals, *cloud_with_normals); 79
80.
メッシュ化 • メッシュ化手法がいくつか存在 –
pcl::GreedyProjectionTriangulation – pcl::MarchingCubesGreedy – ・・・ 80
81.
メッシュ化 • pcl::GreedyProjectionTriangulationで再構成 pcl::GreedyProjectionTriangulation<pcl::PointNormal> gp3; gp3.setSearchRadius
(0.01); gp3.setMu (2.5); gp3.setMaximumNearestNeighbors (100); gp3.setMaximumSurfaceAngle(M_PI/4); gp3.setMinimumAngle(M_PI/18); gp3.setMaximumAngle(2*M_PI/3); gp3.setNormalConsistency(false); gp3.setInputCloud (cloud_with_normals); gp3.setSearchMethod (tree2); pcl::PolygonMesh triangles; gp3.reconstruct (triangles); 81
82.
面の表示 • pcl::visualization::PCLVisualizerを利用 pcl::visualization::PCLVisualizer *viewer
= new pcl::visualization::PCLVisualizer; viewer->setBackgroundColor (0, 0, 0); viewer->addCoordinateSystem (0.1); viewer->initCameraParameters (); viewer->addPolygonMesh( surface_ ); while( !viewer->wasStopped() ) { viewer->spinOnce(); boost::this_thread::sleep (boost::posix_time::microseconds (100000)); } 82
83.
構築結果 • パラメータ調整がマチ?
83
Descargar ahora