拥有云pcl::P ointCloud<xyzrgb>,如何独立计算每个颜色层的直方图?



我使用pcl :: pointcloud :: ptr有一个3D点云,我想计算每个颜色层r,g,b。
也许有一个直接计算直方图的类?谢谢

具有pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud,一种用于计算每个颜色层直方图的解决方案如下

const int nbins=8;
const int ndim=3;
const Eigen::Vector3f maxrgb(255.0,255.0,255.0);
std::vector< std::vector<int> > histog(nbins, std::vector<int>(ndim));
Eigen::Vector3f divisor_rgb = maxrgb/(float)nbins;
for (int i=0; i< cloud->size() ; i++)
    Eigen::Vector3i tricolor = cloud->at(i).getRGBVector3i();
Eigen::Vector3f bin_tricolor = floor(tricolor.cast<float>().array()/divisor_rgb.array());
for (int k=0;k<ndim;k++)
    histog[(int)bin_tricolor(k,0)][k]++;

最新更新