2017-10-21 75 views
1

在imagemagick中很好地尝试了形态学,但不幸的是输出也影响了文本,因此使其不能令人满意。那么有没有更快的方法可以从图像中删除线条,而不会影响到ocr文本?从扫描图像中删除水平线

输入图像:

ImageMagick的代码:

magick 1sa.jpg -morphology close:1 "1x4: 0,1,1,0" result.png    

输出图像

编辑:感谢谁回答,我终于做到了所有茨艾伦按以下代码工作:

magick E:\1sa.jpg (+clone -threshold 50% -negate -statistic median 219x1) -compose lighten -composite E:\z1.jpg 
+1

请仔细阅读[问]。显示图像,代码,实际结果,预期结果 – Miki

+0

_“那么有没有更快的方法......”_我会更关心_working_的方式......明显的变形操作不适合这种情况 – Miki

+0

不靠近电脑,但这有帮助吗? https://stackoverflow.com/a/41633319/2836621 –

回答

1

您的ImageMagick命令是错误的,甚至不应该工作。您需要使内核的水平线不垂直,并且需要更长的内核线。请尝试以下操作:

magick 1sa.jpg -morphology bottomhat "20x1:0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0" -negate result.png 

enter image description here

调整内核长度需要优化您的结果。

+0

谢谢它的作品:)但它是一种方式来填补文本 附近的1个白色像素,这是由于删除线,以提高ocr的准确性? – thekingmaker

+0

不是我所知道的。 ImageMagick将如何知道被删除的那一行不是该行的一部分,而是该字符的一部分。旁白:如果我以前的答案是有帮助的,请考虑给它一个加号 – fmw42

+0

有时你需要从新的StackOverflow用户上传问题,以便他们有足够的积分来提升你的答案...... ;-) –

0

这个ImageMagick命令在结果中更好吗?

convert 1sa.jpg -morphology bottomhat "20x3:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" -negate result.png 

enter image description here

+0

nope它不工作我的意思是我想输出图像,以便ocr不检测文本附近的白色像素(肉眼可以看到)。并感谢您的帮助:) – thekingmaker

+0

背景是白色的。我怎么知道你的白色像素是什么意思? – fmw42

+0

抱歉没有正确解释,我将这些白色像素记录为红色[1]:https://i.stack.imgur.com/umqer.jpg – thekingmaker