1. 程式人生 > >PCL_common模組api程式碼解析

PCL_common模組api程式碼解析

pcl_common庫包含大多數PCL庫使用的公共資料結構和方法。核心資料結構包括PointCloud類和許多用於表示點、表面法線、RGB顏色值、特徵描述符等的點型別。它還包含許多用於計算距離/範數、均值和協方差、角度轉換、幾何變換,等等。這個模組是不依賴其他模組的,所以是可以單獨編譯成功,單獨編譯出來可利用其中的資料結構自行開發,當然想單獨提取出來編譯時需要自行修改cmakeLists的,這裡就不再贅述。 那麼我們就按順序來解釋其中每個函式的作用,有必要的話,我會解釋其理論並結合程式碼實踐。 PCL_common的類: (1) class   pcl::BivariatePolynomialT< real >
這表示一個二元多項式,併為它提供了一些功能介面。   (2)class   pcl::CentroidPoint< PointT > 一個泛型類,它計算給輸入點雲的質心。 這裡我們用“重心”不僅表示3D點座標的平均值,而且表示其他資料欄位中的值的平均值。通用的computeNDCentroid()函式也實現了這種功能,但它是以“不智慧”的方式實現的,也就是說,不管欄位內資料的語義如何,它都只是對值進行平均。在某些情況下(例如,對於x,y,z,強度場),這種行為是合理的,但是在其他情況下(例如,rgb,rgba,rgbl(label帶標籤的)),這並不會導致有意義的結果。
  這個類能夠以一種“智慧”的方式計算質心,即考慮欄位內資料的含義。目前支援以下欄位: * XYZ (x, y, z)  計算每個欄位的平均值 * Normal (normal_x, normal_y, normal_z)    對每個欄位平均值,並將得到的歸一化的向量。 * Curvature (curvature)    曲率的平均值 * RGB/RGBA (rgb or rgba)   rgba每個通道的平均值 * Intensity (intensity)       強度平均值
