๐Ÿ’ป
Tutorial
  • INTRO
  • Part 0 (๊ฐœ์š”)
    • README
    • 3D ์˜์ƒ์ฒ˜๋ฆฌ
    • [๋ณ„์ฒจ] PCL & PCD๋ž€ (100%)
    • chapter02 : PCL ์„ค์น˜ (100%)
    • chapter03 : ROS ์‹ค์Šต ์ค€๋น„(100%)
  • Part 1 (์ดˆ๊ธ‰)
    • README
    • PCL ๊ธฐ๋ฐ˜ ๋กœ๋ด‡ ๋น„์ ผ
    • [๋ณ„์ฒจ] ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์ž…์ถœ๋ ฅ (70%)
      • PCL-Cpp (70%)
      • PCL-Python (70%)
      • Open3D-Python (70%)
      • ROS ์‹ค์Šต (90%)
    • Filter
    • [๋ณ„์ฒจ] ์ƒ˜ํ”Œ๋ง (70%)
      • ๋‹ค์šด์ƒ˜ํ”Œ๋ง-PCL-Cpp (70%)
      • ๋‹ค์šด์ƒ˜ํ”Œ๋ง-PCL-Python (50%)
      • ์—…์ƒ˜ํ”Œ๋ง-PCL-Cpp (70%)
      • ROS ์‹ค์Šต (90%)
    • [๋ณ„์ฒจ] ๊ด€์‹ฌ ์˜์—ญ ์„ค์ • (70%)
      • PCL-Cpp (70%)
      • PCL-Python (70%)
      • ROS ์‹ค์Šต (90%)
    • [๋ณ„์ฒจ] ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ (70%)
      • PCL-Cpp (70%)
      • PCL-Python (50%)
      • ROS ์‹ค์Šต (90%)
  • Part 2 (์ค‘๊ธ‰)
    • README
    • Kd-Tree/Octree Search
    • Chapter03 : Sample Consensus
    • [๋ณ„์ฒจ] ๋ฐ”๋‹ฅ์ œ๊ฑฐ (RANSAC) (70%)
      • PCL-Cpp (70%)
      • PCL-Python (70%)
      • ROS ์‹ค์Šต (90%)
    • ๊ตฐ์ง‘ํ™” (70%)
      • Euclidean-PCL-Cpp (70%)
      • Euclidean-PCL-Python (0%)
      • Conditional-Euclidean-PCL-Cpp (50%)
      • DBSCAN-PCL-Python (0%)
      • Region-Growing-PCL-Cpp (50%)
      • Region-Growing-RGB-PCL-Cpp (50%)
      • Min-Cut-PCL-Cpp (50%)
      • Model-Outlier-Removal-PCL-Cpp (50%)
      • Progressive-Morphological-Filter-PCL-Cpp (50%)
    • ํฌ์ธํŠธ ํƒ์ƒ‰๊ณผ ๋ฐฐ๊ฒฝ์ œ๊ฑฐ (60%)
      • Search-Octree-PCL-Cpp (70%)
      • Search-Octree-PCL-Python (70%)
      • Search-Kdtree-PCL-Cpp (70%)
      • Search-Kdtree-PCL-Python (70%)
      • Compression-PCL-Cpp (70%)
      • DetectChanges-PCL-Cpp (50%)
      • DetectChanges-PCL-Python (50%)
    • ํŠน์ง• ์ฐพ๊ธฐ (50%)
      • PFH-PCL-Cpp
      • FPFH-PCL-Cpp
      • Normal-PCL-Cpp (70%)
      • Normal-PCL-Python (80%)
      • Tmp
    • ๋ถ„๋ฅ˜/์ธ์‹ (30%)
      • ์ธ์‹-GeometricConsistencyGrouping
      • SVM-RGBD-PCL-Python (70%)
      • SVM-LIDAR-PCL-Python (0%)
      • SVM-ROS (0%)
    • ์ •ํ•ฉ (70%)
      • ICP-PCL-Cpp (70%)
      • ICP-ROS ์‹ค์Šต (10%)
    • ์žฌ๊ตฌ์„ฑ (30%)
      • Smoothig-PCL-Cpp (70%)
      • Smoothig-PCL-Python (70%)
      • Triangulation-PCL-Cpp (70%)
  • Part 3 (๊ณ ๊ธ‰)
    • README
    • ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ ํ•™์Šต ๋ฐ์ดํ„ฐ ์ƒ์„ฑ (0%)
      • PointGAN (90%)
      • AutoEncoder (0%)
    • ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ ์ƒ˜ํ”Œ๋ง ๊ธฐ๋ฒ• (0%)
      • DenseLidarNet (50%)
      • Point Cloud Upsampling Network
      • Pseudo-LiDAR
    • ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ ์ž์œจ์ฃผํ–‰ ํƒ์ง€ ๊ธฐ์ˆ  (0%)
    • ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ ์ž์œจ์ฃผํ–‰ ๋ถ„๋ฅ˜ ๊ธฐ์ˆ  (0%)
      • Multi3D
      • PointNet
      • VoxelNet (50%)
      • YOLO3D
      • SqueezeSeg
      • butNet
  • Snippets
    • PCL-Snippets
    • PCL-Python-Helper (10%)
    • Lidar Data Augmentation
  • Appendix
    • ์‹œ๊ฐํ™”Code
    • ์‹œ๊ฐํ™”ํˆด
    • Annotationํˆด
    • Point Cloud Libraries (0%)
    • ๋ฐ์ดํ„ฐ์…‹
    • Cling_PCL
    • ์ฐธ๊ณ  ์ž๋ฃŒ
    • ์ž‘์„ฑ ๊ณ„ํš_Tips
    • ์šฉ์–ด์ง‘
