有没有一种方法可以制作一个自动纠正扫描文档的脚本?

7
我经常扫描手写文件并发送给同事,需要在扫描后对数字文件进行更正。(例如,我将原始文件中的错误更改为白色。)
我正在考虑编写一些脚本,可以自动根据图像中的彩色更正对彩色扫描图像(如tiff格式)进行简单的更正处理。
例如,我们考虑最简单的情况:我只用黑色在白纸上书写。有一个区域我犯了错误,所以我用红笔在那个区域画了一个封闭圆圈(在实际的纸张上)。然后我扫描这张纸(通常有多张)。现在,我希望脚本能够在所有图像中擦除这些区域,使我的错误在结果图像中消失。
有没有想法在Linux环境下使用Image Magick实现此功能呢?
看起来Gimp和script-fu可能是解决问题的途径,它应该足够强大。能否有人给我一些提示,指出上述示例在script-fu中的实现方式?

也对我很有帮助:哪个 Linux 像素图像软件高度可编程且支持诸如从颜色选择中创建蒙版等复杂操作。 - highsciguy
1
既然您已经手动标记了想要更改的内容,是否考虑过像白色胶带(http://www.amazon.com/Wite-Out-Correction-1-Line-Dispenser-BICWOTAPP11/dp/B003V8Q7HS)这样的非技术性东西,或者使用无反光的空白标签或贴纸来覆盖错误呢? - Christopher Bottoms
我是一个复杂的人,这个解决方案对我来说太简单了;) 不过,说真的:我知道这个解决方案,但是我脑海中有一些更多的想法,如果我想要制作漂亮的手写文本,就不能用这种方式实现。例如,我希望能够通过改变颜色来突出显示文本。或者在文本周围画一个矩形框。如果我想手工完成这些事情,需要花费很多时间。 - highsciguy
我通常不建议跨贴,但我敢打赌这会是一个很好的问题,适合在http://photo.stackexchange.com上提问。一定要在那里包含这个问题的链接,并反过来做同样的事情,以便每个人都知道它是跨贴的。 - Christopher Bottoms
我正在考虑的解决方案是:1)根据颜色分割感兴趣的对象;2)使用泛洪填充算法将分割区域填充为所需颜色。我不太了解Image Magick,但我发现它有“floodfill”算法(在http://www.imagemagick.org/Usage/draw/中搜索“flood”)。它只需要种子,这将由分割给出。您是否接受OpenCV或Matlab解决方案? - Yamaneko
1
您似乎没有考虑到一个强大的计算机视觉需求。脚本如何识别您的副本编辑以执行它们? - phs
2个回答

2
我正在考虑一种基于ImageMagick的解决方案。 我们需要完成以下步骤:
  1. 查找扫描文档中用于绘制的颜色(暂称为目标颜色);
  2. 在图像中找到它的xy坐标;
  3. 将此位置作为种子传递给Flood Fill算法。
我们可以使用以下基于ImageMagick函数的脚本:
  1. Output all the unique colors in the picture. This will be used to find out which are the RGB components of the target color (command source).

    convert <image> -unique-colors -depth 8 txt:- > output.txt
    
  2. Output the coordinates of each color in a text file:

    convert <image> txt:- > coord.txt
    
  3. Find the x and y coordinates of the target color (command source). Suppose the target color obtained by step 1 was red:

    grep red coord.txt
    
  4. Finally, use x and y as a seed to floodfill to replace the circle region by your desired color (command source). In this case, I've used white to erase the region:

    convert <image> -fill white -fuzz 13% \
            -draw 'color <x>,<y> floodfill' <image_floodfill_output>
    
< p > -fuzz参数可以避免原本为red的颜色因噪点而变得失真而被替换。

这个教程提供了更多关于floodfill函数的信息,例如如何替换边缘颜色。


+1 对这个建议的支持。如果您能更详细地阐述一下,那就更好了... :-) - Kurt Pfeifle
@KurtPfeifle 谢谢!:-) 需要改进哪些方面?也许需要使用示例和更多关于命令的解释? - Yamaneko
没错 :-) 甚至可以包含一些图片和文本文件(提取)来演示你正在使用的命令的效果... - Kurt Pfeifle

0
我建议您看一下扫描仪(也许是扫描仪3100)。捆绑软件可以做一些有用的事情。
您可能会发现,您找到的任何软件/脚本都不能按照您想要的方式工作。听起来像是需要人眼来查看这些编辑的内容。也许您可以雇佣一个个人助理来为您进行这些更正。 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接