• Publicidad

Borrar pixel de una imagen y volver a generar

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Borrar pixel de una imagen y volver a generar

Notapor jimr1984 » 2015-06-29 10:10 @465

Hola, buenas tardes.

Tengo el siguiente problema, el cual me pregunto si con Perl puedo solucionarlo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
demo.jpg/png           tamaño   95x33  píxeles  |  FONDO  BLANCO    Letra HOLA y (. )  COLOR negro
-------------------------
|  . .   .   .     .  . |  
|     HOLA  .   .  .    |
|  .      .             |
|   .         .         |
-------------------------
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


ESTA Es una imagen en cualquier formato jpg o png.

El procedimiento que quiero realizar es:
+ obtener el tipo de archivo
+ las dimensiones alto y ancho
+ LEER píxel a píxel
for(my $i=0 ; $i<= $demo.alto ; $i++)
for(my $j=0 ; $j<= $demo.ancho ; $j++)
+ mostrar el código de cada píxel, su código en hexadecimal o entero u otro valor el cual me permita Identificar al color que corresponde cada píxel. En esta IMAGEN se asume que solo deberá tener 2 colores: blanco y negro.

Si pudiésemos leer la imagen y obtener sus códigos y mostrarlos quedaría algo así: ejemplo (1 negro, 0 blanco)
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
000000000000000000
001000000000100000
000010000000000000
000001111111111000
000000000000000000
000100000000010000
001000000000001000
010000000000000100
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


+ lo siguiente debería ser eliminar los "puntos" o los 1 que se encuentren "solos", es decir, quitar el ruido de la imagen quedando
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
000000000000000000
000000000000000000
000000000000000000
000001111111111000
000000000000000000
000000000000000000
000000000000000000
000000000000000000
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

+ y volver a crear otra imagen con estos datos y quedando una imagen limpia
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
-------------------------
|                       |  
|     HOLA              |
|                       |
|                       |
-------------------------
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Y con esto se finalizaría. Con PHP he visto que esto es posible.

Me pregunto si Perl me ofrece la posibilidad de resolver este problema.
Y si alguien puede darme algunos ejemplos, por favor.


Saludos.
Última edición por explorer el 2015-06-29 11:23 @516, editado 1 vez en total
Razón: Poner márcas de texto; pixel => píxel;
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341

Publicidad

Re: Borrar pixel de una imagen y volver a generar

Notapor explorer » 2015-06-29 16:04 @711

Yo usaría la utilidad convert, del paquete ImageMagick.

En los foros de esta utilidad hay ejemplos de cómo hacer eso. Por ejemplo, Removing noise from scanned text document y Cleaning up noise around text Esta última, usando la opción -morphology close.

Estas herramientas son algo complicadas. Me refiero a la búsqueda de las opciones correctas. Pero una vez que las tienes, procesa las imágenes a toda velocidad. Y desde Perl, ni siquiera tienes que instalar un módulo: te vale con ejecutar el comando externo con system() o qx().

Apuesto a que el programa en PHP usa la biblioteca de ImageMagick para hacer su trabajo. Si lo quieres hacer en Perl, recuerda que existe PerlMagick. Pero para usarlo invertirás el mismo tiempo que para aprender a manejar las herramientas de ImageMagick (básicamente, porque se usan de la misma manera).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados