About time
The most notable overall changes are:
PCL Tools:
- Added a tool for interfacing the marching cubes algorithms
- Added a PLY To PCD conversion tool
- Added a command line tool for transforming datasets based on their viewpoint
- Implemented feature #605: New octree visualizer example (Contributed by Raphael Favier. Thanks!)
- Updated "openni_save_image" to save both RGB and depth images as TIFF
- Added two command line tools for converting PCD data into PLY and VTK formats
- Fix for #504: Make ShapeContext and SpinImage uniform (thanks David!)
libpcl_common:
- Fixed bug #658: Compiler error: undefined reference for getEulerAngles in pcl/common (thanks Gioia!)
- Moved towards a unified "eigen.h" header that only includes the Eigen headers that we need.
- Added boost 1.48 and 1.49
- Added a default "PointRepresentation" type for "ShapeContext" (thanks Elizabeth!)
- Added a new "PlanarPolygon" class for representing 2D planar polygon regions
- Added "SetIfFieldExists" functor helper to copy data from a variable into a point field, if it exists
- Added a helper functor ("CopyIfFieldExists") for copying out specific data out of a PointT field. See "test_common.cpp" for usage examples
- Added point value initialization by default in constructors for "PointXYZI", "Normal", "PointXYZHSV", "PointXYZRGBL", and "PointXYZRGB"
- Updating transforms.hpp to ensure that point fields are copied when applying affine transform to a specific set of indices.
- Added error messages on failure of aux functions for PointCloud2, "pcl::concatenatePointCloud" and "pcl::concatenateFields"
- Fixed win32 compilation error on test_plane_intersection
- Implemented plane intersection feature (feature #644) with a related unit test
- Added kissfft library
- Bugfix of eigen22 version for smallest eigenvalue/vector
- Add specialization for pcl::RGB point type
- Intensity field accessor moved from keypoints/sift to common to be shared by others
- Fixed some valid usages of point traits (e.g. static_cast::type>(...) ) on GCC 4.4.3 by explicitly instantiating some assert template long before it should actually be needed.
- Added ESF Histogram 640 to point types
libpcl_filter:
- Added command line option "-keep" to preserve the organized data structure after a "Passthrough" filter
- Implemented feature #663: flexible comparison for conditional_removal filter (Thanks Julian!)
- Fix for bug #672: ijk grid coordinates in VoxelGrid computed differently in different functions (thanks Nicholas!)
- Fix for #572: Example "Euclidean Cluster Extraction" crashes / bug in VoxelGrid filter
- Improved performance of 3x getFieldIndex and removed dependency on pcl_io
- Fixed and implemented feature #518: VoxelGrid<> performance improvement (roughly 50+ times) (thanks Radoslaw!)
- Fixed the visual studio compilation error described in feature #614 (thanks Remus!)
- Fixed bug #674 (Elements in leaf_layout_ in VoxelGrid are not reset between calls to VoxelGrid::filter), Thanks Nicholas for the patch!
- Work on issue 614: updated the PassThrough filter to derive from FilterIndices instead of Filter
- Fix: use a makInfinite function to annihilate points in zero_padding cases
- Add new class to handle convolution in 3D space for radial basis kernel
- Modifying VoxelGridCovariance to allow for control over minimum number of points and eigen value inflation for singularity prevention.
libpcl_visualization:
- Overloaded "addRectangle" in "ImageViewer" with several useful methods that take as input 3D min-max points and organized datasets, as well as image masks to create 2D rectangles on screen
- Renamed "addBox" to "addFilledRectangle" in "ImageViewer"
- Added "addPlanarPolygon" methods for "ImageViewer" to display planar polygonal contours in the image
- Added new "addMask" methods to "ImageViewer" for displaying 2D image masks from a given "PointCloud"
- "PCLVisualizer" now has a new "addCube" method for passing {x, y, z}_{min, max} directly to the screen (thanks Jeremie!)
- Patch for two cases of mismatched new/free cases for PCL<->VTK data exchange (thanks Peter!)
- Fixed a problem with "removeLayer" which was causing shapes to flicker on screen on sequences like: "removeLayer; addShape; spinOnce"
- Added "addLine" to "ImageViewer" for displaying 2D lines
- Added "PCLVisualizer::close" to close the interactor window and "PCLVisualizer::set{Size, Position}" to set the window size and position on screen added image viewer to the docs
- Added better support for 2D image visualization (via "pcl::visualization::ImageViewer"): add/remove layers with different transparency, add 2D shapes (rectangles, circles, points, etc)
- Added "wasStopped" to "ImageViewer" to check if the window has been closed
- Fixed an issue in pcd_viewer where the PointPicking callback wasn't functioning properly
- Added "setPosition" to "pcl::visualization::ImageViewer" for allowing the image viewer to be moved somewhere else on screen
- Added two additional "addPointCloud" helpers for directly displaying "sensor_msgs::PointCloud2" data
- Added "addPointCloud" method for "sensor_msgs::PointCloud2" data (useful to bypass the conversion to XYZ for "pcd_viewer")
- Added the capability to remove a cloud when "removeShape" is called, to preserve API backward compatibility (a "PolygonMesh" is not treated as a "CloudActor" inside "PCLVisualizer")
- Fixed a bug where the scalars were not updated properly on "updatePointCloud" thus causing VTK warnings on the console
- Fixing issue #105 (PCLVisualizer::spinOnce don't work on Win32 system). Thanks Thibault and Alessio.
- Added "PointXYZRGBA" callbacks for "OpenNIGrabber" and "PCLVisualizer".
- Fixed two bugs where a segfault would occur in "addPolygonMesh" when the input cloud would be empty, as well as #563 : PCLVisualizer::addPolygonMesh crash (thanks Mourad!)
- Fixed a bug where changing the point color using "setPointCloudRenderingProperties" would not update the actor's colors on screen
- Fix for #532: "PCLVizualizer::addCoordinateSystem()" switch from "Eigen::Matrix4f" to "Eigen::Affine3f" (thanks Aurel!)
- Fix for #524: ctrl problem with pcd_viewer (thanks Mourad!)
- Adding opt in flag -use_vbos to pcl_visuzlier. It's still quite buggy, but shouldn't affect the visualizer unless this flag is passed.
- Added vtkVertexBufferObject/Mapper and moved pcl_image_canvas_source2d
- Added case handling where an actor might not have a valid viewpoint_transformation matrix resulting in a seg fault if pressing ALT+R
- Fixed bug in displaying addCoordinateSystem
- Added method to visualize intensity gradients
- Added zoom functionality for ALT + Scroll-Wheel
- Merged openni_viewer_simple with openni_viewer with all the available options except XYZI
libpcl_octree:
- Fixed bug #693 - bounding box adaption affected change detection results
- Applied patch by Robert Huitl, Issue #651, define maxVoxelCount in octree raycasting
- Fixed OSX compiler warnings
- Fixed bug #683 - octree depth changes during stream compression
- Added new octree key class
- Added bounding box checks in method isVoxelOccupiedAtPoint (octree pointcloud class)
- Removed maxKeys limit in octree key generation method
- Added range checks for integer keys in octree classes, extended octree key class
- Fixed bug #620 (octree search fails if point cloud with indices is given) in octree pointcloud class
libpcl_io:
- Added "DepthImage" signals/callbacks for "PCDGrabber"
- Support for loading TAR-ed LMT files
- Added support for TAR-PCD files for "PCDGrabber". Simply use "tar cvf file.tar *.pcd" and use "PCDGrabber" on it afterwards
- Fixed a bug in the "PointCloud" feature estimation and I/O regarding the fields "count" property
- Added a "saveVTKFile" method helper for saving "sensor_msgs::PointCloud2" data
- Added support for reading PCD ascii and binary files (binary_compressed not implemented yet!) for pcl::PointCloudEigen::MatrixXf datatypes.
- Implemented and tested a fix for feature request #558: Implement IO for PointCloud
- Adding missing openni_device files from install
- Fixed a bug in ply reader
- Fixed bug #683 - dropping empty point clouds during stream compression
- Add functions to convert between PCL and VTK data structures.
- Handle red_diffuse, blue_diffuse and green_diffuse vertex properties
- Fix bug where normals were written before RGB
- Bugfix for #627 - Wrong include path for ply header
libpcl_features:
- Fixed bug #676 in PCL Feature Search (thanks Adam!)
- Fixes compilation problem on Windows due to size_t variable in omp loop.
- Implemented feature request #661: border management in integral image normal estimation
- Fixed PFHRGBEstimation bug, thanks Luis
- Bug fix in SHOT feature, thanks wack
- Fixed a bug which caused some normals to point in the wrong direction
- Added Camera Roll histogram
- Fix bug in index used for normal selection
- Added esf feature
- Added setViewPoint functionality and useSensorOriginAsViewPoint method to reset the viewpoint
- Fixed bug #576 - CVFH respect setIndices now
- Fixed issue #550: Uninformative error in VFHEstimation (thanks David!)
- Fix #527: Bug in IntegralImageNormalEstimation (thanks Christoph!)
- Fixed #544: overflow in implicit constant conversion warnings (thanks David!)
- Modified SHOT omp so that the default computation of the reference frames
- SHOT: Fixed invalid access when keypoints have increased from the previous call.
- Setting sensor origin and orientation correctly for normal point cloud
- Fixed a bug in estimating the orientation of the normal (view point wasn't initialized in the constructor)
- Bug fix: if the cloud is not dense search for neighbours could raise an excpetion
- Bug fix: SHOT accepts only radius search
libpcl_segmentation:
- Fixed a few issues in the new segmentation classes where some comparators didn't have the appropriate "Ptr" and "ConstPtr" well defined
- Fixed a bug where points passed onto the search method were not checked for NaN/Inf in "pcl::SegmentDifferences"
- Added a missing "setDistanceFromOrigin" to "SACSegmentationFromNormals" for "SACMODEL_NORMAL_PARALLEL_PLANE" (thanks A. Barral)
- Fix for #134 (Prism Extraction on Table top (flipping normal fails))
- Fixed a segmentation fault in "SACSegmentationFromNormals" caused by calling "segment" without passing the input XYZ or normal data
- Fixed a bug in organized connected component segmentation. Previously would crash if the first pixel had a valid depth (doesn't occur on kinect data).
- Bugfix of issue # 675: Euclidean cluster extraction access violation. Thanks to Icy for helping find the solution
- Fixed bug #673 in EuclideanClusterExtraction
- Added new code for min cut segmentation
- Fixed bug #681: member variable was not set in constructor (thanks Bhaskara!)
- Added a threshold to MultiPlaneSegmentation for curvature, allowing us to discard smooth (but non-planar) regions.
- Added optional projection for multi_plane_segmentation.
- Added some new comparators for use with OrganizedConnectedComponents including RGB and edge aware
- Added additional fucnction call for segmentAndRefine.
- Added a comparator for doing euclidean clustering on organized point clouds.
- Added fast SeededHueSegmentation implementations
- Fixed segfault in multi plane refinement and functorized the comparison.
- Improved MultiPlaneSegmentation to allow refinement of regions, and support different comparators.
- New classes AutomatedSegmentation, AutomatedTreeSegmentation
- Added OrganizedConnectedComponentSegmentation, which is a general class for use with organized point clouds and can take user specified comparators.
- Added OrganizedMultiPlaneSegmentation which returns all planes in an organized cloud, along with the PlaneCoefficientComparator needed to do this.
libpcl_surface:
- Fixed a grave bug where "setIndices" was not used in "ConvexHull"
- Added fix for #562: pcl::ConcaveHull crashes on an empty cloud (thanks Mourad!)
- Added "PCLSurfaceBase" base class for "MeshConstruction" and "SurfaceReconstruction", to unify the API around "setSearchMethod(&Search)" and "reconstruct(&PolygonMesh)"
- Added GPU accelerated convex hull. 7x for Ramesses dataset (700k points)
- Added a setDimension function to concave hull, so users can specify desired dimensionality of the resulting hull. If no dimension is specified, one will be automatically determined.
- Fixed bug #692 - MovingLeastSquares indices issues
- Added curve fitting and trimming of surfaces to examples/surface/example_nurbs_fitting_surface.cpp
- Added iterative fitting routines for curve fitting surface::on_nurbs::Triangulation - added convertion functions for nurbs curve to line-polygon - added convertion functions for nurbs surface and curve to PolyMesh
- Added flag to enable/disable usage of UmfPack for fast solving of sparse systems of equations - added triangulation functions to convert ON_NurbsSurface to pcl::PolygonMesh
- Added bug fix in ConcaveHull, thanks to summer.icecream
- Added marching cubes using RBF and Hoppe SDF
- Pushed new functions that perform texture-mapping on meshes.
- Fix: issue #646 (vtk_smoothing not copied)
- Added new functionalities to TextureMapping: Find occlusions based on raytracing in octrees, UV mapping based on Texture resolution and camera focal lenght.
- Relaxing dimensionality check threshold on concave_hull, so that 3D hulls should no longer be calculated on 2D input.
- Added poisson filter
libpcl_keypoints:
- Added combined Harris keypoint detector to detect corners in image, in 3D and combined ones
- Fix bug #691 (Compiler error: undefined reference for setMinimalDistance in pcl/keypoints/harris_keypoint2D)
- Fixed the #637 pitfall in harris3D and harris6D
- Added implementation of 2D corner detectors
libpcl_geometry:
- Added a new PCL library for computational geometry
- Added bugfix to remove self intersecting polygons
- Fixed some refinement corner cases for polygon approximation
- Added line iterator class for iterating over e.g. an image/organized cloud in the pixel space.
libpcl_search:
- Added NaN checks in "pcl::search::FlannSearch"
- Skip infinite neighbor candidates in pcl::search::OrganizedNeighbor::radiusSearch
- Added point projection method for organized search
libpcl_tracking:
- Fixed issue #514: SpinImages segfault when using setKSearch (thanks David!)
- gcc-4.7 compatibility issues in pcl::tracking fixed. Thanks to Rich Mattes
libpcl_sample_consensus:
- Implemented feature #589: Add sac_model_cone and sac_model_normal_sphere (contributed by Stefan Schrandt. Thanks!)
- Fix for #616: pcl::ProgressiveSampleConsensus::getRandomSamples unimplemented (thanks Mourad!)
- Fix for #498: Bug in setOptimizeCoefficients for pcl::SACMODEL_SPHERE.
- Fixed bug #648: code was checking for plane perpendicular to given axis instead of parallel
- Applied patch for feature request #649: Locally constrained model generation for Sample Consensus
libpcl_registration:
- Fixed issue #619: Cannot call pcl::registration::TransformationValidationEuclidean::validateTransformation (thanks Raphael!)
- Added code for #592: correspondence estimation based on normal shooting (coded by Aravindhan. Thanks!)
- Fixed #533: WarpPointRigid missing EIGEN_MAKE_ALIGNED_OPERATOR_NEW (thanks Radoslaw!)
- Correct overlapping grid distribution in 2D NDT implementation