Answers:
如果您可以控制扫描,或者可以重新扫描它们,请增加扫描中的对比度设置,并将黑点设置为您可以找到的最暗的文本。这将使下面的步骤更加容易。如果没有,请继续阅读...
这是相当典型的旧文档扫描的一部分:
细节因文档而异(例如,对比度比示例高一些),但粗略轮廓相同。
请注意,黄色滑块位于最右侧,使淡黄色背景变亮。我只能使文本变暗一点。
这可以让您95%地到达那里。扫描的文档通常具有直方图,直方图的右侧(纸张)较大,而左侧(文本)较小。您必须尝试使用文档才能找到正确的设置。
从这一点开始,您可以复制图像,展平复制的图像,并使用常规的Photoshop润饰工具清理其余部分。
您提到了Photoshop,但是如果您感兴趣的话,还有一个GIMP插件可以执行高级灰度清洗和处理:
它称为Nuvola Tools,主要集中在扫描的艺术品上,但是您可能需要尝试一下。
之前:
后:
来源:GIMP插件注册表
使用GIMP:
我尝试了各种提到的方法,包括。免费的FineThreshold http://www.mehdiplugins.com/english/finethreshold.htm插件。如果文档被均匀地照亮并且纸张本身也具有同质的质量,则该插件可以快速产生良好的效果。但是,这不是我的情况。我发现每个文档的上侧比下侧更轻。因此,每种方法及其部分设置仅适用于每个页面的一部分,而不适用于其余页面。
最终,我发现了“动态阈值”效果,它是Zoner Photo Studio v15的一部分。我猜它的评估版本在一段时间内是免费的。它似乎根据附近的亮度补偿了黑白阈值。它的应用只是一步过程。对我来说,参数“大,值+14”非常有效。在“编辑器”旁边,Zoner还包含“管理器”界面,您可以在其中处理所有选定图像的批处理。最后,我能够在非常老旧的300 dpi激光打印机上以出色的对比度打印结果。
现在,我正在找剩下的唯一任务是自动的作物以inteligent地切出多余的利润每一个形象。任何提示都是可以接受的,因为手动裁剪既烦人又费时。
GIMP插件注册表中有一个插件可以做到这一点。现在已在这里存档。
不久前,我将其翻译为Python,并且运行速度更快。
这是将其应用于原始问题中的图像的结果:
这是将其应用于Alan答案中的图像的结果:
无论如何,这是插件的代码:
from __future__ import division
import random
import gimp, gimpfu
pdb = gimp.pdb
sample_count = 100
def set_image_background_to_white(image, drawable):
pdb.gimp_context_push()
pdb.gimp_image_undo_group_start(image)
pdb.gimp_progress_set_text('Correcting background')
if drawable.is_gray:
channel_count = 1
elif drawable.is_rgb:
channel_count = 3
assert not drawable.is_indexed
# get some random points in the image
sum_by_channel = [0]*channel_count
for sample_index in range(sample_count):
px = pdb.gimp_drawable_get_pixel(drawable,
random.randint(0, pdb.gimp_drawable_width (drawable)-1),
random.randint(0, pdb.gimp_drawable_height(drawable)-1))[1]
for i in range(channel_count):
sum_by_channel[i] += px[i]
pdb.gimp_progress_update(sample_index/sample_count)
if drawable.is_gray:
pdb.gimp_levels(drawable, gimpfu.HISTOGRAM_VALUE,
0, sum_by_channel[0]/sample_count,
1.,
0, 255)
elif drawable.is_rgb:
for i in range(channel_count):
pdb.gimp_levels(drawable, 1+i,
0, sum_by_channel[i]/sample_count,
1.,
0, 255)
pdb.gimp_levels(drawable, gimpfu.HISTOGRAM_VALUE,
0, 255,
0.6,
0, 255)
pdb.gimp_image_undo_group_end(image)
pdb.gimp_displays_flush()
pdb.gimp_progress_update(1.)
pdb.gimp_context_pop()
gimpfu.register('set_image_background_to_white', # name
'Set image background to white', # blurb
'No help info yet', # help
'Robert Fleming', # author
'Robert Fleming', # copyright
'2015', # date
'<Image>/Filters/Set Background to White', # menupath
'RGB*, GRAY*', # imagetypes
[], # params
[], # results
set_image_background_to_white, # function
)
gimpfu.main()