这是在 Imagemagick 中处理图像的一种方法。
(请注意,-hough-lines 仅精确到 1 度。因此它可以找到线,但它们对齐得不够好,无法使用它们进行删除。)
有两个主要步骤。首先找到旋转的角度。第二次旋转图像,然后使用形态学去除水平线和垂直线。
输入:
第一步进行除法归一化以使背景白色均匀,然后进行自动阈值处理,然后进行 -deskew 以获得旋转角度。我包含了 +write xxx.png 以逐步保存图像。您可以删除这些 +write xxx.png,但不能删除 -write mpr:xxx.
angle=`magick gridded_ellipse.jpg -write mpr:img \
\( mpr:img -blur 0x99 \) +swap -compose divide -composite +write gridded_ellipse_div_normalize.png \
-auto-threshold triangle +write gridded_ellipse_threshold.png -deskew 40% +write gridded_ellipse_thresh_deskew.png -format "%[deskew:angle]" info:`
除法归一化:
除法归一化和阈值化:
除法归一化、阈值化和去偏斜:
第二步从之前的划分归一化图像开始并旋转它。然后它采用先前的校正图像并应用水平形态关闭,否定它以使线条在黑色上变白并将其添加到旋转图像中。然后它应用接近去偏斜图像的垂直形态,将其取反以使黑底白字并将其添加到先前水平处理的结果中。这形成了最终结果。
magick gridded_ellipse_div_normalize.png -rotate $angle +write gridded_ellipse_norm_rot.png +write mpr:rot +delete \
\( gridded_ellipse_thresh_deskew.png +write mpr:deskew -morphology close rectangle:50x1 -negate +write gridded_ellipse_thresh_morph_horiz.png \
mpr:rot -compose plus -composite +write gridded_ellipse_no_horiz.png -write mpr:no_horiz \) \
\( mpr:deskew -morphology close rectangle:1x50 -negate +write gridded_ellipse_thresh_morph_vert.png \
mpr:no_horiz -compose plus -composite +write gridded_ellipse_result.png \) \
null:
除法归一化和旋转输入:
除法归一化、旋转和阈值输入:
形态关闭水平:
形态关闭水平添加到旋转图像:
形态关闭垂直:
形态关闭垂直添加到以前的结果 - 最终图像: