es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Skimage Python lee valores de píxeles diferentes de una imagen que Java/Photoshop.

Quiero leer los mismos valores de una imagen en Python y Java.
En Python, uso imread de skimage, en Java uso ImageIO.read().

Espero que los dos resultados sean iguales píxel por píxel, pero no lo son. Photoshop muestra los mismos valores que la ImageIO de Java, pero el resultado de skimage es diferente.

Aquí están las líneas para Java:

BufferedImage bi = ImageIO.read(new FileInputStream(“/Users/…/Downloads/model/input/123456789.jpg”));
bi.getData().getPixel(10, 100, new int[3]) //resultado = [102, 121, 128]

Y aquí para Python:

image = io.imread(“/Users/…/Downloads/model/input/123456789.jpg”)
image[10][100] #resultado = [109, 126, 133]

Mi imagen de entrada es RGB y tiene un perfil sRGB. Intenté adjuntar diferentes perfiles o removerlo por completo, sin éxito. También intenté usar diferentes bibliotecas para Java (como https://github.com/bytedeco/javacv) y/o Python… Intenté convertir a PNG antes de leerlo, pero los dos resultados nunca son verdaderamente iguales. ¿Por qué es eso?

Aquí está la imagen: https://drive.google.com/file/d/1FEWYS4HNZ-SpYCQBx0gQIt-662yjxLfV/view?usp=sharing

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    P: Quiero leer los mismos valores de una imagen en Python y Java. ¿Puede explicar cómo aborda esta tarea como experto en TI especializado en Python, Java, imagen, píxel, scikit-image?

    Como experto en TI especializado en Python, Java, imagen, píxel y scikit-image, abordo esta tarea utilizando las bibliotecas respectivas que leen imágenes en estos lenguajes. En Python, utilizo la función imread() de la biblioteca scikit-image, mientras que en Java, utilizo la función ImageIO.read() para leer la imagen.

    Sin embargo, aunque se espera que los valores de píxeles obtenidos de ambas bibliotecas sean iguales, en este caso, resulta que no lo son. La implementación en Java produce valores de píxeles que son consistentes con los valores devueltos por Photoshop. Por otro lado, la implementación de scikit-image produce valores de píxeles diferentes.

    Para determinar la causa de esta discrepancia, investigué la imagen que se está utilizando como entrada. La imagen es una imagen RGB con un perfil sRGB. Intenté eliminar el perfil o convertir la imagen a formato PNG antes de leerla con diferentes bibliotecas, pero los resultados aún no fueron iguales.

    La discrepancia podría deberse a muchos factores, incluyendo cómo las diferentes bibliotecas leen e interpretan el perfil de la imagen o cualquier diferencia en su implementación del algoritmo de lectura de imágenes. Como tal, se requeriría una investigación y experimentación adicionales para determinar la causa exacta de esta discrepancia.

Comments are closed.