Búscalo aquí:

Reflejar los píxeles de una Imagen [código]

Como ya es conocido, una imagen es representado como una matriz numérica, donde cada elemento de dicha matriz representa un píxel de la imagen. De la misma manera, una de las tareas más comunes en el procesamiento de imágenes es el de convolucionar dicha matriz para conseguir un determinado objetivo.


La convolución de una matriz que representa una imagen indica que se debe de multiplicar una pequeña sub-matriz (rejilla) de una determinada dimensión (menor a la dimensión de la imagen original) formada a partir de un píxel de referencia, por una matriz especial llamada matriz de convolución (una matriz de filtro gaussiano, por ejemplo).

Si bien es cierto, esta tarea es sencilla y es simple de implementar en el código de un programa, existe un problema al que siempre nos veremos enfrentados, este es: ¿cómo generar la sub-matriz de la imagen a partir de un píxel de referencia que se encuentra en los extremos de la imagen (píxeles limitantes)?.

Es, decir, por ejemplo, si necesitamos crear una sub-matriz de dimensión 10 x 10 píxeles tomando como referencia el primer píxel de la imagen (posición (1,1)), deberíamos tomar 5 píxeles a la izquierda, 5 píxeles a la derecha, 5 pixeles hacia arriba y 5 píxeles hacia abajo, del píxel de referencia. Pero dado a que tomamos el de la posición (1,1), no tenemos píxeles a la iquierda ni hacia arriba, lo que siginificará que tendremos problemas en la compilación por acceso a índices no existentes.

Para solucionar esto, se usa la reflexión de matrices. Para esto tomamos un determinado valor de radio (en el ejemplo anterior el radio sería 5). Con este radio lo que hacemos es agrandar la matriz de la imagen original, agregando a los extremos (superior,inferior,izquierdo y derecho) una banda más de píxeles (con la cantidad de radio necesitada). Así, podemos realizar la tarea de convolución sin preocuparnos por acceso a índices incorrectos.

El código en matlab de la reflexión de píxeles de imágenes es el siguiente:

  1. %author: Jorge Valverde Rebaza
  2. function M = RefMatriz(imagen,radio)
  3. im=imread(imagen);
  4. imD = double(im);
  5. imaux = imD;
  6. M = imD;
  7. [f,c] = size(imagen);
  8. %primero reflejamos las filas superiores
  9. for i=1 : radio
  10. F = imaux(i,:);
  11. M = [F;M];%le agrego una fila mas
  12. end
  13. %reflejamos las filas inferiores
  14. cont = 0;
  15. i = f;
  16. while cont<radio %iremos retrocediendo
  17. F = imaux(i,:);
  18. M = [M;F];
  19. cont = cont+1;
  20. i = i-1;
  21. end
  22. imaux = M; %ahora actualizamos la matriz auxiliar
  23. %ahora reflejamos las columnas
  24. for i=1 : radio
  25. C = imaux(:,i);
  26. M = [C M];
  27. end
  28. cont = 0;
  29. i = c;
  30. while cont<radio
  31. C = imaux(:,i);
  32. M = [M C];
  33. cont = cont+1;
  34. i = i-1;
  35. end

Los resultados de ejecutar este código con la imagen de lena y usando un radio de tamaño 30 píxeles, se pueden observar en la siguiente figura:



Además, como se podrán haber dado cuenta, la imagen reflejada tendrá una mayor dimensión que la original debido a que se le agregaron bandas de píxeles en sus extremos.

En la siguiente imagen se ha marcado con una elipse de color rojo aquellas zonas en las que se a realizado el reflejo de píxeles.



Espero les sea de utilidad, saludos.


Quieres leer más post como éste???...suscribete aquí!!!



Oracle Magazine gratis

La multinacional Oracle, una de las más grandes empresas de software empresarial del mundo ya tiene lista su revista: Oracle Magazine y su descarga es gratuita.


En esta edición se detallan artículos de estrategias tecnológicas, algunos códigos de ejemplo, algunos trucos de programación, las últimas noticias de Oracle y sus asociados, artículos de ‘cómo hacer’ (how to) tanto para desarrolladores como para DBA’s (Administradores de Bases de Datos) y muchísimo más.

La revista está orientada de preferencia solo a gente especializada a TI (Tecnología de la Información) pues se trata de material técnico y de calidad empresarial.

Para descargar gratis la última edición de Oracle Magazine debes de suscribirte AQUI, llenarndo la ficha que se te presenta y luego te llegará a tu correo una copia original de la Oracle Magazine en formato PDF.



