lunes, 9 de noviembre de 2015

Contadores inteligentes: ¿Saltan más?

Os dejo el enlace al último artículo que he realizado en Nergiza.com, en el que experimentamos con los nuevos contadores digitales y aprendemos a usarlos en nuestro beneficio:


http://nergiza.com/contadores-inteligentes-saltan-mas/

Con lo aprendido aquí podréis optimizar la potencia contratada en vuestro suministro de electricidad, y ahorraros un buen dinero al año.

jueves, 20 de agosto de 2015

allRGB mediante algoritmo genético

Como continuación a mi anterior entrada, en esta voy a mostrar mi progreso con respecto a la creación de imágenes allRGB (con todos y cada uno de los colores existentes en informática). En esta ocasión he utilizado un algoritmo genético (evolutivo) ya que, a diferencia de mi algoritmo anterior, es muchísimo más rápido y se obtienen mejores resultados que con un algoritmo en el que los pasos son definidos estrictamente por el programador. Este es el resultado y a continuación explicaré cómo lo he realizado:



Está disponible en la web allRGB con el título "Globos 2":

http://allrgb.com/globos-2

A diferencia de mi anterior algoritmo, en el que analizaba píxel a píxel buscando el color más cercano sin utilizar (para que no se repitan), en este caso he partido de una imagen que ya contenía todos los colores (16.777.216) pero repartidos de forma aleatoria por la imagen. Se ve algo así como el ruido de los antiguos televisores analógicos. Luego selecciono dos píxeles de la imagen al azar y los intercambio. Si este intercambio hace que la imagen de ruido se parezca más a la original, entonces hago el cambio efectivo. Si no se produce una mejoría, busco otros dos píxeles distintos. Conforme se analizan más y más parejas de píxeles, la imagen se va acercando a la original. Aquí una animación en la que se ve el proceso paulatinamente:




La fórmula que he utilizado para calcular la diferencia ("dif") entre dos colores es esta:

Dif_total = (dif_L^2 + dif_a^2 + dif_b^2) + (dif_R^2 + dif_G^2 + dif_B^2)/10

L, a y b son las coordenadas del espacio de color "Lab", basado en estudios de la percepción humana. El canal L representa la luminosidad del color, y los canales a y b representan el tono del color. Aquí podemos ver una animación de este espacio de color:


Imagen obtenida de la web www.brucelindbloom.com

R, G y B son las coordenadas de color usadas en informática por defecto. Las utilizo en mis cálculos pero dividido entre 10 para darle menor importancia, ya que utilizando el espacio de color Lab se obtienen mejoresa resultados visuales. Además he utilizado las coordenadas elevadas al cuadrado por el mismo motivo, para obtener mejores resultados visuales y mejorar la imagen como conjunto, y no unos píxeles más que otros. En mis primeros intentos utilicé un algoritmo evolutivo que sólo medía la diferencia RGB, y sin elevar al cuadrado. Los resultados no fueron todo lo bueno que me esperaba. Pronto me di cuenta de que debía afinar el algoritmo para hacer que funcionase bien

El último paso para mejorarlo más aún es utilizar dispersión del error (dithering), que todavía tengo que aprender a aplicar correctamente de forma que no se genere excesivo "ruido" en la imagen. También me gustaría programarlo en un lenguaje más rápido como es C++ o incluso C, el rey de la velocidad, o utilizar técnicas como el procesamiento multi-hilo o el Open-CL para usar el procesador gráfico como co-procesador en los cálculos. Poco a poco voy mejorando mis conocimientos... :)

lunes, 4 de mayo de 2015

allRGB

Las imágenes que capta nuestra cámara o las que vemos en nuestros monitores está compuesta de píxeles, y cada píxel tiene tres sub-píxeles o ingredientes: la luz roja, la verde y la azul, y aplica a cada sub-pixel una intensidad determinada para generar todos los colores posibles. Podemos ver una ampliación de cómo se ve una pantalla de cerca:



Cada sub-pixel puede iluminarse con una intensidad que va desde el 0 (totalmente apagado) hasta el 255 (totalmente encendido). Por ejemplo, si queremos ver por el monitor un color rojo oscuro, necesitaremos crear una imagen en la que los sub-píxeles verde y azul estén apagados, mientras que el rojo deberá tener un valor intermedio, por ejemplo 120.

Dicho color se expresa mediante el modelo de color RGB (Red, Green, Blue; los colores primarios en la síntesis (mezcla) aditiva (que se suma)), y quedaría así: RGB = (120,0,0)



