0. Motivation

혹시 자취방을 구할 때 사진만 보고 기대했지만, 직접 방문했을 때 크게 실망한 경험이 있으신가요? 이런 경험은 단순히 개인적인 문제를 넘어서, 많은 사람들이 공통적으로 겪는 문제입니다. 심지어 이와 같은 사례는 언론에서도 종종 보도되곤 합니다. 하지만 아직까지도 '집이 실제보다 넓어 보이게 촬영하는 행위'를 제한하는 명확한 법적 근거는 없습니다. 이는 주택 계약에만 국한된 문제가 아니라, 카페, 헬스장 등 다양한 편의시설에서도 마찬가지입니다. 소비자들은 사진과 실제 공간의 차이로 인해 종종 곤란한 상황에 처하게 됩니다. 판매자나 임대인 입장에서도 이러한 문제를 의도적으로 만들고 싶어 하는 경우는 드뭅니다. 오히려 잠재적인 고객이나 세입자와의 신뢰를 해치고 싶지 않을 것입니다. 하지만 제한적인 2D 이미지로는 실제 공간의 크기, 구조, 분위기를 정확하게 전달하기 어렵기 때문에 이러한 오해가 발생합니다. 이런 문제를 해결하기 위해, 우리는 특정 공간에 직접 가보지 않고도 그 장소의 실제 모습과 기하학적 특징을 보다 명확하게 파악할 수 있는 방법이 있을지 고민했습니다. 그 결과, 공간의 기하적 특징을 가장 잘 전달하는 방법은 3D 표현이라는 결론에 도달했습니다. 3D Reconstruction 기술을 활용하면 공간을 더 구체적이고 신뢰성 있게 재현할 수 있기 때문입니다. 이를 통해 공간의 실제 크기와 구조를 왜곡 없이 보여줄 수 있으며, 사용자들은 보다 정확한 정보를 바탕으로 의사결정을 할 수 있습니다. 이제, 더 자세하고 사실적으로 원하는 장소를 확인할 수 있게 해주는 Indoor Scene Reconstruction에 대해 소개하겠습니다.
1. Introduction
3D Reconstruction은 다양한 뷰에서 찍은 이미지들을 넣었을 때 3D 모델을 만들어주는 기술이 입니다. 저희는 3D Reconstruction 기술 중에서 3DGS를 이용하여 실내 공간을 복원하는 Indoor Scene Reconstruction 프로젝트를 진행했습니다.
Indoor Scene Reconstruction 프로젝트 기법 소개에 앞서, 필요한 지식을 먼저 설명드리겠습니다.
왜 3D Gaussian Splatting 으로 할까?
3D Reconstruction 기술은 기존에 두 가지 접근 방식이 있습니다. 기하학적 방식과 딥러닝 방식으로 나눠집니다.

기하학적인 방식으로는 왼쪽 사진처럼 정적 객체나 장면 주위에 카메라를 이동시켜 가면서 여러 시점에서 촬영한 Image에 Feature Point를 구해 이들의 프레임간 대응 관계를 구함으로써 3D Shape을 추정하는 추정합니다. 딥러닝 방식에서 주로 사용하던 모델은 NeRF 입니다. NeRF는 3D 공간의 좌표와 광선의 방향을 입력으로 받아 아웃풋으로 그 지점에서의 밀도(density)와 색상(RGB)을 예측을 하는 MLP를 합니다. 하지만 MLP구조를 사용하기에 길고 많은 계산 비용을 요구했습니다. 기하학적 방식에서는 퀄리티가 다소 아쉬웠고 딥러닝 방식은 비용에서 아쉬운 모습이 있었습니다. 그러던 중 2023년 각각의 단점을 해소한 <3D Gaussian Splatting (SIGGRAPH 2023)> 논문이 나왔습니다. 이는 기하학적 방식의 계산상에서 유리하다는 그래픽스적 장점을 적극 활용함과 동시에 NeRF와 비슷한 성능을 유지하여 많은 주목을 받았습니다. 저희는 이 논문을 이용하여 3D Reconstruction을 시행하고자 했습니다.
3DGS (3D Gaussian Splatting)
3DGS란
- 여러 시점에서 촬영된 이미지를 사용하여 3D 랜더링을 수행하는 기법
- 3DGS 장점 : Real-time Rendering, Explicit scene representation, Fast train time

위와 같은 장점을 가지면서 높은 퀄리티로 복원되는 것을 확인하실 수 있습니다.
Method

