全部产品
Search
文档中心

Intelligent Media Management:Kompresi point cloud

更新时间:Nov 10, 2025

Metode umum untuk kompresi point cloud meliputi pengambilan sampel, fitting bentuk geometris, dan metode octree. Topik ini menjelaskan cara mengompres data point cloud menggunakan metode octree.

Ikhtisar

Point cloud merupakan kumpulan sejumlah besar titik. Penyimpanannya memerlukan memori yang besar dan tidak ideal untuk transmisi. Bandwidth yang tersedia seringkali tidak mencukupi untuk mentransmisikan point cloud yang belum dikompresi secara langsung melalui jaringan. Oleh karena itu, point cloud perlu dikompresi. Fitur kompresi point cloud dari Intelligent Media Management (IMM) menganalisis dan memproses informasi spasial-temporal dari data point cloud, sehingga secara signifikan mengurangi volume data dan biaya penyimpanan, serta menyediakan solusi enkode dan dekode berkualitas tinggi secara waktu nyata.

Skenario

Kompresi point cloud dapat digunakan dalam skenario berikut.

Skenario

Deskripsi

Autonomous driving

Mengompresi data point cloud yang dihasilkan oleh pemindaian radar dalam skenario autonomous driving.

Digital cultural heritage

Menyediakan solusi kompresi untuk informasi point cloud artefak budaya dalam skenario warisan digital.

Smart city

Secara efektif mengompresi informasi point cloud dari rekonstruksi kota 3D untuk memungkinkan rendering dan tampilan data yang lancar.

Mixed reality

Menyediakan kemampuan enkode dan dekode waktu nyata untuk data point cloud dalam skenario mixed reality.

Prasyarat

  • Pasangan AccessKey telah dibuat dan diperoleh. Untuk informasi selengkapnya, lihat Create an AccessKey pair.

  • OSS telah diaktifkan, bucket telah dibuat, dan objek telah diunggah ke bucket tersebut. Untuk informasi selengkapnya, lihat Upload objects.

  • IMM telah diaktifkan. Untuk informasi selengkapnya, lihat Activate IMM.

  • Proyek telah dibuat di Konsol IMM. Untuk informasi selengkapnya tentang cara membuat proyek menggunakan Konsol IMM, lihat Create a project.

    Catatan
    • Anda juga dapat memanggil operasi CreateProject untuk membuat proyek. Untuk informasi selengkapnya, lihat CreateProject.

    • Anda dapat memanggil operasi ListProjects untuk menanyakan proyek yang sudah ada di wilayah tertentu. Untuk informasi selengkapnya, lihat ListProjects.

Prosedur

Panggil operasi CreateCompressPointCloudTask untuk mengompresi data point cloud.

Penting

Informasi tugas disimpan selama tujuh hari sejak tugas dimulai. Informasi tersebut tidak dapat diambil setelah periode tujuh hari berakhir. Anda dapat menggunakan salah satu metode berikut untuk menanyakan informasi tugas:

Informasi kompresi

  • Nama proyek: test-project

  • URI OSS file point cloud: oss://test-bucket/test-object.pcd

  • Algoritma kompresi: Octree

  • URI OSS file output: oss://test-bucket/test-target-object

Kompresi Ikhtisar algoritma

Octree adalah algoritma kompresi umum yang terutama digunakan untuk kompresi dan representasi data 3D. Algoritma ini membagi ruang 3D menjadi serangkaian kubus berukuran sama. Setiap kubus dibagi menjadi delapan sub-kubus, yang dapat dibagi lebih lanjut menjadi sub-kubus yang lebih kecil, dan seterusnya.

Dengan hanya menyimpan node yang berisi data valid, metode octree secara signifikan mengurangi kebutuhan ruang penyimpanan. Metode ini sering digunakan untuk kompresi dan representasi data 3D, seperti data point cloud dan data volumetrik. Dengan menerapkan strategi pembagian dan penggabungan yang tepat, Anda dapat mengurangi overhead penyimpanan dan transmisi sekaligus mempertahankan presisi data.

Contoh permintaan

{
    "ProjectName": "test-project",
    "SourceURI": "oss://test-bucket/test-object.pcd",
    "UserData": "{\"ID\":\"testuid\",\"Name\": \"test-user\",\"Avatar\": \"http://test.com/testuid\"}",
    "TargetURI": "oss://test-bucket/test-target-object",
    "PointCloudFileFormat": "pcd",
    "CompressMethod": "octree",
    "PointCloudFields": "[\"xyz\"]",
    "OctreeOption": "{\"PointResolution\": 0.001, \"OctreeResolution\": 0.01, \"DoVoxelGridDownDownSampling\": false, \"LibraryName\": \"pcl\"}",
    "KdtreeOption": "{\"CompressionLevel\": 8, \"QuantizationBits\": 10, \"LibraryName\": \"draco\"}"
}

Contoh respons

{
    "TaskId": "PointCloudCompress-091d9b4a-8726-47bf-b699-d24c7daff63c",
    "RequestId": "8B0EEA2E-35FE-500F-BCDB-E2E7CA11DF7A",
    "EventId": "180-1S7Q8gHbVXJf2lekgesKvlNM1VR"
}

Kode contoh

Kode contoh berikut menunjukkan cara mengompresi point cloud menggunakan Python SDK.

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys

from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
        access_key_id: str,
        access_key_secret: str,
    ) -> imm20200930Client:
        """
        Menginisialisasi klien menggunakan ID AccessKey dan rahasia AccessKey.
        @param access_key_id:
        @param access_key_secret:
        @return: Client
        @throws Exception
        """
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        # Tentukan titik akhir IMM.
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        # AccessKey akun Alibaba Cloud memiliki izin untuk memanggil semua operasi API. Kami menyarankan agar Anda menggunakan pengguna Resource Access Management (RAM) untuk memanggil operasi API atau melakukan O&M rutin.
        # Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan rahasia AccessKey Anda dalam kode proyek Anda. Hal ini dapat menyebabkan kebocoran AccessKey dan mengancam keamanan semua sumber daya dalam akun Anda.
        # Contoh ini menunjukkan cara memperoleh AccessKey dari variabel lingkungan untuk verifikasi identitas saat Anda memanggil operasi API.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        octree_option = imm_20200930_models.OctreeOption(
            point_resolution=0.001,
            octree_resolution=0.01,
            do_voxel_grid_down_down_sampling=False,
            library_name='pcl'
        )
        create_compress_point_cloud_task_request = imm_20200930_models.CreateCompressPointCloudTaskRequest(
            source_uri='oss://test-bucket/test-object.pcd',
            target_uri='oss://test-bucket/test-target-object',
            point_cloud_file_format='pcd',
            compress_method='octree',
            point_cloud_fields=[
                '[\"xyz\"]'
            ],
            project_name='test-project',
            octree_option=octree_option
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Jika Anda menyalin kode ini untuk menjalankannya, cetak nilai kembali dari operasi API.
            client.create_compress_point_cloud_task_with_options(create_compress_point_cloud_task_request, runtime)
        except Exception as error:
            # Jika terjadi kesalahan, cetak pesan kesalahan.
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        # AccessKey akun Alibaba Cloud memiliki izin untuk memanggil semua operasi API. Kami menyarankan agar Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
        # Kami sangat menyarankan agar Anda tidak menyimpan ID AccessKey dan rahasia AccessKey Anda dalam kode proyek Anda. Hal ini dapat menyebabkan kebocoran AccessKey dan mengancam keamanan semua sumber daya dalam akun Anda.
        # Contoh ini menunjukkan cara memperoleh AccessKey dari variabel lingkungan untuk verifikasi identitas saat Anda memanggil operasi API.
        imm_access_key_id = os.getenv("AccessKeyId")
        imm_access_key_secret = os.getenv("AccessKeySecret")
        client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
        octree_option = imm_20200930_models.OctreeOption(
            point_resolution=0.001,
            octree_resolution=0.01,
            do_voxel_grid_down_down_sampling=False,
            library_name='pcl'
        )
        create_compress_point_cloud_task_request = imm_20200930_models.CreateCompressPointCloudTaskRequest(
            source_uri='oss://test-bucket/test-object.pcd',
            target_uri='oss://test-bucket/test-target-object',
            point_cloud_file_format='pcd',
            compress_method='octree',
            point_cloud_fields=[
                '[\"xyz\"]'
            ],
            project_name='test-project',
            octree_option=octree_option
        )
        runtime = util_models.RuntimeOptions()
        try:
            # Jika Anda menyalin kode ini untuk menjalankannya, cetak nilai kembali dari operasi API.
            await client.create_compress_point_cloud_task_with_options_async(create_compress_point_cloud_task_request, runtime)
        except Exception as error:
            # Jika terjadi kesalahan, cetak pesan kesalahan.
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

Penagihan

Selama kompresi point cloud, item yang dapat ditagih berikut dihasilkan untuk OSS dan IMM:

  • Untuk OSS: Untuk harga detail, lihat Harga OSS.

    API

    Item yang dapat ditagih

    Deskripsi

    GetObject

    Permintaan GET

    Biaya dihitung berdasarkan jumlah permintaan yang berhasil.

    Lalu lintas keluar melalui internet

    Jika Anda memanggil operasi GetObject menggunakan titik akhir publik (misalnya, oss-cn-hangzhou.aliyuncs.com) atau titik akhir percepatan (misalnya, oss-accelerate.aliyuncs.com), biaya akan dikenakan untuk lalu lintas keluar melalui internet. Biaya ini didasarkan pada volume data.

    Volume data Akses Jarang yang diambil

    Jika data yang diambil merupakan data Akses Jarang, biaya akan dikenakan untuk volume data Akses Jarang yang diambil. Biaya ini didasarkan pada volume data yang diambil.

    Volume data yang diambil menggunakan akses waktu nyata untuk objek Arsip

    Jika Anda membaca objek Arsip dari bucket yang diaktifkan fitur akses waktu nyata untuk objek Arsip, biaya akan dikenakan untuk volume data yang diambil. Biaya ini didasarkan pada volume data yang diambil.

    Akselerasi transfer

    Jika Anda mengaktifkan akselerasi transfer dan menggunakan titik akhir percepatan untuk mengakses bucket Anda, biaya akan dikenakan untuk akselerasi transfer. Biaya ini didasarkan pada volume data.

  • Untuk IMM: Untuk harga detail, lihat Item yang dapat ditagih IMM.

    Penting

    Mulai pukul 11.00 pada 28 Juli 2025 (UTC+8), fitur kompresi point cloud IMM akan menjadi layanan berbayar. Untuk informasi selengkapnya, lihat Pengumuman Penyesuaian Penagihan IMM.

    API

    Item yang dapat ditagih

    Deskripsi

    CreateCompressPointCloudTask

    PointCloudCompress

    Biaya dihitung berdasarkan jumlah permintaan yang berhasil.