¿Cómo convertir una matriz de píxeles a jpg o png?

1

Estoy haciendo un proyecto de procesamiento de imágenes en VHDL. Y como salida estoy obteniendo una matriz de píxeles (32 bits cada uno). Quiero probar estos datos de salida visualmente, para eso se deben convertir en imagen png o jpg o bmp. ¿Cómo puedo hacer eso?

Editar: O si obtengo los mismos datos en cuatro archivos diferentes como alfa, rojo, verde y azul en a.txt, r.txt, g.txt y b.txt respectivamente. ¿Esto hace que sea más fácil obtener la imagen?

    
pregunta tollin jose

5 respuestas

1

Probablemente haya muchas formas de hacer esto, pero si puede usar Matlab, esto no debería ser demasiado difícil. Hace mucho tiempo que lo uso, por lo que no recuerdo los detalles, pero el enfoque general es el siguiente:

Primero, debe leer los valores del archivo .txt en su área de trabajo. Cree cuatro matrices de igual tamaño y cargue cada una de ellas con datos alfa, rojo, azul y codicia, respectivamente. Tendrá que escribir una pequeña función para copiar datos de la matriz txt. No puedo decirle cómo, porque no sé cómo se almacenan los datos en el archivo .txt.

Hay diferentes maneras de mostrar imágenes en Matlab. Consulte el archivo de ayuda sobre cómo crear una imagen RGB desde sus componentes. Hay una función incorporada que lo hará por usted (concatenación). Entonces, cuando tenga matrices / canales R G B separados (de igual tamaño), puede concatenarlos en la tercera dimensión:

  im = cat(3,R,G,B);

Luego puedes usar estas funciones (y otras) para mostrar la imagen:

  imshow(im)
  imagesc(im)

No sé cómo se aplica el canal alfa a la imagen RGB. Lea algunos documentos en él. Quizás no lo necesites.

En cualquier caso, puede editar fácilmente los datos en las matrices para que puedan aceptarse para la creación de imágenes.

Una vez que tenga los canales, puede crear y guardar la imagen en una variedad de formatos de imagen comunes compatibles con Matlab, incluidos .jpg y .png.

    
respondido por el Nazar
3

¿Qué pasa con los núcleos abiertos codificador jpg ?

    
respondido por el Some Hardware Guy
2

Escribir datos de imagen en formato ascii PPM es fácil: enlace Muchos visualizadores de imágenes entienden ese formato, por ejemplo Irfanview.

También hay un formato más complejo que admite 32 bits con canal alfa: enlace

Por lo tanto, al menos tienes que crear el encabezado correcto delante de tus datos. El paquete netpbm ofrece algunas herramientas de conversión de línea de comandos: pamtotiff, pamtopnm, pamtojpeg2k, ...

A menudo usé ese formato de ppm para bancos de prueba en el pasado ...

    
respondido por el Marc
0

Inserte el código VHDL en su banco de pruebas para escribir el marco sin procesar en un archivo. Luego use un codificador / compresor jpeg para generar el jpg, y finalmente ábralo con su visor de imágenes favorito.

Puedo responder por esto (con un nombre apropiado) jpeg-compressor .

Su uso no podría ser más fácil:

// Writes JPEG image to a file. 
// num_channels must be 1 (Y), 3 (RGB), or 4 (RGBA), image pitch must be width*num_channels.
bool compress_image_to_jpeg_file(const char *pFilename, 
                                 int width, int height, 
                                 int num_channels, 
                                 const uint8 *pImage_data, 
                                 const params &comp_params = params());

Solo necesitas escribir un pequeño programa en C ++ que llame a esta función. Hace algunos años lo implementé en Nios II para guardar (y luego cargar) instantáneas de video en vivo, y funcionó bien. Lento, sí, pero seguro.

    
respondido por el apalopohapa
0

Básicamente, desea interpretar una matriz en bruto de datos de píxeles como una imagen. Es posible que pueda utilizar mi mecanismo de archivo de imagen INF para eso. Crea un archivo de texto que contiene comandos para el lector INF para explicar dónde se encuentran los datos de píxeles en la matriz en bruto.

Se deben incluir varias utilidades de manipulación de imágenes, que incluyen el controlador de archivos INF, en mi versión Full Runtime en enlace . Después de instalar eso, los archivos de documentación estarán en el directorio DOC dentro del lugar donde instaló el software. En particular, mire el archivo de documento INF para ver si esto hará lo que quiere.

Los programas de manipulación de imágenes generalmente se llaman IMAGE_xxx, con los archivos doc correspondientes en el directorio DOC. Si configura el archivo INF correctamente, IMAGE_COPY podrá convertir sus datos de píxeles a un archivo JPG, o una serie de otros formatos de archivo. Los formatos de archivo admitidos se enumeran en el archivo de documento IMAGE_TYPES. También puedes usar IMAGE_DISP o IMAGE_EDIT para ver la imagen directamente sin que primero se convierta a un formato de archivo estándar.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas