domingo, 28 de octubre de 2012


TRANSFORMADA DE HOUGH

Es una técnica ampliamente utilizada en la visión por computador, análisis de imágenes y en el procesamiento digital de las mismas. Su función es identificar figuras particulares dentro de una imagen como: líneas, círculos, elipses, entre otras.

La ecuación que describe la detección de líneas es la siguiente:


Donde r es la distancia de la línea y el origen, es determinado por teta. Para entender mejor, mirar el siguiente gráfico:
Fig 1. Transformada de Hough para una recta.


Ejemplo de detención de líneas:


Fig 2. Ejemplo de detección de líneas.


*      Por cada punto, se forman diferentes ángulos respecto al eje x.
*      Cada línea genera una perpendicular que parte del origen.
*       La longitud del punto como el ángulos son medidos en su proceso reiterativo.  

Entre las aplicaciones modernas se encuentra la detección de bordes y el gradiente como se aprecia a continuación:


Fig 3. Imagen original y detección de bordes

Fig 4. Gradiente

La transformada de Hough es un algoritmo con gran aplicación en el procesamiento de imágenes, ya que permite detectar bordes y figuras geométricas determinadas, pudiéndose utilizarse en aplicaciones para un resultado específico.

                        
                                

miércoles, 24 de octubre de 2012


EL PODER DE LA AUTOMATIVACIÓN

El principio básico por el cual una persona se introduce a estudiar una carrera es el gran interés que los temas de esta, le generan. Al pasar los semestres, obtener malas calificaciones, el desinterés aumenta y las expectativas disminuyen. Todo se remonta a obtener una buena nota que permita aprobar la asignatura.

Esa nota generada, es lo que marca en el mundo moderno; el conocimiento que posee la persona acorde a un tema específico. No quiere decir que esto sea lo real, muchas veces las calificaciones no corresponden al resultado esperado por el trabajo o estudio realizado.
El autor propone un nuevo método de educación que parte de las bases de la motivación. Como prueba de ello, con ayuda de colegas, generó un curso donde los estudiantes hicieran un computador, partiendo desde el hardware y software necesario. Luego de haberlo culminado, ellos mismos, podrían correr un juego también creado. Algo fabuloso, de gran interés, que fue publicado en la web como open source.

Este programa con la ayuda del Internet, fue tan exitoso que se volvió masivo. Haciendo así que muchas personas lo desarrollaran paso a paso, creando e implementando diferentes aplicaciones en él, como juegos. Todo esto impulsado por la pasión de aprender.

Además Shimon Schocken, desarrolló una serie de aplicaciones en el ipad que permite entender los conceptos fundamentales de Matemáticas, para niños de primaria. Donde pueden aprender de forma didáctica, sin desplazar a un lado la labor del docente.

Aunque las notas no representa la mejor forma de clasificación. La motivación es un factor muy importante para llegar a cumplir los objetivos trazados. ¿No cambiarían nuestras notas si no hubiera un gran interés hacia las materias que veamos? ¿Qué pasaría si todo esto se mezclara con la disciplina?  

lunes, 8 de octubre de 2012

Teach Yourself...

Teach Yourself…

Uno de los lemas más vistos en los libros, prometen aprender lenguajes desde un mes hasta pocas horas. ¿Pero será que esto si será cierto?

En poco tiempo no se alcanzan a hacer ejercicios suficientes que permitan coger habilidades en la programación de cierto lenguaje. Lo único que hará es familiarizarse con la sintaxis del mismo (si ya ha programado anteriormente en otro lenguaje), sin conocer las fortalezas o debilidades del programa a fondo.  

Según los investigadores presentado en el artículo, una destreza se adquiere en promedio a los diez años de aprendido. Esto no solo se demuestra en la programación, sino en la música y el arte. Lo que lleva a adquirir estar fortalezas es la práctica de la misma de forma consecutiva.

Por ello la siguiente frase es la más pertinente:
"A language that doesn't affect the way you think about programming, is not worth knowing"