Puede que os enseñaran que los colores primarios eran el rojo, el amarillo y el azul, pero esto no es cierto. No existen unos colores primarios mediante los cuales podamos conseguir todos los colores que existen mediante la mezcla de los mismos, y los que más se aproximan son el Rojo 700nm, el Verde 525nm y el Azul/violeta 400nm. Los colores que podemos conseguir con la suma de estos colores "primarios" son los que se encuentran dentro del siguiente triángulo llamado espacio de color CIE 1931:


Los colores que están fuera del triángulo (como por ejemplo el cyan puro 495nm) no pueden ser representados por los monitores, pero es algo complejo de entender y me llevaría mucho tiempo explicarlo.

A donde quiero llegar es que el número de colores distintos que se pueden conseguir mediante la combinación de todas las distintas intensidades de cada sub-píxel es de 256 x 256 x 256 = 16.777.216 de colores distintos para una imagen de 24 bits (profundidad del color).

Los primeros ordenadores sólo podían reproducir dos colores (profundidad de color de 1 bit), como el verde y el negro. Luego se consiguió reproducir 16 colores, posteriormente 256 colores (8 bit) y hoy día lo más común es utilizar 24 bits, aunque los fotógrafos y otros profesionales pueden llegar a usar imágenes de 48 bits (billones de colores), pero para ello se necesitan unos monitores especiales que actualmente son muy caros y están destinados a profesionales.

Pues existe una web (allRGB.com) en la que distintos artistas y programadores suben imágenes creadas por ellos en las que se cumple una característica común: poseen todos y cada uno de los colores posibles, sin que falte ninguno y sin repetir ninguno. Para conseguirlo es necesario tener conocimientos de programación, como es mi caso. Así que he presentado mi propuesta que consiste en transformar una foto normal en otra que contenga todos los colores. Para ello he creado un código que tardó una semana en ejecutarse debido a la complejidad computacional del problema a resolver. Este es el resultado una vez aceptado y publicado:

http://allrgb.com/globos

Os dejo una miniatura de la imagen original y del resultado. La original tenía unas dimensiones de 4092 x 4092 píxeles, lo que multiplicado hace un total de 16.777.216 píxeles, todos ellos distintos:






Y para ver la diferencia de una forma más clara, he creado un gif animado. He de decir que dicho gif sólo tiene 256 colores distintos, por eso se diferencia un poco del original:



El algoritmo lo he programado usando Processing por su simplicidad, aunque en un futuro usaré C# ya que es mucho más rápido ejecutándo el código. Esta primera versión del algoritmo lo que hace es:

Leer la imagen original
Crear las variables y objetos necesarios
crear matrices en las que se vuelca la información de la imagen original, como por ejemplo la posición de cada color en la imagen, etc
empezando por arriba de la imagen original, buscar el color más próximo que no haya sido usado aún.

Como es lógico, al principio no hay apenas colores usados, por tanto la imagen producida se parece mucho a la original. Pero a medida que avanzamos cada vez hay menos colores disponibles y el algoritmo tiene que recurrir a colores que se parecen menos al original. Por eso al final se obtienen colores muy distintos. Aquí una imagen creada con un algoritmo que mide la diferencia entre la imagen original y la modificada. Cuanto más diferencia haya, mas claro será el píxel correspondiente:



La siguiente versión del algoritmo (que ya he empezado) hará justo lo contrario. Buscará los colores que menos se acercan al de la imagen original y serán los primeros en usarse. El objetivo es reducir al mínimo el error cometido en conjunto. Y la última versión del algoritmo aplicará una difusión del error (dithering) para que a simple vista el conjunto tenga mucho mejor aspecto.

lunes, 22 de diciembre de 2014

¡Todos contra la pelusa asesina!

Uno de los peores enemigos de los ordenadores son las pelusas, pues inutilizan los disipadores de calor que llevan dentro, provocando un sobrecalentamiento excesivo que da lugar a fallos e incluso a la muerte del ordenador. Un técnico puede limpiar esta suciedad acumulada, pero es una solución temporal y costosa a largo plazo. Afecta por igual a ordenadores portátiles y de sobremesa, como podemos apreciar en las fotos:


Incluso puede frenar por completo los ventiladores con bolas de suciedad al mas puro estilo del oeste:

Después de muchos años experimentando soluciones he llegado a la solución definitiva, fabricar mi propio filtro antipelusas. Es efectivo, es duradero y se puede hacer con herramientas y materiales disponibles para el gran público. Empecemos...

