08/10/2008, 12:48
|
| | Fecha de Ingreso: junio-2008
Mensajes: 20
Antigüedad: 16 años, 6 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;
} |