Tengo algunos documentos antiguos que han sido escaneados y quiero convertirlos a blanco y negro. El contenido debe ser siempre negro y el fondo blanco:
Yo uso Photoshop
Tengo algunos documentos antiguos que han sido escaneados y quiero convertirlos a blanco y negro. El contenido debe ser siempre negro y el fondo blanco:
Yo uso Photoshop
Respuestas:
Si tiene control sobre el escaneo, o puede volver a escanearlos, aumente la configuración de contraste en el escaneo y configure el punto negro en la parte más oscura del texto que pueda encontrar. Eso facilitaría los pasos a continuación. Si no, sigue leyendo ...
Aquí hay parte de un escaneo de documentos antiguo bastante típico:
Los detalles serán diferentes según el documento (esto tiene un contraste algo mayor que su muestra, por ejemplo), pero el esquema general será el mismo.
Observe que el control deslizante de amarillos está muy a la derecha, aligerando el fondo amarillento. Pude oscurecer el texto solo un poco.
Esto te lleva al 95% del camino. Un documento escaneado generalmente tiene un histograma con un bulto grande hacia la derecha (el papel) y un bulto más pequeño hacia la izquierda (texto). Tendrá que experimentar con sus documentos para encontrar la configuración correcta.
Desde este punto, puede duplicar la imagen, aplanar el duplicado y usar sus herramientas habituales de retoque de Photoshop para limpiar el resto.
Menciona Photoshop, pero en caso de que esté interesado, también hay un complemento GIMP que realiza limpieza y procesamiento avanzados en escala de grises:
Se llama Nuvola Tools , y se centra principalmente en el arte escaneado, pero es posible que desee probarlo.
Antes de:
Después:
Fuente: Registro de complementos de GIMP
Con GIMP:
Probé varios métodos mencionados, incl. FineThreshold gratuito http://www.mehdiplugins.com/english/finethreshold.htm plugin. Este complemento produce buenos resultados rápidamente siempre que el documento esté iluminado de manera homogénea y el papel en sí también sea de calidad homogénea. Sin embargo, este no fue mi caso. Experimenté que la parte superior de cada documento era más clara que la inferior. En consecuencia, cada método y su configuración parcial funcionaron bien solo para la parte de cada página y no para el resto.
Finalmente encontré el efecto "Umbral dinámico" que forma parte de Zoner Photo Studio v15 . Supongo que su versión de evaluación es gratuita durante algún tiempo. Parece compensar el umbral de b / w de acuerdo con la claridad del vecindario. Su aplicación es solo un proceso de un paso. Para mí, los parámetros "Grande, valor +14" funcionaron muy bien. Además de "Editor", Zoner contiene también la interfaz "Administrador" en la que puede procesar el lote sobre todas las imágenes seleccionadas. Al final pude imprimir el resultado en la muy antigua impresora láser de 300 ppp con excelente contraste.
Ahora, la única tarea restante que estoy buscando es el CULTIVO automático de cada imagen de manera inteligente para recortar los márgenes innecesarios. Cualquier sugerencia es bienvenida porque el cultivo manual es aburrido y requiere mucho tiempo.
Hubo un complemento en el registro de complementos GIMP que hizo esto. Está archivado aquí ahora.
Hace algún tiempo traduje esto a Python y funcionó mucho más rápido.
Aquí está el resultado de su aplicación a la imagen en la pregunta original:
Aquí está el resultado de su aplicación a la imagen en la respuesta de Alan:
De todos modos, aquí está el código del complemento:
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()