일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MirrorDiscrimination
- Omnidirectional
- Python
- Kinect
- RGBD
- numpy
- DepthEstimation
- SensorFusion
- pytorch
- MirrorSegmentation
- ComputerVision
- vstack
- deep learning
- LearnGitBranching
- IndoorReconstruction
- Multi-viewRegistration
- 다단
- RuntimeError
- 3d vision
- Deeplearning
- OmniSLAM
- unsupervised learning
- tensorboard
- CVPR2020
- hstack
- LayoutEstimation
- git
- ICCV2019
- PaperReview
- CONCATENATE
- Today
- Total
let me graduate
[PR#2] Joint Layout Estimation and Global Multi-View Registration for Indoor Reconstruction - Lee et al. 본문
[PR#2] Joint Layout Estimation and Global Multi-View Registration for Indoor Reconstruction - Lee et al.
daeheepark 2019. 11. 13. 15:09Lee, J. K., Yea, J., Park, M. G., & Yoon, K. J. (2017). Joint Layout Estimation and Global Multi-view Registration for Indoor Reconstruction. Proceedings of the IEEE International Conference on Computer Vision, 2017_-_Octob, 162–171. https://doi.org/10.1109/ICCV.2017.27
Layout Estimation 부분만 review
Abstract
Scene layout estimation과 global registration problem을 결합하여 해결하고자 하는 논문
range data의 시퀀스를 받아서
1. KinectFusion을 사용해 scene fragement를 생성
2. Pose graph optimization을 통해 register (3D point cloud로)
3. layout estimation과 layout-based global registration을 반복하여 서로 보완하도록 수행
Scene layout은 HAC(Hierarchical Agglomerative Clustering)과 energy-based multi-model fitting을 이용해 검출. (noisy measurement를 고려)
위 작업을 통해 얻은 layout을 가지고, 모든 range data를 Global Iterative Closet Point Algorithm을 통해 register.
이 때 벽이나 천장같은 layout에 해당하는 3D 포인트들은 그 layout에 가깝도록 조정되도록 한다.
synthetic, 실제 data를 가지고 정량, 정성적으로 평가
Previous Work
생략
Proposed Method
- Initial Registration
생략
- Layout Estimation
Point Cloud 형태인 fragment $F_i$ 로부터 dominant Planes $P_{dominant}$ 를 추출. $P_{dominant}$ 로부터 layout plane(wall, celing, floor) $P_{layout}$ 을 결정
Dominant Plane Extraction:
$F_i$ 를 supervoxel $S=\left \{ S_1\cup S_2\cup ...S_K \right \}$ 로 나눈다.
3개의 인접한 supervoxel의 가운데 포인트에서 plane parameter를 계산한다. ($\pi _i=\left [ a_l,b_l,c_l,1 \right ]^{\top }$)
(평면 파라미터에 center point는 없나? 모든 평면이 원점을 지나는건 아닐텐데)
이렇게 하면 벽같이 큰 평면은 많은 비슷한 평면 파라미터를 가진 평면 파라미터들이 존재할 것이다.
이 평면 파라미터들을 두 단계에 의해 clustering 해준다.
1. HAC(Hierarchical Agglomerative Clustering)을 이용.
Supervoxel $S_k$와 plane $\pi_l$ 사이의 거리는 다음과 같이 정의된다.
$$C(\pi_l,S_k)=\frac{1}{\left | S_k \right |} \sum_{\mathbf{p}\in S_k}d(\pi_l,\mathbf{p})$$
distance function $d(\cdot ,\cdot )$는 다음과 같이 정의된다.
$$d(\pi_l,\mathbf{p})=\frac{\left | \pi_{l}^{\top }\mathbf{\bar{p}} \right |}{\sqrt{a_l^2+b_l^2+c_l^2}}$$
where $\mathbf{\bar{p}}$ is homogeneous representation of 3D point $\mathbf{p}$
이렇게 클러스터링을 해도 fragment 경계의 주변에 local 왜곡으로 인해 제대로 클러스터링 되지 않는 plane parameter들이 존재한다.
이를 해결하기 위해 아래 두번째 방법으로 클러스터링 한다.
2. Graph cut을 통해 Energy function을 최소화하도록 각각 3D point들의 plane hypotheses를 다시 계산
$F_i$에 포함된 3D point들이 plane parameter set $P_i$ 중에서 어떤 plane parameter에 대응되는가에 대한 mapping function $h$를 찾는다. ($i.e., h: \mathbf{F_i} \mapsto P_i$)
Energy function은 다음과 같이 정의된다.
$$E_p\left ( h_p \right )=\sum_{\mathbf{p\in F_i}}D_p\left ( h_p \right )+\sum_{\mathbf{p\in F_i, q\in N_P}}V_{p,q}\left (h_p, h_q \right )$$
where $D_p$ is $d\left (\pi_l, \mathbf{p} \right )$
$V_{p,q}$는 Potts model로서, smoothness term이다. 주변 포인트들과 plane parameter의 연속성을 보장
$V_{p,q}$는 $h_p \neq h_q$일 때 0이 아니다. -> 포인트 $p$, $q$가 인접한 포인트라면, 같은 평면에 해당 ($h_p=h_q$) 해야지 penalty가 0이다.
추가적으로 평면으로부터 매우 멀리 떨어진 포인트들이 평면으로 지정되는것을 피하기 위해 null-plane hypothesis $\pi_\o $를 이용한다. 즉, 평면위에 있지 않은 점들이 전체 energy function에 너무 큰 영향을 주는것을 피하기 위함이다.
$$D_p\left ( h_p\right )=\left\{\begin{matrix}
d\left (h_p,\mathbf{p} \right ), & if\ h_p\neq \pi_\o\\
\gamma, & otherwise
\end{matrix}\right.$$
이단계를 거친 plane hypotheses를 가지고, dominant planes $P_{dominant}$를 찾아낸다.
그러기 위해서 Hierarchical Agglomerative Clustering을 다시 실시한다.
이때는 전 단계처럼 supervoxel을 비교하는 것 대신에, 3D point들의 그룹을 이용해 $E_p$ 식을 통해 거리를 계산한다.
(이부분은 잘 이해가 안간다. 가리키는 식 중 첫번째는 $S_k$를 포함하는 식이고, $E_p$는 energy term인데?)
그 결과는 아래 그림과 같다.
Layout Plane Estimation:
Dominant plane $P_{dominant}$를 구하고 나면 layout을 구한다.
Weak Manhattan World assumption을 이용하는데, 벽이 천장, 바닥과 서로 수직이라는 가정이다. (벽들은 서로 수직일 필요 없음)
그러나 검출된 평면들은 완벽하게 수직하기 어렵기 때문에, 수직과 비슷하면 수직하게 만들어준다.
Layout estimation은 두 단계로 이루어진다.
1. 천장과 바닥을 찾는다
둘 중 하나는 가장 큰 평면일 것이다.
3D 포인트의 갯수가 가장 많은 평면이 아닌, 면적이 가장 넓은 평면으로 결정한다. (range data는 density가 일정하지 않으므로)
면적을 계산하는 법 : 평면 label된 3D point들을 2D occupancy grid map에 projection 후 grid map의 갯수를 센다.
2. 벽을 찾는다.
천장이나 바닥에 해당하는 2D grid map에 모든 3D point들을 projection한다.
이 때 grid cell에서 projection된 point들의 density가 threshold 이상이면 그 cell에 벽이 있는 것이다.
이렇게 얻어진 occupancy grid를 이용해 occupied grid의 boundary를 결정한다. (\partial O) ; Morphological boundary detection을 이용
$$L\left ( \pi_i\right )=\left\{\begin{matrix}
1, & if \; \left (\vec{n_i}\cdot \vec{n_{base}} \right )<\tau_1 \; and \; g \left (\partial O, \pi_i \right )<\tau_2 \\
0, & otherwise
\end{matrix}\right.$$
if문의 첫번째 term은 base plane과 perpendicularity 체크, 두 번째 term은 plane $\pi_i$와 boundary $\partial O$과의 거리 체크
이 때 두 거리는 다음과 같이 정의됨
$$g\left (\partial O, \pi_i \right )=\frac{1}{\left | S_{\pi_i} \right |} \sum_{p\in S_{\pi_i}} \left | \partial O-\mathbf{p}_{proj}\right |$$
$\left | S_{\pi_i} \right |$: cardinality : 집합원소의 개수