23 m_maxPointSeparation (0),
37 m_mutualPairHalvesBelow.push_back (QPoint (x0, y0));
38 m_mutualPairHalvesAbove.push_back (QPoint (x1, y1));
48 if (xBL == 0 || yBL == 0 || xBR == 0 || yBR == 0 || xTR == 0 || yTR == 0 || xTL == 0 || yTL == 0) {
49 LOG4CPP_ERROR_S ((*
mainCat)) <<
"GridHealerAbstractBase::fillTrapezoid received undefined corner coordinate "
50 <<
"xBL=" << xBL <<
" yBL=" << yBL <<
" xBR=" << xBR <<
" yBR=" << yBR
51 <<
"xTR=" << xTR <<
" yTR=" << yTR <<
" xTL=" << xTL <<
" yTL=" << yTL;
69 triangleFill.
fill (m_gridLog,
74 triangleFill.
fill (m_gridLog,
94 return m_maxPointSeparation;
99 return m_modelGridRemoval;
104 return m_mutualPairHalvesAbove;
109 return m_mutualPairHalvesBelow;
138 m_maxPointSeparation = qFloor (qSqrt (qPow (
modelGridRemoval().closeDistance(), 2) -
139 qPow (gapSeparation, 2)));
QList< QPoint > MutualPairHalves
Save one half of a mutual pair.
log4cpp::Category * mainCat
Model for DlgSettingsGridRemoval and CmdSettingsGridRemoval.
DocumentModelGridRemoval & modelGridRemoval()
DocumentModelGridRemoval get method.
bool pointsAreGood(const QImage &image, int x0, int y0, int x1, int y1) const
Apply blackPixelRegionIsBigEnough to regions around each of two points.
void healed(QImage &image)
Return healed image after grid removal.
virtual void applyMutualPairs(const QImage &image)=0
Apply mutual pair points after all grid removal is done.
const MutualPairHalves & mutualPairHalvesAbove() const
Mutual pair halves for below grid line.
const MutualPairHalves & mutualPairHalvesBelow() const
Mutual pair halves for above grid line.
static int pixelCountInRegionThreshold(const DocumentModelGridRemoval &modelGridRemoval)
Threshold number of pixels in a region to be considered too-small or big-enough.
GridHealerAbstractBase(GridLog &gridLog, const DocumentModelGridRemoval &modelGridRemoval)
Single constructor.
GridLog & gridLog()
Logging get method.
void addMutualPair(int x0, int y0, int x1, int y1)
Add two points on either side of a gap. Later, after removal, the black points will be processed.
virtual void doHealingAcrossGaps(QImage &image)=0
Guts of the algorithm in which sequences of black pixels across the gap from each other are filled in...
double maxPointSeparation() const
Max point separation get method.
void fillTrapezoid(QImage &image, int xBL, int yBL, int xBR, int yBR, int xTR, int yTR, int xTL, int yTL)
Fill trapezoid with bottom left, bottom right, top right, and top left points.
virtual ~GridHealerAbstractBase()
void saveGapSeparation(double gapSeparation)
Gap separation set method.
Class that does special logging for GridLog and GridRemoval classes.
Class that does raster-line fill of a triangle, with logging customizations for GridHealer (and there...
void fill(GridLog &gridLog, QImage &image, const QPoint &p0, const QPoint &p1, const QPoint &p2)
Fill triangle between these three points.
Utility class for pixel manipulation.
static bool pixelIsBlack(const QImage &image, int x, int y)
Return true if pixel is black in black and white image.
int countBlackPixelsAroundPoint(const QImage &image, int x, int y, int stopCountAt)
Fill triangle between these three points.
#define LOG4CPP_ERROR_S(logger)