| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- psuedo label
- GPT 1
- semi supervised semantic segmentation
- 수학
- semi supervised learning
- convolution neural network
- Deep Learning
- 쿠버플로우
- zero shot
- chagpt
- GPT 논문
- Python
- Computer Vision
- deep learning mesh
- segmentation
- domain adaptation
- 딥러닝
- 딥러닝 #deep learning #machine learning #computer vision #object detection
- 통계
- 3d
- 고유값 분해
- depth map
- deep learning on mobile
- depth data
- 파이썬
- mobile deep learning
- sudo 권한
- cnn
- 머신러닝
- GPT
- Today
- Total
튼튼한 나무
depth & point cloud data의 개념 정리. feat. Apple's ARKit 본문
1. 포인트 클라우드란?
Lidar 센서, RGB-D센서 등으로 수집되는 데이터를 의미한다.
포인트 클라우드 데이터는 좌표계의 개별 점으로 구성된 3차원 공간을 표현한 것이다.
포인트 클라우드의 각 포인트는 공간의 특정 위치를 나타내며 데이터에 따라 색상, 강도 또는 기타 속성과 같은 추가 정보를 포함할 수도 있다.
포인트 클라우드는 컴퓨터 그래픽, 컴퓨터 비전, 원격 감지 및 3D 모델링과 같은 분야에서 일반적으로 사용된다.
포인트 클라우드 데이터는 다음과 같은 다양한 방법을 통해 수집할 수 있다 :
- Lidar(Light Detection and Ranging) : Lidar는 레이저 펄스를 방출하고 이러한 펄스가 물체에 반사된 후 돌아오는 데 걸리는 시간을 측정한다. 이 정보는 물체까지의 거리를 결정하는 데 사용되며, 스캐너의 위치 및 방향과 결합되어 point cloud representation of the environment를 생성한다.
- Structured Light Scanning : 이 방법에서는 빛의 패턴이 물체에 투사되고 카메라는 물체의 모양으로 인해 패턴이 왜곡되는 방식을 캡처한다. 이러한 왜곡은 깊이 정보를 제공하며, 이는 포인트 클라우드를 생성하는 데 사용된다.
- Photogrammetry : 다양한 각도에서 물체 또는 장면의 여러 2D 사진을 촬영함으로써 소프트웨어는 이러한 사진의 공통 지점 위치를 삼각측량하여 3D 포인트 클라우드를 재구성할 수 있다.
- Depth Cameras : Microsoft의 Kinect와 같은 깊이 감지 카메라는 적외선이나 기타 기술을 사용하여 카메라와 장면의 다양한 지점 사이의 거리를 측정하여 포인트 클라우드를 생성한다.
즉, 정리하자면 포인트 클라우드는 어떠한 공간에 있는 개별 데이터 포인트 set이며, points는 3D 모양 혹은 개체를 나타낼 수 있다. 포인트 클라우드는 가장 일반적으로 3D 레이저 스캐너와 LiDAR 기술을 사용하여 생성된다. LiDAR는 조사된 빛이 피사체에 반사되어 돌아오는 시간을 측정하여 거리를 측정하는 장비로서, 넓은 영역과 긴 거리에 걸쳐 실세계의 정밀한 3차원 정보를 포인트 클라우드 데이터로 제공해준다.
2. Depth Data란?
Depth map은 특정 시점에서 객체까지의 거리에 대한 정보를 포함하는 2차원 표현이다. 장면의 공간적 깊이 정보를 컴퓨터에서 쉽게 처리하고 해석할 수 있는 형식으로 인코딩하는 방법을 제공한다.
Depth map은 일반적으로 이미지의 각 픽셀이나 지점에 깊이 값을 할당하여 해당 픽셀이 카메라나 관찰자로부터 얼마나 멀리 떨어져 있는지 나타낸다. 깊이 값이 높을수록 물체는 더 멀리 떨어져 있다. Depth map은 대개 회색조 이미지로, 어두운 값은 더 가까운 객체를 나타내고 밝은 값은 더 멀리 있는 객체를 나타냅니다.
다양한 방법을 사용하여 Depth map을 생성할 수 있다 :
- Stereo Vision : 이 기술에는 서로 약간 offset된 두 대의 카메라를 사용하여 장면을 캡처하여 눈이 깊이를 인식하는 방식을 시뮬레이션한다. 두 영상의 픽셀 위치 차이를 비교함으로써 깊이 정보를 계산할 수 있다.
- Structured Light : 포인트 클라우드 생성과 유사하게 구조화된 조명에는 빛 패턴을 장면에 투영하고 패턴이 객체에서 어떻게 변형되는지 분석하는 작업으로 진행된다. deformation은 깊이 정보를 제공한다.
- ToF(Time of Flight) 카메라: 이 카메라는 빛 신호를 방출하고 신호가 되돌아오는 데 걸리는 시간을 측정한다. 시간 측정은 거리에 비례하므로 깊이 맵을 생성할 수 있다.
- Depth 센서 : Depth센서가 장착된 Microsoft의 Kinect 또는 최신 스마트폰 카메라와 같은 장치는 빛이 현장으로 이동하고 돌아오는 데 걸리는 시간을 측정하여 깊이 맵을 생성할 수 있다.
2.1. Depth map data vs Depth data는 다른 것인가?
“Depth map data"와 "Depth ata"는 서로 관련된 개념이지만 약간 다른 것을 나타낸다.
Depth Map Data : Depth Map Data는 깊이 정보를 시각적 형식으로 구체적으로 표현한 것을 말한다. 이는 일반적으로 각 픽셀이 특정 깊이 값에 해당하는 2차원 이미지로, 카메라나 관찰자로부터 장면의 해당 지점까지의 거리를 나타낸다. Depth map에서 가까운 객체는 더 어두운 값으로 표시되고, 멀리 있는 객체는 더 밝은 값으로 표시된다.
Depth Data : Depth Data는 3차원 공간에서 객체나 지점 사이의 거리에 대한 모든 유형의 정보를 포괄하는 더 넓은 용어이다. 여기에는 Depth map Image 뿐만 아니라 각각 고유한 위치 및 깊이 정보가 있는 개별 3D 포인트 집합인 포인트 클라우드 데이터도 포함될 수 있다. 깊이 데이터는 거리를 나타내는 수치, points의 3차원 좌표, depth map과 같은 시각적 표현 등 다양한 방식으로 표현될 수 있다.
정리하면, depth map data와 depth data는 모두 객체나 points 사이의 거리에 대한 정보를 포함하는 반면, “depth map data”는 구체적으로 깊이 정보를 2차원 이미지로 시각적으로 표현한 것을 의미하고, “depth data"는 다양한 형태의 깊이 정보 표현과 같은 더 넓은 범위를 의미할 수 있다.
3. 포인트 클라우드는 일반적으로 depth data로부터 변형된 결과인가?
다른 방법으로 depth map 기반이 아닌 다른 방식으로 포인트 클라우드 데이터를 구축할 수 도 있지만, 일반적으로, 포인트 클라우드 데이터는 depth 데이터의 변형 또는 확장으로 간주할 수 있다.
깊이 데이터는 포인트 클라우드에 저장된 정보에 기여하는 단일 속성으로 생각할 수 있다. 포인트 클라우드는 각 포인트에 대한 여러 속성을 포함하여 3D 환경을 더욱 풍부하게 표현할 수 있다. 따라서 깊이 데이터가 포인트 클라우드 생성의 핵심 요소이며, 포인트 클라우드는 깊이 이상의 다양한 속성을 포함할 수 있는 공간 데이터를 보다 포괄적으로 표현한 것이다.
다시 말해, 포인트 클라우드 데이터를 깊이 측정에 의존하지 않는 다른 방법을 사용하여 생성될 수도 있지만, 포인트 클라우드 데이터는 센서에 의해 수집된 깊이 데이터를 기반으로 생성되는 경우가 대부분이다.
4. Lidar 센서가 부착된 아이폰에 대한 APPLE의 ARKit에서, 포인트 클라우드 데이터는 Depth map으로 부터 생성된 것인가?
Yes.
iPhone 12 Pro 이상 모델부터 LiDAR 센서가 장착된 iPhone은 LiDAR 센서를 사용하여 포인트 클라우드 데이터를 생성한다. LiDAR (Light Detection and Ranging) 센서는 레이저 펄스를 방출하고 레이저가 주변의 물체에 부딪힌 후 다시 반사되는 데 걸리는 시간을 측정한다. 이 정보는 본질적으로 깊이 정보인 해당 객체까지의 거리를 계산하는 데 사용된다.
LiDAR 센서에서 얻은 깊이 데이터는 ARKit에서 처리되어 장면의 포인트 클라우드 표현을 생성한다. 이 포인트 클라우드는 3D 포인트 모음으로 구성되며, 각 포인트는 현실 세계의 표면이나 객체를 나타낸다. LiDAR는 각 지점에 대한 직접적인 깊이 측정을 제공하므로 이 포인트 클라우드 데이터는 기존 카메라에서 생성된 깊이 맵보다 더 자세하고 정확하다.
5. Lidar 센서가 부착된 아이폰에 대한 APPLE의 ARKit에서, 포인트 클라우드 데이터는 카메라 좌표계의 포인트 클라우드 데이터 값인가?
Yes.
LiDAR 센서가 탑재된 iPhone용 Apple ARKit에서 제공하는 포인트 클라우드 데이터는 일반적으로 카메라 좌표계로 표시된다. 카메라 좌표계는 카메라나 장치의 위치와 방향을 중심으로 한 3D 좌표계이다. 카메라의 시점을 기준으로 가상 객체를 배치하고 조작할 수 있으므로 증강 현실 애플리케이션을 위한 편리한 reference frame이 될 수 있다.
이 iPhone의 LiDAR 센서는 깊이 정보를 캡처하고 카메라 좌표계에 포인트 클라우드를 생성한다. 포인트 클라우드의 각 포인트는 카메라의 위치 및 방향을 기준으로 3D 위치(X, Y, Z)와 연결된다. 이 포인트 클라우드 데이터는 ARKit에서 물리적 환경을 매핑하고 해당 환경 내에서 가상 개체의 보다 정확한 배치와 상호 작용을 가능하게 하는 데 사용될 수 있다.
5.1. 좌표계라고 하는 것이, 어떤 것들이 있나?
좌표계는 공간에서 객체의 위치와 방향을 정의하는 데 사용된다. 컴퓨터 그래픽, 컴퓨터 비전 및 증강 현실과 같은 관련 분야에서는 장면이나 객체의 다양한 측면을 나타내는 데 일반적으로 여러 유형의 좌표계가 사용된다.
주요 좌표계의 종류는 아래와 같다 :
- WCS(World Coordinate System)
- 카메라 좌표계(CCS)
- 객체 좌표계(OCS)
- 화면 좌표계(SCS)
- 정규화된 장치 좌표계(NDCS)
- 텍스처 좌표계
- 모델 좌표계(MCS)
- 로컬 좌표계(Local Coordinate System)
LiDAR 센서와 Apple ARKit가 탑재된 iPhone의 경우 카메라 좌표계(CCS)가 LiDAR 센서에서 생성된 포인트 클라우드 데이터를 나타내는 데 자주 사용된다. 즉, 해당 포인트 클라우드는 카메라 좌표계에서 표현된다는 것이다.
5.2. World Coordinate System에서 표현되는 포인트 클라우드에서, 2개의 포인트에 대해 유클리디안 거리를 계산하면 실측 거리와 동일한 값이 되는가?
Yes.
세계 좌표계(WCS)로 표현된 포인트 클라우드에서 두 점 사이의 유클리드 거리는 실제로 현실 세계의 해당 점 사이의 실제 거리와 동일하다. 세계 좌표계는 장면 내 점 간의 공간 관계를 정확하게 나타내는 global reference frame을 제공한다.
유클리드 거리는 피타고라스의 정리를 사용하여 계산된 3차원 공간에서 두 점 사이의 직선 거리다. WCS가 장면에 맞게 적절하게 정렬되고 크기가 조정된다는 가정 하에 점이 세계 좌표계에 표시될 때 점 사이의 유클리드 거리는 실제 세계의 물리적 분리를 정확하게 반영한다.
5.3. 그렇다면, 카메라 좌표계의 포인트 클라우드 데이터를 World Coordinate System의 포인트 클라우드 데이터로 변형할 수 있나?
Yes.
카메라 좌표계(CCS)의 포인트 클라우드 데이터는 좌표 변환 또는 공간 변환이라는 프로세스를 통해 세계 좌표계(WCS)로 변환될 수 있다. 이 변환에는 포인트 클라우드의 각 포인트에 변환, 회전 및 크기 조정 작업을 적용하여 세계 좌표계의 전역 참조 프레임에 정렬하는 작업이 수행된다.
프로세스는 다음과 같다 :
- Transformation Parameters 얻기 : 포인트 클라우드 데이터를 CCS에서 WCS로 변환하려면 변환 매개변수를 알아야 한다. 이러한 매개변수에는 일반적으로 WCS를 기준으로 한 카메라의 위치와 방향이 포함된다. ARKit 또는 유사한 프레임워크의 경우 이러한 매개변수는 장치의 자세(회전) 및 위치와 같은 센서 데이터를 사용하여 계산될 수 있다.
- Translation 적용 : 첫 번째 단계는 CCS 포인트 클라우드의 각 포인트에 변환을 적용하는 것이다. 이 변환은 CCS의 원점을 WCS의 참조점과 정렬한다. 변환에는 각 지점의 좌표에서 카메라 위치(CCS 원점)를 빼는 작업이 포함된다.
- Rotation 적용 : 변환 후 WCS의 카메라 방향과 일치하도록 변환된 각 점에 회전 변환을 적용한다. 이 회전 작업에는 WCS의 카메라 방향(roll, pitch, and yaw)을 기반으로 점의 좌표를 변환하는 작업이 수행된다.
- Scaling 적용: 경우에 따라 CCS와 WCS 간의 측정 단위가 일치하도록 크기 조정을 적용해야 할 수도 있다. 이 단계는 선택 사항이며 애플리케이션의 세부 사항에 따라 다르다.
이러한 변환 단계를 수행하면 각 점의 좌표를 카메라 좌표계에서 세계 좌표계로 변환할 수 있다. 이를 통해 장면의 전역 컨텍스트의 포인트 클라우드 데이터를 정확하게 표현할 수 있다.
'computing' 카테고리의 다른 글
| Kubernetes(k8s) 개념 설명 feat. ML 모델 서빙 (0) | 2023.08.16 |
|---|---|
| 모바일 배포를 위해 pytorch 및 tensorflow 모델 변환이 필요한 이유 완전 정복하기 (feat. onnx or tflite) (0) | 2023.07.11 |
| 파이썬 코드로 GPU memory print 하기 (0) | 2023.03.01 |
| jupyter notebook에서 tensorboard 실시간으로 확인하기 (0) | 2023.01.03 |
| 파이썬으로 sudo권한 shell 명령어 실행하기 (0) | 2023.01.02 |