diff --git a/src/openalpr/segmentation/segment.cpp b/src/openalpr/segmentation/segment.cpp
new file mode 100644
index 0000000..1650cc5
--- /dev/null
+++ b/src/openalpr/segmentation/segment.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2013 New Designs Unlimited, LLC
+ * Opensource Automated License Plate Recognition [http://www.openalpr.com]
+ *
+ * This file is part of OpenAlpr.
+ *
+ * OpenAlpr is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License
+ * version 3 as published by the Free Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+*/
+
+#include "segment.h"
+
+Segment::Segment(cv::Rect newSegment)
+{
+ this->segment = newSegment;
+}
+
+Segment::~Segment()
+{
+
+}
+
+bool Segment::matches(cv::Rect newSegment)
+{
+ // Compare the two segments with a given leniency
+ const float WIDTH_LENIENCY_MIN = 0.25;
+ const float WIDTH_LENIENCY_MAX = 0.20;
+
+ float left_min = segment.x - (((float)segment.width) * WIDTH_LENIENCY_MIN);
+ float left_max = segment.x + (((float)segment.width) * WIDTH_LENIENCY_MAX);
+ float right_min = (segment.x + segment.width) - (((float)segment.width) * WIDTH_LENIENCY_MIN);
+ float right_max = (segment.x + segment.width) + (((float)segment.width) * WIDTH_LENIENCY_MAX);
+
+ int newSegRight = newSegment.x + newSegment.width;
+ if (newSegment.x >= left_min && newSegment.x <= left_max &&
+ newSegRight >= right_min && newSegRight <= right_max)
+ return true;
+
+ return false;
+}
+
diff --git a/src/openalpr/segmentation/segment.h b/src/openalpr/segmentation/segment.h
new file mode 100644
index 0000000..7743ab6
--- /dev/null
+++ b/src/openalpr/segmentation/segment.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2013 New Designs Unlimited, LLC
+ * Opensource Automated License Plate Recognition [http://www.openalpr.com]
+ *
+ * This file is part of OpenAlpr.
+ *
+ * OpenAlpr is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License
+ * version 3 as published by the Free Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+*/
+
+#ifndef OPENALPR_SEGMENT_H
+#define OPENALPR_SEGMENT_H
+
+#include
+#include
+
+#include "opencv2/imgproc/imgproc.hpp"
+
+class Segment
+{
+
+ public:
+ Segment(cv::Rect newSegment);
+ virtual ~Segment();
+
+ cv::Rect segment;
+
+ bool matches(cv::Rect newSegment);
+
+};
+
+#endif // OPENALPR_SEGMENTATIONGROUP_H
diff --git a/src/openalpr/segmentation/segmentationgroup.cpp b/src/openalpr/segmentation/segmentationgroup.cpp
new file mode 100644
index 0000000..a146364
--- /dev/null
+++ b/src/openalpr/segmentation/segmentationgroup.cpp
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2013 New Designs Unlimited, LLC
+ * Opensource Automated License Plate Recognition [http://www.openalpr.com]
+ *
+ * This file is part of OpenAlpr.
+ *
+ * OpenAlpr is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License
+ * version 3 as published by the Free Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+*/
+
+#include "segmentationgroup.h"
+
+SegmentationGroup::SegmentationGroup()
+{
+
+}
+
+SegmentationGroup::~SegmentationGroup()
+{
+
+}
+
+void SegmentationGroup::add(int segmentID)
+{
+ this->segmentIDs.push_back(segmentID);
+}
+
+bool SegmentationGroup::equals(SegmentationGroup otherGroup)
+{
+ if (segmentIDs.size() != otherGroup.segmentIDs.size())
+ return false;
+
+ for (int i = 0; i < segmentIDs.size(); i++)
+ {
+ if (otherGroup.segmentIDs[i] != segmentIDs[i])
+ return false;
+ }
+
+ return true;
+}
\ No newline at end of file
diff --git a/src/openalpr/segmentation/segmentationgroup.h b/src/openalpr/segmentation/segmentationgroup.h
new file mode 100644
index 0000000..d9cc633
--- /dev/null
+++ b/src/openalpr/segmentation/segmentationgroup.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2013 New Designs Unlimited, LLC
+ * Opensource Automated License Plate Recognition [http://www.openalpr.com]
+ *
+ * This file is part of OpenAlpr.
+ *
+ * OpenAlpr is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License
+ * version 3 as published by the Free Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+*/
+
+#ifndef OPENALPR_SEGMENTATIONGROUP_H
+#define OPENALPR_SEGMENTATIONGROUP_H
+
+#include
+#include
+
+#include "opencv2/imgproc/imgproc.hpp"
+
+#include "segment.h"
+
+
+class SegmentationGroup
+{
+
+ public:
+ SegmentationGroup();
+ virtual ~SegmentationGroup();
+
+ void add(int segmentID);
+
+ std::vector segmentIDs;
+
+ bool equals(SegmentationGroup otherGroup);
+
+
+ private:
+ float strength; // Debuggin purposes -- how many threshold segmentations match this one perfectly
+
+};
+
+#endif // OPENALPR_SEGMENTATIONGROUP_H