Reglas para el laboratorio:
Las notas de los laboratorio se darán en la manera siguiente:
30%: Funcionalidad - el circuito hace lo que queríamos que hiciera, y han hecho lo que pido en el trabajo
15%: Simulaciones anotadas y RTL View - hay que entregar simulaciones anotadas y RTL view de todos los módulos nuevos
10%: Eficiencia - el código no utiliza más recursos del FPGA de lo que es necsario
10%: Fiabilidad - el código está escrito en manera fiable
10%: Modularidad - el código está escrito en manera modular
10%: Legibilidad - el código está escrito legiblemente y limpiamente,y es claro cual hardware sintetiza
15%: Presentación oral en la clase (todo el grupo debe estar presente y participar!)
-------
100%
+15% - Bono de creatividad - Hagan cosas originales más alla de lo requerido y reciban hasta 15% bono!
-------
115%
Obviamente, a pesar de que funcionalidad es 30% de la nota, si el laboratorio no tiene un mínimo de funcionalidad, la nota del laborotorio será 0.
Recuerde documentar todo sobre la bitacora
Tiempo estimado:
Dia de inicio: Lunes 6 de Abril.
Entrega y sustentacion: Sabado 25 de Abril.
Requeriemientos:
Lab1, Lab2, Practica 1-6, Practica Pipeline e Image Processing.
Procedimiento:
En esta practica usted aplicara todos los conceptos aplicados en clase hasta el momento para cumplir con los requerimientos del laboratorio, el cual consiste en hacer un sistema que implemente procesamiento de imagenes para segmentar especifica de una imagen con el proposito de hacer un montaje de tiempo real, aqui un ejemplo del tipo de aplicacion que se busca con este laboratorio.
Lo que se desea es que usted segmente la region verde de un video proveniente de un source de video, este podria ser proveniente de una camara con usted con un fondo verde(Debe tener un muy buen control de luces), o la otra opcion es que usted consiga videos donde se implemente pantalla verde, en el internet puede encontrar varios ejemplos grabarlos en un DVD y enviarlos por RCA a la entrada de video de la DE2-115.
En el siguiente source puede encontrar varios videos con pantalla verde, https://www.youtube.com/watch?v=V7QO7etWkF0
Recomiendo que baje los videos en alta calidad y los queme en un DVD.
Lo ideal seria que usted use una camara y un fondo verde, pero recuerde la luz es un factor escencial para aplicar este efecto, por lo tanto debe tener una escena donde la pantalla verde no sufra de sombras o zonas mas iluminadas que otras.
Para hacer segmentacion de un color especifico de la imagen usted tiene que considerar unos rangos, los cuales debe NO suponer, y debe tener en alguna base de datos o memoria ROM para determinar la gama de verdes que quiere separar, ademas debe usar el promedio de el color RGB de cada KErnel y comparalos con estas base de datos para determinar si lo que va a segmentar es realment el color que usted desea. Por esta razon, usted debe bajar el siguiente programa, el cual yo diseñe hace 5 años y su proposito es abrir una imagen y usando el mouse seleccionar una region pequeña de la imagen para extraer un vector y un promedio de cada componente de color de una region especifica de la imagen. Usted al menos debe hacer una base de datos de 30 imagenes con diferentes tipos de verdes que pueden ser observados en una pantalla verde, para esto no use una sola fuente de imagen, use varios, y de cada imaen extraiga por lo menos 10 muestras de color.
El segundo objetivo de este laboratorio es que usted use el procesador Nios II/f, el cual tendra la siguientes caracteristicas:
La memoria SRAM poder ser accesada por el Nios II y el sincronizador de Video, por lo que le recomiendo leer el capitulo 18.3 del libro de PONG-CHU, donde usted puede abrir mas su vision sobre como desarrollar este custom hardware.(recuerde que el sicronizador de video debe estar afuera del Nios II, pero aun asi la SRAM debe ser accesada por el Nios II para escritura y por el sincronizador para que usted pueda hacer overlay de la imagen procesada y segementada y la imagen que usted grabe en la SRAM para crear el efecto necesario)
Debe leer de una memoria SD, imagenes en formato BMP para poder subirlas por medio software o un custom hardware a la memoria SRAM(2MB) que tiene la tarjeta DE2-115. Esto con el proposito de cargar los fondos o efectos para reemplazo de la green screen que usted va a segmentar por hardware.Para saber usar la memoria SD con el Nios usted puede referenciarse a el proyecto final de Daniel y Paola(https://sites.google.com/site/rtawdde0nano/bitacora) y para saber como leer una imagen BMP y descargue la siguiente libreria en C(Adaptela a el driver de la memoria SD) ==> si tiene dudas debe preguntarle al profesor, en el capitulo de Pong-CHU mas adelante el tambien propone otra libreria, usted podria usar esa tambien o adaptar la que yo le he dado, de todos modos cualquiera de las dos las debe ajustar al driver de SD que se la ha dado.
Nota1: Recuerde primero probar el driver de la SD y luego si ponerse a estudiar el formato BMP.
Nota2: La imagen BMP tiene un formato especial, usted a la SRAM solo debe bajar los pixeles o colores correpondientes a la imagen, uno a uno, teniendo encuenta el ancho del bus de la memoria SRAM.
El nios aparte de poder dibujar imagenes sobre la SRAM, debe ser capaz de dibujar lineas, cuadrados, circulos, y texto, usted puede descargar la libreria de dibujo de Terasic, y adaptarla(No debe usar todas las funciones que ofrece, solo la de lineas, cuadrados, circulos, y texto), o puede usar lo basico del libro de Pong-chu para dibujar texto y otros poligonos.
El Nios II, debe usar la memoria Flash no volatil para guardar el programa, y debe usar on-chip memory para ejecutar el mismo, ya que las dos memorias disponibles en la tarjeta la SDRAM y la SRAM estaran siendo usadas para propositos de efectos, por lo que usted debe acomodar el diseño. Para saber como usar on-chip-memory puede guiarse con el siguiente manual.
Todos los efectos aplicados, o el reemplazo de la imagen de fondo de pantalla debe hacerse por medio de los switches, al menos deben existir 32 diferentes tipos de efectos aplicados reemplazando la Green Screen.