summaryrefslogtreecommitdiff
path: root/preproc/cmd/preproc/main.go
diff options
context:
space:
mode:
authorNick White <git@njw.name>2019-06-03 10:54:02 +0100
committerNick White <git@njw.name>2019-06-03 10:54:02 +0100
commit20b694ee8510692804908f51fbbee3c39c859f37 (patch)
tree106a1354022f1f4ad8983799a88a26dd0f665969 /preproc/cmd/preproc/main.go
parentd7f07893d08d9c29f46e50c4f779b0e701f411e4 (diff)
Add -m option to wipe to set minimum content area for wipe to proceed
If content is very light or sparse it may be better to not wipe at all than wipe almost all of the content leaving a small strip. This is done now by aborting the wipe if the detected content takes up less than the minimum % of the page (default is 30%).
Diffstat (limited to 'preproc/cmd/preproc/main.go')
-rw-r--r--preproc/cmd/preproc/main.go6
1 files changed, 3 insertions, 3 deletions
diff --git a/preproc/cmd/preproc/main.go b/preproc/cmd/preproc/main.go
index 053de8f..d8d5b66 100644
--- a/preproc/cmd/preproc/main.go
+++ b/preproc/cmd/preproc/main.go
@@ -1,7 +1,6 @@
package main
// TODO: come up with a way to set a good ksize automatically
-// TODO: add minimum size variable (default ~30%?) for wipe
import (
"flag"
@@ -23,13 +22,14 @@ func autowsize(bounds image.Rectangle) int {
func main() {
flag.Usage = func() {
- fmt.Fprintf(os.Stderr, "Usage: preproc [-bt bintype] [-bw winsize] [-k num] [-wt wipethresh] [-ws wipesize] inimg outimg\n")
+ fmt.Fprintf(os.Stderr, "Usage: preproc [-bt bintype] [-bw winsize] [-k num] [-m minperc] [-wt wipethresh] [-ws wipesize] inimg outimg\n")
fmt.Fprintf(os.Stderr, "Binarize and preprocess an image\n")
flag.PrintDefaults()
}
binwsize := flag.Int("bw", 0, "Window size for sauvola binarization algorithm. Set automatically based on resolution if not set.")
ksize := flag.Float64("k", 0.5, "K for sauvola binarization algorithm. This controls the overall threshold level. Set it lower for very light text (try 0.1 or 0.2).")
btype := flag.String("bt", "binary", "Type of binarization threshold. binary or zeroinv are currently implemented.")
+ min := flag.Int("m", 30, "Minimum percentage of the image width for the content width calculation to be considered valid.")
wipewsize := flag.Int("ws", 5, "Window size for wiping algorithm.")
thresh := flag.Float64("wt", 0.05, "Threshold for the wiping algorithm to determine the proportion of black pixels below which a window is determined to be the edge.")
flag.Parse()
@@ -71,7 +71,7 @@ func main() {
}
log.Print("Wiping sides")
- clean := preproc.Wipe(threshimg.(*image.Gray), *wipewsize, *thresh)
+ clean := preproc.Wipe(threshimg.(*image.Gray), *wipewsize, *thresh, *min)
f, err = os.Create(flag.Arg(1))
if err != nil {