Tengo que hacer un proyecto en c++

Cerrado
jordi - 7 may 2010 a las 16:45
rikhard999999
Message postés
53
Date d'inscription
domingo, 20 de diciembre de 2009
Estatus
Miembro
Última intervención
miércoles, 19 de mayo de 2010
- 7 may 2010 a las 16:48
Projecte de EDOO
Grau en Sistemes Audiovisuals
Filtre de la mediana
En el camp del processat de la senyal de vegades es necessari aplicar tecniques de reduccio de soroll a una
imatge o senyal. El ltre de la mediana es una d'aquestes tecniques i, en el cas de les imatges digitals,
es fa servir habitualment per a eliminar el soroll.
De fet, el ltre de la mediana es especialment efectiu amb una mena de soroll que es coneix amb el
nom de \salt and pepper noise". Les dues imatges que segueixen mostren una imatge contaminada per
aquesta mena de soroll, i el resultat d'aplicar el ltre de la mediana:
La idea principal que hi ha darrera del ltre de la mediana es la de recorrer tots els pxels de la
imatge, substituint cada pxel per la mediana dels seus vens. Per a cada pxel, els seus vens s'escullen
posant una \ nestra" centrada al pxel que estem tractant. Els vens son aquells pxels que cauen dintre
de la \ nestra".
Per exemple, en el cas de la imatge anterior, si agafem un dels pxels de l'ull, i fem servir una \ nestra"
de 5  5, tenim que:
on en blau tenim el pxel al que li estem aplicant el ltre, en vermell els pxels que es consideren vens
d'aquest (es troben dintre de la nestra 55 centrada en ell), i en verd tenim els valors d'intensitat dels
pxels.
Donat l'esquema anterior, tenim un pxel d'intensitat 163 que es troba envoltat dels seus vens d'intensitats:
f95, 120, 137, 167, 53, 127, 150, 137, 134, 49, 143, 156, 163, 88, 29, 132, 177, 136, 196, 53, 108, 189,
172, 195, 127g
i el voldrem substituir per la mediana dels seus vens. Com que la mediana es el valor que separa un
conjunt de valors en dos subconjunts del mateix tamany, la podem calcular ordenant els 25 vens:
f29, 49, 53, 53, 88, 95, 108, 120, 127, 127, 132, 134, 136, 137, 137, 143, 150, 156, 163, 167, 172, 177,
189, 195, 196g
i agafant l'element que es troba just al mig. En aquest cas el 136. Es a dir, que el ltre de la mediana
substituiria el 163 que tenem per 136.
Aquesta operacio es repeteix per a tots els pxels, donant com a resultat a la imatge ltrada.
Es possible, a mes, extendre el ltre per a tractar imatges en color. Nomes cal tractar cada canal de
color (vermell, verd i blau) com si fossin imatges de grisos separades. El resultat el podeu veure a:
L'objectiu del projecte es implementar un programa que llegeixi un imatge d'un txer en format
PNM (en color), aplicar-li el ltre de la mediana amb una nestra de 5  5 i escriure el resultat en un
segon txer PNM. Cal que el programa faci us del que hem vist a classe:
 Classes i objectes: Ja vam veure com tractar imatges fent servir un conjunt de classes (Pixel,
Imatge, ...).
 Memoria dinamica: Cal que el vostre programa sigui capac de tractar imatges d'una mida arbitraria.
Com a consequencia haureu de fer servir memoria dinamica per a reservar una quantitat d'espai
que dependra del tamany de la imatge.
 Ordenacio: Per a calcular la mediana d'un conjunt de nombres cal ordenar-los primer. Una opcio
es fer servir algun dels algorismes que hem vist.
 STL: Una altra manera de poder llegir imatges de mida arbitraria (en comptes de utilitzar memoria
dinamica) es fer servir alguna de les estructures de STL. Tambe podeu fer servir els algorismes
d'ordenacio de STL en comptes d'implementar l'algorisme d'insercio.

1 respuesta

rikhard999999
Message postés
53
Date d'inscription
domingo, 20 de diciembre de 2009
Estatus
Miembro
Última intervención
miércoles, 19 de mayo de 2010
153
7 may 2010 a las 16:48
--OK




Rikhard Aleman

MX, NL.
1