Listing 4: Class definition for HoughAccumulator base class and LineHoughAccumulator class.
class HoughAccum
{
protected:
int m_dx, m_dy;
vector<int> m_accum;
int m_rowLength;
int m_numAccumulated;
virtual bool DoAddPoint(int x, int y)=0;
public:
HoughAccum();
virtual ~HoughAccum();
virtual void Init(int dx, int dy)=0;
virtual void Clear();
bool AddPoint(int x, int y);
int GetCell(int row, int col) { return m_accum[row*m_rowLength + col]; }
void SetCell(int row, int col, int value) {
m_accum[row*m_rowLength + col] = value; }
void GetAccumSize(int *numRows, int *numCols)
{
*numRows = m_accum.size()/m_rowLength;
*numCols = m_rowLength;
}
int NumAccumulated() { return m_numAccumulated; }
};
class LineHoughAccum
: public HoughAccum
{
protected:
vector<int> m_cosTable;
vector<int> m_sinTable;
virtual bool DoAddPoint(int x, int y);
public:
LineHoughAccum(int numAngleCells);
virtual ~LineHoughAccum();
virtual void Init(int dx, int dy);
};