He aquí un lateral de un ordenador de un cliente preparado para la operación quirúrgica. Es de una torre grande de aluminio que tenía bastante suciedad por dentro. (El ordenador de arriba es mío y ya está modificado)

Comparación de tamaños entre mi torre y la del cliente:


Después de una limpieza profunda llega el turno del equipo de prevención anti-pelusas. Lo primero que necesitamos es una segueta larga con un pelo para metal de esos retorcidos en espiral. Dichos pelos se beben el metal y el metacrilato (al metacrilato hay que mojarlo durante el corte o el plástico se fundirá con el calor formando una pelota que finalmente partirá el pelo). Primero corté un trozo de plástico de un agarre que tenía pues en ese lugar va un ventilador que voy a instalar.


El ventilador lateral debe ser grande (12cm mínimo) y tener suficiente flujo de aire para que entre bastante aire limpio al interior de la torre y salga por los distintos orificios de esta, impidiendo que entre aire sucio del exterior. Por el mismo motivo quité dos ventiladores pequeños que había en el frontal metiendo aire, pues eran muy ruidosos y estaban tapados, es decir apenas metían aire, y el que metían era sucio. En mi torre por ejemplo en el frontal tengo un ventilador transparente de 14cm con filtro y luces LED, para darle más alegría :D. En definitiva lo ideal es poner sólo ventiladores metiendo aire y que estos tengan filtro.

Como experimento y para elegir el ventilador más adecuado ideé un método para medir la "fuerza" del ventilador mediante una báscula de precisión. Hice una pieza de cartón pluma recortada con segueta en forma de "X" y redonda en el centro para ponerla sobre la bascula y medir el empuje de ventiladores de cualquier tamaño.

Luego con el plástico de una caja de huevos, palillos de diente, cola blanca y conos de cartón pluma hice unos soportes aerodinámicos para poner el ventilador encima. El ventilador debe estar "bocarriba" (echando aire hacia arriba) y conectado a un transformador de 12V con pinzas de cocodrilo pero apagado, para poner a cero la báscula antes de encender el ventilador y medir el empuje en gramos que produce.

Según las leyes de Newton, toda acción conlleva una reacción en la misma dirección y sentido opuesto, por tanto si un ventilador produce 11g de empuje, significa que esta moviendo el aire con una fuerza de 11g. Cuanto mayor sea el flujo, mayor fuerza hará el ventilador y más masa de aire esta moviendo. En cada ventilador apunto el empuje, el consumo en mA y el ruido percibido. Algunos ventiladores hacían ruido y producían muy poco empuje para el consumo que tenían (lo vi ordenando los ventiladores por consumo) y tiré los que estaban ya gastados. Estos ventiladores son de otros ordenadores o de fuentes de alimentación que ya no funcionaban. En cualquier tienda de informática puedes pedir una fuente estropeada para aprovechar el ventilador que tienen por poco dinero, o comprarte un ventilador nuevo...

Recortamos un folio con la forma del ventilador, por ejemplo poniendo el ventilador debajo del papel y marcando la forma con el dedo, y luego con un boli repasándola. Una vez que hemos posicionado el recorte en el lugar que queramos con cinta adhesiva, lo marcamos con un rotulador permanente (no olvidar los agujeros para los tornillos, que a mí se me olvidó).

Luego con un taladro con broca metálica hacemos un agujero cerca de la linea a cortar pero por el interior. Si hay algún agujero ya hecho lo aprovechamos y metemos por ahí el pelo:

Con paciencia vamos recortando por la línea hasta terminar, retiramos el pelo. Esta operación recomiendo hacerlo con ayuda de alguien, es complicado meter sólo el pelo y apretar la segueta sin que se rompa.

Hacemos los agujeros para los tornillos y lo probamos, que todo encaje. Limamos las asperezas con una lima.


Ya queda menos...
Ahora procedemos a instalar el filtro anti-pelusas. Si tu ordenador ya tenía ventilador lateral, todo lo anterior te lo has ahorrado, enhorabuena!!!
El filtro que voy a utilizar es una tela especial que se vende por metros cuadrados (puede salir por 1€/m2 aprox) en los mercadillos de los gitanos. Algunos la conocen como tela de cristal, es muy fina, con mucho espacio entre hilo e hilo, lo que ayuda a dejar pasar mucho aire y poca suciedad. La tela deja pasar tan bien el aire que si la dejas caer, parecerá como si no hubiera aire y estuviera en la luna. Puedes soplarte la mano fácilmente a través de esta tela:

