본문 바로가기

전체 글122

[논문 리뷰] 3D gaussian-splatting 3D Gaussian-Splatting 전체적인 흐름SFM points → Initialization: colmap을 이용해서 3D obj의 point cloud와 camera pose(intrinsic & extrinsic parameter)에 대한 정보를 얻은 후 3D gaussian의 초기값으로 사용한다.Projection: 3D gaussian을 Image plane에 투영해 2D gaussian 생성한다.Differentiable Tile Rasterizer: 하나의 이미지(1920x1080)를 부분 이미지(16x16)로 나누고, 부분 이미지에 포함된 여러 2D gaussian들을 depth에 따라 정렬한 후 부분 이미지마다 차례대로 투영해 하나의 2D image로 rendering한다.→ gr.. 2024. 5. 29.
[Omniverse] Camera parameter 추출 및 시각화 이번 시간에는 Omniverse kaolin에서 얻은 camera matrix는 어떤 coordinate으로 표현되는지 확인해보고, camera 위치와 방향을 시각화하고자 한다. 일단, omniverse는 opengl coordinate을 따른다. 따라서, camera coordinate(world2camera) 기준의 extrinsic matrix는 opengl coordinate으로 표현된다.  그리고 camera의 위치와 방향을 확인하기 위해 extrinsic matrix를 camera coordinate에서 world coordinate으로 변환했을 때 아래 그림과 같은 결과가 나온다. 그리고 opencv coordinate으로도 camera의 위치와 방향을 확인할 수 있는데, 그 방법은 기존의 .. 2024. 5. 24.
[Blender] CC4 coordinate to Blender coordinate CC4 coordinateBlender coordinate CC4 데이터를 Blender에 가져와 사용할 때, CC4의 coordinate(z-up)이 Blender의 coordinate(y-up)으로 자동으로 변환되는게 이상적이지만, Blender는 CC4 데이터를 CC4 coordinate(z-up) 그대로 가져오기 때문에 Blender에서 CC4를 눕혀줘야지 Blender coordinate(y-up)에 맞게 데이터가 만들어진다.   추가적으로, Blender coordinate(= opengl coordinate과 유사)을 opencv coordinate으로 변환하려면 extrinsic matrix의 y, z축에 -를 붙여줘야 한다. 2024. 5. 24.
[Blender] Camera parameter (Extrinsic & Intrinsic) 오늘은 blender에서 어떻게 camera parameter(intrinsic & extrinsic)를 추출할 수 있는지 소개하고자 한다. 아래 코드는 글쓴이가 코딩한 코드는 아니고, 분석만 해봤다.Intrinsic parameterhttps://blender.stackexchange.com/questions/38009/3x4-camera-matrix-from-blender-camera/120063#120063 3x4 camera matrix from blender cameraIn computer vision, the transformation from 3D world coordinates to pixel coordinates is often represented by a 3x4 (3 rows by 4.. 2024. 5. 23.
[Camera parameter] 3D to 2D projection 이번 시간에는 3D에서 Image plane으로 obj가 어떻게 투영되는지 설명하고자 한다. 3D에서 Image plane으로 obj를 투영할 때 총 4번의 coordinate 변화를 거쳐야 한다.World Coordinate → Camera Coordinate → Image Coordinate → Pixel Coordinate 을 순서로 3D에서 Image plane으로의 투영이 발생한다. World Coordinate (3D coord)어떤 obj의 world coordinate에 해당하는 좌표는 [x_w, y_w, z_w, 1]과 같은 homogenous coordinate으로 표현될 수 있고, 이렇게 homogenous coordinate으로 표현하는 이유는 이후 camera parameter에 .. 2024. 5. 23.
[Omniverse] Synthetic Data 만들기 이번 시간에는 Synthetic Data 만드는 방법에 대해 소개하겠다. 전체적인 과정은 다음과 같다.DATA RenderCC4에서 Human package와 Motion package를 이용해 각 인물들에 motion을 입힌다.Omniverse USD Composer에서 2, 3, 4인이 close interaction하는 데이터를 만든다. 즉, 각 motion을 입힌 인물들을 Scene에 맞게 배치한 후 전체 animation을 16개의 frame으로 나눠 총 16개의 usd 파일을 만들어낸다. (논문의 Demo video를 만들 때는 animation의 전체 frame을 사용함) 그다음 Omniverse Kaolin에서 각 Scene에 존재하는 frame을 8개 multi-view의 2D image.. 2024. 5. 23.
[SMPL] 실습 코드 분석 이번 시간에는 SMPL의 코드에 대해 자세히 분석하고자 한다. 아래 코드는 SMPL 코드 수행을 위한 명령어다.python utils/keypoints_3d_estimation/01_render_multiview.py ./data/Scene_1/1_0/1_0.obj -t ./data/Scene_1/1_0/material_0.jpeg -r ./data/Scene_1/1_0 python utils/keypoints_3d_estimation/02_predict_2d_pose.py ./data/Scene_1/1_0/1_0_renders/ -r ./data/Scene_1/1_0 -vpython utils/keypoints_3d_estimation/03_lift_keypoints.py ./data/Scene_1/1.. 2024. 5. 8.
[SMPL] single human synthetic data SMPL 실습 결과 이번 시간에는 SMPL 실행 방식과 실습 결과에 대해 소개하려 한다.1. human data scaling python custom_utils/scale_prepostprocessing.py 2. fitting python utils/keypoints_3d_estimation/01_render_multiview.py ./data/Scene_1/1_0/1_0.obj -t ./data/Scene_1/1_0/material_0.jpeg -r ./data/Scene_1/1_0 python utils/keypoints_3d_estimation/02_predict_2d_pose.py ./data/Scene_1/1_0/1_0_renders/ -r ./data/Scene_1/1_0 -vpython utils/keypo.. 2024. 5. 7.
[Gaussian-Splatting] GT data 만들기 이번 시간에는 Gaussian-splatting의 GT data를 만드는 방법에 대해 소개하고자 한다. 우선, GT data를 만들기 위해 정확한 camera parameter와 point cloud를 초기 Gaussian-splatting의 입력으로 사용했다. 하지만, 해당 조건으로 Gaussian-splatting을 train할 경우 3D Gaussian이 새로 생성되고 삭제되는 과정에서 아래와 그림과 같이 배경과 3D model에 대해 둘 다 최적화됐다. 의도한 결과는 3D model 안에서만 3D gaussian이 생성되도록 하는거였지만, 최종 결과는 배경과 3D model 둘에 대해 모두 3D gaussian이 생성됐다.   그래서 결국 3D gaussian을 최적화시킬 때, initial po.. 2024. 4. 25.