Etiquetas

miércoles, 6 de febrero de 2013

Actividad 1 - Laboratorio

Para esta primera actividad se nos pidió trabajar con imágenes y como primera instancia aplicarles una escala de grises y después añadir umbrales.

Estas son las imágenes que utilice antes de aplicarles la escala de grises y umbrales:


Y aplicándoles la escala de grises obtenemos lo siguiente:

El algoritmo que utilice para realizar esto fue:
  1. Recorrer la imagen pixel por pixel para obtener su r, g, b
  2. Una vez realizado eso obtuve un promedio de los tres (r+g+b)/3
  3. Y por ultimo asigne ese promedio a r, g, b.
Ahora este es el codigo que realice:
**
import Image #esto para trabajar con imagenes
import sys
import pygame
#cargamos y abrimos imagen
def imagen():
img = Image.open("dori.jpg")
ancho,alto = img.size
img = eg(img,ancho,alto)
return img, ancho, alto
#Trabajamos la imagen y sacamos el promedio de rgb
def eg(img,ancho,alto):
pixeles = img.load()
imageng = 'dori.jpg'
for i in range (ancho):
for j in range(alto):
(r,g,b)= img.getpixel((i,j))
prom = int((r+g+b)/3)
pixeles[i,j] = (prom,prom,prom)
img.save(imageng)
return imageng
def main ():
pygame.init()
#pygame.display.set_caption("Ventana")
r,ancho,alto = imagen()
screen = pygame.display.set_mode((ancho,alto))
pygame.display.set_caption("Ventana")
im = pygame.image.load(r)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit(0)
screen.blit(im,(0,0))
pygame.display.update()
return 0
main()
view raw escalagrises.py hosted with ❤ by GitHub

**

La primer imagen también la utilice para aplicar umbrales y este fue el resultado:

A esta imagen le aplique un mínimo de 10 y un máximo de 112 en los umbrales
También utilice otras imágenes con variaciones en los colores y en los umbrales y esto es lo que obtuve:

Para estas imágenes el mínimo fue de 120 y el máximo de 210


Para estas imágenes el mínimo es de 100 y el máximo de 200

El algoritmo que utilice para esto es sencillo y en base a lo que anteriormente tenia para la escala de grises solo agregue lo siguiente:
  1. Fijar un mínimo y un máximo para los umbrales
  2. Comparar el promedio que se obtenía con el rgb y si es menor que el mínimo que se asigno igualamos el promedio a 0 y si el promedio es mayor se iguala a 255.(blanco-negro)
  3. Después igualamos rgb =(prom,prom,prom) para obtener el color del pixel
Y este es el código:
**
import Image #esto para trabajar con imagenes
import sys
import pygame
#definimos minimos y maximos para los umbrales
minimo = 100
maximo = 200
#cargamos y abrimos imagen
def imagen():
img = Image.open("imagen3.jpg")
ancho,alto = img.size
img = eg(img,ancho,alto)
return img, ancho, alto
def eg(img,ancho,alto):
pixeles = img.load()
imageng = 'img3_umb.bmp'
for i in range (ancho):
for j in range(alto):
(r,g,b)= img.getpixel((i,j))
prom = int((r+g+b)/3)
#Aqui agregamos umbrales
if prom <= minimo:
prom =0
if prom >= maximo:
prom = 255
pixeles[i,j] = (prom,prom,prom)
img.save(imageng)
return imageng
def main ():
pygame.init()
#pygame.display.set_caption("Ventana")
r,ancho,alto = imagen()
screen = pygame.display.set_mode((ancho,alto))
pygame.display.set_caption("Ventana")
im = pygame.image.load(r)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit(0)
screen.blit(im,(0,0))
pygame.display.update()
return 0
main()
view raw umbrales.py hosted with ❤ by GitHub
**
Y aquí les dejo la liga a mi repositorio.

1 comentario:

  1. Sería bueno poner lo de umbrales en su propia subrutina para poder ser llamado independientemente y no solamente como parte de la conversión. Cuida la redacción en términos de gramática y ortografía. Van 7 pts por la primera actividad.

    ResponderEliminar