* Label (label)                  標籤欄位的平均值 舉例子  
CentroidPoint<pcl::PointXYZ> centroid;
centroid.add (pcl::PointXYZ (1, 2, 3);
centroid.add (pcl::PointXYZ (5, 6, 7);    //這裡是在centroid點集中加兩個點
 
pcl::PointXYZ c1; 
centroid.get (c1);   //直接使用get函式獲取該點集的在每個欄位的均值
// 得到的結果是: c1.x == 3, c1.y == 4, c1.z == 5
// 我們也可以申明一個不一樣欄位的點雲來儲存結果
pcl::PointXYZRGB c2;
centroid.get (c2);
// 其中x,y,z欄位的結果還是: c2.x == 3, c2.y == 4, c2.z == 5,
// 但是 c2.rgb 是不被觸及的
(3)struct   pcl::NdConcatenateFunctor< PointInT, PointOutT > 點雲點集相加的輔助函式 在這裡要特別申明一下點雲庫中點雲的相加有兩種方式:
  • 比如:cloud_c  = cloud_a;
       cloud_c += cloud_b;//把cloud_a和cloud_b連線一起建立cloud_c  後輸出 輸出如下圖:
  • 欄位相加就會使用到該輔助函式,那麼輸出結果如下:

相關推薦

PCL_common模組api程式碼解析

pcl_common庫包含大多數PCL庫使用的公共資料結構和方法。核心資料結構包括PointCloud類和許多用於表示點、表面法線、RGB顏色值、特徵描述符等的點型別。它還包含許多用於計算距離/範數、均值和協方差、角度轉換、幾何變換,等等。這個模組是不依賴其他模組的,所以是可以單獨編譯成功,單獨編

Redis原始碼解析:18Hiredis同步API和回覆解析API程式碼解析

Redis的sentinel模式使用了Hiredis程式碼,Hiredis是redis資料庫一個輕量級的C語言客戶端庫。它實現的向Redis傳送命令的API函式redisCommand,使用方法類似於printf。因此只要熟悉redis命令,就可以很容易的使用該函式將red

balance transfer程式碼解析api深度追蹤(五)初始化鏈碼

一程式碼解析 var path = require(‘path’); var fs = require(‘fs’); var util = require(‘util’); var hfc = require(‘fabric-client’); var Peer

balance transfer程式碼解析api深度追蹤(六)執行鏈碼

一程式碼解析 var path = require(‘path’); var fs = require(‘fs’); var util = require(‘util’); var hfc = require(‘fabric-client’); var Peer

balance transfer程式碼解析api深度追蹤(七)查詢交易

一程式碼解析 var queryChaincode = function(peer, channelName, chaincodeName, args, fcn, username, org) { var channel = helper.getChannelF

Apollo程式碼解析:4. control模組

0. 簡介: 閱讀本章之前預設已經閱讀了: 首先來看看整體的邏輯圖: 由此可知planning和control是整個Apollo的核心,由於個人喜好的原因先看control模組。 開啟control模組: 可見整個模組是由main.cc

wordcount 程式碼解析

MapRuduce map表示對映 reduce表示化簡。它的思想就是‘分而治之’,具體思想就不用說了 這裡主要解析wordcount原始碼。程式碼裡的思想是一直是K,V對(鍵值對)傳輸的重要的是map ()、reduce()兩個函式。 main方法裡主要job作業的配置、啟動

GraphSAGE 程式碼解析 - minibatch.py

class EdgeMinibatchIterator """ This minibatch iterator iterates over batches of sampled edges or random pairs of co-occuring edges.

【機房收費系統】——模組程式碼的含義

本部落格來自轉載,對模組不太懂的可以好好看看。 前言 這篇部落格認認真真的總結了一天,不能夠理解機房還有學生中模組的程式碼的意思,決定去解決一下這部分內容,下面就是我對此部分的程式碼的理解!感覺這部分的程式碼不過如此,下來跟著我一起搞懂它吧! Public Function Ex

MyBatis-Plus程式碼生成器,根據表名生成各個模組程式碼

根據表名生成Entity、Mapper、Mapper XML、Service、Controller 等各個模組的程式碼,程式碼如下(根據官網demo修改的),可以正常執行 package com; import com.baomidou.mybatisplus.annotation.DbTyp

Faster RCNN演算法訓練程式碼解析(2)

接著上篇的部落格,我們獲取imdb和roidb的資料後,就可以搭建網路進行訓練了。 我們回到trian_rpn()函式裡面,此時執行完了roidb, imdb = get_roidb(imdb_name),取得了imdb和roidb資料。 先進入第一階段的訓練:   print

Faster RCNN演算法訓練程式碼解析(3)

四個層的forward函式分析: RoIDataLayer:讀資料,隨機打亂等 AnchorTargetLayer:輸出所有anchors(這裡分析這個) ProposalLayer:用產生的anchors平移整圖,裁剪出界、移除低於閾值的的anchors,排序後使用nms,返回頂部排名的anchors

tensorflow中slim模組api介紹

github:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/slim TensorFlow-Slim TF-Slim is a lightweight library for definin

Matlab程式設計之——卷積神經網路CNN程式碼解析

卷積神經網路CNN程式碼解析 deepLearnToolbox-master是一個深度學習matlab包,裡面含有很多機器學習演算法,如卷積神經網路CNN,深度信念網路DBN,自動編碼AutoE ncoder(堆疊SAE,卷積CAE)的作者是 RasmusBerg Palm 今天給介紹d

GraphSAGE 程式碼解析(四) - models.py

1. 類及其繼承關係 Model / \ / \ MLP GeneralizedModel / \ / \ Node2VecModel SampleAndAggregate 首先看Model, Ge

GraphSAGE 程式碼解析(三) - aggregators.py

1. class MeanAggregator(Layer): 該類主要用於實現 1. __init__()  __init_() 用於獲取並初始化成員變數 dropout, bias(False), act(ReLu), concat(False), input_dim, output_

opencv實現螢幕錄製程式碼解析

# -*- coding: utf-8 -*- """ Created on Thu Nov 15 22:37:02 2018 #QQ群:476842922(歡迎加群討論學習) @author: Administrator """ """python + opencv 實現螢幕錄製""" f

07.Fabric核心模組之Orderer解析

陳述 主要講Fabric核心模組中Orderer Orderer模組介紹 Orderer 模組負責對交易進行排序, 並將排序好的交易打包成區塊。Orderer節點的配置資訊通常放在環境變數或者配置檔案中,在具體操作中,如果是通過docker映象檔案的方式啟動Orderer,推

06.Fabric核心模組之Configtxgen解析

陳述 主要講Fabric核心模組中Configtxgen 生成Orderer節點的初始化檔案 生成channel的初始化檔案 Configtxgen模組命令 onfigtxgen模組是通過命令列的方式執行的,通過執行命令Configtxgen --help

05.Fabric核心模組之Cryptogen解析

陳述 主要講Fabric核心模組中cryptogen的功能模組相關操作以及配置檔案 Cryptogen cryptogen模組主要用來生成組織結構和賬號相關的檔案,任何Fabric系統的開發通常都是從cryptogen模組開始的。在Fabric專案中,當系統設計完成之後第一項