Programación General > Java
tarea con netbeans
ceaudrey:
Hola,
ya hice la tarea. Gracias
Ahora tengo otra tarea que tiene que ver con images. El enunciado no lo entiendo muy bien sino ya lo habria empezado. Aqui le mando la parte del enunciado que no entiendo(es la transformacion con pixel que no entiendo muy, como calcular el promedio ponderado con arreglo bidimensionales,
como van cambiando los pixeles cuando uno hace la transformacion,
y lo del pixel que queda encima y el que queda abajo dependiendo del porcentaje de la ponderacion:
Usted debera realizar un programa que permita abrir una imagen y luego aplicarle una de las
dos transformaciones posibles. Finalmente debera permitirle al usuario guardar la imagen resultante
en un archivo. Una de las transformaciones que debe estar disponible es doblar la imagen. Esta
transformacion emula una imagen que se doblara por la mitad y fuese medio transparente. Para
ello debe generar una imagen de la mitad del tama~no de la original, donde cada pixel de esta
nueva imagen estara formado por el promedio ponderado de los pixeles de la imagen original que
al quedar doblada quedan en la misma ubicacion. Por ejemplo, si la imagen es de 10x20 (ancho x
alto) pxeles, y hacemos un dobles en el ancho, queda como resultado una imagen de 5x20 pixeles,
donde el pixel (0,0) en esta nueva imagen sera el promedio ponderado del pixel (0,0) y el pixel (9,0),
a su vez, el pixel (3,2) en la nueva imagen, sera el promedio ponderado del pixel (3,2) y el pixel
(6,2) de la imagen original.
Hablamos de promedio ponderado porque no valdran lo mismo ambos pixeles promediados, ya
que la idea es hacer notar mas aquel que queda encima, por lo que dependera si se dobla de derecha
a izquierda (para el caso del (0,0) queda encima el pixel (9,0)) o de izquierda a derecha (es ese caso
queda encima el (0,0)). De esta forma, el pixel que queda encima tendra una ponderacion del 65 %,
en cambio el que queda abajo tendra una ponderacion del 35% restante.
Gracias por todo
gophlb:
no se si me he enterado muy bien, pero basicamente...
el promedio ponderado se calcula asi:
(pixelQueQuedaArriba*0'65)+(pixelQueQuedaDebajo*0'35)
luego solo tienes que tener en cuenta donde cae cada pixel al doblar la imagen.
Te pongo un ejemplo de como seria el proceso para doblar la parte izquierda sobre la derecha, el resto tendras que pensarlo tu a partir de la explicacion:
Suponiendo que el arreglo bidimensional original es miArreglo[filas][columnas] y que el nuevo es miArregloNuevo[filas][columnas/2] (tendras que ver qué pasa si el tamaño de pixels original es impar...)
Si la parte izquierda pasa a estar sobre la derecha, los puntos a ponderar tendran la siguiente forma:
- el indice "filas" es el mismo
- los indices de columna se agruparan:
0 y totalPixeles-1 (el de la izquierda del todo y el de la derecha del todo)
1 y totalPixeles-2 (el siguiente de la izquireda y el anterior de la derecha)
ahora solo te falta saber donde hay que colocar cada pixel en el nuevo arreglo, para lo cual recomiendo coger una hoja de papel, doblarla...y extraer conclusiones por ti mismo
tambien deberas tener en cuenta si es mas eficiente recorrer el arreglo de izquierda a derecha o de derecha a izquierda dependiendo del doblez que hagas (cuando mires el doblez de la hoja, lo comprenderas)
una vez sabido qué posicion va a ocupar nuestro nuevo pixel y qué posiciones del arreglo original necesitabamos para el calculo...solo queda calcular la ponderacion como te indique arriba y ponerlo en su sitio en el nuevo arreglo.
aplicando el metodo de la hoja de papel y pintando los arreglos te aclararas mejor, es muy importante hacer dibujos de a donde van los pixeles y de donde vienen para saber como tienes que hacerlo. es decir: agota todas las posibilidades de pensar y luego si no eres capaz, pregunta. si no, mal asunto.
un saludo y mucha suerte ;)
ceaudrey:
gracias por la respuesta. tengo un problema:
el promedio ponderado desl pixel (3,2) y (6,2) es (3,2)
como se hace el calculo?
cual es el pixel de arriba y de abajo?
gracias
gophlb:
--- Cita de: "ceaudrey" ---gracias por la respuesta. tengo un problema:
el promedio ponderado desl pixel (3,2) y (6,2) es (3,2)
como se hace el calculo?
cual es el pixel de arriba y de abajo?
gracias
--- Fin de la cita ---
mmmmmmmm
el ponderado tienes que hacerlo con respecto al contenido, supongo. asi pues, coge la funcion que te saca el contenido de esos dos pixeles y luego calcula el ponderado como indica la formula que te dije.
y sobre quien es el pixel de arriba y quien el de abajo...dependera si doblas la mitad de abajo sobre la de arriba o al reves, eso depende de cada caso concreto.
si tu matriz de pixeles es esta (entre parentesis los que mencionas):
0,0__0,1__0,2
1,0__1,1__1,2
2,0__2,1__2,2
3,0__3,1__(3,2)
4,0__4,1__4,2
--------------------------mitad
5,0__5,1__5,2
6,0__6,1__(6,2)
7,0__7,1__7,2
8,0__8,1__8,2
9,0__9,1__9,2
10,0__10,1__10,2
tendras que hacer miArreglo[3][2]*0.65 + miArreglo[6][2]*0.35 y colocarlo donde corresponda (¿has hecho lo de la hoja que te comente para ver donde queda cada nuevo pixel?) si es que doblas la mitad de arriba sobre la de abajo.
si no, el 0.65 y el 0.35 multiplican respectivamente al otro valor :)
ceaudrey:
Hola,
doble una pagina y me di cuenta ahora porque hay que leer a veces desde el final hasta el inicial.
Ahora lo que me cuesta mucho es escribiar todas esas ideas en codigos.
Primero cual es el codigo del metodo para calcular el promedio ponderado de cada pixel?
y como hago para asignarle la nueva posicion de ese pixel en la nueva imagen???
Gracias
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa