Está en la página 1de 10

11:53 am, Aug 28, 2017 By julios at 11:54 am, Aug 28, 2017

Universidad Politcnica de Pachuca


P. E. de Ingeniera Biomdica
Programacin Estructurada

Anglifo en tiempo real a travs de


processing

Alumnos:

Ros Carrillo Luis Eduardo

Torres Crdova Luis ngel

Grupo: Bime_03_02

Docente: Dr. Julio Cesar Salgado Ramrez

Fecha: 23 De agosto De 2017


Introduccin:

Un anglifo o imagen de anglifo es un tipo de imagen que provoca un efecto

de profundidad cuando se ven con unas gafas especiales.

Estas gafas son icnicas y fcilmente


reconocibles por casi todas las personas, se
tratan de un armazn y en las lentillas se
encuentra un filtro de color, en un lente el
color cian y en el otro lente el color rojo. Las
imgenes de este tipo generan un efecto de
profundidad gracias a que la corteza visual Anglifo
del cerebro fusiona ambas imgenes, el ojo cubierto por el filtro rojo
ve las partes rojas de la imagen como "claras" y las partes azules como "oscuras".

Por otro lado, el ojo cubierto por el filtro azul percibe el efecto opuesto.

La creacin de estas imgenes se logra a partir de dos fotografas que enfocan


al mismo objeto o persona, pero fueron tomadas por cmaras separadas por una

distancia comprendida normalmente entre los tres y los cinco centmetros.

En el pasado el proceso de creacin de estas imgenes era gracias a filtros para


las cmaras y una vez que las imgenes fueron tomadas se proyectaban
superpuestas1, pero actualmente este tipo de imgenes son fciles de crear,
pueden ser creadas por algn programa de edicin fotogrfica, por superposicin

de imgenes o con algunas lneas de cdigo.

En el presente documento se aborda la creacin de un anglifo en tiempo real


con las imgenes captadas por dos cmaras conectadas a la misma computadora,

1
Una encima de la otra
todo este programa ser escrito en el IDE de processing, Processing es un
lenguaje de programacin y a la vez es un entorno de desarrollo integrado, todo

basado en java.

Desarrollo:

Material:

Para generar las imgenes solo se necesita disponer de dos cmaras web distintas
y de un computador en que se encuentre instalado el IDE de Processing para

escribir el cdigo.

Cdigo:

El cdigo es sencillo, el cdigo


empieza importando la librera de
video, sta librera es oficial de
Processing por lo que siempre
est actualizada, despus viene el
objeto capture, este objeto viene
incluido en la librera y es el que
nos permitir recibir imgenes de
las webcams que tengamos

conectadas.

PImage ser utilizado para darles


tratamiento a las imgenes
captadas por las webcams y al ser
dos cmaras usaremos dos
imgenes.
En el setup estn manifestadas las configuraciones

iniciales del programa, como:

El tamao de la ventana
Un String y dos funciones para imprimir, esto es
nos permite visualizar en consola todas las cmaras
conectadas a nuestra computadora, as como sus
respectivas configuraciones.
Tambin se incluyen las inicializaciones de las

cmaras que estn guardadas en los objetos denominados cam y cam2.

Cuando inicializamos nuestras capturas, en los parmetros de new Capture,


especficamente a un lado de camaras se encuentran corchetes cerrados, dentro

de esos corchetes se colocan las cmaras que vamos a utilizar y su configuracin.

Esta configuracin es mostrada en la consola de Processing e incluye el tamao


de la imagen y la cantidad de cuadros por segundo, cuando seleccionemos por
primera vez las cmaras a usar es recomendable utilizar dos tamaos iguales
para poder obtener un mejor resultado, tambin es importante tener en cuenta
las caractersticas de ambas cmaras, deben de ser similares en cuanto a

resolucin y zoom.
Una vez que pasamos al Void Draw lo primero que se observa es este arreglo:

En este se encuentra un condicin, esta condicin se cumple cuando ambas


cmaras se encuentran disponibles, si ambas cmaras se encuentran disponibles
las imgenes captadas por estas se imprimirn infinitamente en la pantalla en la

