Renamed debugImg to histoImg. Sending the Histogram class to one of the character segmentation classees

This commit is contained in:
Matt Hill
2014-01-29 14:34:31 -06:00
parent 682552859c
commit 7808cce33a
4 changed files with 14 additions and 10 deletions

View File

@@ -142,15 +142,15 @@ CharacterSegmenter::CharacterSegmenter(Mat img, bool invertedColors, Config* con
if (this->config->debugCharSegmenter) if (this->config->debugCharSegmenter)
{ {
Mat histoCopy(vertHistogram.debugImg.size(), vertHistogram.debugImg.type()); Mat histoCopy(vertHistogram.histoImg.size(), vertHistogram.histoImg.type());
//vertHistogram.copyTo(histoCopy); //vertHistogram.copyTo(histoCopy);
cvtColor(vertHistogram.debugImg, histoCopy, CV_GRAY2RGB); cvtColor(vertHistogram.histoImg, histoCopy, CV_GRAY2RGB);
allHistograms.push_back(histoCopy); allHistograms.push_back(histoCopy);
} }
// //
float score = 0; float score = 0;
vector<Rect> charBoxes = getHistogramBoxes(vertHistogram.debugImg, avgCharWidth, avgCharHeight, &score); vector<Rect> charBoxes = getHistogramBoxes(vertHistogram, avgCharWidth, avgCharHeight, &score);
if (this->config->debugCharSegmenter) if (this->config->debugCharSegmenter)
@@ -271,7 +271,7 @@ CharacterSegmenter::~CharacterSegmenter()
// Given a histogram and the horizontal line boundaries, respond with an array of boxes where the characters are // Given a histogram and the horizontal line boundaries, respond with an array of boxes where the characters are
// Scores the histogram quality as well based on num chars, char volume, and even separation // Scores the histogram quality as well based on num chars, char volume, and even separation
vector<Rect> CharacterSegmenter::getHistogramBoxes(Mat histogram, float avgCharWidth, float avgCharHeight, float* score) vector<Rect> CharacterSegmenter::getHistogramBoxes(VerticalHistogram histogram, float avgCharWidth, float avgCharHeight, float* score)
{ {
float MIN_HISTOGRAM_HEIGHT = avgCharHeight * config->segmentationMinCharHeightPercent; float MIN_HISTOGRAM_HEIGHT = avgCharHeight * config->segmentationMinCharHeightPercent;
@@ -282,7 +282,7 @@ vector<Rect> CharacterSegmenter::getHistogramBoxes(Mat histogram, float avgCharW
int pxLeniency = 2; int pxLeniency = 2;
vector<Rect> charBoxes; vector<Rect> charBoxes;
vector<Rect> allBoxes = get1DHits(histogram, pxLeniency); vector<Rect> allBoxes = get1DHits(histogram.histoImg, pxLeniency);
for (int i = 0; i < allBoxes.size(); i++) for (int i = 0; i < allBoxes.size(); i++)
{ {
@@ -292,6 +292,10 @@ vector<Rect> CharacterSegmenter::getHistogramBoxes(Mat histogram, float avgCharW
{ {
charBoxes.push_back(allBoxes[i]); charBoxes.push_back(allBoxes[i]);
} }
else if (allBoxes[i].width > MAX_SEGMENT_WIDTH && allBoxes[i].height > MIN_HISTOGRAM_HEIGHT)
{
}
} }

View File

@@ -82,7 +82,7 @@ class CharacterSegmenter
void removeSmallContours(vector<Mat> thresholds, vector<vector<vector<Point > > > allContours, float avgCharWidth, float avgCharHeight); void removeSmallContours(vector<Mat> thresholds, vector<vector<vector<Point > > > allContours, float avgCharWidth, float avgCharHeight);
Mat getVerticalHistogram(Mat img, Mat mask); Mat getVerticalHistogram(Mat img, Mat mask);
vector<Rect> getHistogramBoxes(Mat histogram, float avgCharWidth, float avgCharHeight, float* score); vector<Rect> getHistogramBoxes(VerticalHistogram histogram, float avgCharWidth, float avgCharHeight, float* score);
vector<Rect> getBestCharBoxes(Mat img, vector<Rect> charBoxes, float avgCharWidth); vector<Rect> getBestCharBoxes(Mat img, vector<Rect> charBoxes, float avgCharWidth);
vector<Rect> combineCloseBoxes( vector<Rect> charBoxes, float avgCharWidth); vector<Rect> combineCloseBoxes( vector<Rect> charBoxes, float avgCharWidth);

View File

@@ -29,7 +29,7 @@ VerticalHistogram::VerticalHistogram(Mat inputImage, Mat mask)
VerticalHistogram::~VerticalHistogram() VerticalHistogram::~VerticalHistogram()
{ {
debugImg.release(); histoImg.release();
colHeights.clear(); colHeights.clear();
} }
@@ -40,7 +40,7 @@ void VerticalHistogram::analyzeImage(Mat inputImage, Mat mask)
lowestValley = inputImage.rows; lowestValley = inputImage.rows;
debugImg = Mat::zeros(inputImage.size(), CV_8U); histoImg = Mat::zeros(inputImage.size(), CV_8U);
int columnCount; int columnCount;
@@ -57,7 +57,7 @@ void VerticalHistogram::analyzeImage(Mat inputImage, Mat mask)
for (; columnCount > 0; columnCount--) for (; columnCount > 0; columnCount--)
debugImg.at<uchar>(inputImage.rows - columnCount, col) = 255; histoImg.at<uchar>(inputImage.rows - columnCount, col) = 255;
this->colHeights.push_back(columnCount); this->colHeights.push_back(columnCount);

View File

@@ -44,7 +44,7 @@ class VerticalHistogram
VerticalHistogram(Mat inputImage, Mat mask); VerticalHistogram(Mat inputImage, Mat mask);
virtual ~VerticalHistogram(); virtual ~VerticalHistogram();
Mat debugImg; Mat histoImg;
private: private: