Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/10/2008, 12:48
lucia-lopez
 
Fecha de Ingreso: junio-2008
Mensajes: 20
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Filtro de media 3x3

El código sería el siguiente:

public MemoryRGB24Image extraeRuido (MemoryRGB24Image imagenS){

for (int i=0; i<512; i++){
for (int j=0; j<512; j++){


if ((i==0)&&(j==0)){

int num1= 0;
int num2= 0;
int num3= 0;
int num4= 0;
int num5= imagenS.getSample(i,j+1);
int num6= 0;
int num7= imagenS.getSample(i+1,j);
int num8= imagenS.getSample(i+1,j+1);
int total = (num1+num2+num3+num4+num5+num6+num7+num8)/8;
imagenS.putSample(i,j,total);

}

else if ((i==511)&&(j==511)){

int num1= imagenS.getSample(i-1,j-1);
int num2= imagenS.getSample(i-1,j);
int num3= 0;
int num4= imagenS.getSample(i,j-1);
int num5= 0;
int num6= 0;
int num7= 0;
int num8= 0;
int total = (num1+num2+num3+num4+num5+num6+num7+num8)/ 8; imagenS.putSample(i,j,total);

}

else if (i==0){
if (j==511){
int num1= 0;
int num2= 0;
int num3= 0;
int num4= imagenS.getSample(i,j-1);
int num5= 0;
int num6= imagenS.getSample(i+1,j-1);
int num7= imagenS.getSample(i+1,j);
int num8= 0;
int total = (num1+num2+num3+num4+num5+num6+num7+num8)/8;
imagenS.putSample(i,j,total);
}else{
int num1= 0;
int num2= 0;
int num3= 0;
int num4= imagenS.getSample(i,j-1);
int num5= imagenS.getSample(i,j+1);
int num6= imagenS.getSample(i+1,j-1);
int num7= imagenS.getSample(i+1,j);
int num8= imagenS.getSample(i+1,j+1);
int total = (num1+num2+num3+num4+num5+num6+num7+num8)/8;
imagenS.putSample(i,j,total);
}
}


else if (j==0){
if (i==511){
int num1= 0;
int num2= imagenS.getSample(i-1,j);
int num3= imagenS.getSample(i-1,j+1);
int num4= 0;
int num5= imagenS.getSample(i,j+1);
int num6= 0;
int num7= 0;
int num8= 0;
int total = (num1+num2+num3+num4+num5+num6+num7+num8)/8;
imagenS.putSample(i,j,total);
}else{
int num1= 0;
int num2= imagenS.getSample(i-1,j);
int num3= imagenS.getSample(i-1,j+1);
int num4= 0;
int num5= imagenS.getSample(i,j+1);
int num6= 0;
int num7= imagenS.getSample(i+1,j);
int num8= imagenS.getSample(i+1,j+1);
int total = (num1+num2+num3+num4+num5+num6+num7+num8)/8;
imagenS.putSample(i,j,total);
}
}
}
}
return imagenS;
}