Powered by GitBook
On this page
  • 1. Kd-tree/Octree๋ฅผ ์ด์šฉํ•œ ์ ๊ตฐ ํƒ์ƒ‰ ๋ฐ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ
  • 1.1. Kd-TRee๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰

Was this helpful?

  1. Part 2 (์ค‘๊ธ‰)

Kd-Tree/Octree Search

PreviousREADMENextChapter03 : Sample Consensus

Last updated 4 years ago

Was this helpful?

1. Kd-tree/Octree๋ฅผ ์ด์šฉํ•œ ์ ๊ตฐ ํƒ์ƒ‰ ๋ฐ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ

ํŠน์ • ์ ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€๊นŒ์ด ์žˆ๋Š” ์ ๋“ค์€ ๋ฌด์—‡์ธ์ง€? ์ขŒํ‘œ๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(efficiently query for objects at or near a location). ์ด๋Ÿฌํ•œ ํƒ์ƒ‰๋“ค์€ ์ ๊ตฐ์—์„œ ์ด์›ƒ ์  ๋“ค๊ณผ์˜ ๋น„๊ต๋ฅผ ํ†ตํ•œ ํŠน์ง• ์ถ”์ถœ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด์ „์— ์‚ดํŽด๋ณด์•˜๋˜ filters์™ธ์—๋„ ํ–ฅํ›„, surface, features, registration๋“ฑ๋„ ํƒ์ƒ‰ ๊ธฐ๋Šฅ์— ๋ฐ”ํƒ•์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. PCL์—์„œ๋Š” ๋‹ค์–‘ํ•œ ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • BruteForce :simple brute force search algorithm

  • OrganizedNeighbor : KNN search in organized point clouds

  • KdTree

  • Octree

  • FlannSearch

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ array์— ์ €์žฅํ•˜๊ณ , ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•ด์„œ ์ฐพ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งค ์ˆœ๊ฐ„ ๋งค ํฌ์ธํŠธ์— ๋Œ€ํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•  ๊ฒฝ์šฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณต๊ฐ„์„ ๋ถ„ํ• ํ•˜์—ฌ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ํƒ์ƒ‰์„ ํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. Spatial partitioning ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด space-partitioning data structure๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. spatial data structure๋Š” ์œ„์น˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ฒด์ž…๋‹ˆ๋‹ค. ์ด ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด ํšจ์œจ์ ์œผ๋กœ ๋ ˆ์ธ์ง€ ์„œ์น˜์™€ ๊ทผ์ ‘ ์ด์›ƒ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค.

[๊ทธ๋ฆผ 1] Grid, Quadtree, Octree, k-d Tree

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ spatial partitions ๋ฐฉ๋ฒ•์€ ์•ž์—์„œ ๋ฐฐ์šด ๊ทธ๋ฆฌ๋“œ(2D)/๋ณต์…€(3D)์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฉ์ž๋ฅผ ํ†ตํ•œ ์ ‘๊ทผ๋ฒ•์€ ๊ณจ๊ณ ๋ฃจ ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ์ ์— ๋Œ€ํ•ด์„œ ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฌ์šด ํ•ด๋ฒ•์ด์ง€๋งŒ, ์ ์ ˆํ•œ ํฌ๊ธฐ๋ฅผ ์„ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋นˆ๊ณต๊ฐ„์œผ๋กœ ์ธํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์™€ ๊ณ„์‚ฐ ํšจ์œจ์„ฑ์ด ๋–จ์–ด ์ง‘๋‹ˆ๋‹ค. ๊ณต๊ฐ„์„ ์กฐ๊ธˆ ๋” ์ ์ ˆํžˆ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•์€ ๊ณต๊ฐ„๋ถ„ํ•  ํŠธ๋ฆฌ(Space-partitioning trees)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • k-d trees

  • Octrees(3D)

1.1. Kd-TRee๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰

BST(Binary Search Tree)๋ฅผ ๋‹ค์ฐจ์› ๊ณต๊ฐ„์œผ๋กœ ํ™•์žฅํ•œ ๊ฒƒ์œผ๋กœ, ๊ฐ ๋…ธ๋“œ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณต๊ฐ„์˜ K ์ฐจ์› ํฌ์ธํŠธ์ธ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ BST์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํŠธ๋ฆฌ์˜ ๋ ˆ๋ฒจ ์ฐจ์›์„ ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉฐ ๋น„๊ตํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. [๊ทธ๋ฆผ 2]๋Š” BST์™€ 2D, 3D kd-tree ๋ฅผ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

[๊ทธ๋ฆผ 2] 2D, 3D, Kd-tree