jasag / Phytoliths-recognition-system

Phytoliths recognition system and labeling tool built in python
BSD 3-Clause "New" or "Revised" License
1 stars 0 forks source link

Pérdida de calidad en guardado JPG #55

Closed alvarag closed 7 years ago

alvarag commented 7 years ago

He estado etiquetando algunos fitolitos y veo que en la carpeta Default las imágenes se guardan con una calidad muy muy baja, ejemplos:

Revisa cómo está funcionando el código de guardado, tal vez puedas especificar la compresión del fichero JPG. Si es así elige la máxima calidad de scikit-image.

Es urgente puesto que espero que desde Barcelona puedan empezar mañana mismo a etiquetar fitolitos y sería aconsejable tener esto corregido para evitar problemas.

jasag commented 7 years ago

Estoy con ello ya. Trataré de dar con la solución lo antes posible.

alvarag commented 7 years ago

Perfecto, gracias

jasag commented 7 years ago

Bueno, he conseguido que se pueda guardar con la misma calidad la imagen. Excepto en los casos en los que la imagen original no se ha de formato JPG. En estos casos se puede observar una comprensión de unas 4 o 5 veces. Pero ahora mismo no sé cual podría ser la solución.

alvarag commented 7 years ago

Escribe aquí el código con el que estás guardando la imagen y lo echo un ojo.

jasag commented 7 years ago

Este sería la linea que guarda el código:

io.imsave(image_path, image, quality=100)

Donde _imagepath es la ruta donde se guarda la imagen, ya con formato JPG, image es el array con los datos de la imagen y quality es el parametro que indica que se guarde la imagen con el 100% de calidad.

Simplemente, lo que acabo de añadir es el parametro quality, que índica a la función de guardado que no reduzca la calidad. Así, funciona sin perdida de calidad cuando no se realiza conversión del formato de la imagen. Pero en las ocasiones que la imagen original es de otra extensión, por ejemplo TIF, se pierde calidad en la conversión al formato JPG.

alvarag commented 7 years ago

No me queda claro, ¿en JPG guarda bien y en TIF no?

He visto esto en stackoverflow... io.use_plugin('freeimage'), no sé si puede servirte.

http://stackoverflow.com/questions/24240039/save-numpy-array-as-image-with-high-precision-16-bits-with-scikit-image

jasag commented 7 years ago

El caso es que todas las imágenes se guardan en JPG. Por lo tanto, si cargas una imagen TIF, esta imagen se guardará con formato JPG. Lo que lleva un cambio de formato. Y también un cambio en el tamaño de la imagen a menos. Lo cual no sería una perdida de calidad.

jasag commented 7 years ago

Aunque el problema inicial que indicabas existía, porque scikit hace una compresión al 75% del tamaño de la imagen, lo cual ya he solucionado con ese parametro. ¿No sé si me explico?

alvarag commented 7 years ago

Entonces ahora el guardado de JPG a JPG no pierde calidad, ¿cierto?

jasag commented 7 years ago

Con ese nuevo parámetro me consta que no. El tamaño de un ejemplo de foto original es de 2,55 MB, y de una nueva de 2,57 MB

alvarag commented 7 years ago

De acuerdo, damos por cerrada la issue.