En la imagen puede verse como hay 5 hilos por cada milímetro. Todo un atrapa-pelusas!!
Con el ventilador atornillado, procedemos a poner tiras de cinta adesiva de doble capa Ceys Tack de color rojo. Es la única que me da buenos resultados. La venden en dos formatos, uno pequeño y otro más grande reforzada con fibra de vidrio (esta última vale 7€). Cualquiera de las dos sirve:



Yo lo que hago para que me dure más la cinta es cortar los trozos a la mitad de anchura con un cutter y una regla. Lo pego primero sobre una superficie en la que no peque bien (por ejemplo en trozos de formica). Luego posiciono la regla a la mitad y luego corto. Debe quedar un cuadrado cerrado alrededor del ventilador:


Una vez pegada la cinta adhesiva, retiramos el ventilador y el plástico rojo que protege a la cinta, ponemos la tela encima y empezamos estirando la tela con los dedos y apretando en las esquinas superiores del cuadrado:

Vamos bajando por los laterales del cuadrado apretando contra la cinta con fuerza para que la tela se pegue bien, y estirando la tela para que no quede suelta. Una vez que hemos hecho dos laterales del cuadrado, hacemos los otros dos estirando también. Da mejores resultados si hacemos coincidir la dirección del hilo con el lateral del cuadrado, es decir debemos estirar el hilo siguiendo la dirección del mismo, no en diagonal porque se deforma la tela. Una vez pegado la tela debe quedar tensa, pero sin romper la tela. Apretamos por última vez la cinta para asegurarnos de que esté bien pegado por todos lados.

Una vez que estemos satisfechos, cogemos un soldador y esperamos que se caliente. En un trozo de tela que no sirva probamos el soldador, y cuando empiece a derretir la tela, sin demorarnos vamos cortando la tela sobrante con la punta del soldador, con cuidado de no agujerear la tela tensada. Este tipo de corte funde los hilos e impide que en un futuro se deshilachen. Hacemos también los agujeros para los tornillos con mucho cuidado, el tamaño justo para que pasen sin problemas. Apagamos el soldador y lo limpiamos con un estropajo metálico y lo dejamos enfriar en un lugar seguro.

Ya sólo queda atornillar el ventilador, y opcionalmente, una rejilla metálica protectora. Si el ventilador es reciclado de una fuente de alimentación, hay que soldarle un cocnector Molex o un conector de paca base, con un cable lo suficientemente largo para poder abrir el lateral sin que el cable dé tirones.





¡¡¡Y ya está!!!

Con el uso, el filtro se irá llenando de pelusas. Sólo debemos pasarle la aspiradora de vez en cuando o pasarle el dedo si no tienes aspiradora, en cuyo caso no recomiendo ponerle la rejilla metálica para no tener que desmontarla. No limpiar con un paño húmedo pues la porquería se pegaría al hilo. Si acaso cada varios años, limpiarlo con agua jabonosa quitando previamente el ventilador, pero no es necesario. Ojo con los fumadores, el humo del tabaco contiene alquitranes que podrían echar a perder la tela con el paso del tiempo. Recomiendo no fumar, o en su defecto sufrir las consecuencias en los disipadores del ordenador y en los pulmones. Una vez tuve que limpiar el ordenador de un fumador, y sólo os digo que no le deseo la experiencia ni a mis enemigos. El negro alquitrán no había forma de quitarlo.

Bueno, espero que os haya gustado el tutorial y que compartáis el enlace a esta web con vuestros amigos. Ante cualquier duda preguntad aquí abajo.

viernes, 19 de diciembre de 2014

Reparación portátil


Este es un portátil que he reparado recientemente. Se apagaba repentinamente debido a que tenía un cable flex que no hacía buen contacto, puesto que el cliente llevó el portátil a otro técnico informático que al desmontar el portátil produjo la rotura del seguro de plástico que mantenía los contactos a presión.

Para solucionarlo corté un trozo de plástico acetato flexible a medida y lo metí en la conexión para que hiciera presión y mantuviera el cable en su sitio. Una vez solucionado esto, procedí a desmontar el disipador Heat Pipe para limpiarlo, pues estaba lleno de pelusas lo que bloqueaba el flujo de aire y producía un aumento excesivo de las temperaturas. Para prevenir esto suelo montar en todos mis ordenadores un filtro antipelusas. En próximas entradas mostraré su instalación para que vosotros, lectores, podáis vencer la batalla contra las pelusas

