Tesseract 3.02

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
tesseract::IntGrid Class Reference

`#include <bbgrid.h>`

Inheritance diagram for tesseract::IntGrid:

List of all members.

## Public Member Functions

| IntGrid ()
| IntGrid (int gridsize, const ICOORD &bleft, const ICOORD &tright)
virtual | ~IntGrid ()
void | Init (int gridsize, const ICOORD &bleft, const ICOORD &tright)
void | Clear ()
void | Rotate (const FCOORD &rotation)
IntGrid * | NeighbourhoodSum () const
int | GridCellValue (int grid_x, int grid_y) const
void | SetGridCell (int grid_x, int grid_y, int value)
bool | RectMostlyOverThreshold (const TBOX &rect, int threshold) const
bool | AnyZeroInRect (const TBOX &rect) const
Pix * | ThresholdToPix (int threshold) const
Public Member Functions inherited from tesseract::GridBase
| GridBase ()
| GridBase (int gridsize, const ICOORD &bleft, const ICOORD &tright)
virtual | ~GridBase ()
int | gridsize () const
int | gridwidth () const
int | gridheight () const
const ICOORD & | bleft () const
const ICOORD & | tright () const
void | GridCoords (int x, int y, int *grid_x, int *grid_y) const
void | ClipGridCoords (int *x, int *y) const

## Additional Inherited Members

Protected Attributes inherited from tesseract::GridBase
int | gridsize_
int | gridwidth_
int | gridheight_
int | gridbuckets_
ICOORD | bleft_
ICOORD | tright_

## Detailed Description

Definition at line 102 of file bbgrid.h.

## Constructor & Destructor Documentation

tesseract::IntGrid::IntGrid | ( |  | ) |

Definition at line 66 of file bbgrid.cpp.

{
grid_ = NULL;
}

tesseract::IntGrid::IntGrid | ( | int | gridsize,
|  | const ICOORD & | bleft,
|  | const ICOORD & | tright
| ) |  |

Definition at line 70 of file bbgrid.cpp.

: grid_(NULL) {
Init(gridsize, bleft, tright);
}

tesseract::IntGrid::~IntGrid | ( |  | ) |

virtual

Definition at line 75 of file bbgrid.cpp.

{
if (grid_ != NULL)
delete [] grid_;
}

## Member Function Documentation

bool tesseract::IntGrid::AnyZeroInRect | ( | const TBOX & | rect | ) | const

Definition at line 178 of file bbgrid.cpp.

{
int min_x, min_y, max_x, max_y;
GridCoords(rect.left(), rect.bottom(), &min_x, &min_y);
GridCoords(rect.right(), rect.top(), &max_x, &max_y);
for (int y = min_y; y <= max_y; ++y) {
for (int x = min_x; x <= max_x; ++x) {
if (GridCellValue(x, y) == 0)
return true;
}
}
return false;
}

void tesseract::IntGrid::Clear | ( |  | ) |

Definition at line 91 of file bbgrid.cpp.

{
for (int i = 0; i < gridbuckets_; ++i) {
grid_[i] = 0;
}
}

int tesseract::IntGrid::GridCellValue | ( | int | grid_x,
|  | int | grid_y
| ) |  | const

inline

Definition at line 125 of file bbgrid.h.

{
ClipGridCoords(&grid_x, &grid_y);
return grid_[grid_y * gridwidth_ + grid_x];
}

void tesseract::IntGrid::Init | ( | int | gridsize,
|  | const ICOORD & | bleft,
|  | const ICOORD & | tright
| ) |  |

Reimplemented from tesseract::GridBase.

Definition at line 82 of file bbgrid.cpp.

{
GridBase::Init(gridsize, bleft, tright);
if (grid_ != NULL)
delete [] grid_;
grid_ = new int[gridbuckets_];
Clear();
}

IntGrid * tesseract::IntGrid::NeighbourhoodSum | ( |  | ) | const

Definition at line 136 of file bbgrid.cpp.

