日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

谷歌draco

發布時間:2023/11/27 生活经验 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谷歌draco 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前不久,谷歌開源的Draco關于點云的編碼與壓縮的源碼,Draco 由谷歌 Chrome 媒體團隊設計,旨在大幅加速 3D 數據的編碼、傳輸和解碼。因為研發團隊的 Chrome 背景,這個開源算法的首要應用對象是瀏覽器。但既然谷歌把它開源,現在全世界的開發者可以去探索 Draco 在其他場景的應用,比如說非網頁端。目前,谷歌提供了它的兩個版本: JavaScript 和 C++。

Draco 可以被用來壓縮 mesh 和點云數據。它還支持壓縮點( compressing points),連接信息,紋理協調,顏色信息,法線( normals)以及其他與幾何相關的通用屬性。下面是谷歌官方發布的?Draco Mesh 文件壓縮率,可以看出,它大幅優于?ZIP。

Draco 的算法既支持有損模式,也支持無損。這給普通消費者帶來的好處還不太明顯——畢竟大多數人對分辨率并沒有強迫癥,有損壓縮帶來的輕微畫質改變完全在承受范 圍之內。但對專業應用和科研應用的意義就很大了。這就好比 ?JPEG 之于 PNG。后者用于游戲和 VR 應用完全沒有問題,降低的畫質很難用肉眼察覺。但在科研點云數據中,任何信息都不能丟失。

如何使用draco?

github上簡介:Draco is a library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.

(1)下載源碼

git clone https://github.com/google/draco.git?

(2) cd? dracs

???? mkdir build

???? cmake ..

????????? 如果提示你cmake的版本太低了,則需要升級cmake ,命令如下

???? ? ? ?? sudo add-apt-repository ppa:george-edison55/cmake-3.x

??????????? sudo apt-get update

???????? 如果你從來沒裝過cmake? 則sudo apt-get install cmake(經過測試?? 即使裝過還是用這個命令直接升級比較好)
???????? 如果你裝過cmake??? 則sudo apt-get upgrade

安裝完后,用命令:cmake --version 查看當前的cmake版本,可以看到現在cmake的版本為3.2.2

之后就可以編譯通過,make?? 一下傻等片刻就安裝成功

那么就可以使用查看一下效果,為了可視化以下,所以還是使用強大的PCL庫來對比以下,在PCL庫中讀取PLY文件也是有對應的函數的

class pcl::PCDReader()與class pcl::FLYReader() 分別是PCD,和FLY文件格式的接口的實現

class pcl::PCDWriter()與class pcl::FLYWriter()分別是對PCD,FLY文件寫入接口的實現

查看發現它們的其他函數基本都是一樣的,就是把PCD 換成FLY即可

所以我們就可以使用draco來編碼FLY格式的點云數據,然后在解碼生成FLY文件,再在點云庫中可視化一下,并且查看編碼前后編碼后文件的大小,可以看看編碼的效率

首先我們查看原始的文件以及它的大小3M

編碼? 生成了out.drc文件并查看文件大小113.KB的大小

并可視化原始點云

然后為了在可視化編碼后再解碼的效果,所以再查看解壓后的大小為431.5KB

可視化的效果和之前的是一樣的,同時為了查看有沒有丟失點數,打印出來看一下,發現點云數目沒有變化都是35947 data points

?總結以下,原來的文本是3M,編碼后是113.KB文件,文件很小,壓縮的效率非常高,為了再可視化,所以再解壓,可視化的效果與原點云效果是一樣的,

? ? ?

???????????????????? 原點云 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 解碼后的點云

可視化的代碼

#include <iostream>              //標準C++庫中的輸入輸出的頭文件
#include <pcl/io/pcd_io.h>       //PCD讀寫類相關的頭文件
#include <pcl/point_types.h>     //PCL中支持的點類型的頭文件
#include <pcl/io/ply_io.h>
#include <boost/thread/thread.hpp>
#include <pcl/visualization/pcl_visualizer.h>int
main (int argc, char** argv)
{ //創建一個PointCloud<pcl::PointXYZ>    boost共享指針并進行實例化pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);//打開點云文件if (pcl::io::loadPLYFile<pcl::PointXYZ> ("bun_zipper.ply", *cloud) == -1) {PCL_ERROR ("Couldn't read file bun_zipper.ply \n");return (-1);}

std::cout << "Loaded "<< cloud->width * cloud->height<< " data points from bun_zipper.ply with the following fields: "<< std::endl;

boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("cloud"));
viewer->addPointCloud<pcl::PointXYZ>(cloud,"cloud");while(!viewer->wasStopped()){viewer->spinOnce(100);
boost::this_thread::sleep(boost::posix_time::microseconds(1000000));}return (0);
}

如有問題可以與我交流,同時歡迎指正,謝謝

?

微信公眾號號可掃描二維碼一起共同學習交流

總結

以上是生活随笔為你收集整理的谷歌draco的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。