1. 소개
포인트 클라우드 애플리케이션은 로봇, 자율주행차, 보조 시스템, 의료 등 어디에나 있습니다. 포인트 클라우드는 특히 물체의 거리, 모양, 크기와 같이 장면/객체의 기하학적 구조가 필요할 때 실제 데이터를 처리하는 데 적합한 3D 표현입니다.
포인트 클라우드는 현실 세계의 장면이나 공간의 객체를 나타내는 점 집합입니다. 기하학적 객체와 장면을 개별적으로 표현한 것입니다. 즉, 포인트 클라우드 PCD는 n 포인트의 집합이며, 여기서 각 포인트 Pi는 3D 좌표로 표시됩니다.
포인트 클라우드를 설명하기 위해 RGB와 같은 다른 기능을 추가할 수도 있습니다. 색상, 메소드 라인 등 예를 들어 RGB 색상을 추가하여 색상 정보를 제공할 수 있습니다.
2. 포인트 클라우드 생성
포인트 클라우드는 일반적으로 3D 스캐너(레이저 스캐너, 비행 시간 스캐너 및 구조광 스캐너) 또는 CAD(컴퓨터 지원 설계) 모델을 사용하여 생성됩니다. 이 튜토리얼에서는 먼저 임의의 포인트 클라우드를 생성하고 시각화합니다. 그런 다음 Open3D 라이브러리를 사용하여 3D 표면의 점을 샘플링하여 3D 모델에서 생성합니다. 마지막으로 RGB-D 데이터에서 이를 생성하는 방법을 살펴보겠습니다.
Python 라이브러리를 가져오는 것부터 시작하겠습니다.
import numpy as np import matplotlib.pyplot as plt import open3d as o3d
2.1 임의의 점 구름
가장 쉬운 방법은 임의의 점 구름을 만드는 것입니다. 일반적으로 GAN(Generative Adversarial Network)에 대한 노이즈를 생성할 때를 제외하고는 처리할 무작위 포인트를 생성하지 않습니다.
일반적으로 포인트 클라우드는 (n×3) 배열로 표현됩니다. 여기서 n은 포인트 수입니다. 5개의 무작위 포인트로 포인트 클라우드를 만들어 보겠습니다.
number_points = 5 pcd = np.random.rand(number_points, 3)# uniform distribution over [0, 1) print(pcd)
포인트를 직접 인쇄할 수 있지만 이는 그다지 효율적이지 않습니다. 특히 포인트 수가 많은 경우 대부분의 응용 프로그램에서는 더욱 그렇습니다. 더 나은 접근 방식은 3D 공간에 표시하는 것입니다. Matplotlib 라이브러리를 사용하여 시각화해 보겠습니다.
# Create Figure: fig, ax = plt.subplots(subplot_kw={"projection": "3d"}) ax.scatter3D(pcd[:, 0], pcd[:, 1], pcd[:, 2]) # label the axes ax.set_xlabel("X") ax.set_ylabel("Y") ax.set_zlabel("Z") ax.set_title("Random Point Cloud") # display: plt.show()
Random Point Cloud Visualization
2.2 Sampling Point Clouds
3D 모델을 직접 처리하려면 시간이 걸립니다. 따라서 3차원 표면에서 포인트 클라우드를 샘플링하는 것이 잠재적인 솔루션입니다. Open3D 데이터세트에서 토끼 모델을 가져오는 것부터 시작해 보겠습니다.
bunny = o3d.data.BunnyMesh() mesh = o3d.io.read_triangle_mesh(bunny.path)
또는 다음과 같이 가져옵니다.
mesh = o3d.io.read_triangle_mesh("data/bunny.ply")
다음으로 3D 모델을 표시하여 어떻게 보이는지 확인합니다. 마우스를 움직여 다양한 관점에서 볼 수 있습니다.
# Visualize: mesh.compute_vertex_normals() # compute normals for vertices or faces o3d.visualization.draw_geometries([mesh])
Rabbit 3D Model
포인트 클라우드를 샘플링하는 방법에는 여러 가지가 있습니다. 이 예에서는 가져온 메쉬에서 1000개의 점을 균일하게 샘플링하고 시각화합니다.
# Sample 1000 points: pcd = mesh.sample_points_uniformly(number_of_points=1000) # visualize: o3d.visualization.draw_geometries([pcd])
Rabbit Point Cloud
생성된 포인트 클라우드를 다음과 같이 .ply 형식으로 저장할 수 있습니다. 표시:
# Save into ply file: o3d.io.write_point_cloud("output/bunny_pcd.ply", pcd)
2.3 점 RGB-D 데이터의 클라우드
RGB-D 데이터는 RGB 이미지와 깊이 이미지를 모두 제공하는 RGB-D 센서(예: Microsoft Kinect)를 사용하여 수집됩니다. RGB-D 센서는 실내 탐색, 장애물 회피 및 기타 분야에서 널리 사용됩니다. RGB 이미지는 픽셀 색상을 제공하므로 깊이 이미지의 각 픽셀은 카메라로부터의 거리를 나타냅니다.
Open3D는 RGB-D 이미지 처리를 위한 일련의 기능을 제공합니다. Open3D 기능을 사용하여 RGB-D 데이터에서 포인트 클라우드를 생성하려면 두 개의 이미지를 가져오고 RGB-D 이미지 객체를 생성한 후 마지막으로 다음과 같이 포인트 클라우드를 계산하면 됩니다.
# read the color and the depth image: color_raw = o3d.io.read_image("../data/rgb.jpg") depth_raw = o3d.io.read_image("../data/depth.png") # create an rgbd image object: rgbd_image = o3d.geometry.RGBDImage.create_from_color_and_depth( color_raw, depth_raw, convert_rgb_to_intensity=False) # use the rgbd image to create point cloud: pcd = o3d.geometry.PointCloud.create_from_rgbd_image( rgbd_image, o3d.camera.PinholeCameraIntrinsic( o3d.camera.PinholeCameraIntrinsicParameters.PrimeSenseDefault)) # visualize: o3d.visualization.draw_geometries([pcd])
색상 생성 RGB-D image 포인트 클라우드
3, Open3D 및 NumPy
때때로 Open3D와 NumPy 간에 전환해야 할 때가 있습니다. 예를 들어 시각화를 위해 NumPy 포인트 클라우드를 Open3D.PointCloud 개체로 변환하고 Matplotlib를 사용하여 토끼의 3D 모델을 시각화한다고 가정해 보겠습니다.
3.1 NumPy에서 Open3D로
이 예에서는 [0,1]의 균일 분포에서 무작위 샘플을 생성하는 NumPy.random.rand() 함수를 사용하여 2000개의 무작위 점을 생성합니다. 그런 다음 Open3D.PointCloud 객체를 생성하고 Open3D.utility.Vector3dVector() 함수를 사용하여 Open3D.PointCloud.points 기능을 임의의 점으로 설정합니다.
# Create numpy pointcloud: number_points = 2000 pcd_np = np.random.rand(number_points, 3) # Convert to Open3D.PointCLoud: pcd_o3d = o3d.geometry.PointCloud()# create point cloud object pcd_o3d.points = o3d.utility.Vector3dVector(pcd_np)# set pcd_np as the point cloud points # Visualize: o3d.visualization.draw_geometries([pcd_o3d])
임의 포인트 클라우드의 Open3D 시각화
3.2 从 Open3D到NumPy
这里,我们首先使用Open3D.io.read_point_cloud()函数从.ply文件中读取点云,该函数返回一个Open3D.PointCloud对象。现在我们只需要使用NumPy.asarray()函数将表示点的Open3D.PointCloud.points特征转换为NumPy数组。最后,我们像上面那样显示获得的数组。
# Read the bunny point cloud file: pcd_o3d = o3d.io.read_point_cloud("../data/bunny_pcd.ply") # Convert the open3d object to numpy: pcd_np = np.asarray(pcd_o3d.points) # Display using matplotlib: fig, ax = plt.subplots(subplot_kw={"projection": "3d"}) ax.scatter3D(pcd_np[:, 0], pcd_np[:, 2], pcd_np[:, 1]) # label the axes ax.set_xlabel("X") ax.set_ylabel("Y") ax.set_zlabel("Z") ax.set_title("Bunny Point Cloud") # display: plt.show()
使用 Matplotlib 显示的兔子点云
4、最后
在本教程中,我们学习了如何创建和可视化点云。在接下来的教程中,我们将学习如何处理它们。
위 내용은 Python: 포인트 클라우드를 만들고 시각화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Python의 유연성은 다중 파리가 지원 및 동적 유형 시스템에 반영되며, 사용 편의성은 간단한 구문 및 풍부한 표준 라이브러리에서 나옵니다. 유연성 : 객체 지향, 기능 및 절차 프로그래밍을 지원하며 동적 유형 시스템은 개발 효율성을 향상시킵니다. 2. 사용 편의성 : 문법은 자연 언어에 가깝고 표준 라이브러리는 광범위한 기능을 다루며 개발 프로세스를 단순화합니다.

