elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Procesamiento de imagenes PNG
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Procesamiento de imagenes PNG  (Leído 4,448 veces)
ixak1

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Procesamiento de imagenes PNG
« en: 19 Junio 2012, 05:51 am »

Hola buenas noches(o dias) a todos!, soy nuevo en este foro y hoy decido registrarme para formar parte de su comunidad, me gusta mucho la información técnica que hay aquí.
Bueno, ahora si al punto. la idea es hacer poder procesar imagenes en formato PNG desde luego en blanco y negro y poder transformarlas a caracteres pequeños.

A grandes rasgos tengo la idea de hacer una estructura que contenga los niveles de negro, gris y blanco y de alguna forma hacer un conteo de bits o reconocimiento de pixel por pixel. 
No se que tan loca sea la idea y NO QUIERO que me resuelvan la vida pero esto es nuevo para mi y nisiquiera se como buscarlo en google pues nisiquiera se como se llama la tecnica. aun así ya lo hice y al parecer se necesitan librerias externas etc etc..  bueno lo quiero hacer un poco más basico para leer PNG.

La plataforma desde la que programo es UBUNTU con gcc.

se podrá usar fopen() para abrir la imagen? como hago ese reconocimiento?.


Si la riego en algo con confianza digan que onda =).


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Procesamiento de imagenes PNG
« Respuesta #1 en: 19 Junio 2012, 08:07 am »

¡Buenas!

Sobre como leer los datos de la imagen... No se si habra librerias ya escritas (¡tiene que haberlas!), yo estas cosas las hago a pelo, me busco en internet la especificacion del formato, y luego me pongo a trabajar en ello (si no es muy complicado). Tengo entendido que un png es una imagen sin compresion (o con compresion pero sin perdida de datos...), por lo que lo logico seria que tuviese algun tipo de encabezado describiendo ancho, alto, profundidad del color, compresion, inicio de la imagen dentro del fichero... y luego estuviese la informacion de la imagen en bruto, por ejemplo por filas (y en formato RGB, referencias a una paleta o algo parecido), de tal forma que ya podrias leerla para procesarla.

El tema de como pasarla a ASCII, si quieres hacerlo tu... no se. Podrias intentar hacer comparaciones con fuentes de tamaño (altura,anchura) fijo. Mides en la fuente la proporcion blanco/negro y tendras una tabla de referencia, tendras que tener una funcion que te evalue en la imagen un pixel o una zona del tamaño del caracter a un valor que puedas comparar con el del caracter, y asi escogerias la letra que mas te convenga...

No se si sera un buen metodo, solo es uno, supongo que tendras muchas formas de hacerlo. Unas mas fieles al original y otras mas rapidas...


En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
ixak1

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Procesamiento de imagenes PNG
« Respuesta #2 en: 19 Junio 2012, 18:38 pm »

Pues por ahí voy iniciando, buscando la descripción del formato, comenzaré con blanco y negro ( para no complicarme la vida ), y como tu dices do-while, tiene encabezado, ancho y alto e información sobre los colores, bueno eso en teoría, pues todavía no se como obtener esa información desde el código de C, empleando funciones compatibles con gcc.
Sobre el reconocimiento de caracteres, habrá alguna normativa de como hacer un análisis de la profundidad del negro y comparar con el área negra de cada carácter ?.

Ya comienzo a verle luz a este proyecto. =).
En línea

ixak1

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Procesamiento de imagenes PNG
« Respuesta #3 en: 24 Junio 2012, 04:33 am »

Bueno voy avanzando, espero el martes de la prox semana tener algo de codigo ya hecho, igual para quien le interese.

1.- lee información de la imagen en forma binaria.
2.- se copia la información binaria a memoria.
3.- la matriz tridimensional se reduce a pares para sumar 4 pixeles RGB
4.- esos 4 pixeles se promedia sus niveles RGB y se obtiene un tono de gris
5.- El tono de gris tiene un valor numérico, ese valor numérico, valorado en un rango.
6.- el valor del carácter ascii escogido previamente será comparado con el valor numérico del gris de nuestro nuevo "super pixel"
7.- Se van colocando esos promedios, que a su ves los cambia por caracteres y se va formando la nueva matriz, se va guardando.


practicamente se va a convertir una imagen a escala de grises y se va a pixelar, cada super pixel se cambia por un caracter y asi se obtiene un lindo dibujo ascii =).

Si alguien tiene una mejor idea pues bien recibida.
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Procesamiento de imagenes PNG
« Respuesta #4 en: 25 Junio 2012, 05:28 am »

Revisa estas especificaciones.

http://www.iso.org/iso/catalogue_detail.htm?csnumber=29581
http://www.libpng.org/pub/png/spec/1.1/           <-- recomendada.

P.D.: Google no muerde.

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Procesamiento de Imagenes
PHP
Choclito 1 3,361 Último mensaje 7 Octubre 2011, 04:49 am
por Beakman
Lenguaje para procesamiento de imágenes
Programación General
Stoya 0 3,945 Último mensaje 16 Diciembre 2011, 08:26 am
por Stoya
Procesamiento de una estructura en c++
Programación C/C++
warfire_15 1 1,895 Último mensaje 27 Mayo 2012, 07:27 am
por exel
Problemas con el nivel de procesamiento de zebra crossing
.NET (C#, VB.NET, ASP)
aixeiger 1 1,560 Último mensaje 2 Octubre 2012, 22:51 pm
por Keyen Night
PROCESAMIENTO DE IMAGENES
Java
Diell 0 1,238 Último mensaje 9 Octubre 2012, 16:55 pm
por Diell
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines