Initial commit. Introduced frameworks.

Initialized code based off of CRCPython, Chapter 9, imad.py, auxil.py,
and provmeans.c located at https://github.com/mortcanty/CRCPython.

ImageStats replaces the auxil.cpm object which allows for reading of
line-by-line files. openGdalFiles has utilies which alter GDAL
files on disk.
Fixed bug in ImageStats::Zero

I misunderstood the Eigen API. Zero() returns a matrix of zeros,
while setZero() will actually mutate the matrix in-place.
Init. IO roughly complete, added make and headers

The initial IO *very* roughly mirrors the python version now.

Added a very basic Makefile which will probably need to be changed
around later.

Headers are now sourced properly from files instead of being
included in a giant global superheader.

Refactored some of the IO functions for easier use.

Renamed "helperfunctions.h" -> "imad.h"
Renamed "openGdalFiles.cpp" -> "GdalFileIO.cpp"
Modified gitignore and fleshed out main algorithm

Gitignore has been updated. imad.cpp has been further written and now
reads in the images to the tile buffer (in theory).
I'm done for the day. HAAAAAAAAAAAANNNNNNNNDSSSSS

Changed a variable name in ImageStats class to avoid confusion as to
which "nBands" is the real one.

Correctly initialized the s11/s22/s12/s21 matrices, as well as the
c1,c2,b1,b2 matrices.
Beginnings of eigenvalue solutions using Eigen

Moved imad_core_math to imad_utils and modiefied Makefile.

Added minor error handling to ImageStats and GdalFileIO.

Further fleshed out imad.cpp, started eigenvalue decompositions,
and fixed a nasty bug where nrow and ncol were swapped (oops).
Added primitive eigensorting. Moved ImageStats.

Moved ImageStats to its own cpp file and changed the makefiles/headers
appropriately.

Continued development of iMAD. Added a rudimentary function to sort
eigenvalues and eigenvectors, though it is not yet completely working.
Added the imad_util namespace for the functions in imad_utils.
Moved max to built-in, almost done w/ math sect.

Moved Max function to built-in of eigen, almost completed main loop
of iMad algorithm. Still need to decide how to finish the section
for updating via weighted iterations.
Fixed Issue with positions in ImageStats::update

I had rows and columns mixed up when I was looking at the Python code,
and so update was completely back-asswards. The problem has now been
fixed, but will require some careful dancing moving forward.

Python stores an image row in a column, with different bands in
different columns. The C++ code stores images in rows, with different
bands in distinct rows (that is, in C++, you read right to find more
pixels from the same band, and read down to find the pixel value from
a different band in the same location, whereas in Python, you read
down to find more pixels in the same band, and right for different
bands).

The update() method now takes rows in rows (changed from Python style).
When updating, we need to transpose the matrices from Python, so that
the variable "mads" is the same as in the Python code, but tile is not.
Whoopsies commit. Forgot to transpose A and B.

I forgot to add the changes mentioned in the last commit message.
"mads" should now be corrects.
Finished the stats problem with boost

Finished writing in the chi2 cdf by using the boost libraries.

Changed several elements from MatrixXf to VectorXf / RowVectorXf
where appropriate.

Now need to figure out how to write the outfile.
Transformation systems primed!

Finished writing a prototype coordinate transformation "CoordTransform"
Not tested yet. Please do not use until ready
Started output code, added projection-checking

Added projection frame checking to dimensionsmatch().
Started on output functions for imad; this might all be moved to
a helper function later on.
Broken broken broken, finished and fixing.

Finished the first pass of programming. Now fixing all the shit I
broke the first time around.
Now works up through 100% more iterations!

Now works up through 1 iteration. Fixed bug that was causing
correlations to be calculated incorrectly (correlation was
= instead of +=).

Need to fix issues with strange values being fed to chi2
Compiles and writes output. Unknow if correct

The program now compiles and write to the file specified. I don't
know if that output is correct.

In other news, I've moved the projection (GeoTransform) class and the
new ImageInfo class to their own file with their own namespace
(geo_utils). Fixed several minor bugs along the way, though I'd need
the git diff to tell you exactly what I did.
It's mostly werking nao!

Matched output with Python output up to second iteration's covariance
and means, which basically tests everything but output.

Possible bug discovered in Python version. Will have to test later.
Release 0.1

Matches Python output (minus the last band for chisqr) and works
at a decent speed.
Now converges to a correct answer independently

The program now converges to the correct answer as gives by the
original original Python program (no nodata correction in the
provisional means library), though it converges via a different
path.

Moved a lot of code to its own utility function, including file
writing, weights calculation, and other stuff.
Moved image matching to geo_utils

GdalFileIO check is now a wrapper to geo_utils::ImageInfo::compatible()