Para este laboratorio se nos encargo detectar lineas diagonales , para hacer esto me base en la tarea pasada haciéndole unas pequeñas modificaciones. De igual manera volví a utilizar las mascaras de Prewitt.
Esta fue la imagen utilizada
Aquí esta el código.
X
La imagen obtenida fue esta .
miércoles, 13 de febrero de 2013
LABORATORIO 2 - VISION
Para esta entrada de laboratorio se nos encargo hacer ciertas tarea.
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.
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.
2)Lo que se encargo eliminación de ruido sal y pimienta con alguna combinación de filtrado/umbrales que se les ocurra.
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.
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.
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.
martes, 12 de febrero de 2013
TAREA 1 - VISION COMPUTACIONAL
Para esta entrada que es la tarea 1 se pidieron distintas tareas que son estas:
4)Binarización que deje los bordes como zonas blancas y el resto negro.
La imagen que utilice para estas pruebas fue esta.
Ya una vez sabiendo lo teórico, se procede a implementar la convolución. Aquí utilice la imagen en escala de grises y filtrada de la entrada de laboratorio.
Aquí se encuentra el código que hace esto.
Esta es la imagen resultante.
Ahora se procederá a implementar las mascaras , y con esto obtendremos los bordes de la imagen.
Como se mencionó existen distintos métodos yo utilice Prewitt y Sobel.
Aquí está el código , y se carga la matriz Sobel y Prewitt con sus valores respectivos.
msobelX = ([-1, 0, 1], [-2, 0, 2], [-1, 0, 1])
msobelY = ([1, 2, 1], [0, 0, 0], [-1, -2, -1])
prewittX=([-1, 0, 1], [-1, 0, 1], [-1, 0, 1])
prewittY=([1, 1, 1], [0, 0, 0], [-1,-1,-1])
Se pide que ingreses un "UNO" para trabajar con la matriz Sobel y un "DOS" para trabajar con la matriz prewitt.
Aquí están las distintas pruebas que realice.
4760862 Mascara sobel.
Imagen original Imagen con Mascara
Imagen Original Imagen con máscara
Mascara Prewitt
Imagen original Imagen con máscara
Y aquí todo el código
Aquí esta el link a el codigo.
https://gist.github.com/robertovalenzuela91/4760862
1) Subrutina para aplicar una máscara de convolución discreta, de
preferencia centralizado al pixel en cuestión.
2) Con esa subrutina,
calcular por lo menos un gradiente horizontal y un gradiente vertical,
posiblemente más o también diagonales, con la posibilidad de combinarlos
al tiempo de calcularlos a uno solo o combinando entre múltiples
matrices de gradiente una vez terminada la aplicación de todas las
máscaras de gradiente:
3) Normalización de la matriz resultante de la
manera que perciben factible y útil a [0, 255]
4)Binarización que deje los bordes como zonas blancas y el resto negro.
La imagen que utilice para estas pruebas fue esta.
Para realizar esta primera tarea utilice dos máscaras.
Estas máscaras presentan una ventaja en cuanto a las demás como la de Robert, es que además de estimar el valor del módulo del gradiente, producen un
alisamiento en la imagen que resulta beneficioso.
1.- Mascara Sobel.- Que utiliza esta matriz para sus operaciones
2- Mascara Prewitt, Esta mascara utiliza esta matriz de 3 x 3 para sus operaciones.
Ya una vez sabiendo lo teórico, se procede a implementar la convolución. Aquí utilice la imagen en escala de grises y filtrada de la entrada de laboratorio.
Aquí se encuentra el código que hace esto.
Esta es la imagen resultante.
Ahora se procederá a implementar las mascaras , y con esto obtendremos los bordes de la imagen.
Como se mencionó existen distintos métodos yo utilice Prewitt y Sobel.
Aquí está el código , y se carga la matriz Sobel y Prewitt con sus valores respectivos.
msobelX = ([-1, 0, 1], [-2, 0, 2], [-1, 0, 1])
msobelY = ([1, 2, 1], [0, 0, 0], [-1, -2, -1])
prewittX=([-1, 0, 1], [-1, 0, 1], [-1, 0, 1])
prewittY=([1, 1, 1], [0, 0, 0], [-1,-1,-1])
Se pide que ingreses un "UNO" para trabajar con la matriz Sobel y un "DOS" para trabajar con la matriz prewitt.
Aquí están las distintas pruebas que realice.
4760862 Mascara sobel.
Imagen original Imagen con Mascara
Imagen Original Imagen con máscara
Mascara Prewitt
Imagen original Imagen con máscara
Y aquí todo el código
Aquí esta el link a el codigo.
https://gist.github.com/robertovalenzuela91/4760862
miércoles, 6 de febrero de 2013
LABORATORIO VISION
Para esta entrada se nos pidio que procesaremos alguna imagen y le aplicaremos efectos o filtros tales como escala de grises , binarizacion (con umbral) negativos etc.
Yo utilice el lenguaje Python ,Pygame y PIL.
En una ventana muestro la imagen original y creo otras ventanas donde aparecen los efectos que le aplique para poder compararlos.
La imagen utilizada fue esta.
Umbral. Para este filtro seleccione varios valores para que se compararan .
Y dependiendo si era mayor o menor se convertían a "255" o "0" .
Que los convierte a blanco o negro. y el efecto obtenido es el siguiente.
Yo aplique en estas 3 fotos un umbral de 50, 200 y 128 y podemos observar los diferentes resultados, mas blanco o mas oscuro.
También aplique una binarizacion a una imagen en escala de grises y este fue el resultado.
Para obtener estos volví a aplicar los mismos umbrales 50,200 y 128 y podemos observar los resultados.
En otra prueba aplique dos umbrales uno menor y uno mayor . Si era menor o igual a mi umbral menor lo convertida a "0" y si era mayor o igual a mi umbral mayor lo convertia a "225". Y este fue el resultado.
Para el siguiente efecto inverti los colores de la imagen, para poder hacer esto lo que hice fue a 255 le reste el valor del pixel. Y se obtuvo lo siguiente.
Ya para finalizar aqui estan varias imágenes finales que las pongo juntas para que se pueda comparar la diferencia.
Y aqui esta el link a mi codigo.
https://gist.github.com/robertovalenzuela91/4728920
Yo utilice el lenguaje Python ,Pygame y PIL.
En una ventana muestro la imagen original y creo otras ventanas donde aparecen los efectos que le aplique para poder compararlos.
La imagen utilizada fue esta.
Al correr mi programa como digo se generan las dos ventanas primero genere la escala de grises que se ve en la imagen de abajo.
Para
sacar la escala de grises realice una sumatoria de los valores R G B y
después les saque un promedio , que fue agregado después.
Umbral. Para este filtro seleccione varios valores para que se compararan .
Y dependiendo si era mayor o menor se convertían a "255" o "0" .
Que los convierte a blanco o negro. y el efecto obtenido es el siguiente.
Yo aplique en estas 3 fotos un umbral de 50, 200 y 128 y podemos observar los diferentes resultados, mas blanco o mas oscuro.
También aplique una binarizacion a una imagen en escala de grises y este fue el resultado.
Para obtener estos volví a aplicar los mismos umbrales 50,200 y 128 y podemos observar los resultados.
En otra prueba aplique dos umbrales uno menor y uno mayor . Si era menor o igual a mi umbral menor lo convertida a "0" y si era mayor o igual a mi umbral mayor lo convertia a "225". Y este fue el resultado.
Para el siguiente efecto inverti los colores de la imagen, para poder hacer esto lo que hice fue a 255 le reste el valor del pixel. Y se obtuvo lo siguiente.
Segui aplicando mas efectos ala imagen , probe tambien a el valor de R G B
restarle un valor y despues sacar su promedio , promedio =((r-80)+(g-80)+(b-80)/3) para obtener otra imagen, el resultado es un estilo plateado en la imagen.
Y aqui esta el link a mi codigo.
https://gist.github.com/robertovalenzuela91/4728920
Suscribirse a:
Entradas (Atom)