Apuntes

Limpieza de apuntes escaneados

Reducción de colores

Mejora de imágenes de apuntes

Imagen escaneada original

Imagen procesada

Proceso

El proceso consiste en coger una imagen y hacer una limpieza de la misma para mejorar la nitidez y reducir la memoria que ocupa el fichero que la contiene.

Origen de la idea

A partir del artículo de @mzucker en github allá por el 2017

Luego en el 2020 lo vi en un tuit de @microsiervos y me decidí a poner aquí la versión en Java

¿Qué hace?

Para mejorar la imagen lo que hace es

  • Escoger unos pocos puntos al azar (%)
  • Crear, a partir de ellos, una paleta de 8 colores mediante clusterización
  • Pasar todos los puntos de la imagen a uno de esos 8 colores
  • Guardar con formato .png

Código fuente en Java

La implementación que he hecho, basándome en la de python, usa las siguientes clases

  • Apuntes: realiza todo el proceso
  • C3: encapsula un punto de color
  • Cluster: un conjunto de puntos y su centroide
  • KMeansmod: para hacer agrupaciones de puntos (colores) similares
  • HSV: operaciones auxiliares de color
  • Point: un punto del cluster

Ficheros generados

  • Copia del fichero original
  • Paleta utilizada
  • Ficheros procesados en distintos formatos (jpg y png) y con dos librerías gráficas

Paleta de la imagen de ejemplo

Mejoras

La reducción no siempre sale del todo bien.

Sería necesario fijar que la paleta tenga el color blanco, para que no aparezcan cosas como las de la siguiente imagen

La imagen original era ésta

Y la paleta que generó ésta

Enlace al código

Aquí están los ficheros java

Disclaimer

El código lo hice deprisa y corriendo en el 2017, hay restos de código heredado de otros proyectos (por ejemplo C3.toColorGB4() que pasa puntos a la paleta de la gameboy monocroma) y demás cosas que no he limpiado.

Contacto

¿Quieres contactar conmigo?

@xblasco.com (blueSky)

@xblasco (twitter)

Vuelta al índice

índice