3D Gaussian은 4가지 속성 값을 가집니다. 3D 공간에서 3D Gaussian이 어떤 형태와 위치로 배치되는지 정의하고 이를 바탕으로 전체 장면의 기본 구조를 만들고 서로 중첩되어 부드러운 이미지를 만들어냅니다. 3DGS의 과정은 Points → Ellipsoids → Splats으로 점진적으로 장면을 더 부드럽고 사실적으로 표현하는 방향으로 발전하는 과정으로 처음에는 간단한 점 형태로 장면을 표현하고, Ellipsoid로 변환됨으로써 각 점이 갖는 공간적 부피를 나타냅니다. 각 Gaussian이 일정한 크기를 가지며, 장면 내의 특정 부분들을 더 부드럽고 명확하게 표현할 수 있습니다. 이를 통해 장면의 요소들이 서로 중첩되고 자연스럽게 연결되도록 하여 장면의 입체적 특성을 더 잘 표현할 수 있도록 합니다. 마지막으로, Splats 단계에서는 모든 Gaussian들이 각기 다른 색상과 투명도를 합쳐 최종적으로 사실적이고 부드러운 3D 장면을 완성하게 됩니다.
3DGS Application
3DGS는 2023년부터 컴퓨터비전과 그래픽스 분야에서 많은 관심을 받고 있는 만큼 다양한 연구와 컨텐츠가 만들어졌습니다.

GaussianEditor
****는 3D Gaussian Splatting으로 나온 결과물에서 Gaussian들을 의미론적 추적을 통해 제거, 추가, 변형 방법을 제안한 논문입니다. 여기서 의미론적 추적이란 3D 장면의 각 Gaussian 포인트에 의미론적 라벨(semantic label)을 할당하고, 편집 과정 전반에 걸쳐 이 라벨을 추적하는 기술입니다. 각 편집 과정은 다음과 같습니다.
저희는 이 기술들을 이용해 실내를 복원하여 이미지로는 알기 힘든 실내 구조를 확인할 수 있는 어플리케이션을 개발하고자 했습니다.
2. Related Work

본격적인 방법론 설정에 앞서, Indoor Secene Reconstruction을 시도한 연구들에 대해 조사했습니다. 대부분의 연구들에서 위처럼 Gaussian Splatting을 이용하기 보단 NeRF와 같이 mlp를 사용하여 무거운 구조를 가지고 있었습니다.
저희는 기존의 무거운 인공지능 모델을 사용하는 것이 아닌 Gaussian Splatting을 이용하여 Indoor Scene Reconstruction을 수행하고자 했습니다.
3. Project Process
0. Pipeline

저희 프로젝트의 파이프라인은 Indoor Scene Video Shooting → FFmpeg → Colmap → Gaussian Splatting → GaussianEditor 총 5단계로 나뉘어집니다. 첫번째는 Indoor Scene Video Shooting입니다. 저희는 Haussian Splatting을 이용하여 실내를 복원할 것이기 때문에 복원하고자 하는 장소를 영상에 담습니다. 두번째는 FFmpeg입니다. 동영상 파일을 인풋으로 사용하는 것이 아니기 때문에 FFmpeg를 이용하여 동영상을 잘라줍니다. 여기서 초당 몇 프레임을 캡쳐할지 정할 수 있는데 프레임 수가 많을수록 정교한 복원이 됩니다. 세번째로 Colmap입니다. Colmap은 만들어진 사진에서 필요한 정보들을 추려서 정리해줍니다. 네번째로 Gaussian Splatting을 돌립니다. Gaussian Splatting은 Colmap에서 얻은 정보를 이용해서 3D로 복원해주는 작업을 합니다. 이때 iteration을 올릴수록 정교한 복원을 할 수 있습니다. 마지막으로 GaussianEditor를 통해 복원된 장면을 보고 수정할 수 있게 됩니다.
각 과정에서 사용한 모델에 대해서 아래에서 구체적으로 알아보겠습니다.
1. Indoor Scene Video Shooting
Indoor Scene Video Shooting에서는 3D 복원할 장소를 카메라를 이용하여 동영상을 찍습니다. 이때 너무 가깝거나 멀면 후에 사용할 colmap에서 제대로 된 정보를 추출할 수 없기 때문에 적당한 거리를 둬야 하며 어느 정도는 겹치는 부분이 있게 촬영을 해야 합니다. 여러번 나온 장소일수록 선명하게 복원됩니다.

2. FFmpeg
1에서 촬영한 동영상 파일을 설정한 단위로 나누게 됩니다. 초당 몇 프레임을 사진으로 남길지 옵션으로 넣게 되고 많이 나온 만큼 선명하게 복원된다고 위에서 언급했던 것처럼 여기서도 많은 이미지를 만들수록 겹치는 순간이 많게 되고 선명하게 복원됩니다. 따라서 성능을 중점적으로 보기 위해선 초당 많은 프레임을 담는 게 좋습니다. 위 링크에서 다운받아 사용 가능합니다. FFmpeg 작업을 진행하면 동영상 파일이 아래와 같이 설정한 단위로 나뉘게 됩니다.

3. Colmap
Colmap은 3D 재구성과 시각적 위치 추정을 위한 오픈 소스 소프트웨어 패키지입니다. Colmap은 다음과 같은 과정으로 이미지를 처리합니다.
- Structure-from-Motion (SfM): 여러 장의 2D 이미지로부터 3D 구조를 복원합니다.
- Multi-View Stereo (MVS): 더 조밀한 3D 점군을 생성합니다.
- 이미지 매칭 및 기하학적 검증합니다.
하지만 gaussian Splatting은 3D 구조를 복원하는 것이 목표기에 Colmap의 SfM만 이용합니다. SfM을 이용하여 다양한 정보를 바탕으로 3D 구조를 복원하고 Gaussian Splatting의 학습에 사용합니다.