posicin indicada en los parmetros de estas.

Lo siguiente, igual incluido en el Void Draw son dos ciclos for, esto dos ciclos
nos servirn para realizar el procesamiento de estas imgenes, lo que hacen estos

ciclos es generar un recorrido pixel a pixel en las imgenes.

Este recorrido nos dar la


informacin de los pixeles
y sus colores, para la
imagen uno img se hizo
un enmascaramiento con
los colores azul y verde, lo
que nos da como
resultado el tan
mencionado color cian, esta parte del programa es opcional, la colocamos para
poder visualizar los enmascaramientos en la imagen nmero uno, cambiar el

cdigo hexadecimal del color cian al color rojo no afectar imagen anaglfica.
Donde se encuentran las variables flotantes r, g y b es donde ocurre el
procesamiento de todos los pixeles de las imgenes, como se puede apreciar
extraemos los colores rojo de la imagen 2 y los colores verde y azul de la primera

imagen, para al final unirlos en img2.pixels[p]=color(r,g,b);

Para la parte fsica conectamos las siguientes cmaras web al computador

Y se trat de localizar las posiciones adecuadas para cada una de las cmaras
para que tuvieran una separacin de aproximadamente 6 cm, y se parecieran las
imgenes, ya que ambas necesitan enfocar al mismo objeto, y obtener imgenes
similares y ligeramente separadas para lograr el efecto de profundidad.

Resultados:

La siguiente imagen es una captura hecha a la ventana de Processing, muestra la


imagen 1, la imagen 2, la imagen con el enmascarmiento (Un visualizacin de
prueba del enmascaramiento cian, pero en el cdigo se puede cambiar por el

color rojo) y en la cuarta divisin el anglifo conseguido.


Al colocarse unas gafas 3d se puede observar la aproximacin al efecto de

profundidad esperado.

Conclusiones:

Una imagen digital o grfico digital es una representacin bidimensional de una


imagen a partir de una matriz numrica, estas imgenes se pueden obtener a
partir de escneres o de cmaras digitales y estas imgenes digitales se pueden
modificar mediante filtros, aadir o suprimir elementos o modificar su tamao,
todo con la finalidad de obtener informacin proveniente de esta. En este
proyecto se ve reflejado lo anterior en la obtencin de la informacin de color
de cada uno de los pixeles que las conforman, para as unir esta informacin
para generar una imagen completamente nueva.
Referencias
Anaglyph 3D. (24 de Agosto de 2017). Obtenido de Wikipedia:
https://en.wikipedia.org/wiki/Anaglyph_3D

Rmirez, J. C. (10 de Mayo de 2016). webcam+labview+processing. Obtenido de Youtube:


https://www.youtube.com/watch?v=BbW0_F6see4&t=189s

Salgado, J. C. (30 de Abril de 2016). procesamiento De Imagenes Con Labview 3. Obtenido de


Youtube: https://www.youtube.com/watch?v=N2vTHs9WuEg&t=146s

Se anexa el cdigo fuente de este programa:


Anaglifo
import processing.video.*;
Capture cam, cam2;
PImage img, img2;

void setup() {
size(1280, 960);
String[] camaras = Capture.list();
println("camaras disponibles");
printArray(camaras);
cam = new Capture(this, camaras[1]);
cam.start();
cam2 = new Capture(this, camaras[24]);
cam2.start();
}
void draw() {
if (cam.available() == true && cam2.available()== true) {
cam.read();
img = cam;
image(img, 0, 0);
img.loadPixels();
cam2.read();
img2 = cam2;
image(img2, 640, 0);
img2.loadPixels();

for (int x=0; x<img.width; x++) {


for (int y=0; y<img.height; y++) {
int p=x+y*img.width;
img.pixels[p] &= 0x00FFFF;

float r=red(img2.pixels[p]);
float g=green(img.pixels[p]);
float b=blue(img.pixels[p]);
img2.pixels[p]= color(r,g,b);
}
}
img.updatePixels();
image(img, 0, img2.height);

img2.updatePixels();
image(img2, 640, img.height);
}
}

También podría gustarte