Paper/3D vision

Towards Realistic Example-based Modeling via 3D Gaussian Stitching

침닦는수건 2025. 4. 18. 18:32
반응형

내 맘대로 Introduction

 

이전 SeamlessNeRF의 3DGS 버전이라고 보면 된다.  SeamlessNeRF가 잘 학습된 TensoRF 모델을 위치를 지정해서 merging하는 방법론. NeRF보다 3DGS는 explicit하기 때문에 딱봐도 더 난이도가 낮아보이고 성능도 더 뛰어날 것으로 보인다. 단순히 color tone만 matching하는 것을 넘어서 gradient를 사용하는 컨셉을 그대로 가져오되 형식을 3DGS에 맞도록 변경한 것이 핵심.

 

GUI까지 꾸며서 개발한 것을 보아 연구성 논문으로 시작한 것은 아닌 것 같다. 

 

메모


전처리

1) 합칠 대상이 되는 2개의 3DGS 복원 완료된 결과를 GUI에 띄워서 bounding box로 cropping 
-> 유효 3DGS를 손으로 일단 정리해줌

2) brushing 으로 조금 더 섬세하게 대상 외 noise나 구조물을 제거함

3) transformeation까지도 손으로 GUI를 활용해 매칭한다. 
-> rotation, translation, scale을 찾아둠

4) SH coefficient 같은 것이나 위치 같은 것들을 앞서 찾은 R, t, s로 업데이트 해둠.



합칠 대상의 대략적인 배치가 완료된 상태에서는, 업데이트할 대상 영역을 선정하는 과정이 필요함. point cloud representation을 가져온 3DGS의 특징 때문에 대상 a와 b 간의 nearest matching으로 찾을 수 있다. 

1) 모든 point a, point b  간의 거리를 계산

2) 일정 거리 이하로 들어오면 업데이트 대상군으로 분류

3) point a 당 N point b를 대응 시킴

4) point a <-> N point b의 SH coefficient가 같도록 최적화 
-> a를 업데이트하는 것, b가 기준이 됨
---------------
SH 만 업데이트하는것은 일단 view depedent color가 안맞으면 시각적으로 seam 차이를 크게 느끼기 때문인 듯.

기본 loss라고 생각


대상 영역이 그럴듯하게 합쳐지긴 하지만 나머지 부분은 전혀 핸들링이 안됨. 접합부에서 거리가 먼 영역은 원본 그대로 남아있기 때문에 이상할 것

따라서 먼 거리에 있는 3DGS들도 손을 대긴 해야 한다.

그 방식은

1) driven points를 몇개 뽑아서 (sampling) 해당 point a에서 N point B를 matching 
-> 이 때 point a는 접합부 외 영역 (먼 거리)
-> 샘플링 할 때 정확히 point a 위치를 사용하면 항상 matching 되는 애만 매칭되고, 핸들링 안되는 애들이 생길 수 있으니 nearest matching 할 때 point a 위치를 random 하게 흔들면서 매칭

2) N point b의 SH color (view dependent color)를 avarage

3) point a의 SH color와 L2 최적화

-----------------------

SeamlessNeRF에서도 색상으로만 업데이트했을 때 seam이 안사라지는 것을 봐서, gradient를 사용하는 term도 추가

1) 렌더링된 이미지에 sobel filter를 먹임
2) 원본 (합치기 전) 대상으로 렌더링한 이미지에 sobel filter를 먹임

3) 이 둘 간의 오차를 l2 최적화

-> 원본의 경계, 굴곡을 유지하도록 강제하는 셈.
-> 생각보다 굉장히 간단하고 직관적.


여태까지 SH coefficient, color 같이 SH만 주로 다뤘고, gradient term도 주로 position에 관여하는 loss이기 때문에

미묘한 색상 톤을 맞추진 않는다.

따라서 색상 톤을 직접 loss로 걸어서 업데이트 한 번 더 해줌

1) 기준이 되는 대상의 3DGS들에서 색상 팔레트를 추출
-> 처음에는 3개 뽑고, clustering하며서 center 늘려가듯이 점진적으로 추가 

2) 업데이트 대상 3DGS들의 color마다 nearest matching로 색상 팔레트에서 찾음 -> 최적화

반응형