โ˜‘ Check Box

  • Docker ์ƒˆ๋กœ ํ•œ๊ฒŒ ํŒŒ์„œ ๊ตฌ๋™ํ•ด๋ณด๊ธฐ
  • Matlab calibration paramere ์™€ OpenCV parameter ๋น„๊ตํ•˜๊ณ  ๊ฐ parameter ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฐ๊ณผ ๋น„๊ตํ•˜๊ธฐ
  • PCD downsampling ๋ฐ ํฌ์ธํŠธ ํฌ๊ธฐ ์กฐ์ ˆ ๋“ฑ ๋ฐฉ๋ฒ• ์กฐ์‚ฌํ•˜๊ณ  ์ ์šฉํ•ด๋ณด๊ธฐ
  • ๋ฐ์ดํ„ฐ ๋ช‡ ๊ฐœ ๋” ์ฐ์–ด์„œ ๊ฒฐ๊ณผ ํ™•์ธํ•˜๊ธฐ
  • ์ด๋ฐœ ์˜ˆ์•ฝ
  • task ํœด๋Œ€ํฐ ์š”๊ธˆ ๋ณ€๊ฒฝ โณ 2024-07-09
  • task ์›”์„ธ ์ž๋™์ด์ฒด โœ… 2024-07-08
  • task ์žฅํ•™๊ธˆ ์•Œ์•„๋ณด๊ธฐ
  • task ์ด๋ฐœ ์˜ˆ์•ฝ #03 ๐Ÿ“… 2024-07-06 โœ… 2024-07-08
  • [ ]

๐Ÿง  Idea Note


๐Ÿ“ฅ Related Works


Docker ์„ค์น˜

  • Docker

    • Image: ubuntu:20.04
    • Run
      docker run -it --privileged --gpus 'all,"capabilities=compute,utility,graphics"' -e DISPLAY=unix$DISPLAY -e QT_X11_NO_MITSHM=1 -v /tmp/.X11-unix:/tmp/.X11-unix:rw -v /etc/localtime:/etc/localtime:ro -e TZ=Asia/Seoul -v /dev:/dev -v ~/workspace/dataset:/workspace/dataset -w /workspace --restart always --name stereo2pcd python:3.10.14-bullseye
  • VSCode ๊ฐ€์ƒํ™˜๊ฒฝ ์ฝ”๋“œ ๋””๋ฒ„๊น… ์ˆ˜ํ–‰

    • ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ํด๋”์— launch.json ๊ณผ settings.json ํŒŒ์ผ ์ƒ์„ฑ
{
	"version": "0.2.0",
	"configurations": [
		{
		"name": "Python: Current File",
		"type": "debugpy",
		"request": "launch",
		"args": ["--config","test.yaml",
			"--input","check.txt",
		], // argument ์ง‘์–ด๋„ฃ์–ด์„œ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ
		"console": "integratedTerminal"
		}
	]
}
{
	"python.testing.unittestArgs": [
		"-v",
		"-s",
		".",
		"-p",
		"test_*.py"
	],
	"python.testing.pytestEnabled": false,
	"python.testing.nosetestsEnabled": false,
	"python.testing.unittestEnabled": true,
	"python.pythonPath": "/workspace/project/calibration/.venv/bin/python3.10"
}
  • Open3D ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํ•ด๋‹น ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ
[Open3D WARNING] GLFW Error: GLX: Failed to create context: BadMatch (invalid parameter attributes)
[Open3D WARNING] Failed to create window
[Open3D WARNING] [DrawGeometries] Failed creating OpenGL window.
  • Docker container ์‹คํ–‰ ์‹œ ๋‹ค์Œ ์˜ต์…˜ ์ถ”๊ฐ€
--gpus 'all,"capabilities=compute,utility,graphics"'
-v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY

Calibration parameter ๋น„๊ต

Matlab vs Opencv

  • K1
2658.0302776.31
02650.742443.98
001
2652.502774.2
02643.52444.6
001
  • K2
2649.2302796.48
02645.802435.20
001
2648.802801.8
02640.62410.9
001
  • dist1
0.00201-0.01563000
0.0412-0.15920.0004-0.00180.1583
  • dist2