{
IntGrid* sumgrid = new IntGrid(gridsize(), bleft(), tright());
for (int y = 0; y < gridheight(); ++y) {
for (int x = 0; x < gridwidth(); ++x) {
int cell_count = 0;
for (int yoffset = -1; yoffset <= 1; ++yoffset) {
for (int xoffset = -1; xoffset <= 1; ++xoffset) {
int grid_x = x + xoffset;
int grid_y = y + yoffset;
ClipGridCoords(&grid_x, &grid_y);
cell_count += GridCellValue(grid_x, grid_y);
}
}
if (GridCellValue(x, y) > 1)
sumgrid->SetGridCell(x, y, cell_count);
}
}
return sumgrid;
}

bool tesseract::IntGrid::RectMostlyOverThreshold | ( | const TBOX & | rect,
|  | int | threshold
| ) |  | const

Definition at line 158 of file bbgrid.cpp.

{
int min_x, min_y, max_x, max_y;
GridCoords(rect.left(), rect.bottom(), &min_x, &min_y);
GridCoords(rect.right(), rect.top(), &max_x, &max_y);
int total_area = 0;
for (int y = min_y; y <= max_y; ++y) {
for (int x = min_x; x <= max_x; ++x) {
int value = GridCellValue(x, y);
if (value > threshold) {
TBOX cell_box(x * gridsize_, y * gridsize_,
(x + 1) * gridsize_, (y + 1) * gridsize_);
cell_box &= rect; // This is in-place box intersection.
total_area += cell_box.area();
}
}
}
return total_area * 2 > rect.area();
}

void tesseract::IntGrid::Rotate | ( | const FCOORD & | rotation | ) |

Definition at line 103 of file bbgrid.cpp.

{
ASSERT_HOST(rotation.x() == 0.0f || rotation.y() == 0.0f);
ICOORD old_bleft(bleft());
ICOORD old_tright(tright());
int old_width = gridwidth();
int old_height = gridheight();
TBOX box(bleft(), tright());
box.rotate(rotation);
int* old_grid = grid_;
grid_ = NULL;
Init(gridsize(), box.botleft(), box.topright());
// Iterate over the old grid, copying data to the rotated position in the new.
int oldi = 0;
FCOORD x_step(rotation);
x_step *= gridsize();
for (int oldy = 0; oldy < old_height; ++oldy) {
FCOORD line_pos(old_bleft.x(), old_bleft.y() + gridsize() * oldy);
line_pos.rotate(rotation);
for (int oldx = 0; oldx < old_width; ++oldx, line_pos += x_step, ++oldi) {
int grid_x, grid_y;
GridCoords(static_cast<int>(line_pos.x() + 0.5),
static_cast<int>(line_pos.y() + 0.5),
&grid_x, &grid_y);
grid_[grid_y * gridwidth() + grid_x] = old_grid[oldi];
}
}
delete [] old_grid;
}

void tesseract::IntGrid::SetGridCell | ( | int | grid_x,
|  | int | grid_y,
|  | int | value
| ) |  |

inline

Definition at line 129 of file bbgrid.h.

{
ASSERT_HOST(grid_x >= 0 && grid_x < gridwidth());
ASSERT_HOST(grid_y >= 0 && grid_y < gridheight());
grid_[grid_y * gridwidth_ + grid_x] = value;
}

Pix * tesseract::IntGrid::ThresholdToPix | ( | int | threshold | ) | const

Definition at line 194 of file bbgrid.cpp.

{
Pix* pix = pixCreate(tright().x() - bleft().x(),
tright().y() - bleft().y(), 1);
int cellsize = gridsize();
for (int y = 0; y < gridheight(); ++y) {
for (int x = 0; x < gridwidth(); ++x) {
if (GridCellValue(x, y) > threshold &&
GridCellValue(x - 1, y) > 0 && GridCellValue(x + 1, y) > 0 &&
GridCellValue(x, y - 1) > 0 && GridCellValue(x, y + 1) > 0) {
pixRasterop(pix, x * cellsize, tright().y() - ((y + 1) * cellsize),
cellsize, cellsize, PIX_SET, NULL, 0, 0);
}
}
}
return pix;
}

The documentation for this class was generated from the following files:

- /mnt/data/src/tesseract-ocr/textord/bbgrid.h
- /mnt/data/src/tesseract-ocr/textord/bbgrid.cpp