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.
Si tiene control sobre el escaneo, o puede hacer que se vuelvan a escanear, aumente la configuración de contraste en el escaneo y establezca el punto negro en el fragmento de texto más oscuro que pueda encontrar. Eso facilitaría los pasos a continuación. Si no, sigue leyendo...
Aquí hay parte de un escaneo de documento antiguo bastante típico:
Los detalles serán diferentes según el documento (este tiene un contraste algo mayor que su muestra, por ejemplo), pero el contorno general será el mismo.
Observe que el control deslizante de amarillos está muy a la derecha, aclarando el fondo amarillento. Pude oscurecer el texto solo un poco.
Esto te lleva el 95% del camino allí. Un documento escaneado normalmente 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 de retoque habituales de Photoshop para limpiar el resto.
Menciona Photoshop, pero en caso de que esté interesado, también hay un complemento GIMP que realiza una 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:
Después:
Fuente: Registro de complementos de GIMP
Con GIMP:
Probé varios métodos mencionados, incl. Complemento gratuito FineThreshold http://www.mehdiplugins.com/english/finethreshold.htm . 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 parte 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.
Eventualmente encontré el efecto "Umbral dinámico" que es parte de Zoner Photo Studio v15 . Su versión de evaluación es gratuita durante algún tiempo, supongo. Parece compensar el umbral de blanco y negro de acuerdo con la luminosidad del vecindario. Su aplicación es un proceso de un solo paso. Para mí, los parámetros "Grande, valor +14" funcionaron muy bien. Además del "Editor", Zoner también contiene 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 vieja impresora láser de 300 dpi con excelente contraste.
Ahora, la única tarea pendiente que estoy buscando es el RECORTE automático de cada imagen de una manera inteligente para recortar los márgenes innecesarios. Cualquier sugerencia es bienvenida porque el recorte manual es aburrido y requiere mucho tiempo.
Había un complemento en el registro de complementos de GIMP que hacía 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()
Solo prueba con photoshop. Modo de escala de grises.
adam schuld
usuario41141