Quieres leer más post como éste???...suscribete aquí!!!


Cloud Computing y su impacto en las empresas de TICs


Cloud Computing, o Computación en Nube, es un término relativamente conocido. Es una tecnología que permite ofrecer servicios de computación a través de Internet. La nube es una metáfora de Internet. El cloud computing tiene una característica muy importante y diferenciadora que consiste en que el acceso a la información de servicio es siempre compartido. Ejemplos de este cloud computing son Amazon EC2 o Google Apps que proveen aplicaciones de negocio accesibles desde un navegador mientras que el software y los datos son almacenados en los servidores.


El cloud computing es una buena posibilidad para las empresas TIC. Ello es debido a que se cambia el modelo de relación comercial entre el consumidor y la empresa. En este modelo, en lugar de gestionar sus propios sistemas informáticos, contratan los servicios que necesitan de un tercero que los presta desde sus centros de proceso situados en la red (cloud). De esta manera, se minimizan los costos de implementación y costos operativos directamente para la empresa que contrata los servicios.

De esta manera, una empresa que implementa un modelo empresarial basada en cloud computing puede tener diversas ventajas, respecto al modelo convencional, entre las que destacan: acceso inmediato a los servicios sin necesidad de adquirir hardware o software, costes anuales potencialmente inferiores debido al uso de servicios, y ventajas provenientes de una conexión a Internet (aplicaciones disponibles desde cualquier lugar de acceso).

En relación con las desventajas o con los posibles riesgos, en línea con lo que explica José Antonio Fernández para ENTER, es posible hacer determinadas afirmaciones. En primer lugar, es preciso asegurar que los datos de los clientes estén separados de los demás y perfectamente controlados (téngase en cuenta que éstos estarán en el cloud, que es un entorno compartido). En segundo lugar, existe la necesidad de garantizar la seguridad al cliente: control de datos, registro de los mismos, aplicación legislativa, procedimientos de salida y recuperación de datos, etc. Estos riesgos, vinculados generalmente a la seguridad de la red acaben siendo minimizadas por soluciones futuras y por las ventajas que el modelo de cloud computing ofrece a las empresas de TIC.

Por ello, el Centro del IE Business School para el Análisis de la Sociedad de la Información y las Telecomunicaciones, Enter, ha hecho público un informe que analiza el modelo de cloud computing y sus futuras posibilidades, afirmando que este nuevo modelo tiene un futuro brillante.



Quieres leer más post como éste???...suscribete aquí!!!


Fuente: Tendencias 21

Binarización de Imágenes [código]

La binarización de imágenes es una tarea básica en muchas aplicaciones de procesamiento digital de imágenes. El objetivo es obtener una imágen que solo sea representada por dos tonos de color, por general: blanco y negro. La idea para realizar este trabajo es sencilla, solo debemos decidir que tono de color dar a cada píxel que sea mayor que un determinado umbral (valor límite), el resto de píxeles tendrán por defecto el otro tono de color.

En la imagen se muestra la tradicional fotografía de Lena binarizada, usando un valor de umbral = 120. La imagen original se encontraba en escala de grises, y todos los píxeles superiores a 120 tomaron tono blanco, los demas, tomaron el tono negro.

El código fuente en matlab de la función binarizar es el siguiente:
  1. %author: jorge Valverde
  2. function y = Binarizacion(imagen,umbral)
  3. im=imread(imagen);
  4. imD=double(im);
  5. [f,c]=size(imD);
  6. for i=1:f
  7. for j=1:c
  8. if imD(i,j)<=umbral
  9. nuevaI(i,j) = 0;
  10. else
  11. nuevaI(i,j) = 255;
  12. end
  13. end
  14. end
  15. imB = uint8(nuevaI);
  16. imshow(imB);
  17. y = nuevaI;

Espero les sea de utilidad, saludos.




Quieres leer más post como éste???...suscribete aquí!!!


Problema de Factorización Entera: Algoritmo de Pollard Rho [código]

Uno de los problemas de la Teroría de Números y que es la base de la robustez de muchos algorimos de cifrado (como el RSA), es el problema de la factorización entera. El problema se establece en hallar la factorización de un entero n en factores primos.

Residuos Cuadráticos [código]

En Teoría de Números uno de los conceptos más utilizados es el de residuo cuadrático módulo m a cualquier entero r primo con m para el que tenga solución la congruencia: x^2 = r (mod m), o lo que es lo mismo cuando r es un cuadrado perfecto módulo m, y que por lo tanto tiene una raíz cuadrada en la aritmética de módulo m. A los enteros que no son congruentes con cuadrados perfectos módulo m se les denomina no-residuos cuadráticos.

Crean Robot que obedece órdenes verbales y no verbales

Investigadores de la Universidad de Brown, en Estados Unidos, han creado un robot que puede seguir los gestos humanos, en varios entornos (interiores y exteriores) sin tener que hacer ajustes por los cambios de luz. Presentado en la feria Human-Robot Interaction en San Diego, California, entre el 11 y el 13 de marzo, este avance supone un importante paso hacia la fabricación de robots completamente autónomos, según informa la Universidad de Brown en un comunicado.


Según declaró Chad Jenkins, profesor de Ciencias de la Computación de la Universidad de Brown y director del proyecto, en el comunicado emitido por la universidad, el sistema creado es novedoso, y permite que el robot siga a las personas a cierta distancia, sin que éstas tengan que llevar una ropa especial ni estar en un entorno concreto. De esta manera, utilizando una serie de señales realizadas con el brazo y la mano como “sigue”, “espera” o “para”; podemos dar las instrucciones necesarias al robot. El robot obedece a los investigadores mientras avanza detrás de ellos a través de los estrechos pasillos del interior de un edificio o por un parking exterior, manteniendo siempre aproximadamente la misma distancia (un metro) con respecto a las personas a las que sigue.

También con señales y con órdenes verbales, los científicos hacen que el robot atraviese una puerta abierta, se detenga, se dé la vuelta y atraviese la misma puerta en sentido contrario. Por último, el robot se detiene cuando la persona a la que sigue desaparece de su campo de visión, y “espera” hasta que su instructor regresa y le da otra orden verbal o no verbal.

El punto de partida de este robot es un PackBot, una plataforma mecanizada desarrollada por la compañía iRobot y que ha sido muy utilizada por el ejército norteamericano para eliminar bombas, entre otras tareas.

Los investigadores equiparon esta plataforma con una cámara y con un ordenador portátil que incluye novedosos programas informáticos que permiten a la máquina reconocer los gestos humanos, descifrarlos y responder ante ellos. Los científicos realizaron dos avances clave con el robot, con respecto a la tecnología ya existente. El primer avance teconlógico se relaciona con lo que se denomina el reconocimiento visual.

Aplicado a los robots, este concepto significa ayudar a éstos a orientarse por ellos mismos con respecto a otros objetos que haya en un entorno determinado. Los investigadores de la Universidad de Brown superaron este problema creando un software que permite que el robot reconozca a las personas extractando de éstas una silueta. Así, el robot puede seguir a sus instructores, y también recibir órdenes sin que lo “distraigan” otros objetos o personas que se encuentren en el mismo lugar.

El segundo avance tecnológico estaría relacionado con la cámara incorporada al PackBot. El equipo empleó una cámara CSEM Swiss Ranger, que utiliza la luz infrarroja para detectar objetos y establecer distancias entre la cámara y el objetivo y, también, entre la cámara y cualquier otro objeto que entre en el campo de visión.

El resultado es un robot que no necesita control remoto ni vigilancia constante, lo que resulta un paso esencial hacia el desarrollo de dispositivos autónomos. Los investigadores esperan que el robot vaya obedeciendo cada vez a más órdenes verbales y no verbales, y que se pueda ampliar la distancia a la que ahora mismo se debe mantener de sus instructores para recibir dichas órdenes.

Todavía está lejos el momento en que los humanos podamos dirigirnos a nuestros robots personales para darles órdenes, y que éstos reaccionen haciendo exactamente lo que les pedimos, pero el equipo de la Universidad de Brown ha conseguido demostrar que un robot puede ya seguir órdenes no verbales y verbales de una persona, y en lugares diversos, lo que significa que el objetivo no es imposible, y que cada día, la brecha se acorta aún más.

Fuente: Tendecias T.


Quieres leer más post como éste???...suscribete aquí!!!

Operaciones con módulos: el módulo inverso y potencia modular

Los algoritmos de cifrado, para obtener mayor eficiencia en sus operaciones, realizan operaciones modulares, siendo las más comunes la de encontrar el módulo inverso y encontrar la potencia (exponenciación) modular. El módulo inverso consiste en determinar si un determinado número entero bajo un determinado módulo tiene o no, inversa; mientras que la exponenciación modular es una operación que permite encontrar la potencia de un determinado entero elevado a una potencia k en un determinado módulo.

