Thanks to the hard work of all of our awesome contributors, we've got a big list of new features. From 1.3 we are constructing the Changelist for each library separately, as they can in theory be mixed and matched with older versions (though we officially do not support this yet). The most notable overall changes are:

removed wxWidgets as a dependency from PCL and implemented the Image visualization classes using VTK

removed cminpack as a dependency from PCL and implemented the LM optimization functionality using Eigen

added a new library called PCL Search (libpcl_search) that has a more uniform API for nearest neighbor searches and stripped the unneeded functionality from libpcl_kdtree and libpcl_octree. Search now wraps KdTree and Octree for NN calls. This is a MINOR API BREAKING CHANGE. To change your code switch from:

pcl::KdTree -> pcl::Search (if the purpose is to use one of its children for search)
pcl::KdTreeFLANN -> pcl::search::KdTree
pcl::OrganizedDataIndex -> pcl::search::OrganizedNeighbor

improved MacOS support

improved documentation and unit tests

added lots of application examples and demos. Note: not all have a complete functionality... we will try to clean this up in 1.4 and future releases.

libpcl_search

BIG changes introduced - migration from KdTree to pcl::Search: moved OrganizedDataIndex and OrganizedNeighbor classes to libpcl_search

added new templated methods for nearestKSearch and radiusSearch for situations when PointT is different than the one the KdTree object was created with (e.g., KdTree<PointT1> vs nearestKSearch (PointT2 &p...)

added two new methods for getApproximateIndices where given a reference cloud of point type T1 we're trying to find the corresponding indices in a different cloud of point type T2

refactorized a lot of code in search and octree to make it look more consistent with the rest of the API

fixed a bug in octree_search which was semantically doing something bad: for each radiusSearch/nearestKSearch/approxNearestSearch call with a PointCloudConstPtr, the octree was getting recreated. Changed the API to be consistent with the rest of PCL (including pcl_search and pcl_kdtree) where we pass in a PointCloud instead of a PointCloudConstPtr which simply calls searchMethod (cloud.points[i], ...)

added new writeBinaryCompressed functionality for general purpose sensor_msgs::PointCloud2 data (which is still our generic data container in PCL 1.x)

added additional unit tests for binary_compressed

fixed a grave bug in PCDReader (most likely introduced a few releases ago due to code refactorization) where the data was incorrectly copied if a PCD ASCII file had a field with multiple count elements (field.count) as first. Binary files are not affected by this bug. Added an unit test to catch this in the future.

libpcl_keypoints

work on making SIFTKeypoint more flexible by saving scale only when the output point type contains "scale" (the catch is that all point types must be correctly declared via our macros - see the modifications in test_keypoints.cpp). This allows us to use a SIFTKeypoint<PointXYZRGB, PointXYZRGB> and thus removes the constraint on using copyPointCloud afterwards.

fixed an issue in SIFTKeypoint where width/height were not correctly set

refactorized a lot of code in search and octree to make it look more consistent with the rest of the API

fixed a bug in octree_search which was semantically doing something bad: for each radiusSearch/nearestKSearch/approxNearestSearch call with a PointCloudConstPtr, the octree was getting recreated. Changed the API to be consistent with the rest of PCL (including pcl_search and pcl_kdtree) where we pass in a PointCloud instead of a PointCloudConstPtr which simply calls searchMethod (cloud.points[i], ...)

added unit tests for the (new) registration API and all registration components

Further cleaning up registration code and writing documentation.
* fixed bug in getRejectedQueryIndices, wrong output when order of correspondences have been changed
* moved getRejectedQueryIndices to pcl/common/correspondence.h
* added more doxygen documentation to the registration components
* marked all "getRemainingCorrespondences"-functions as DEPRECATED, we sould replace them with purely stateless version outside the class body

Update: remove ciminpack dependency and rely on eigen for LM

Fixed a bug in ICP-NL by modifying WarpPointRigid to preserve the value of the 4th coordinate when warping; Re-enabled missing unit tests for ICP and ICP-NL

Added point-to-plane ICP

added nr_iterations_ and max_iterations_ to the initializer list (were mising)

Fixed bugs in WarpPointRigid3D and TransformationEstimationLM

fixed a problem where if no correspondences would be found via nearestKSearch, the RANSAC-based rejection scheme would fail (thanks to James for reporting this)

changed the default LM implementation to use L2 instead of L2SQR

Added a new TransformationEstimationPointToPlaneLLS class that uses a Linear Least-Squares approximation to minimize the point-to-plane distance between two point clouds

Added the ability to specify the error function to be minimized in SAC-IA (see Feature #362)

libpcl_sample_consensus

reimplemented the Levenberg Marquardt code that was using cminpack with Eigen, thus dropping the cminpack dependency for PCL

libpcl_surface

fixed bug in surface/mls: when no search interface and no tree is given, mls creates its' own tree, but didn'tupdate the search method to use

fixing the API: a few left inconsistencies between vector<Correspondence> and Correspondences. The latter is to be preferred as it contains the Eigen aligned allocator.

added patch from Lucas Walter to fix pcl::visualization::PCLVisualizer::removeAllPointClouds and removeAllShapes

fixed a few doxygen errors

cleaned up the PCLHistogramVisualizer API by moving to a vtk interactor instead of ours, and removed unnecessary calls such as saveScreenShot (never used with the histogram visualizer, and most likely buggy), wasStopped and resetStoppedFlag (never used).

removed PCLVisualizerInteractor and switched back to a better default vktWindowRenderInteractor for VTK >= 5.6. Adjusted and fixed the internal API. No public API changes were made (except the removal of the PCLVisualizerInteractor class which was never meant to be used externally anyway).

cleaned up and implemented the ImageViewer class properly and demonstrated it in a single thread via openni_viewer. The other tool (openni_viewer_simple) will not work due to CloudViewer starting its own thread and thus clashing on the same OpenGL context.