You are on page 1of 6

INDICE

Prctica 3 Cambiar una imagen de color a escala de grises mediante


una macro......................................................................................................... 1
Objetivo........................................................................................................... 1
Marco terico................................................................................................... 1

Cambiar imagen de color a escala de grises...............................................2

Imagen a color........................................................................................... 2

Imagen a escala de grises.........................................................................2

Programacin de la macro............................................................................. 3

Conclusin........................................................................................................ 4

Bibliografa....................................................................................................... 4

Prctica 3
Cambiar una imagen de color a escala
de grises mediante una macro
Objetivo

Aprender a cambiar una imagen a color a escala de grises mediante una


macro.

Marco terico

Una macro es una abreviatura de macroinstruccin y aparte es una


serie de instrucciones que se almacenan para que se puedan ejecutar de
manera secuencial mediante una sola llamada u orden de ejecucin.
Dicho de otra manera, una macroinstruccin es una instruccin
compleja, formada por otras instrucciones ms sencillas. Esto permite la
automatizacin de tareas repetitivas.
Las macros tienden a generarse en el mbito del propio programa que
las utiliza y se ejecutan pulsando una combinacin especial de teclas o
un botn especialmente creado y asignado para tal efecto.
La diferencia entre una macroinstruccin y un programa es que en las
macroinstrucciones la ejecucin es secuencial y no existe otro concepto
del flujo de programa, conjunto de instrucciones (tales como borrar
archivo, aadir registro, etc.), y que se almacenan en una ubicacin
especial. Por ejemplo, en Microsoft Access se observa que hay una zona
para crear macros. Una macro en Access trabajando para una base de
datos podra ser un archivo que, al llamarse desde otra instruccin,
borrara los registros de un cliente o accionista, luego borrara ciertos
registros en otras tablas.

Cambiar imagen de color a escala de grises

Imagen a color

Imagen a escala de grises

Programacin de la macro
macro "Barrido de una iamgen" {
width = getWidth();
2

height = getHeight();
for (y=0; y<height; y++) {
// if (y%20==0) showProgress(y, height); //muestra una barra de progreso
for (x=0; x<width; x++) {
value = getPixel(x,y); // extrae los datos RGB de un pixel
// obtengo los datos RGB separados del pixel
red = (value>>16)&0xff; // extrae el byte rojo (bits 23-17)
green = (value>>8)&0xff; // extrae el byte verde (bits 15-8)
blue = value&0xff;
// extrae el byte azul (bits 7-0)

// **** Aqui hacer modificaciones ***


if (red<=green)
mayor al G
{color=red;
nmero R
}
else{
anterior
color=green;
nmero G
}
if(green<=blue)
{color=green;
nmero G
}
else{
anterior
color=blue;
nmero B
}
if(red<=blue)
mayor al B
{color=red;
R
}
else{
anterior
color=blue;
B
}
num=0;
los datos de RGB
mrojo=color+num;
del R

//condicional si el nmero R es
//la variable color es igual al
//si no se cumple la condicin
// la variable color es igual al

//condicional si el nmero G es mayor al B


//la variable color es igual al
//si no se cumple la condicin
// la variable color es igual al

//condicional si el nmero R es
//la variable color es igual al nmero
//si no se cumple la condicin
//la variable color es igual al nmero

//nmero a sumar o restar a


//define mrojo como nuevo nmero

mverde=color+num;
nmero del G
mazul=color+num;
nmero del B

//define mverde como nuevo


//define mazul como nuevo

// **** Para obscurecer o poner brillo a la imagen de escala de grises ***


if (mrojo>=255 || mrojo<=0)
//condicional si mrojo es mayor
a 255 o menor a 0
{mrojo=red;
//si se cumple la condicin se define
que mrojo es igual a R original
}
if (mverde>=255 || mverde<=0)
//condicional si mverde es
mayor a 255 o menor a 0
{mverde=green;
//si se cumple la condicin se define
que mrojo es igual a R original
}
if (mazul>=255 || mazul<=0)
//condicional si mazul es mayor a
255 o menor a 0
{mazul=blue;
//si se cumple la condicin se define
que mrojo es igual a R original
}
//******************************************
//print ("red"+red,"mrojo"+mrojo);
//print ("green"+green,"mverde"+mverde);
//print ("blue"+blue,"mazul"+mazul);
makePoint(x, y); // muestra un punto en la imagen
// genero un pixel con los datos RGB
azul=mazul;
verde=mverde*256;
rojo=mrojo*65536;
dato= rojo+verde+azul;
setPixel(x, y, dato); // pone los datos RGB a un pixel
}
}
}
}

Conclusin
La escala en grises consiste en que los nmero del RGB deben ser
iguales (del 0 al 255).

Bibliografa
http://es.wikipedia.org/wiki/Macro

You might also like