blob: b71f86a7124a82a44eca5c44aaeabdaa4f0a9498 [file] [log] [blame]
jerrymf1579332013-02-07 01:56:28 +00001/*----------------------------------------------------------------------------*/
2/* Copyright (c) FIRST 2008. All Rights Reserved. */
3/* Open Source Software - may be modified and shared by FRC teams. The code */
4/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */
5/*----------------------------------------------------------------------------*/
6
7#ifndef __BINARY_IMAGE_H__
8#define __BINARY_IMAGE_H__
9
10#include "MonoImage.h"
11/**
12 * Included for ParticleAnalysisReport definition
13 * TODO: Eliminate this dependency!
14 */
15#include "Vision2009/VisionAPI.h"
16
17#include <vector>
18#include <algorithm>
19using namespace std;
20
21class BinaryImage : public MonoImage
22{
23public:
24 BinaryImage();
25 virtual ~BinaryImage();
26 int GetNumberParticles();
27 ParticleAnalysisReport GetParticleAnalysisReport(int particleNumber);
28 void GetParticleAnalysisReport(int particleNumber, ParticleAnalysisReport *par);
29 vector<ParticleAnalysisReport>* GetOrderedParticleAnalysisReports();
30 BinaryImage *RemoveSmallObjects(bool connectivity8, int erosions);
31 BinaryImage *RemoveLargeObjects(bool connectivity8, int erosions);
32 BinaryImage *ConvexHull(bool connectivity8);
33 BinaryImage *ParticleFilter(ParticleFilterCriteria2 *criteria, int criteriaCount);
34 virtual void Write(const char *fileName);
35private:
36 bool ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure, int *result);
37 bool ParticleMeasurement(int particleNumber, MeasurementType whatToMeasure, double *result);
38 static double NormalizeFromRange(double position, int range);
39 static bool CompareParticleSizes(ParticleAnalysisReport particle1, ParticleAnalysisReport particle2);
40};
41
42#endif