Aprender a fondo un lenguaje da una forma objetiva de la utilización del mismo en aplicaciones específicas, pues puede resultar muy eficiente o ineficiente, de acuerdo donde se use. Por ejemplo: MATLAB es un programa de simulación matemática, efectivo a la hora de realizar modelado de controladores pero ineficiente a la hora de trabajar en imágenes porque demora gran tiempo en su  procesamiento sin contar el alto costo de su licencia, a comparación de opencv.

Para hacer un buen programador no solo requiere de tiempo, sino de estar interesado en el tema, programar constantemente, hablar con otros programadores, leer sus programas y entenderlos, hacer proyectos que impliquen programar con otras personas, verificar los programas de los proyectos ya realizados, aprender diferentes lenguajes de programación, seguir reglas de estandarización, actualizarse continuamente, entre otras cosas más.

En pocas palabras, paciencia, estudio y sacrificio. Características esenciales que al final darán sus frutos. ¿Quién no necesita un programador en su empresa?

Reconocimiento de imágenes que lleva a realidad aumentada


Reconocimiento de imágenes que lleva a realidad aumentada


A medida que han amentado las capacidades de almacenamiento y procesamiento de los computadores, ha dado campo al desarrollo de diferentes áreas, entre una de ellas se encuentra el procesamiento de imágenes.  Lo que antes se pensaba como ciencia ficción, ahora se está convirtiendo en realidad.

Lo que se presenta en el video de TED como realidad aumentada, es un tema innovador en la actualidad. Su mayor característica es que es una aplicación totalmente abierta, lo único que depende es de un dispositivo con cámara y una conexión a Internet para su descarga y posterior uso.

Cuantas aplicaciones se podrían crear no solo al área del entretenimiento, sino en la educación, prensa, información turística, etc?

Actualmente conseguir un Smartphone en el mercado es fácil para las personas que  tengan los recursos suficientes. Pero en un futuro, los precios de estos equipos disminuirán hasta tal punto, que serán accesibles a cualquier persona y cuando esto suceda, la forma de percibir al mundo será totalmente diferente de lo que es ahora.

En mi concepto personal, lo único que espero, es que esta tecnología tan prometedora no vaya a ser destinada a malos fines.

martes, 25 de septiembre de 2012


Femtofotografía y sus alcances

A medida que el tiempo pasa hemos visto como la fotografía ha cambiado drásticamente, desde las grandes cámaras a blanco y negro hasta las minis que se pueden tomar imágenes debajo del agua. Además, la calidad de las imágenes ha mejorado notoriamente a su vez, la velocidad de capturación de la misma.

50 años después, se puede tomar una imagen un millón de veces más rápido, esto es lo que se conoce como femtofotografía.  Lo más impresionante es que permite ver en cámara lenta el movimiento de la luz en el tiempo, menor a nanosegundos que corresponde a la velocidad de la misma.

Para ello, el MIT ha desarrollado una cámara con poco tiempo de resolución y con baja exposición a la luz que permite la reconstrucción en 3D de objetos ocultos. El procesamiento de estos videos solo pueden darse en supercomputadoras, ordenadores lo cuales no son accesibles al público, que conlleva así mismo altos costos.

Entre sus posibles aplicaciones se encuentran: rayos x, autos que eviten colisiones,  buscar personas en lugares peligrosos, endoscopios, cardioscopios, evaluación de maduración de la fruta, entre otros.
La femtofotografía promete cambiar la visión que se tiene de la fotografía llevándolo a un lugar inimaginable hace unos años. Para desarrollar las aplicaciones nombradas anteriormente, se deben reducir los costos de las supercomputadoras, mejorar los algoritmos de compresión actuales y disminuir el tamaño de los circuitos integrados. Además de personas disciplinadas, apasionadas al tema, para desarrollo de sistemas de implementación.  



domingo, 12 de agosto de 2012

Contraste, Brillo, Coreccion gamma




Contraste de una imagen
El contraste, se define como: “el cambio de luminosidad entre las zonas más oscuras o más claras de la fotografía“[1].  En la percepción humana, este parámetro está dado por la diferencia de color y el brillo, desde el mismo ángulo de vista. Esta percepción es captada por el sistema visual humano.
Diferentes estudiosos sobre el tema, han creado sus propias definiciones acerca del contrate, ellos son:
  •       Webber, su uso más común es cuando la iluminancia del fondo es muy parecida a la iluminancia intermedia.
  •            Michelson, los patrones de brillocidad y de oscuridad son equivalentes.
  •            RMS, contraste no depende de la distribución espacial.


