Point Cloud - hyeonju102/PARK GitHub Wiki

Point Cloud์˜ ์ •์˜ ๋ฐ ํŠน์ง•

  • 3์ฐจ์› ๊ณต๊ฐ„์ƒ์— ํผ์ ธ ์žˆ๋Š” ์—ฌ๋Ÿฌ ํฌ์ธํŠธ(Point)์˜ ์ง‘ํ•ฉ(set cloud)๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • 2D ์ด๋ฏธ์ง€์™€ ๋‹ค๋ฅด๊ฒŒ ๊นŠ์ด(z์ถ•) ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋ณธ์ ์œผ๋กœ N X 3 Numpy ๋ฐฐ์—ด๋กœ ํ‘œํ˜„๋œ๋‹ค.
  • ๊ฐ N ์ค„์€ ํ•˜๋‚˜์˜ ์ ๊ณผ ๋งตํ•‘์ด ๋˜๋ฉฐ, 3(x,y,z) ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

image

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ์ฃผ์š” ๋ฐฉ๋ฒ• : LiDAR(Light Detection And Ranging)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Point Cloud Data์˜ ์„ฑ์งˆ

  1. ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ์ •ํ˜•ํ™”๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ
    • 2D ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ์ •ํ•ด์ง„ ๊ฒฉ์ž ๊ตฌ์กฐ์˜ ํ˜•ํƒœ ์•ˆ์— ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์ง€๋งŒ, Point Cloud ๋ฐ์ดํ„ฐ๋Š” 3D ๊ณต๊ฐ„ ์ƒ์˜ ์ˆ˜๋งŽ์€ ์ ๋“ค์„ ์ˆœ์„œ ์—†์ด ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.
    • Point Cloud ๋ฐ์ดํ„ฐ๋ฅผ Voxel ํ˜•ํƒœ์˜ ์ •ํ˜•ํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ์ „์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜์ง€๋งŒ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.
  2. Sparseํ•œ ์„ฑ์งˆ์„ ์ง€๋‹Œ Point cloud ๋ฐ์ดํ„ฐ
    • ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ์˜ 3D ๊ณต๊ฐ„ ์•ˆ์—๋Š” Point๋“ค์— ๋น„ํ•ด ๋นˆ๊ณต๊ฐ„์ด ์ƒ๋‹นํžˆ ๋งŽ๋‹ค -> ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ๋น„ํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์œ ์˜๋ฏธํ•œ ์ •๋ณด๊ฐ€ ๊ฑฐ์˜ ์—†๋‹ค.

Point Cloud ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” 3D ์ธ๊ณต์ง€๋Šฅ ๋ชจ๋ธ

PointNet(2017)

์ž…๋ ฅ ํฌ์ธํŠธ์˜ ์ˆœ์„œ์— ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณ ์ • ํฌ๊ธฐ์˜ ํ‘œํ˜„์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

PointNet++(2017)

์ง€์—ญ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋” ํšจ๊ณผ์ ์œผ๋กœ ์บก์ฒ˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ„์ธต์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹ ์—ฌ๋Ÿฌ ํฌ๊ธฐ์˜ ์ด์›ƒ์„ ๊ณ ๋ คํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ทœ๋ชจ์—์„œ ํŠน์ง•์„ ์ถ”์ถœ

VoxelNet(2017)

ํฌ์ธํŠธ ํด๋ผ์šฐ๋“œ๋ฅผ 3D Voxels๋กœ ๋‚˜๋ˆ„๊ณ , ๊ฐ ๋ณต์…€ ๋‚ด์˜ ํฌ์ธํŠธ๋“ค์„ ๊ณ ์ • ํฌ๊ธฐ์˜ ํŠน์ง• ๋ฒกํ„ฐ๋กœ ์ธ์ฝ”๋”ฉํ•œ๋‹ค. ์ฃผ๋กœ ์ž์œจ ์ฃผํ–‰ ๋ถ„์•ผ์—์„œ ๊ฐ์ฒด ํƒ์ง€์— ์‚ฌ์šฉ

Dynamic Graph CNN (DGCNN) (2018)

DGCNN์€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ด์›ƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ ์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ํฌ์ธํŠธ ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ์—์„œ ํŠน์ง•์„ ์ถ”์ถœํ•œ๋‹ค. ์ด ๋™์  ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด CNN๊ณผ ์œ ์‚ฌํ•œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

PointCNN(2018)

ํฌ์ธํŠธ ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด CNN ์—ฐ์‚ฐ์„ ์ ์šฉํ•˜๊ธฐ ์ „์— ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๊ท ์ผํ•œ ๊ทธ๋ฆฌ๋“œ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. X-conv ์—ฐ์‚ฐ์„ ๋„์ž…ํ•˜์—ฌ ๊ณต๊ฐ„์  ์ˆœ์„œ๋ฅผ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์ดํ›„์— ์ผ๋ฐ˜ CNN ์—ฐ์‚ฐ์„ ์ ์šฉํ•œ๋‹ค.

PointTransformer(2020)

Transformer ์•„ํ‚คํ…์ฒ˜์˜ ๊ฐœ๋…์„ ํฌ์ธํŠธ ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ์— ์ ์šฉํ•œ๋‹ค. self attention mechanism์„ ํ™œ์šฉํ•˜์—ฌ ํฌ์ธํŠธ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ชจ๋ธ๋งํ•œ๋‹ค.

Point Cloud Registration

  • ๋‘ Point Cloud๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ณต๊ฐ„ ๋ณ€ํ™˜์„ ์ฐพ๋Š” ๊ณผ์ •
  • Scan matching์„ ํ•˜๊ฑฐ๋‚˜ Scan registration์„ ์ง„ํ–‰ํ•  ๋•Œ ๋™์ผํ•œ reference frame์—์„œ ๋ณด๋ฉด ๊ฐ๊ฐ์˜ Map point๋“ค์ด ์ผ์น˜ํ•ด์•ผ ์ •ํ™•ํ•œ ์ฃผ์œ„ ํ™˜๊ฒฝ์„ Mapping ํ•  ์ˆ˜ ์žˆ๋‹ค.

Point Cloud Registration์„ ํ†ตํ•ด ๊ฐ€์žฅ ์ •๋ ฌ์„ ์ž˜ํ•˜๋Š” Rotation Matrix R๊ณผ Translation Vector t๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ!

  1. ๋‘ Point Cloud์˜ ๋Œ€์‘ ๊ด€๊ณ„๋ฅผ ์•Œ ๋•Œ (Known Data Association)
  2. ๋‘ Point Cloud์˜ ๋Œ€์‘ ๊ด€๊ณ„๋ฅผ ๋ชจ๋ฅผ ๋•Œ(Unknown Data Association)
  3. Robustํ•œ Least Squares Approaches๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

Initial registration

์ •๋ฐ€ํ•œ ์ •ํ•ฉ์„ ์œ„ํ•œ ์ค‘์š”ํ•œ ์„ ํ–‰ ์ž‘์—…์œผ๋กœ, ๋ณด๋‹ค ์ •๋ฐ€ํ•œ ์ •๋ ฌ ๊ธฐ์ˆ ์„ ์ ์šฉํ•˜๊ธฐ ์ „์— ์—ฌ๋Ÿฌ ํฌ์ธํŠธ ํด๋ผ์šฐ๋“œ ์กฐ๊ฐ ๊ฐ„์˜ ๋Œ€๋žต์ ์ธ ์ •๋ ฌ์„ ํ™•๋ฆฝํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋ฉฐ, SLAM, ์žฅ๋ฉด ์žฌ๊ตฌ์„ฑ, ์‚ฐ์—… ๋””์ž์ธ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์‘์šฉ ๋ถ„์•ผ์—์„œ ์ „๋ฐ˜์ ์ธ ๋“ฑ๋ก ์ •ํ™•๋„์™€ ๊ฒฌ๊ณ ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

Refine registration

initial registration ์ดํ›„์— accuracy๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ •๋ ฌ ๊ฒฐ๊ณผ๋ฅผ fine-tunningํ•˜๋Š” ๊ณผ์ •

ICP

๋‘ point cloud ์‚ฌ์ด์˜ ๋Œ€์‘ ๊ด€๊ณ„๊ฐ€ ์ฃผ์–ด์ ธ ์žˆ์ง€ ์•Š์„ ๋•Œ Point๋“ค์„ Registrationํ•˜๋Š” ๋ฐฉ๋ฒ• optimal solution์ด ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— pointcloud์˜ ๊ด€๊ณ„๋ฅผ ์ž˜ estimationํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.