Plane segmentation using organized clouds. Base program compiles. Not tested at all.
Must also add a GUI interface to at least initiate it. Create a class called
OrganizedGUI for organized clouds.
New routines: I am experimenting with plane segmentation using organized clouds based on
the PCL library. Check out multi_plane_segmentation.
I have an associated GUI in organized_gui.
Compiles and runs on mac, but only 2 segments.
Must display the segments in an image.
I get planar segmentation based on organized data, but only a 3 planes.
I also do not understand why the number of inlier vectors and regions are
different.

There is a memory bug in organized_gui, involving some combination of
multi_plane_segmentation and QT widgets/layouts.
2D and 3D plane extraction works.

Still have a segmentation fault for the multi plane segmentation. Do not know why. It
happens if I segment more than 2 times with different parameters.

I segmented the capture000x.pcd files and the 2 chair files  (left and right camera).
Must still work more on identifying left and right and back walls from both pictures
and internal edges.
I added arrows to the planes to denote tangential orientation. These arrows are oriented
along the eigenvectors of the covariance matrix. Next: how to estimate the width
and length of the plane (to compute an approximate size). Also, planes aligned along "z" have
a centroid not in the center of the plane.  This is due to non-uniform density along the plane.
Thus we'll compute an approximate density (to be done), which is a function of z (with a
logarithmic dependence, which can be found online, or in Nathan Crock's work.
New files: params_organized* (meant for the GUI related to working on the RGB image)

New routines in multi_plane_segmentation to handle weighted correlation that takes into account
the disparity on the Kinect (non-uniform sampling in the z direction). Point density goes as
1/z^2 . I weight the points in the cloud by the inverse density (in a sense performing a
discrete approximation of a continuous integration).
New file with a Plane class (data structure), which collections all available information
for a plane.
Created a planar data structure, which is now filled.
Must look into various conventions for canonical form.
I also store HSV average colors.

There is probably still a segmentation error. Do not know why.
Copied various plane-related methods to plane.* (Plane class), so that I may
reuse functionality common to segment and multi_plane_segmentation.
Some refactoring of multi_plane_segmentation.cpp .
I now process two input files files when running multi plane segmentation of organized
clouds.
Added tons of routines to plane.hpp and plane.cpp, which used to be in multi_plane_segmentation.hp . Part of refactoring process. I have still not removed the routines from multi_plane_segmentation. This will also help consolidate segment.

Code compiles on the mac.
Refactoring complete for now. Computation of weighted centroids, weighted correlation has
been moved to Plane, and the fillPlane routine as well (which is much simpler now).
Code compiles and runs correctly on mac. I do not know if segmentation fault has been fixed or not.
Added corners and edges of the plane. Added a scaling of 1.6 for the plane.
Corners themselves are not debugged.
Next: determine paralle planes, plane intersections, and most likely orientations.
Added additional diagnostics to the Plane data structure.
First we will check for horizontal vs non-horizontal planes (normal along y)
Then we will check for
More refactoring.
In multi_plane_segmentation.cpp, I not only find all pairs of planes that
have a common principal direction, but I capture them in a datastructure and
remove duplicates via averaging.
Latest version: 10:40 am.
Compiles  and executes on mac.
More refactoring, simplification of MultiPlaneSeg::processPlanes.
11:38 am, compiles and executes on Linux (previous version did not execute on mac, contrary to what I thought).
Cannot instantiate a  classes within a method on Linux if the class/struct is defined inside
the method. So I took a few definitions and put them in the include file. . Strange.
More advanced version with more routines in multi_plane_segmentation.
Need to figure out the final unit vector triplets to feed to organized_gui.
Many changes since last version. I have also coded up (in organized_gui),
drawing the registered clouds, now manually. The transformations are
not yet computed automatically.
I now extract various orthogonal directions (and compress them to reduce
the number), but the final results are not satifactory. I should take
into account plane properties when doing this.

I will next assigne weights to my edges, a simple count for starters.
Later, I'll take aspect ratio and planar area into account.
I have implemented weighted directions, and look at ortho triplets based on weight. If weight
is simply the count (same weight for each edge before compression), the reuslts do not see
to be correct.