Skip to content

Commit e83e17f

Browse files
committed
1.0.18: feature ScanTailor-Advanced#47: prefilter EdgeDiv: combine prefilters EdgePlus and BlurDiv.
1 parent 6887ca5 commit e83e17f

31 files changed

+309
-83
lines changed

src/app/DefaultParamsDialog.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ DefaultParamsDialog::DefaultParamsDialog(QWidget* parent)
4848
thresholdMethodBox->addItem(tr("Otsu"), OTSU);
4949
thresholdMethodBox->addItem(tr("Sauvola"), SAUVOLA);
5050
thresholdMethodBox->addItem(tr("Wolf"), WOLF);
51+
thresholdMethodBox->addItem(tr("EdgePlus"), EDGEPLUS);
52+
thresholdMethodBox->addItem(tr("BlurDiv"), BLURDIV);
53+
thresholdMethodBox->addItem(tr("EdgeDiv"), EDGEDIV);
5154

5255
pictureShapeSelector->addItem(tr("Off"), OFF_SHAPE);
5356
pictureShapeSelector->addItem(tr("Free"), FREE_SHAPE);
@@ -662,7 +665,8 @@ std::unique_ptr<DefaultParams> DefaultParamsDialog::buildParams() const {
662665
blackWhiteOptions.setBinarizationMethod(binarizationMethod);
663666
blackWhiteOptions.setThresholdAdjustment(thresholdSlider->value());
664667
blackWhiteOptions.setSauvolaCoef(sauvolaCoef->value());
665-
if (binarizationMethod == SAUVOLA) {
668+
if (binarizationMethod == SAUVOLA || binarizationMethod == EDGEPLUS || binarizationMethod == BLURDIV
669+
|| binarizationMethod == EDGEDIV) {
666670
blackWhiteOptions.setWindowSize(sauvolaWindowSize->value());
667671
} else if (binarizationMethod == WOLF) {
668672
blackWhiteOptions.setWindowSize(wolfWindowSize->value());

src/app/MainWindow.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2080,8 +2080,9 @@ void MainWindow::execGotoPageDialog() {
20802080
bool ok;
20812081
const PageSequence pageSequence = m_thumbSequence->toPageSequence();
20822082
const PageId& selectionLeader = m_thumbSequence->selectionLeader().id();
2083-
int pageNumber = QInputDialog::getInt(this, tr("Go To Page"), tr("Enter the page number:"),
2084-
pageSequence.pageNo(selectionLeader) + 1, 1, pageSequence.numPages(), 1, &ok);
2083+
int pageNumber
2084+
= QInputDialog::getInt(this, tr("Go To Page"), tr("Enter the page number:"),
2085+
pageSequence.pageNo(selectionLeader) + 1, 1, (int) (pageSequence.numPages()), 1, &ok);
20852086
if (ok) {
20862087
const PageId& newSelectionLeader = pageSequence.pageAt(pageNumber - 1).id();
20872088
if (selectionLeader != newSelectionLeader) {

src/app/RelinkablePathVisualization.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ void RelinkablePathVisualization::clear() {
5353

5454
void RelinkablePathVisualization::setPath(const RelinkablePath& path, bool clickable) {
5555
clear();
56-
#if QT_VERSION_MAJOR == 5 and QT_VERSION_MINOR < 14
56+
#if QT_VERSION_MAJOR == 5 && QT_VERSION_MINOR < 14
5757
auto opt = QString::SkipEmptyParts;
5858
#else
5959
auto opt = Qt::SkipEmptyParts;

src/core/Application.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ std::list<QString> Application::getLanguagesList() const {
5858
}
5959

6060
void Application::initTranslations() {
61-
#if QT_VERSION_MAJOR == 5 and QT_VERSION_MINOR < 14
61+
#if QT_VERSION_MAJOR == 5 && QT_VERSION_MINOR < 14
6262
auto opt = QString::SkipEmptyParts;
6363
#else
6464
auto opt = Qt::SkipEmptyParts;

src/core/BackgroundTask.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ class BackgroundTask : public AbstractCommand<FilterResultPtr>, public TaskStatu
2727
Type type() const { return m_type; }
2828

2929
void cancel() override {
30-
#if QT_VERSION_MAJOR == 5 and QT_VERSION_MINOR < 14
30+
#if QT_VERSION_MAJOR == 5 && QT_VERSION_MINOR < 14
3131
m_cancelFlag.store(1);
3232
#else
3333
m_cancelFlag.storeRelaxed(1);
3434
#endif
3535
}
3636

3737
bool isCancelled() const override {
38-
#if QT_VERSION_MAJOR == 5 and QT_VERSION_MINOR < 14
38+
#if QT_VERSION_MAJOR == 5 && QT_VERSION_MINOR < 14
3939
return m_cancelFlag.load() != 0;
4040
#else
4141
return m_cancelFlag.loadRelaxed() != 0;

src/core/RelinkablePath.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ QString RelinkablePath::normalize(const QString& path) {
1212
frontSlashes.replace(QChar('\\'), QLatin1String("/"));
1313

1414
QStringList newComponents;
15-
#if QT_VERSION_MAJOR == 5 and QT_VERSION_MINOR < 14
15+
#if QT_VERSION_MAJOR == 5 && QT_VERSION_MINOR < 14
1616
auto opt = QString::KeepEmptyParts;
1717
#else
1818
auto opt = Qt::KeepEmptyParts;

src/core/filters/output/BlackWhiteOptions.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ BinarizationMethod BlackWhiteOptions::parseBinarizationMethod(const QString& str
7272
return WOLF;
7373
} else if (str == "sauvola") {
7474
return SAUVOLA;
75+
} else if (str == "edgeplus") {
76+
return EDGEPLUS;
77+
} else if (str == "blurdiv") {
78+
return BLURDIV;
79+
} else if (str == "edgediv") {
80+
return EDGEDIV;
7581
} else {
7682
return OTSU;
7783
}
@@ -89,6 +95,15 @@ QString BlackWhiteOptions::formatBinarizationMethod(BinarizationMethod type) {
8995
case WOLF:
9096
str = "wolf";
9197
break;
98+
case EDGEPLUS:
99+
str = "edgeplus";
100+
break;
101+
case BLURDIV:
102+
str = "blurdiv";
103+
break;
104+
case EDGEDIV:
105+
str = "edgediv";
106+
break;
92107
}
93108
return str;
94109
}
@@ -129,4 +144,4 @@ bool BlackWhiteOptions::ColorSegmenterOptions::operator==(const BlackWhiteOption
129144
bool BlackWhiteOptions::ColorSegmenterOptions::operator!=(const BlackWhiteOptions::ColorSegmenterOptions& other) const {
130145
return !(*this == other);
131146
}
132-
} // namespace output
147+
} // namespace output

src/core/filters/output/BlackWhiteOptions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class QDomDocument;
99
class QDomElement;
1010

1111
namespace output {
12-
enum BinarizationMethod { OTSU, SAUVOLA, WOLF };
12+
enum BinarizationMethod { OTSU, SAUVOLA, WOLF, EDGEPLUS, BLURDIV, EDGEDIV };
1313

1414
class BlackWhiteOptions {
1515
public:

src/core/filters/output/DewarpingView.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ void DewarpingView::onPaint(QPainter& painter, const InteractionState& interacti
214214
const dewarping::Curve& bottomCurve = m_distortionModel.bottomCurve();
215215
painter.drawLine(topCurve.polyline().front(), bottomCurve.polyline().front());
216216
painter.drawLine(topCurve.polyline().back(), bottomCurve.polyline().back());
217-
#if QT_VERSION_MAJOR == 5 and QT_VERSION_MINOR < 14
217+
#if QT_VERSION_MAJOR == 5 && QT_VERSION_MINOR < 14
218218
painter.drawPolyline(QVector<QPointF>::fromStdVector(topCurve.polyline()));
219219
painter.drawPolyline(QVector<QPointF>::fromStdVector(bottomCurve.polyline()));
220220
#else

src/core/filters/output/OptionsWidget.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ OptionsWidget::OptionsWidget(std::shared_ptr<Settings> settings, const PageSelec
4242
thresholdMethodBox->addItem(tr("Otsu"), OTSU);
4343
thresholdMethodBox->addItem(tr("Sauvola"), SAUVOLA);
4444
thresholdMethodBox->addItem(tr("Wolf"), WOLF);
45+
thresholdMethodBox->addItem(tr("EdgePlus"), EDGEPLUS);
46+
thresholdMethodBox->addItem(tr("BlurDiv"), BLURDIV);
47+
thresholdMethodBox->addItem(tr("EdgeDiv"), EDGEDIV);
4548

4649
fillingColorBox->addItem(tr("Background"), FILL_BACKGROUND);
4750
fillingColorBox->addItem(tr("White"), FILL_WHITE);
@@ -51,13 +54,22 @@ OptionsWidget::OptionsWidget(std::shared_ptr<Settings> settings, const PageSelec
5154
QPointer<BinarizationOptionsWidget> sauvolaBinarizationOptionsWidget
5255
= new SauvolaBinarizationOptionsWidget(m_settings);
5356
QPointer<BinarizationOptionsWidget> wolfBinarizationOptionsWidget = new WolfBinarizationOptionsWidget(m_settings);
57+
QPointer<BinarizationOptionsWidget> edgeplusBinarizationOptionsWidget
58+
= new SauvolaBinarizationOptionsWidget(m_settings);
59+
QPointer<BinarizationOptionsWidget> blurdivBinarizationOptionsWidget
60+
= new SauvolaBinarizationOptionsWidget(m_settings);
61+
QPointer<BinarizationOptionsWidget> edgedivBinarizationOptionsWidget
62+
= new SauvolaBinarizationOptionsWidget(m_settings);
5463

5564
while (binarizationOptions->count() != 0) {
5665
binarizationOptions->removeWidget(binarizationOptions->widget(0));
5766
}
5867
addBinarizationOptionsWidget(otsuBinarizationOptionsWidget);
5968
addBinarizationOptionsWidget(sauvolaBinarizationOptionsWidget);
6069
addBinarizationOptionsWidget(wolfBinarizationOptionsWidget);
70+
addBinarizationOptionsWidget(edgeplusBinarizationOptionsWidget);
71+
addBinarizationOptionsWidget(blurdivBinarizationOptionsWidget);
72+
addBinarizationOptionsWidget(edgedivBinarizationOptionsWidget);
6173
updateBinarizationOptionsDisplay(binarizationOptions->currentIndex());
6274

6375
pictureShapeSelector->addItem(tr("Off"), OFF_SHAPE);
@@ -983,4 +995,4 @@ void OptionsWidget::applyProcessingParamsConfirmed(const std::set<PageId>& pages
983995
void OptionsWidget::updateProcessingDisplay() {
984996
blackOnWhiteCB->setChecked(m_settings->getParams(m_pageId).isBlackOnWhite());
985997
}
986-
} // namespace output
998+
} // namespace output

0 commit comments

Comments
 (0)