;; conversion of lineremoval.c (require-extension format) (require-extension leptonica) (define pix (pix-read "dave-orig.png")) (define gray-pix (pix-threshold-to-binary pix 170)) (pix-write "dave-gray.png" gray-pix IFF-PNG) (define rotated-pix) (let-values (((ang conf) (pix-find-skew gray-pix))) (format #t "Angle: ~f Confidence: ~f~&" ang conf) (set! rotated-pix (pix-rotate-am-gray pix ang 255))) (pix-write "dave-rotated.png" rotated-pix IFF-PNG) ;; locates the lines to remove (define no-gaps-pix (pix-close-gray rotated-pix 51 1)) (pix-write "dave-no-gaps.png" no-gaps-pix IFF-PNG) ;; solidifies the lines to remove (define eroded-pix (pix-erode-gray no-gaps-pix 51 1)) (pix-write "dave-eroded.png" eroded-pix IFF-PNG) ;; clean the background of the lines (define thresholded-pix (pix-threshold-to-value #f (pix-threshold-to-value #f eroded-pix 210 255) 200 0)) (define removed-lines-pix (pix-threshold-to-binary thresholded-pix 210)) (pix-write "dave-background-lines.png" removed-lines-pix IFF-PNG) ;; add inverted cleaned lines to original (pix-invert thresholded-pix thresholded-pix) (define added-pix (pix-add-gray #f rotated-pix thresholded-pix)) (pix-write "dave-added.png" added-pix IFF-PNG) (define filled-lines-pix (pix-open-gray added-pix 1 9)) (pix-write "dave-filled-lines.png" filled-lines-pix IFF-PNG) (pix-combine-masked added-pix filled-lines-pix removed-lines-pix) (pix-write "dave-result.png" added-pix IFF-PNG)