Kd-Tree/Octree Search
Last updated
Last updated
ํน์ ์ ์ ๊ธฐ์ค์ผ๋ก ๊ฐ๊น์ด ์๋ ์ ๋ค์ ๋ฌด์์ธ์ง? ์ขํ๋ ์ด๋ป๊ฒ ๋๋์ง ์๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค(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๋ ์์น ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด์ ๋๋ค. ์ด ํํ๋ก ๋ฐ์ดํฐํฐ๋ฅผ ์ ์ฅํ๊ฒ ๋๋ฉด ํจ์จ์ ์ผ๋ก ๋ ์ธ์ง ์์น์ ๊ทผ์ ์ด์ ํ์์ด ๊ฐ๋ฅ ํฉ๋๋ค.
๊ฐ์ฅ ๊ฐ๋จํ spatial partitions ๋ฐฉ๋ฒ์ ์์์ ๋ฐฐ์ด ๊ทธ๋ฆฌ๋(2D)/๋ณต์ (3D)์ ์ด์ฉํ๋ ๊ฒ์ ๋๋ค. ๊ฒฉ์๋ฅผ ํตํ ์ ๊ทผ๋ฒ์ ๊ณจ๊ณ ๋ฃจ ๋ถ์ฐ๋์ด ์๋ ์ ์ ๋ํด์ ๊ตฌํํ๊ธฐ ์ฌ์ด ํด๋ฒ์ด์ง๋ง, ์ ์ ํ ํฌ๊ธฐ๋ฅผ ์ ์ ํ๋ ๋ฐฉ๋ฒ๊ณผ ๋น๊ณต๊ฐ์ผ๋ก ์ธํ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น์ ๊ณ์ฐ ํจ์จ์ฑ์ด ๋จ์ด ์ง๋๋ค. ๊ณต๊ฐ์ ์กฐ๊ธ ๋ ์ ์ ํ ๋๋๋ ๋ฐฉ๋ฒ์ ๊ณต๊ฐ๋ถํ ํธ๋ฆฌ(Space-partitioning trees)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
๋ํ์ ์ธ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค.
k-d trees
Octrees(3D)
BST(Binary Search Tree)๋ฅผ ๋ค์ฐจ์ ๊ณต๊ฐ์ผ๋ก ํ์ฅํ ๊ฒ์ผ๋ก, ๊ฐ ๋ ธ๋์ ๋ฐ์ดํฐ๊ฐ ๊ณต๊ฐ์ K ์ฐจ์ ํฌ์ธํธ์ธ ์ด์ง ๊ฒ์ ํธ๋ฆฌ์ ๋๋ค. ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ BST์ ์ ์ฌํ์ง๋ง ํธ๋ฆฌ์ ๋ ๋ฒจ ์ฐจ์์ ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ ๋น๊ตํ๋ค๋ ์ ์ด ๋ค๋ฆ ๋๋ค. [๊ทธ๋ฆผ 2]๋ BST์ 2D, 3D kd-tree ๋ฅผ ํํํ ๊ฒ์ ๋๋ค.