1) Generar ruido sal y pimienta
2) Eliminación de ruido sal y pimienta con alguna combinación de filtrado/umbrales que se les ocurra.
RUIDO SAL Y PIMIENTA
Utilice esta imagen para esta entrada de laboratorio.
Para indicar la intensidad de el ruido que se desea agregar es pedido como parámetro , se indica un texto en terminal que dice "Teclea la intensidad que quieres aplicar de ruido sal y pimienta". Suponiendo que el usuario teclea un "1 " El for solamente recorrerá una vez la imagen, y asi con un "dos" o "cuatro" etc.
Para poder hacer el ruido sal y pimienta mediante dos random que seleccionan al aleatoriamente un punto en "X" y "Y" , cuando el recorrido se encuentre en dicha posición se pintara el pixel.
Ahora para la polarización se pide en terminal que se ingrese un numero entre "0" y "255" dependiendo el numero que se escriba sera el color que tomaran los pixeles.
Aquí el código.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from random import * | |
import random | |
import pygame | |
from pygame.locals import * | |
import Image | |
pygame.init() | |
pantalla = pygame.display.set_mode((193,261)) | |
# FOTO NORMAL | |
imagen = pygame.image.load("imagen.jpg") | |
# ELIMINACION DE RUIDO SAL Y PIMIENTA | |
image = Image.open("imagen.jpg") | |
pixeles = image.load() | |
ancho, altura =image.size | |
print altura | |
numero=raw_input("Teclea la intensitad que quieres aplicar ruido sal y pimienta ") | |
numerosalypimienta=int(numero) | |
pola=raw_input("Teclea la polarizacion que quieres de 0 - 255 ") | |
polarizacion=int(pola) | |
for z in range(numerosalypimienta): | |
for x in range(ancho): | |
for y in range(altura): | |
(r,g,b) = pixeles[ x, y ] | |
promedio=((r+g+b)/3) | |
# Aqui si i y j son las posiciones seleccionadas al azar | |
# cuando el for este en la posicion i o j seleccionada al azar se pintara el pixel entre un color que estara entre 0 y 255 | |
# (Polarizacion) | |
i = random.randint(0,ancho) | |
j = random.randint(0,altura) | |
valor = random.randint(0,255) | |
if i == x: | |
r= polarizacion | |
g = polarizacion | |
b = polarizacion | |
if y == j: | |
r = polarizacion | |
g = polarizacion | |
b = polarizacion | |
pixeles[x,y] = (r,g,b) | |
image.show() |
Aquí esta el ejemplo con ruido de intensidad 1 y polarización de 255:
Ruido intensidad 3 y polarización de 0:
ELIMINACIÓN DE RUIDO SAL Y PIMIENTA
2)Lo que se encargo eliminación de ruido sal y pimienta con alguna combinación de filtrado/umbrales que se les ocurra.
Para eliminar el ruido en esta foto lo que hice fue fue agregarle al mismo código que genera la imagen de ruido sal y pimienta , una conversión a escala de grises de toda la imagen así como un filtro analizando todos sus vecinos. Ya a el final decidí restarle un valor a la imagen que se mostrará. Esto lo hice para que se pudiera apreciar mucho mejor la imagen mas oscura y con menos brillo.
Y el resultado fue este.
Y el resultado fue este.
Aqui podemos observar la imagen original , la que tiene el ruido y la imagen donde ya se elimino el ruido. Con una intensidad de uno y una polarización de 0.
Este es el resultado de la imagen con una intensidad de 1 y una polarización de 255 pero sin restarle el ultimo valor. Para que puedan observar la diferencia.
Aquí todo el código.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from random import * | |
import random | |
import pygame | |
from pygame.locals import * | |
import Image | |
pygame.init() | |
pantalla = pygame.display.set_mode((193,261)) | |
# FOTO NORMAL | |
imagen = pygame.image.load("imagen.jpg") | |
# ELIMINACION DE RUIDO SAL Y PIMIENTA | |
image = Image.open("imagen.jpg") | |
pixeles = image.load() | |
ancho, altura =image.size | |
numero=raw_input("Teclea la intensitad que quieres aplicar ruido sal y pimienta ") | |
numerosalypimienta=int(numero) | |
pola=raw_input("Teclea la polarizacion que quieres de 0 - 255 ") | |
polarizacion=int(pola) | |
for z in range(numerosalypimienta): | |
for x in range(ancho): | |
for y in range(altura): | |
(r,g,b) = pixeles[ x, y ] | |
promedio=((r+g+b)/3) | |
# Aqui si i y j son las posiciones seleccionadas al azar | |
# cuando el for este en la posicion i o j seleccionada al azar se pintara el pixel entre un color que estara entre 0 y 255 | |
# (Polarizacion) | |
i = random.randint(0,ancho) | |
j = random.randint(0,altura) | |
# valor = random.randint(0,255) | |
if i == x: | |
r= polarizacion | |
g = polarizacion | |
b = polarizacion | |
if y == j: | |
r = polarizacion | |
g = polarizacion | |
b = polarizacion | |
try : | |
if x - 1 < 0: | |
None | |
else: | |
r ,g, b = pixeles[ ( x - 1 ), y ] | |
promedio += ( r + g + b ) / 3 | |
except: | |
pass | |
try : | |
if x + 1 >= ancho: | |
None | |
else: | |
r, g, b = pixeles[ ( x + 1 ), y ] | |
promedio += ( r + g+ b ) / 3 | |
except: | |
pass | |
try: | |
if y - 1 < 0: | |
None | |
else: | |
r, g, b = pixeles[ x, ( y - 1 ) ] | |
promedio += ( r + g + b ) / 3 | |
except: | |
pass | |
try: | |
if y + 1 >= altura: | |
None | |
else: | |
r, g, b = pixeles[ x, ( y + 1 ) ] | |
promedio += ( r + g + b ) / 3 | |
except: | |
pass | |
promedio = promedio/4 | |
r=promedio-30 | |
g=promedio-30 | |
b=promedio-30 | |
pixeles[x,y] = (r,g,b) | |
image.show() | |
while True: | |
for eventos in pygame.event.get(): | |
if eventos.type == pygame.QUIT: | |
exit() | |
pantalla.blit(imagen,(0,0)) | |
pygame.display.update() | |
Lo obligatorio quedó razonable, 8 pts lab 2.
ResponderEliminar