void KinectRegistration::kinectCloudCallback( const sensor_msgs::PointCloud2ConstPtr &msg ) { if( receive_point_cloud_ ) { if( !first_point_cloud_ ) { ROS_INFO("First PointCloud received"); PointCloud temp; pcl::fromROSMsg( *msg, temp ); removeOutliers( temp, src_ ); first_point_cloud_ = true; } else { ROS_INFO("PointCloud received"); PointCloud temp, temp1; pcl::fromROSMsg( *msg, temp ); removeOutliers( temp, tgt_ ); transformCloud(tgt_, temp, num_clouds_ * 40 ); temp1 = src_; temp1 += temp; downsample( temp1, temp ); pcl::toROSMsg( temp, cloud_msg_ ); registered_cloud_pub_.publish( cloud_msg_ ); src_ = temp1; } receive_point_cloud_ = false; rotateRobotino(); num_clouds_++; } else return; }
bool ossimOutlierRejection::execute() { if(!setupModel(theModelDefinitionString)) { return false; } ossim_float64 variance_pix2; if(removeOutliers(&variance_pix2, NULL)) //TBD : use target variance { //display RMS with unit cout<<"RMS="<<std::sqrt(variance_pix2)<<" pixels"<<endl; //export results if(theGeomOutputFilename!="") { if(!exportModel(theGeomOutputFilename)) return false; } if(theInlierOutputFilename!="") { if(!saveGMLTieSet(theInlierOutputFilename)) return false; } } else { return false; } return true; }
std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> MovingObjectsIdentificator::identify() { if(verbose) std::cout << "\nMoving Object Identification start" << std::endl; findDifference(); removeOutliers(); if(verbose) std::cout << "Moving Object Identification end" << std::endl; return extractClusters(); }
bool MakePlan::process(pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_in, float a, float b, float c, float d, pcl::PointXYZRGB &avrPt) { pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_filtered_out (new pcl::PointCloud<pcl::PointXYZRGB>); pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_filtered_nan (new pcl::PointCloud<pcl::PointXYZRGB>); removeOutliers(cloud_in, cloud_filtered_out); removeField(cloud_filtered_out, cloud_filtered_nan); bool success = getAveragePoint(cloud_filtered_nan, avrPt); return success; }
void LVRMainWindow::connectSignalsAndSlots() { QObject::connect(m_actionOpen, SIGNAL(activated()), this, SLOT(loadModel())); QObject::connect(m_actionExport, SIGNAL(activated()), this, SLOT(exportSelectedModel())); QObject::connect(treeWidget, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(showTreeContextMenu(const QPoint&))); QObject::connect(treeWidget, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(restoreSliders(QTreeWidgetItem*, int))); QObject::connect(treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(setModelVisibility(QTreeWidgetItem*, int))); QObject::connect(m_actionQuit, SIGNAL(activated()), qApp, SLOT(quit())); QObject::connect(m_actionShowColorDialog, SIGNAL(activated()), this, SLOT(showColorDialog())); QObject::connect(m_actionRenameModelItem, SIGNAL(activated()), this, SLOT(renameModelItem())); QObject::connect(m_actionDeleteModelItem, SIGNAL(activated()), this, SLOT(deleteModelItem())); QObject::connect(m_actionExportModelTransformed, SIGNAL(activated()), this, SLOT(exportSelectedModel())); QObject::connect(m_actionReset_Camera, SIGNAL(activated()), this, SLOT(updateView())); QObject::connect(m_actionStore_Current_View, SIGNAL(activated()), this, SLOT(saveCamera())); QObject::connect(m_actionRecall_Stored_View, SIGNAL(activated()), this, SLOT(loadCamera())); QObject::connect(m_actionCameraPathTool, SIGNAL(activated()), this, SLOT(openCameraPathTool())); QObject::connect(m_actionEstimate_Normals, SIGNAL(activated()), this, SLOT(estimateNormals())); QObject::connect(m_actionMarching_Cubes, SIGNAL(activated()), this, SLOT(reconstructUsingMarchingCubes())); QObject::connect(m_actionPlanar_Marching_Cubes, SIGNAL(activated()), this, SLOT(reconstructUsingPlanarMarchingCubes())); QObject::connect(m_actionExtended_Marching_Cubes, SIGNAL(activated()), this, SLOT(reconstructUsingExtendedMarchingCubes())); QObject::connect(m_actionPlanar_Optimization, SIGNAL(activated()), this, SLOT(optimizePlanes())); QObject::connect(m_actionRemove_Artifacts, SIGNAL(activated()), this, SLOT(removeArtifacts())); QObject::connect(m_actionRemove_Outliers, SIGNAL(activated()), this, SLOT(removeOutliers())); QObject::connect(m_actionMLS_Projection, SIGNAL(activated()), this, SLOT(applyMLSProjection())); QObject::connect(m_actionICP_Using_Manual_Correspondance, SIGNAL(activated()), this, SLOT(manualICP())); QObject::connect(m_menuAbout, SIGNAL(triggered(QAction*)), this, SLOT(showAboutDialog(QAction*))); QObject::connect(m_correspondanceDialog->m_dialog, SIGNAL(accepted()), m_pickingInteractor, SLOT(correspondenceSearchOff())); QObject::connect(m_correspondanceDialog->m_dialog, SIGNAL(accepted()), this, SLOT(alignPointClouds())); QObject::connect(m_correspondanceDialog->m_dialog, SIGNAL(rejected()), m_pickingInteractor, SLOT(correspondenceSearchOff())); QObject::connect(m_correspondanceDialog, SIGNAL(addArrow(LVRVtkArrow*)), this, SLOT(addArrow(LVRVtkArrow*))); QObject::connect(m_correspondanceDialog, SIGNAL(removeArrow(LVRVtkArrow*)), this, SLOT(removeArrow(LVRVtkArrow*))); QObject::connect(m_correspondanceDialog, SIGNAL(disableCorrespondenceSearch()), m_pickingInteractor, SLOT(correspondenceSearchOff())); QObject::connect(m_correspondanceDialog, SIGNAL(enableCorrespondenceSearch()), m_pickingInteractor, SLOT(correspondenceSearchOn())); QObject::connect(m_actionShow_Points, SIGNAL(toggled(bool)), this, SLOT(togglePoints(bool))); QObject::connect(m_actionShow_Normals, SIGNAL(toggled(bool)), this, SLOT(toggleNormals(bool))); QObject::connect(m_actionShow_Mesh, SIGNAL(toggled(bool)), this, SLOT(toggleMeshes(bool))); QObject::connect(m_actionShow_Wireframe, SIGNAL(toggled(bool)), this, SLOT(toggleWireframe(bool))); QObject::connect(m_actionShowBackgroundSettings, SIGNAL(activated()), this, SLOT(showBackgroundDialog())); QObject::connect(m_horizontalSliderPointSize, SIGNAL(valueChanged(int)), this, SLOT(changePointSize(int))); QObject::connect(m_horizontalSliderTransparency, SIGNAL(valueChanged(int)), this, SLOT(changeTransparency(int))); QObject::connect(m_comboBoxShading, SIGNAL(currentIndexChanged(int)), this, SLOT(changeShading(int))); QObject::connect(m_buttonCameraPathTool, SIGNAL(pressed()), this, SLOT(openCameraPathTool())); QObject::connect(m_buttonCreateMesh, SIGNAL(pressed()), this, SLOT(reconstructUsingMarchingCubes())); QObject::connect(m_buttonExportData, SIGNAL(pressed()), this, SLOT(exportSelectedModel())); QObject::connect(m_buttonTransformModel, SIGNAL(pressed()), this, SLOT(showTransformationDialog())); QObject::connect(m_pickingInteractor, SIGNAL(firstPointPicked(double*)),m_correspondanceDialog, SLOT(firstPointPicked(double*))); QObject::connect(m_pickingInteractor, SIGNAL(secondPointPicked(double*)),m_correspondanceDialog, SLOT(secondPointPicked(double*))); QObject::connect(this, SIGNAL(correspondenceDialogOpened()), m_pickingInteractor, SLOT(correspondenceSearchOn())); }
int main (int argc, char ** argv) { if (argc < 2) { pcl::console::print_info ("Syntax is: %s input.pcd <options>\n", argv[0]); pcl::console::print_info (" where options are:\n"); pcl::console::print_info (" -t min_depth,max_depth ............... Threshold depth\n"); pcl::console::print_info (" -d leaf_size ......................... Downsample\n"); pcl::console::print_info (" -r radius,min_neighbors ............... Radius outlier removal\n"); pcl::console::print_info (" -s output.pcd ......................... Save output\n"); return (1); } // Load the input file PointCloudPtr cloud (new PointCloud); pcl::io::loadPCDFile (argv[1], *cloud); pcl::console::print_info ("Loaded %s (%zu points)\n", argv[1], cloud->size ()); // Threshold depth double min_depth, max_depth; bool threshold_depth = pcl::console::parse_2x_arguments (argc, argv, "-t", min_depth, max_depth) > 0; if (threshold_depth) { size_t n = cloud->size (); cloud = thresholdDepth (cloud, min_depth, max_depth); pcl::console::print_info ("Eliminated %zu points outside depth limits\n", n - cloud->size ()); } // Downsample and threshold depth double leaf_size; bool downsample_cloud = pcl::console::parse_argument (argc, argv, "-d", leaf_size) > 0; if (downsample_cloud) { size_t n = cloud->size (); cloud = downsample (cloud, leaf_size); pcl::console::print_info ("Downsampled from %zu to %zu points\n", n, cloud->size ()); } // Remove outliers double radius, min_neighbors; bool remove_outliers = pcl::console::parse_2x_arguments (argc, argv, "-r", radius, min_neighbors) > 0; if (remove_outliers) { size_t n = cloud->size (); cloud = removeOutliers (cloud, radius, (int)min_neighbors); pcl::console::print_info ("Removed %zu outliers\n", n - cloud->size ()); } // Save output std::string output_filename; bool save_cloud = pcl::console::parse_argument (argc, argv, "-s", output_filename) > 0; if (save_cloud) { pcl::io::savePCDFile (output_filename, *cloud); pcl::console::print_info ("Saved result as %s\n", output_filename.c_str ()); } // Or visualize the result else { pcl::console::print_info ("Starting visualizer... Close window to exit.\n"); pcl::visualization::PCLVisualizer vis; vis.addPointCloud (cloud); vis.resetCamera (); vis.spin (); } return (0); }
void LVRRemoveOutliersDialog::connectSignalsAndSlots() { QObject::connect(m_dialog->buttonBox, SIGNAL(accepted()), this, SLOT(removeOutliers())); }