Squashed 'third_party/allwpilib_2016/' content from commit 7f61816

Change-Id: If9d9245880859cdf580f5d7f77045135d0521ce7
git-subtree-dir: third_party/allwpilib_2016
git-subtree-split: 7f618166ed253a24629934fcf89c3decb0528a3b
diff --git a/wpilibc/Athena/include/Vision/BinaryImage.h b/wpilibc/Athena/include/Vision/BinaryImage.h
new file mode 100644
index 0000000..8b7b25c
--- /dev/null
+++ b/wpilibc/Athena/include/Vision/BinaryImage.h
@@ -0,0 +1,42 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/*----------------------------------------------------------------------------*/
+
+#pragma once
+
+#include "MonoImage.h"
+/**
+ * Included for ParticleAnalysisReport definition
+ * TODO: Eliminate this dependency!
+ */
+#include "Vision/VisionAPI.h"
+
+#include <vector>
+#include <algorithm>
+
+class BinaryImage : public MonoImage {
+ public:
+  virtual ~BinaryImage() = default;
+  int GetNumberParticles();
+  ParticleAnalysisReport GetParticleAnalysisReport(int particleNumber);
+  void GetParticleAnalysisReport(int particleNumber,
+                                 ParticleAnalysisReport *par);
+  std::vector<ParticleAnalysisReport> *GetOrderedParticleAnalysisReports();
+  BinaryImage *RemoveSmallObjects(bool connectivity8, int erosions);
+  BinaryImage *RemoveLargeObjects(bool connectivity8, int erosions);
+  BinaryImage *ConvexHull(bool connectivity8);
+  BinaryImage *ParticleFilter(ParticleFilterCriteria2 *criteria,
+                              int criteriaCount);
+  virtual void Write(const char *fileName);
+
+ private:
+  bool ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure,
+                           int *result);
+  bool ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure,
+                           double *result);
+  static double NormalizeFromRange(double position, int range);
+  static bool CompareParticleSizes(ParticleAnalysisReport particle1,
+                                   ParticleAnalysisReport particle2);
+};