La sensibilidad de contraste permite medir en los individuos, la diferencia de poder distinguir una imagen con diferentes niveles de luminosidad. Se obtiene una sensibilidad máxima a la edad de los 20 años. Este factor se disminuye con el paso de los años o con el padecimiento de enfermedades visuales como: las cataratas o la retinopatía diabética. Los últimos estudios realizados  demuestran, que se puede mejorar ligeramente mediante el uso de videojuegos.
Cabe resaltar que el contraste es uno de los parámetros de fácil modificación mediante software, su manipulación puede ocasionar, el aumento o la perdida de la calidad de la imagen, ya que aumenta o disminuye la diferencia de luminosidad entre los pixeles más claros y más oscuros de la figura.
Una imagen compuesta por colores blanco y negro presenta un contraste evidente, a diferencia de una imagen en escala de grises.  

Brillo de una imagen
Representa cambiar la luminosidad de la imagen  de forma uniforme.
Al igual que el contraste, el brillo es un factor de fácil manipulación con ayuda de software, un poco brillo se traducirá en tonos oscuros mientras que el aumento del mismo en colores claros y pasteles. Aumentar de forma excesiva este factor puede presentar una saturación de la imagen.

Corrección gamma
Es la modificación de los valores de intensidad de una imagen con el fin de contrarrestar las variaciones en los dispositivos de salida.  Se debe realizar la corrección gamma para que la imagen luzca igual tanto en un notebook como en un PC de la marca  HP.

Este factor se rige por la siguiente formula:

El factor gamma es igual a 1 no hay corrección. Cuando este valor es mayor que uno, hay una gran corrección de contraste y el brillo aumenta en valores intermedios. Si este es menor que uno, hay poca corrección de contraste y el brillo disminuye en valores intermedios.  


Imagen 2. Correción Gamma. [2]
Los editores más modernos cuentan con esta poderosa herramienta que permite ver algunos detalles fuera de las sombras en los monitores. Recibe también el nombre de “Curves”, se encuentra en el menú de color, se puede utilizar en cualquier parte del programa.
Bibliografía
http://www.efectohd.com/2008/09/entender-la-correcion-de-gamma.html

domingo, 22 de julio de 2012

Ejemplos ficheros BMP


Ejemplo 1-  Colores Bitmap (10*5)

La imagen en bits y Bytes – negro: cero,  blanco: uno

Volcado de memoria con HexEdit



Ejemplo 2 -  Colores Bitmap (10*5)

Volcado de memoria:

Expliación:




Ejemplos citados de:

Formato BMP



El formato BMP (Bitmap image file), desarrollado por Microsoft Corp. e IBM conjuntamente, fue introducido con Windows 3.0 en el año 1990. Un archivo BMP es un mapa de bits, donde existe una matriz de  pixeles  que se le asigna una dirección asociada a un código de color. Esto se conoce como una imagen. Su extensión puede ser  .bmp o .dib.


Ventajas:
*      Sencillez.
*      Fácil manipulación en la plataforma de Windows.
*      No se pierde la calidad de la imagen al no tener compresión.
*      Dejan comprimirse mediante ZIP o RAR, reduciendo su peso a la mitad.


Desventajas:
*      Al no ser comprimidos ocupan un gran tamaño.
*      Gran número de navegadores no aceptan este formato como imagen.



La estructura de un archivo BMP cuenta de tres o cuatro partes que se componen de:
*      Encabezado del archivo, especifica el tipo y el tamaño del archivo.
*     Encabezado de Información, proporciona las dimensiones, tipo de compresión y el formato de color.
*   Paleta (opcional), Contiene un arreglo de colores  utilizado para obtener la imagen.
*     Cuerpo de la imagen

El color de cada pixel está definido individualmente para obtenerlo se utiliza una combinación de rojo, verde y azul. Cada color se le asigna un valor numérico y  el rango de números depende de los bits utilizados para referenciarlos.  Si es 1 bit solo se permite dos colores (Ejemplo No 1).