0.00920-0.03124000
0.0408-0.1907-0.00410.00150.2106
  • Rotation
0.9996-0.0261-0.0053
0.02600.9995-0.0199
0.00580.01980.9998
0.9996-0.0252-0.0080
0.02510.9996-0.0104
0.00820.01020.9999
  • Translation
-243.77-0.0851-2.0257
-6.09660.0037-0.0045
  • Q
100-2776.3
010-2444.0
0002658.0
00-0.0041-0.0830
100-2770.0
010-2435.2
0002642.1
000.16400
  • test1: Matlab ์—์„œ ์ถ”์ถœํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ Q ๊ณ„์‚ฐ (cv2.stereoRectify) ํ›„ ์ˆ˜ํ–‰
  • test2: Matlab ์—์„œ ์ถ”์ถœํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ Q ๊ณ„์‚ฐ (์ˆ˜๋™) ํ›„ ์ˆ˜ํ–‰
    • Q ๋ฅผ ๊ตฌํ•˜๋Š” ๊ณผ์ •์—์„œ 243e+03 ์ธ๊ฐ€? 243 ์ธ๊ฐ€?
    • test2-1 : 243, test2-2: 243e+03

ํ˜„์žฌ OpenCV Stereo calibration tool ์„ ์‚ฌ์šฉํ•˜๋ฉด Dist ์™€ Translation ์ด ์ด์ƒํ•˜๊ฒŒ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ฌธ์ œ๋Š” ์ถ”ํ›„ ํ•ด๊ฒฐํ•˜๊ธฐ๋กœ ํ•˜๊ณ , ์ผ๋‹จ Matlab ์—์„œ ๊ณ„์‚ฐํ•œ Parameter ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ง„ํ–‰

  • test3: ๋‚ด ์™ธ๋ถ€ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ชจ๋‘ OpenCV ์—์„œ ๊ณ„์‚ฐํ•œ ๊ฒƒ์œผ๋กœ ์ˆ˜ํ–‰

    • test3-2: Q ๋Š” ์ˆ˜๋™์œผ๋กœ ๊ณ„์‚ฐ
    • test3-3: Translation ์ œ์™ธ ๋‚˜๋จธ์ง€ ํŒŒ๋ผ๋ฏธํ„ฐ OpenCV (Q ์ž๋™ ๊ณ„์‚ฐ)
    • test3-4: Translation ์ œ์™ธ ๋‚˜๋จธ์ง€ ํŒŒ๋ผ๋ฏธํ„ฐ OpenCV (Q ์ˆ˜๋™ ๊ณ„์‚ฐ)
  • Undistorted images

+grid+grid+grid

  • Rectified images +grid+grid+grid

  • Disparity map

+grid+grid+grid

Result

  • test1
    • ๋ฐ”๋‹ฅ๊ณผ ์‚ฌ๋ฌผ ๋“ฑ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์–ด๋А์ •๋„ ๊ฒฝํ–ฅ์„ฑ์„ ๋ณด์ด๋‚˜ ์ขŒ์šฐ ๋ฐ˜์ „๋˜์–ด ์žˆ์Œ

  • test2-1
    • ์ขŒ์šฐ ๋ฐฉํ–ฅ์€ ๋งž๊ฒŒ ๋‚˜์™”์œผ๋‚˜ test1 ์— ๋น„ํ•ด ๊ฒฝํ–ฅ์„ฑ์ด ์ ๊ฒŒ ๋ณด์ž„

  • test2-2

    • test2-1 ๊ณผ ํฐ ์ฐจ์ด ์—†์Œ
  • test3

    • Q ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž„

  • test3-2

    • ์ฒœ์žฅ๊ณผ ๋ฐ”๋‹ฅ์—์„œ ๊ฑฐ์˜ ํ™•์‹คํ•˜๊ฒŒ ํฌ์ธํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, ๋‹จ ๋ฌผ์ฒด์˜ ๊ฒฝ์šฐ๋Š” ํฌ์ธํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ
    • test2 ์™€ ๋น„๊ตํ•˜๋ฉด dist ์™€ translation ๋งŒ ๋ฐ”๊ผˆ๋Š” ๋ฐ ํฐ ๋ณ€ํ™” ์žˆ์Œ
    • ์ฆ‰, dist ๋Š” opencv ์—์„œ ๊ณ„์‚ฐ ํ•œ ๊ฒƒ์ด ์ •ํ™•ํ•œ๋“ฏ ๋ณด์ด๊ณ , translation ์˜ ๊ฒฝ์šฐ ๋‹ค์‹œ ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Œ
    • Q ๋Š” ์™œ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Œ
    • *์•„๋งˆ OpenCV ์—์„œ ๊ณ„์‚ฐํ•œ Translation ์ด ์‹ฌํ•˜๊ฒŒ ์ด์ƒํ•œ ๊ฐ’์ด ๋‚˜์™€์„œ ๊ทธ๋Ÿฐ ๊ฒƒ์œผ๋กœ ๋ณด์ž„! *
  • test3-3

    • *์•„๋งˆ OpenCV ์—์„œ ๊ณ„์‚ฐํ•œ Translation ์ด ์‹ฌํ•˜๊ฒŒ ์ด์ƒํ•œ ๊ฐ’์ด ๋‚˜์™€์„œ ๊ทธ๋Ÿฐ ๊ฒƒ์œผ๋กœ ๋ณด์ž„! * โ†’ ์ด๊ฑฐ ์•„๋‹Œ๋“ฏ ํ•จ
    • Q ๋ฅผ ์ถœ๋ ฅํ•ด๋ณธ ๊ฒฐ๊ณผ ๊ฐ’์€ ๊ฑฐ์˜ ๋™์ผํ•˜๋‚˜ Baseline ๋ถ€๋ถ„์˜ ๋ถ€ํ˜ธ๊ฐ€ ๋ฐ˜๋Œ€๋กœ ๋˜์–ด์žˆ์—ˆ์Œ.
      • Matlab ๊ณผ OpenCV ์˜ Translation ๋ฐฉํ–ฅ์ด ๋ฐ˜๋Œ€๋กœ ๋˜์–ด์žˆ๋Š” ๋“ฏํ•จ
      • Matlab ์˜ translation ๊ฐ’ ๋ถ€ํ˜ธ๋ฅผ ๋ฐ”๊พธ๊ณ  ํ•œ ๊ฒฐ๊ณผ Q ๋Š” ์–ผ์ถ” ์ •ํ™•ํ•˜๊ฒŒ ๋‚˜์™”์œผ๋‚˜ ํฌ์ธํŠธ๋Š” ์—ฌ์ „ํžˆ ์ด์ƒํ•˜๊ฒŒ ๋‚˜์˜ด

  • test3-4
    • test3-3 ๊ณผ์˜ ์ฐจ์ด์ ์ด๋ผ๊ณ  ํ•˜๋ฉด Q ๋ฐ–์— ์—†๋‹ค.
    • ํ•˜์ง€๋งŒ Q ์˜ ๊ฒฝ์šฐ 3-3 ํ…Œ์ŠคํŠธ์˜ ์ถ”๊ฐ€ ์‹คํ—˜์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด Translation ์˜ ๋ถ€ํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด Q๊ฐ€ ์ˆ˜๋™ ๊ณ„์‚ฐ๊ณผ ๋™์ผํ•ด์ง€๋Š”๋ฐ ํฌ์ธํŠธ๋Š” ์ด์ƒํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค
    • ์—ฌ๊ธฐ์„œ Translation ์€ Rectify ์— ์‚ฌ์šฉ๋˜๊ณ  Rectified image ๋Š” Disparity ๋งต์„ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
    • ์ฆ‰, Translation ์˜ ๋ถ€ํ˜ธ๋ฅผ ๋ฐ”๊พผ ํƒ“์— Disparity map ์˜ ๊ณ„์‚ฐ์ด ํ‹€์–ด์ง„ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.
      • ์ž ์‹œ๋งŒ, ๊ทธ๋ ‡๋‹ค๋ฉด Q ๋ฅผ ์ˆ˜๋™๊ณ„์‚ฐํ•˜๋Š” ์‹์— -๋ฅผ ๋นผ๋ฉด ๋˜๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€?
      • ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ˆ˜๋™ ๊ฐ’๊ณผ ์ž๋™ ๊ฐ’ ๋ชจ๋“œ ๋™์ผํ•œ ๋ถ€ํ˜ธ๋ฅผ ๊ฐ–๊ฒŒ ๋œ๋‹ค.
      • ์ด๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐ๋œ๋‹ค๋ฉด test3-3 ์˜ ๋ฌธ์ œ๋Š” Translation ์˜ ๋ถ€ํ˜ธ๊ฐ€ ๋ฐ˜๋Œ€๊ฐ€ ๋˜์–ด Disparity map ์ƒ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ

+grid+grid

  • test3-5
    • Q ์ˆ˜๋™ ๊ณ„์‚ฐ ์‹์˜ ๋ถ€ํ˜ธ๋ฅผ ์ˆ˜์ •ํ•œ ๋’ค ์ž๋™ ๋ฐ ์ˆ˜๋™์œผ๋กœ ์ง„ํ–‰
    • ๋จผ์ € ์ฒซ๋ฒˆ์งธ ์ˆ˜๋™์˜ ๊ฒฝ์šฐ ์ขŒ์šฐ ๋ฐ˜์ „๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
      • ์ง€๊ธˆ Calibration ์ž์ฒด์˜ ๋ถ€ํ˜ธ๊ฐ€ ์ด์ƒํ•˜๊ฒŒ ๋œ๊ฒƒ ๊ฐ™์€๋ฐ Matlab ์ด๋‚˜ OpenCV ์—์„œ Calibration ์„ ํ•  ๋•Œ ์›์ ์˜ ์œ„์น˜๊ฐ€ ์ขŒ์ธก ์ƒ๋‹จ์— ์œ„์น˜ํ•œ ๊ฒƒ์ด ์›์ธ์ธ๋“ฏ ํ•จ
      • ์ฐพ์•„๋ณด๋‹ˆ ์ฒด์ปค๋ณด๋“œ์˜ ๋„“์ด์™€ ๋†’์ด๊ฐ€ ์ง์ˆ˜, ํ™€์ˆ˜๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ์‹คํ—˜์—๋Š” 7,7 ํฌ๊ธฐ์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋‚˜ ์ถ”์ธกํ•ด๋ด„
    • ์ž๋™์˜ ๊ฒฝ์šฐ ๋˜ ํฌ์ธํŠธ๊ฐ€ ๋ช‡๊ฐœ ์ฐํžˆ์ง€ ์•Š์Œ
      • ์ˆ˜๋™๊ณผ ์ฐจ์ด๋ผ๊ณ ๋Š” Q 4ํ–‰ 4์—ด ๊ฐ’์ด 0.08 ์ •๋„ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์ธ๋ฐ ์™œ ์ด๋ ‡๊ฒŒ ํฐ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Œ

Checkerboard ์ˆ˜์ •

  • OpenCV
[[2.64854552e+03 0.00000000e+00 2.76895348e+03]
 [0.00000000e+00 2.64306178e+03 2.45610393e+03]
 [0.00000000e+00 0.00000000e+00 1.00000000e+00]]
 
[[2.64517191e+03 0.00000000e+00 2.81201085e+03]
 [0.00000000e+00 2.63371976e+03 2.40949872e+03]
 [0.00000000e+00 0.00000000e+00 1.00000000e+00]]
 
[[ 0.03319256 -0.14649957  0.00204108 -0.00027259  0.16413916]]

[[ 0.03773088 -0.18673464 -0.00340553  0.00486367  0.24332452]]

[[ 0.99953074 -0.02829152 -0.01174298]
 [ 0.02818063  0.99955767 -0.00950361]
 [ 0.01200666  0.00916823  0.99988589]]
 
[[-24.69688786]
 [  0.3306053 ]
 [ -0.59528897]]

Q ์ž๋™

[[ 1.00000000e+00  0.00000000e+00  0.00000000e+00 -2.72265218e+03]
 [ 0.00000000e+00  1.00000000e+00  0.00000000e+00 -2.43481873e+03]
 [ 0.00000000e+00  0.00000000e+00  0.00000000e+00  2.63839077e+03]
 [ 0.00000000e+00  0.00000000e+00  4.04755500e-02 -0.00000000e+00]]

Q ์ˆ˜๋™