SfM에서 가져오는 정보들
- 특징점 (Feature Points)
- SIFT(Scale-Invariant Feature Transform)나 유사한 알고리즘을 사용하여 이미지의 특징적인 점들을 식별합니다.
- 이 특징점들은 scale과 rotation에 불변하는 특성을 가지고 있어, 다양한 각도와 거리에서 찍은 사진들 사이에서도 동일한 점을 인식할 수 있습니다.
- 특징 기술자 (Feature Descriptors)
- 각 특징점 주변의 픽셀 정보를 수치화하여 고유한 "서명"을 만듭니다.
- 이 기술자들은 서로 다른 이미지에서 동일한 점을 매칭하는 데 사용됩니다.
- 이미지 간 대응점 (Correspondences)
- 여러 이미지에서 추출된 특징점들 중 서로 일치하는 점들을 찾아냅니다.
- 이 대응점들은 3D 공간에서의 동일한 지점을 나타냅니다.
- 카메라 내부 파라미터 (Intrinsic Parameters)
- 초점 거리, 주점(principal point), 렌즈 왜곡 계수 등을 추정합니다.
- 이 정보는 이미지 평면에서 3D 공간으로의 변환에 필수적입니다.
- 카메라 외부 파라미터 (Extrinsic Parameters)
- 각 이미지가 촬영된 카메라의 위치와 방향을 추정합니다.
- 이는 3D 공간에서의 카메라 pose를 나타냅니다.
- 에피폴라 기하학 (Epipolar Geometry)
- 두 이미지 간의 기하학적 관계를 분석합니다.
- 이를 통해 3D 점의 위치를 삼각측량할 수 있습니다.
- 색상 정보
- 각 픽셀의 RGB 값을 저장하여 후속 3D 모델의 텍스처링에 사용합니다.
- 메타데이터
- 가능한 경우, 이미지의 EXIF 데이터를 읽어 카메라 모델, 촬영 시간, GPS 좌표 등의 추가 정보를 활용합니다.
- 깊이 맵 (Depth Maps)
- Multi-View Stereo 단계에서, 각 이미지 픽셀의 상대적 깊이를 추정합니다.
- 이는 조밀한 3D 점군 생성에 사용됩니다.
- 법선 맵 (Normal Maps)
- 각 픽셀에서의 표면 법선 벡터를 추정합니다.
- 이는 3D 표면의 방향성을 파악하는 데 도움이 됩니다.
아래 이미지는 colmap의 결과물인데 “input”폴더에 있는 이미지 중 제대로 정보를 추출한 이미지가 “images” 폴더에 담기고 sfm 결과는 “sparse” 폴더에 담기게 됩니다. “images” 폴더로 얼마나 많은 정보를 가져왔는지 확인할 수 있고 Haussian Splatting에선 “images”와 “sparse”만 사용합니다.

4. Gaussian Splatting
Gaussian Splatting은 위에서 설명했으니 결과만 보고 넘어가도록 하겠습니다. 주어진 정보들로 렌더링 하면 다음과 같은 결과를 얻을 수 있습니다.

5. GaussianEditor
다음은 GaussianEditor를 이용해 렌더링한 결과에서 다양한 변형을 주는 모습입니다.
제거
이동
합성

결과적으로 저희 어플리케이션은 자영업자들과 구매자들 간의 소통을 원활히 할 수 있는 어플리케이션을 개발했습니다. 공간을 직접 방문하지 않아도 쉽게 어디서든 간편하게 자세하게 볼 수 있습니다.
4. Results
카페 복원
헬스장 복원
5. Future Work
더 빠르게 복원하는 연구 적용 예정
Compact Gaussian Splatting 모델의 용량을 줄이면서도 렌더링 품질을 유지하는 방향으로 최적화를 진행할 것입니다. 이를 통해 더욱 빠르게 복원할 수 있는 시스템을 구축할 수 있을 것입니다.
Indoor Scene Reconstruction 최적화
일반적인 물체 복원을 넘어서, 실내 장면의 복원을 위한 더 적합한 렌더링 방식으로의 최적화가 필요합니다. Gaussian Room과 같은 기법을 적용하여 실내 환경에 맞는 복원을 더욱 개선하고자 합니다. 이를 통해 실내 장면 재구성의 정밀도와 효율성을 높이는 것이 목표입니다.
References
Kerbl, B., Kopanas, G., Leimkuhler, T., & Drettakis, G. (2023). 3D Gaussian Splatting for Real-Time Radiance Field Rendering. ACM Transactions on Graphics (ToG).
Chen, Y., Chen, Z., Zhang, C., Wang, F., Yang, X., Wang, Y., Cai, Z., Yang, L., Liu, H., & Lin, G. (2024). GaussianEditor: Swift and Controllable 3D Editing with Gaussian Splatting. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR).
Liang, Z., Huang, Z., Ding, C., & Jia, K. (2023). HelixSurf: A Robust and Efficient Neural Implicit Surface Learning of Indoor Scenes with Iterative Intertwined Regularization. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR).