Tabla 1. Estructura del encabezado del archivo. [1]
BITMAPFILEHEADER (Tamaño: 14 Byte)
Offset (Byte)
Tipo de dato
Tamaño
Nombre
Contenido
Dec
Hex
0
0
WORD
2 Byte
bfType
Cadena ASCII "BM" (valor decimal 19 778).
2
2
DWORD
4 Byte
bfSize
Tamaño de archivo BMP en bytes. (no fiable)
6
6
DWORD
4 Byte
bfReserved
0
10
A
DWORD
4 Byte
bfOffBits
Desplazamiento de los datos de imagen en bytes desde el comienzo del archivo.


Tabla 2. Estructura del encabezado de  la información. [2]
BITMAPINFOHEADER (Tamaño: 40 Byte)
Offset (Byte)
Tipo de dato
Tamaño
Nombre
Contenido
Dec
Hex
14
E
DWORD
4 Byte
biSize
40 (tamaño de la estructura BITMAPINFOHEADER en bytes)
18
12
LONG
4 Byte
biWidth
Ancho del mapa de bits en píxeles.
22
16
LONG
4 Byte
biHeight
La cantidad indica la altura del mapa de bits en píxeles.
Si el valor es positivo, el mapa de bits es un mapa de bits llamado "bottom-up '(datos de la imagen comienza con el más bajo y terminando con la línea del borde superior). Esta es la variante más común.
Si el valor es negativo, el mapa de bits es un "top-down" de mapa de bits (datos de la imagen comienza con el extremo superior e inferior con la línea de la imagen).
26
1A
WORD
2 Byte
biPlanes
1 (como en algunos formatos mayores, tales como PCX para el número de planos de color, pero no se utiliza para BMP)
28
1C
WORD
2 Byte
biBitCount
Especifica la profundidad de color de mapa de bits bpp, debe ser uno de los siguientes valores: 1, 4, 8, 16, 24 o 32 En bpp 1, 4 y 8, los colores se indican. 16 y 32 bpp son poco comunes.
30
1E
DWORD
4 Byte
biCompression
Uno de los valores siguientes:
§ 0 (BI_RGB) datos de la imagen es comprimida.
 1 (BI_RLE8): longitud de ejecución de datos de imagen codificados son de 8 bpp. Sólo se permite si biBitCount = 8 y biHeight positivo.
 2 (BI_RLE4): run-length imagen codificada bpp de datos para 4 personas. Sólo se permite si biBitCount = 4 y biHeight positivo.
 3 (BI_BITFIELDS): datos sin comprimir imágenes y códigos definidos por el usuario (el uso de máscaras de color). Sólo se permite si biBitCount = 16 ó 32, poco frecuentes.
34
22
DWORD
4 Byte
biSizeImage
§  Wenn biCompression=BI_RGB: Entweder 0 oder die Größe der Bilddaten in Byte.
§  Ansonsten: Größe der Bilddaten in Byte.
38
26
LONG
4 Byte
biXPelsPerMeter
La resolución horizontal del dispositivo de salida de destino en pixels por metro, pero está programado para archivos BMP por lo general a 0.
42
2A
LONG
4 Byte
biYPelsPerMeter
La resolución vertical del dispositivo de salida de destino en pixels por metro, pero está programado para archivos BMP por lo general a 0.
46
2E
DWORD
4 Byte
biClrUsed
  • Si biBitCount = 1: 0
  • Si biBitCount = 4 u 8: el número de entradas en la tabla de colores, 0 significa que el número máximo (16 o 256).
  • En caso contrario: el número de entradas en la tabla de colores (0 = no hay tabla de colores). Incluso si no es necesario en este caso, un todavía se puede dar para la tabla de cuantificación de color recomendada de color.
50
32
DWORD
4 Byte
biClrImportant
  • Si biBitCount = 1, 4 u 8: El número de todos los colores utilizados en la imagen, 0 significa que todos los colores en la tabla de colores.
  • En caso contrario:
Si existe una tabla de colores y que todos los colores utilizados en la imagen incluye: su número.
 En caso contrario: 0