Algoritmo de Euclides Extendido [código]

Para realizar muchas aplicaciones en computación, sobre todo en el área de matemática aplicada, como por ejemplo, en lo que respecta a algoritmos de cifrado, se necesita de manera imprescindible contar con un fundamento en Matemática Discreta. Debido a que algunos lectores despues de haber leído el post de cifrado de imágenes me han pedido ayuda acerca de los algoritmos básicos para realizar el cifrado de información. Es por eso que, publicaré el código de algunos algoritmos implementados en el curso de Algebra Universal para Ciencias de la Computación que posteriormente servirán para algoritmos de cifrado como el RSA, ElGamal, Goldwasser-Micali, entre otros.

Distancia de Levenshtein [código]


La distancia de Levenshtein es una herramienta muy potente y aplicada en diferentes correctores ortograficos de editores de texto. La distancia de Levenshtein, que también es conocida como la generalización de la distancia de Hamming, determina la medida de similitud entre dos cadenas de caracteres.

Quality of Service issues (QoS): performance, failure recovery

En el ámbito de las redes de computadoras y de telecomunicaciones, la calidad de servicio, conocida como QoS (Quality of Service) es muy importante y su aplicación se hace sumamente necesaria; QoS se refiere a la capacidad de ofrecer diferentes noveles de prioridad a diferentes aplicaciones, usuarios, flujos de datos; o también para garantizar un cierto nivel de rendimiento a un flujo de datos. Es decir, QoS garantiza el cumplimiento de ciertos requerimientos mínimos.


De esta manera, la calidad de servicio o QoS es importante por ejemplo para determinar en que nivel la capacidad de la red es insuficiente, especialmente en aplicaciones de tiempo real, como son las aplicaciones multimedia sobre voz IP o IP-TV, en las que se necesita una tasa fija de paquetes durante la transmisión para de esta manera no exista ruido ni distorsión durante una sesión de trabajo de estas aplicaciones. Otro de los campos en los que QoS es vital e indispensable es en la comunicación y transmisión de datos por dispositivos móviles, en donde también se necesita de una tasa fija de transmisión de los paquetes para asegurar la integridad de los mismos.

En el presente informe "Quality of Service issues (QoS): performance, failure recovery" se presentan los conceptos necesarios para conocer el funcionamiento de QoS, la manera en la que se relaciona con la medida de calidad, el nicel de prioridades que se maneja en QoS, así como su aplicación en ATM y finalmente el uso de QoS mediante la tecnología UPnP.

El informe lo pueden descargar desde AQUI. Espero que les sea de utilidad.



Quieres leer más post como éste???...suscribete aquí!!!



Colección de publicaciones 2008 - SPC


La dirección de publicaciones de la SPC acaba de hacer publica, la compilación en un libro de colección de todos los artículos más destacados presentados a lo largo del año 2008 en los boletines SPC.

Marco Coral, director de publicaciones SPC, fue el encargado de brindar información sobre este libro de colecciones, el cual, pueden encontrarlo desde este link: http://publicaciones.spc.org.pe/SPCBoletin/coleccion%202008/Colecciones%202008%20DPSPC.pdf , así mismo hizo una invitación a toda nuestra comunidad a participar de las publicaciones SPC enviando un articulo de opinión sobre los siguientes temas, los mismos que seran revizados y seleccionados para su publicación.
  • Proyectos de Software Libre (OLPC, Sistemas Operativos, etc.)
  • Patentes y patentes de Software
  • Aplicaciones de algoritmos en el desarrollo de Software
  • La Robotica y sus aplicaciones en la industria.
  • Mecanismos de educación a distancia.
  • Matematicas discretas y su relación con la computación.
  • La Computación grafica y su importancia en la tecnologia actual
  • Plan Nacional de Desarrollo de Software en el Pais.
  • Metricas de software y su utilidad en el desarrollo de soiftware de calidad
  • Desarrollo de dispositivos HD





Quieres leer más post como éste???...suscribete aquí!!!


Videos de SCGI-2008


El SCGI es uno de los primeros eventos arbitrados y de calidad en el Perú, dedicados especificamente al área de Computación Gráfica y Procesamiento de Imágenes que impulsa la diseminación, investigación y el desarrollo de software no convencional en dichas áreas. En el 2008 se llevo a cabo el II-SCGI en la ciudad de Arequipa y estuvo realmente interesante, la presentación de los trabajos de pre-grado que fueron aprobados estuvieron en un nivel excelente.

Related Posts Plugin for WordPress, Blogger...