Python은 초보자부터 고급 개발자에 이르기까지 모든 요구에 적합한 단순성과 힘에 호의적입니다. 다목적 성은 다음과 같이 반영됩니다. 1) 배우고 사용하기 쉽고 간단한 구문; 2) Numpy, Pandas 등과 같은 풍부한 라이브러리 및 프레임 워크; 3) 다양한 운영 체제에서 실행할 수있는 크로스 플랫폼 지원; 4) 작업 효율성을 향상시키기위한 스크립팅 및 자동화 작업에 적합합니다.

예, 하루에 2 시간 후에 파이썬을 배우십시오. 1. 합리적인 학습 계획 개발, 2. 올바른 학습 자원을 선택하십시오. 3. 실습을 통해 학습 된 지식을 통합하십시오. 이 단계는 짧은 시간 안에 Python을 마스터하는 데 도움이 될 수 있습니다.

Python은 빠른 개발 및 데이터 처리에 적합한 반면 C는 고성능 및 기본 제어에 적합합니다. 1) Python은 간결한 구문과 함께 사용하기 쉽고 데이터 과학 및 웹 개발에 적합합니다. 2) C는 고성능과 정확한 제어를 가지고 있으며 게임 및 시스템 프로그래밍에 종종 사용됩니다.

Python을 배우는 데 필요한 시간은 개인마다 다릅니다. 주로 이전 프로그래밍 경험, 학습 동기 부여, 학습 리소스 및 방법 및 학습 리듬의 영향을받습니다. 실질적인 학습 목표를 설정하고 실용적인 프로젝트를 통해 최선을 다하십시오.

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

WebStorm Mac 버전
유용한 JavaScript 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
