Foros del Web » Programación para mayores de 30 ;) » Java »

Filtro de media 3x3

Estas en el tema de Filtro de media 3x3 en el foro de Java en Foros del Web. Hola a todos los del foro!! Estoy intentando difuminar una imagen en Java y quiero utilizar el filtro de media 3x3. Estoy recorriendo la imagen ...
  #1 (permalink)  
Antiguo 07/10/2008, 09:55
 
Fecha de Ingreso: junio-2008
Mensajes: 20
Antigüedad: 15 años, 10 meses
Puntos: 0
Filtro de media 3x3

Hola a todos los del foro!!
Estoy intentando difuminar una imagen en Java y quiero utilizar el filtro de media 3x3. Estoy recorriendo la imagen y por cada pixel, cojo los valores de sus píxeles colindantes, los sumo todos (menos el valor del pixel en el que estoy) y lo divido entre 8 y ese será el valor nuevo del pixel. El problema es que la imagen no se difumina ¿qué estoy haciendo mal? Gracias de antemano. LUCÍA.
  #2 (permalink)  
Antiguo 08/10/2008, 12:42
 
Fecha de Ingreso: julio-2008
Ubicación: Ukraine, Donetsk
Mensajes: 43
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Filtro de media 3x3

en rusia hablan: "no curo a traves de foto". Puede usted mostrar codigo. Si hay exepciones, mostrarlos tambien.
  #3 (permalink)  
Antiguo 08/10/2008, 12:48
 
Fecha de Ingreso: junio-2008
Mensajes: 20
Antigüedad: 15 años, 10 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;
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:02.