분류 전체보기
-
Registration (정합) 을 수행할 때 ICP (Iterative Closest Point) 를 사용하는 경우에는 "포인트들간의 매칭 정보를 알 필요가 없다" 라는 장점이 있었습니다. 하지만 이 방법은 초기 포즈가 어느 정도 정확하지 않으면 Registration 이 잘 되지 않는다는 단점이 있습니다. 이때 Point Cloud 에서 대응점을 구하기 위해서 사용하는 것이 Descriptor 입니다. 이미지도 Descriptor 가 있듯이 Point cloud 에도 Feature Point 와 Descriptor (기술자) 가 있습니다. 3D Feature Matching 을 통해서 할 수 있는 것 Classification Registration Pose Estimation 2D Feature ..
Point Cloud Descriptor (1) : PFHRegistration (정합) 을 수행할 때 ICP (Iterative Closest Point) 를 사용하는 경우에는 "포인트들간의 매칭 정보를 알 필요가 없다" 라는 장점이 있었습니다. 하지만 이 방법은 초기 포즈가 어느 정도 정확하지 않으면 Registration 이 잘 되지 않는다는 단점이 있습니다. 이때 Point Cloud 에서 대응점을 구하기 위해서 사용하는 것이 Descriptor 입니다. 이미지도 Descriptor 가 있듯이 Point cloud 에도 Feature Point 와 Descriptor (기술자) 가 있습니다. 3D Feature Matching 을 통해서 할 수 있는 것 Classification Registration Pose Estimation 2D Feature ..
2023.07.15 -
이전 포스팅 (https://zzziito.tistory.com/43) 에서도 언급했듯이, Stereo Matching 을 이용하면 이론상으로는 두 장의 이미지를 통해 3차원을 복원할 수 있습니다. Python, OpenCV, Open3D 를 이용하여 2장의 이미지로 3차원을 복원하는 예제를 통해 과정을 더 자세히 살펴보도록 하겠습니다. (전체 코드는 글 하단에 있습니다.) 과정 1. Undistortion 2. Rectification 3. Disparity Map 얻기 4. Disparity map 을 Depth map 으로 바꾸기 5. Depth Map 을 이용한 Point Cloud reconstruction Undistortion 카메라 왜곡을 먼저 펴주기 위해 Undistortion 을 수행합..
2장의 이미지로 3차원 복원하기 with Python Open3D이전 포스팅 (https://zzziito.tistory.com/43) 에서도 언급했듯이, Stereo Matching 을 이용하면 이론상으로는 두 장의 이미지를 통해 3차원을 복원할 수 있습니다. Python, OpenCV, Open3D 를 이용하여 2장의 이미지로 3차원을 복원하는 예제를 통해 과정을 더 자세히 살펴보도록 하겠습니다. (전체 코드는 글 하단에 있습니다.) 과정 1. Undistortion 2. Rectification 3. Disparity Map 얻기 4. Disparity map 을 Depth map 으로 바꾸기 5. Depth Map 을 이용한 Point Cloud reconstruction Undistortion 카메라 왜곡을 먼저 펴주기 위해 Undistortion 을 수행합..
2023.07.11 -
https://ko.aliexpress.com/item/1005004788630548.html? https://ko.aliexpress.com/item/1005004788630548.html?AliExpress.com에 오신것을 환영합니다 로그아웃 회원가입 로그인 내 주문 내 코인 메시지 센터 결제 위시리스트 내 쿠폰ko.aliexpress.com 이 제품은 아무래도 ASUS 에서 판매하는 RGB 카메라인 Xtion Pro 에서 모듈만 따로 빼서 파는 제품인 것 같습니다. https://www.asus.com/kr/supportonly/xtion%20pro%20live/helpdesk_bios/Xtion PRO LIVE - 지원버전 5.8.22 2.15 MB 2013/11/05 This FW 5...
만원짜리 RGBD 카메라 사용하기 : 알맹이만 있는 ASUS Xtion Prohttps://ko.aliexpress.com/item/1005004788630548.html? https://ko.aliexpress.com/item/1005004788630548.html?AliExpress.com에 오신것을 환영합니다 로그아웃 회원가입 로그인 내 주문 내 코인 메시지 센터 결제 위시리스트 내 쿠폰ko.aliexpress.com 이 제품은 아무래도 ASUS 에서 판매하는 RGB 카메라인 Xtion Pro 에서 모듈만 따로 빼서 파는 제품인 것 같습니다. https://www.asus.com/kr/supportonly/xtion%20pro%20live/helpdesk_bios/Xtion PRO LIVE - 지원버전 5.8.22 2.15 MB 2013/11/05 This FW 5...
2023.07.09 -
Disparity Disparity (양안 시차) 는 Stereo Vision 의 핵심 개념입니다. 다음 사진과 같이, 가까이 있는 물체일 수록 Left - Right 간의 위치 차이가 커지게 됩니다. 따라서 Disparity 는 Depth 와 반비례한다는 것을 알 수 있습니다. Triangulation Triangulation 은 이미지 상의 포인트를 3차원으로 복원할 때 사용됩니다. 3차원 복원을 위해서 필요한 정보는 다음과 같습니다. 1. 두 카메라 사이의 Rotation / Translation 2. 카메라 intrinsic parameter 3. 두 픽셀이 "같은 것인지" 알기 (Correspondences) 따라서 우리는 Triangulation 을 통해서 Disparity 를 이용해 Dept..
Stereo Vision : Disparity 와 Rectification, Epipolar GeometryDisparity Disparity (양안 시차) 는 Stereo Vision 의 핵심 개념입니다. 다음 사진과 같이, 가까이 있는 물체일 수록 Left - Right 간의 위치 차이가 커지게 됩니다. 따라서 Disparity 는 Depth 와 반비례한다는 것을 알 수 있습니다. Triangulation Triangulation 은 이미지 상의 포인트를 3차원으로 복원할 때 사용됩니다. 3차원 복원을 위해서 필요한 정보는 다음과 같습니다. 1. 두 카메라 사이의 Rotation / Translation 2. 카메라 intrinsic parameter 3. 두 픽셀이 "같은 것인지" 알기 (Correspondences) 따라서 우리는 Triangulation 을 통해서 Disparity 를 이용해 Dept..
2023.07.09 -
사실 Point Cloud 의 포인트들은 다 연결되어 있습니다. 모든 물체가 바닥에 붙어 있기 때문입니다. 따라서 DBSCAN 을 적용하면 모두 연결되어 있기 때문에 다음과 같이 하나의 클러스터가 나옵니다. 따라서 바닥을 찾아서 없앨 필요가 있습니다. 바닥을 찾는 것을 Plane Segmentation 이라고 합니다. 이때 많이 사용하는 방식이 RANSAC 입니다. RANSAC 은 우선 샘플을 뽑고, 해당 조건을 가장 많이 만족하는 파라미터를 찾는 것입니다. 하지만 Plane Segmentation 에서 RANSAC 을 쓰는 경우에는 "1) 바닥은 하나 뿐이고 , 2) 바닥면이 가장 크다" 라는 가정을 전제로 하고 있습니다. 예를 들어, RANSAC 을 사용할 때는 벽면이 더 클 경우 벽면을 바닥이라고 ..
바닥을 찾아보자 - Plane Segmentation사실 Point Cloud 의 포인트들은 다 연결되어 있습니다. 모든 물체가 바닥에 붙어 있기 때문입니다. 따라서 DBSCAN 을 적용하면 모두 연결되어 있기 때문에 다음과 같이 하나의 클러스터가 나옵니다. 따라서 바닥을 찾아서 없앨 필요가 있습니다. 바닥을 찾는 것을 Plane Segmentation 이라고 합니다. 이때 많이 사용하는 방식이 RANSAC 입니다. RANSAC 은 우선 샘플을 뽑고, 해당 조건을 가장 많이 만족하는 파라미터를 찾는 것입니다. 하지만 Plane Segmentation 에서 RANSAC 을 쓰는 경우에는 "1) 바닥은 하나 뿐이고 , 2) 바닥면이 가장 크다" 라는 가정을 전제로 하고 있습니다. 예를 들어, RANSAC 을 사용할 때는 벽면이 더 클 경우 벽면을 바닥이라고 ..
2023.07.07 -
Point Cloud 에서 Object 혹은 Ground 를 찾아내는 과제에서는 다음과 같은 Clustering 알고리즘이 다양하게 사용되고 있습니다. Object 는 보통 바닥과 이어져 있기 때문에 바닥면을 찾고, 해당 바닥면을 제거하면 object 가 따로 따로 떨어지게 되어서 object clustering 을 하게 될 때 장점도 있습니다. Segmentation 과 Clustering 의 차이점 Segmentation 큰 그룹을 같은 특성을 가지는 작은 그룹으로 분할하는 것. - 모든 포인트들에 대해서 Classification 을 진행하는 것. Clustering 비슷한 애들끼리 뭉치는 것. (Identify hidden patterns or structures in the data and g..
Point Cloud 를 군집화해보자 - Clustering : K-means, DBSCANPoint Cloud 에서 Object 혹은 Ground 를 찾아내는 과제에서는 다음과 같은 Clustering 알고리즘이 다양하게 사용되고 있습니다. Object 는 보통 바닥과 이어져 있기 때문에 바닥면을 찾고, 해당 바닥면을 제거하면 object 가 따로 따로 떨어지게 되어서 object clustering 을 하게 될 때 장점도 있습니다. Segmentation 과 Clustering 의 차이점 Segmentation 큰 그룹을 같은 특성을 가지는 작은 그룹으로 분할하는 것. - 모든 포인트들에 대해서 Classification 을 진행하는 것. Clustering 비슷한 애들끼리 뭉치는 것. (Identify hidden patterns or structures in the data and g..
2023.07.06 -
Patchwork: Concentric Zone-based Region-wise Ground Segmentation with Ground Likelihood Estimation Using a 3D LiDAR Sensor Hyungtae Lim, Minho Oh https://arxiv.org/abs/2108.05560 논문 선정 배경 : RELLIS-3D 데이터셋을 사용하여 3D point cloud segmentation 프로젝트를 진행하던 도중, 센서를 기준으로 2~3m 정도 벗어나면 포인트 클라우드가 너무 Sparse 해져서 segmentation 이 안 되는 문제가 있었습니다. 따라서 새롭게 구역을 분할하는 방법을 찾던 중, 이 논문이 1) 센서를 기준으로 동심원 모양으로 구역을 분할하는 적절한 ..
동심원 기반 Ground Segmentation 방법 제안 - PatchworkPatchwork: Concentric Zone-based Region-wise Ground Segmentation with Ground Likelihood Estimation Using a 3D LiDAR Sensor Hyungtae Lim, Minho Oh https://arxiv.org/abs/2108.05560 논문 선정 배경 : RELLIS-3D 데이터셋을 사용하여 3D point cloud segmentation 프로젝트를 진행하던 도중, 센서를 기준으로 2~3m 정도 벗어나면 포인트 클라우드가 너무 Sparse 해져서 segmentation 이 안 되는 문제가 있었습니다. 따라서 새롭게 구역을 분할하는 방법을 찾던 중, 이 논문이 1) 센서를 기준으로 동심원 모양으로 구역을 분할하는 적절한 ..
2023.07.05 -
프로젝트에서 사용하고 있는 RELLIS-3D 데이터셋은 Warthog 로봇으로 획득한 것입니다. 따라서 실험 시뮬레이션도 Warthog 로봇을 사용했는데, 기본 세팅으로 센서가 정의되어 있기는 하지만 rostopic list 를 했을 때 아무 데이터도 볼 수 없었습니다. 따라서 Gazebo 에서 이 센서를 사용할 수 있도록 따로 설정해주어야 합니다. (사담 : 처음에는 Turtlebot3 를 사용했는데, 종잇장처럼 얕은 경사도 오르지 못 했기 때문에 사용할 수 없었습니다.) Gazebo 시뮬레이션 설정 ㄴ src ㄴ warthog_simulator ㄴ warthog_description ㄴ urdf ㄴ warthog.urdf.xacro 이 위치에 들어 있는 warthog.urdf.xacro 파일에 다음 ..
[RELLIS-3D] Gazebo Warthog 로봇에 IMU 탑재하기프로젝트에서 사용하고 있는 RELLIS-3D 데이터셋은 Warthog 로봇으로 획득한 것입니다. 따라서 실험 시뮬레이션도 Warthog 로봇을 사용했는데, 기본 세팅으로 센서가 정의되어 있기는 하지만 rostopic list 를 했을 때 아무 데이터도 볼 수 없었습니다. 따라서 Gazebo 에서 이 센서를 사용할 수 있도록 따로 설정해주어야 합니다. (사담 : 처음에는 Turtlebot3 를 사용했는데, 종잇장처럼 얕은 경사도 오르지 못 했기 때문에 사용할 수 없었습니다.) Gazebo 시뮬레이션 설정 ㄴ src ㄴ warthog_simulator ㄴ warthog_description ㄴ urdf ㄴ warthog.urdf.xacro 이 위치에 들어 있는 warthog.urdf.xacro 파일에 다음 ..
2023.07.05 -
초창기의 SLAM 은 주로 Filter 기반 (Kalman filter, Particle filter 등) 으로 수행되었지만 몇 년 전부터 Graph 기반 SLAM 으로 완전히 트렌드가 바뀌었습니다. Graph 기반 SLAM 에서 에러를 보정하기 위한 마지막 단계로 자주 수행되는 것이 Bundle Adjustment 입니다. Structure From Motion Structure from motion 은 2 장 이상의 이미지에서 대응점이 주어졌을 때, 3D 좌표와 카메라 파라미터 (여기서는 카메라 간의 Rotation / Translation) 을 구하는 것을 의미합니다. 이는 다음과 같은 과정으로 수행됩니다. 1. 같은 장면을 촬영한 이미지 여러 장을 모은다. 2. 특징점을 추출한다. (SIFT 등으..
Bundle Adjustment초창기의 SLAM 은 주로 Filter 기반 (Kalman filter, Particle filter 등) 으로 수행되었지만 몇 년 전부터 Graph 기반 SLAM 으로 완전히 트렌드가 바뀌었습니다. Graph 기반 SLAM 에서 에러를 보정하기 위한 마지막 단계로 자주 수행되는 것이 Bundle Adjustment 입니다. Structure From Motion Structure from motion 은 2 장 이상의 이미지에서 대응점이 주어졌을 때, 3D 좌표와 카메라 파라미터 (여기서는 카메라 간의 Rotation / Translation) 을 구하는 것을 의미합니다. 이는 다음과 같은 과정으로 수행됩니다. 1. 같은 장면을 촬영한 이미지 여러 장을 모은다. 2. 특징점을 추출한다. (SIFT 등으..
2023.07.03 -
Heightmap 은 지형의 높이 정보를 저장하는 이미지입니다. 이 이미지는 픽셀의 흑백 값으로 표현됩니다. 밝을 수록 지형이 높아지고, 어두울 수록 낮은 지형을 뜻합니다. Gazebo 시뮬레이터에서 정현파 (sine) 형태의 지면 생성하기 Gazebo world 의 sdf 파일에서는 Heightmap 을 이용해서 지형을 모델링할 수 있습니다. 1) Heightmap 사용을 위한 이미지 생성 import os import numpy as np from PIL import Image # 이미지 크기와 sin 함수의 주기, 진폭, 위상 등을 설정 width = 129 height = 129 period = 10 amplitude = 0.1 phase = 0 y, x = np.indices((height, w..
Height map 을 이용하여 Gazebo world 구성하기Heightmap 은 지형의 높이 정보를 저장하는 이미지입니다. 이 이미지는 픽셀의 흑백 값으로 표현됩니다. 밝을 수록 지형이 높아지고, 어두울 수록 낮은 지형을 뜻합니다. Gazebo 시뮬레이터에서 정현파 (sine) 형태의 지면 생성하기 Gazebo world 의 sdf 파일에서는 Heightmap 을 이용해서 지형을 모델링할 수 있습니다. 1) Heightmap 사용을 위한 이미지 생성 import os import numpy as np from PIL import Image # 이미지 크기와 sin 함수의 주기, 진폭, 위상 등을 설정 width = 129 height = 129 period = 10 amplitude = 0.1 phase = 0 y, x = np.indices((height, w..
2023.07.03 -
두 장의 이미지로 3D 를 복원하기 위해 알아야 하는 카메라 매트릭스 이미지를 통해서 3차원 포인트를 복원하기 위해서는 1) 2d 이미지 위 특징점 사이의 매칭 정보 2) 해당 카메라 pose 사이의 자세 정보 (Rotation / Translation) 정보 를 알아야 합니다. 이때 Epipolar Geometry 에 의해서 , P 점에 대응되는 매칭점의 후보군은 Epipolar Line 위에서 찾을 수 있습니다. Intrinsic , Extrinsic Matrix 카메라 파라미터는 Extrinsic Matrix, Intrinsic Matrix 로 구성됩니다. Extrinsic Matrix 는 World 좌표계의 3차원 포인트를 나의 카메라 좌표계로 옮기는 매트릭스입니다. 따라서 해당 Rotation ..
Essential Matrix 와 Fundamental Matrix두 장의 이미지로 3D 를 복원하기 위해 알아야 하는 카메라 매트릭스 이미지를 통해서 3차원 포인트를 복원하기 위해서는 1) 2d 이미지 위 특징점 사이의 매칭 정보 2) 해당 카메라 pose 사이의 자세 정보 (Rotation / Translation) 정보 를 알아야 합니다. 이때 Epipolar Geometry 에 의해서 , P 점에 대응되는 매칭점의 후보군은 Epipolar Line 위에서 찾을 수 있습니다. Intrinsic , Extrinsic Matrix 카메라 파라미터는 Extrinsic Matrix, Intrinsic Matrix 로 구성됩니다. Extrinsic Matrix 는 World 좌표계의 3차원 포인트를 나의 카메라 좌표계로 옮기는 매트릭스입니다. 따라서 해당 Rotation ..
2023.07.02