boost::shared_ptr<pcl::visualization::PCLVisualizer> viewportsVis ( pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr cloud1,pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr cloud2) { // -------------------------------------------------------- // -----Open 3D viewer and add point cloud and normals----- // -------------------------------------------------------- boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("3D Viewer")); viewer->initCameraParameters (); int v1(0); viewer->createViewPort(0.0, 0.0, 0.5, 1.0, v1); viewer->setBackgroundColor (0.3, 0.3, 0.3, v1+1); viewer->addText("Radius: 0.01", 10, 10, "v1 text", v1); pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgb1(cloud1); viewer->addPointCloud<pcl::PointXYZRGB> (cloud1, rgb1, "sample cloud1", v1); int v2(0); viewer->createViewPort(0.5, 0.0, 1.0, 1.0, v2); viewer->setBackgroundColor (0.3, 0.3, 0.3, v2+1); viewer->addText("Radius: 0.1", 10, 10, "v2 text", v2); pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgb2(cloud2); viewer->addPointCloud<pcl::PointXYZRGB> (cloud2, rgb2, "sample cloud2", v2); viewer->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud1"); viewer->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud2"); viewer->addCoordinateSystem (1.0); return (viewer); }
HSVValue RenderBuffer::Get2ColorAdditive(HSVValue& hsv1, HSVValue& hsv2) { xlColor rgb; xlColor rgb1(hsv1); xlColor rgb2(hsv2); rgb.red = rgb1.red + rgb2.red; rgb.green = rgb1.green + rgb2.green; rgb.blue = rgb1.blue + rgb2.blue; return rgb.asHSV(); }
template <typename PointInT> double RejectivePointCloudCoherence<PointInT>::computeScore (const PointInT &p1,const PointInT& p2, float dist) { Eigen::Vector3f rgb1(p1.r, p1.g, p1.b); Eigen::Vector3f rgb2(p2.r, p2.g, p2.b); double d_rgb = (rgb1 - rgb2).norm () / 255.0f; // double d_spatial = (p1.getVector4fMap () - p2.getVector4fMap ()).norm (); return (1.0 / (1.0 + d_rgb + dist)); }