miércoles, 8 de octubre de 2014

Editor de Nergiza.com

Quería comentar que a partir de ahora soy editor en la web Nergiza.com, donde se enseña de forma amena y sencilla cómo ahorrar en la energía que gastamos a diario, en la luz, el gas, el combustible etc. Mi primer post va dirigido a comparar las placas vitrocerámicas convencionales con las de inducción:

Vitrocerámica normal vs de inducción, ¿cual es más eficiente?


Si queréis os podéis suscribir a esta interesante web para recibir en vuestro e-mail los nuevos artículos que se vayan publicando (introducir e-mail en "síguenos" a la derecha).

jueves, 28 de agosto de 2014

Ruta Sevilla-Chipiona en bici!!

Quería compartir con los demás internautas una ruta en bici que he hecho dos años seguidos ya y que seguro que alguien se anima a hacerla. Se trata de ir a la playa en bici desde Sevilla, ni más ni menos. La longitud de la misma es de 99km y se tarda en torno a 5 horas:



Si quieres ver la ruta con más detalle, aquí tienes el enlace a la ruta en Google Maps: https://goo.gl/maps/RcqNG

Estas son las cosas necesarias para hacer la ruta:

1º Una bici decente. No vale una bici de 90€ porque son muchos kilómetros y hay baches. Yo he utilizado una Decathlon RockRider 5.2 de aluminio con suspensión delantera, llantas de doble pared y piñón tipo cassete. Vale unos 270€ nueva y creo que es lo mínimo que se debería usar. Las ruedas se pueden hinchar entre 2 y 3 bares (de presión, ojo :), dependiendo de si prefieres comodidad o velocidad. No recomiendo más de 3 bares por los baches y piedras en el camino.


2º Bebida, a ser posible isotónica. Yo necesito unos 3,5l, si llevo menos me deshidrato. Llevo dos portabidones más otra botella en una maleta. Un par de plátanos es también muy importante, pues nos darán energía y minerales.

3º Kit antipinchazos. No me ha sucedido, pero puede pinchar la bici en medio del trayecto y en esa situación este kit es imprescincible. Parches 2 o 3, una lija, pegamento para parches, herramienta para sacar la cámara de la rueda, bimba para hinchar la rueda y una cámara de repuesto por si no se puede reparar el pinchazo. También llevo un kit multiherramientas pequeño que tiene llaves Allen, destornillador etc. Todo eso (menos la bimba) lo llevo en un pequeño bolso amarillo colgando del sillín.

4º Móvil cargado y con saldo. Nunca se sabe que puede pasar, y es preferible estar comunicado y pasarle a algún familiar un mapa del trayecto por si nos tiene que recoger.

Ropa ligera, cómoda, aerodinámica. Un buen culotte de ciclismo es fundamental. Yo recomendaría además alguna funda para el sillín con almohadillado, pues 5 horas pedaleando se notan...

6º Una luz LED. Como son muchas horas pedaleando, lo recomendable es salir temprano cuando aún no ha salido el sol. Para esa primera media hora es necesario iluminación extra.

7º Casco, por si las moscas. Además la guardia civil pone multas de 200€ si no lo llevas fuera de la ciudad.

8º Gafas de ciclismo trasparentes. Hay muchas piedras en el camino, y algunos insectos que podrían ir a parar a tu ojo...

9º Unos guantes de ciclismo. Alivian la mano de estar tantas horas apoyadas en el manillar gracias al almohadillado que llevan.



10º Un mapa. Se debe repasar bien antes de salir y llevarlo impreso y en un lugar de fácil acceso. Yo por ejemplo lo llevo en una riñonera junto con el móvil, los plátanos y el DNI. También se puede usar el móvil, pero es preferible tenerlo impreso por si éste fallara.

11º Dinero, por si tuviéramos que parar a tomar algo o por lo que sea. También el DNI como comenté antes, y las llaves ¡que no se olvide!


Y por supuesto muchas ganas y paciencia. Es una ruta que sólo recomiendo a ciclistas experimentados que sean capaces de hacer rutas de 120Km o más de 5 horas, pues aunque parte de la misma es asfalto, una buena parte es tierra un pelín arenosa que te frena, y hay que estar en forma para superarlo. Si se va acompañado mucho mejor, para matar el aburrimiento y por seguridad. Algunas fotos del paisaje:



 
Contador Gratis