Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Crear una imagen .raw a partir de varios bmp

Estas en el tema de Crear una imagen .raw a partir de varios bmp en el foro de C/C++ en Foros del Web. Hola a todos. Pues como dice el título, necesito crear un archivo .raw (y su hdr) a partir de un montón de ficheros bmp capturados ...
  #1 (permalink)  
Antiguo 07/07/2014, 09:01
 
Fecha de Ingreso: febrero-2014
Mensajes: 55
Antigüedad: 10 años, 1 mes
Puntos: 3
Crear una imagen .raw a partir de varios bmp

Hola a todos.

Pues como dice el título, necesito crear un archivo .raw (y su hdr) a partir de un montón de ficheros bmp capturados por una cámara.

Estoy buscando y lo único que encuentro es como hacerlo a la inversa, alguien me puede ayudar por favor?

Gracias y saludos.
  #2 (permalink)  
Antiguo 07/07/2014, 09:18
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Crear una imagen .raw a partir de varios bmp

¿Ya tienes la inversa en C++?
__________________
Visita mi perfil en LinkedIn
  #3 (permalink)  
Antiguo 07/07/2014, 10:37
 
Fecha de Ingreso: febrero-2014
Mensajes: 55
Antigüedad: 10 años, 1 mes
Puntos: 3
Respuesta: Crear una imagen .raw a partir de varios bmp

¿Pasar de .raw a .bmp? No, eso no necesito hacerlo. Pero ponlo en google y salen varias entradas sobre como hacer eso.
  #4 (permalink)  
Antiguo 07/07/2014, 11:10
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Crear una imagen .raw a partir de varios bmp

Tal vez te sirve https://code.google.com/p/libbmp/
__________________
Visita mi perfil en LinkedIn
  #5 (permalink)  
Antiguo 07/07/2014, 15:17
 
Fecha de Ingreso: febrero-2014
Mensajes: 55
Antigüedad: 10 años, 1 mes
Puntos: 3
Respuesta: Crear una imagen .raw a partir de varios bmp

Gracias por el aporte, esa librería me vendrá muy bien.

Aunque sigo teniendo el problema principal, que es saber cual es el formato del .raw, si tiene cabeceras etc.
Se que las imágenes que manejo constan de 2 ficheros, el .raw que son los "bytes en sí" y un .hdr que parece ser la cabecera (muy extensa).

Seguiré buscando.

Saludos.
  #6 (permalink)  
Antiguo 08/07/2014, 05:55
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Crear una imagen .raw a partir de varios bmp

Puede ser problemático. Si entras en la Wikipedia para archivos .RAW:

http://es.wikipedia.org/wiki/RAW_(formato)

verás este apartado:

Cita:
Distintas versiones del formato
El gran inconveniente de este formato es la falta de estandarización: cada fabricante de cámaras usa su propia versión del formato, lo que puede producir incompatibilidades o que esa versión de RAW no se pueda usar en el futuro. La iniciativa OPENRAW trabaja para que los fabricantes de cámaras creen un formato RAW de código abierto y estándar. Una alternativa de código abierto podría ser el Digital Negative Format o DNG de Adobe.
Suerte...
  #7 (permalink)  
Antiguo 08/07/2014, 16:00
 
Fecha de Ingreso: febrero-2014
Mensajes: 55
Antigüedad: 10 años, 1 mes
Puntos: 3
Respuesta: Crear una imagen .raw a partir de varios bmp

Vale, la cosa se complica.

El caso es que si que tengo varios archivos .raw junto con su .hdr generados por esa cámara.

Mi pregunta es si valdrá con coger todos los bmp, meter todos su bytes en un fichero y ponerle extensión .raw. Luego crear el fichero .hdr con los parámetros sacados de la cámara o algo así (como digo tengo hdr generados para verlos).

Antes que eso miraré si en la API que trae la cámara aparece alguna función que haga eso (espero que si, si no, estoy jodido)

Saludos y gracias a todos.
  #8 (permalink)  
Antiguo 09/07/2014, 02:16
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Crear una imagen .raw a partir de varios bmp

Los archivos BMP son archivos de mapa de bits, y los primeros bytes del archivo son una cabecera en la que está la información acerca del tamaño de la imagen en pixels, número de colores, etc. Por tanto, no basta con meterlos todos en un fichero y cambiarle la extensión. El archivo .hdr que genera la cámara será (supongo) la cabecera correspondiente al archivo de imagen, y que contendrá la información relativa a esa imagen (tamaño, colores, resolución, etc). Si se puede descifrar ese archivo, en teoría sería posible crear un archivo con ese formato raw a partir de otro formato.

Dices que has encontrado sobre hacerlo a la inversa, ¿Es con un programa hecho por tí? ¿Es con alguna aplicación comercial/gratuita? ¿Es con alguna aplicación que te haya venido incluída con la cámara, u obtenida de la web del fabricante?

Y una pregunta final: ¿Necesitas que esa composición esté en formato raw, o te valdría con cualquier formato estándar de imagen?
  #9 (permalink)  
Antiguo 09/07/2014, 07:22
 
Fecha de Ingreso: febrero-2014
Mensajes: 55
Antigüedad: 10 años, 1 mes
Puntos: 3
Respuesta: Crear una imagen .raw a partir de varios bmp

Cita:
Iniciado por Fw190 Ver Mensaje
[... ]Por tanto, no basta con meterlos todos en un fichero y cambiarle la extensión. El archivo .hdr que genera la cámara será (supongo) la cabecera correspondiente al archivo de imagen, y que contendrá la información relativa a esa imagen [...]. Si se puede descifrar ese archivo, en teoría sería posible crear un archivo con ese formato raw a partir de otro formato.
Hola de nuevo, gracias por la respuesta.

En primer lugar, respecto a los BMP:
- Contaba con que tenían cabecera.
- Entonces, ¿solo con quitarles la cabecera y escribirlos juntos en un .raw ya es suficiente? (añadiendo el .hdr claro)

En segundo lugar, si que es indispensable que esté en ese formato por lo visto, desde luego es como trabajan ellos así que lo tengo que hacer así.

Respecto a descifrar el hdr:
- La dificultad es que no se qué son la mayoría de los params., adjunto un ejemplo:
Código:
ENVI
description = {
File Imported into ENVI }
file type = ENVI
sensor type = Imspector Spectral Camera, SW ver 3.004
acquisition date = DATE(dd-mm-yyyy): 25-07-2012
NavSync Timing = {20016, 0}
HAWK_NUC_BPR = {0}
qpfTiming = { 102.00, 60160.83}

interleave = bil /* <=== Esto es band intervealed by line, he investigado y es un "encoding de imágenes" por lo que entiendo */
samples = 320
lines   = 919
bands = 256
default bands = { 0, 0 , 0 }
header offset = 0
data type = 12
byte order = 0
x start = 0
y start = 0

fps =  15.00
binning = {1, 1}
vroi = {1, 256}
hroi = {1, 320}
vimg = {1, 256}
sensorid = 702345

tint = 5.0000
himg = {30, 320}
fodis = {12, 16}

errors = {none}

Wavelength = { 
.... 
un montón de núms. con decimales separados por '.'
y separados entre si por ','
....
}
En definitiva, para crear la imagen ¿basta con esto?:
- Crear el raw concatenando todos los bmp quitando las cabeceras
- Crear el hdr correspondiente

Gracias y saludos.
  #10 (permalink)  
Antiguo 09/07/2014, 07:36
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Crear una imagen .raw a partir de varios bmp

No solo es quitar la cabecera y ya tenemos un raw... Se trata de que la información que se guarda y como se guarda, es diferente de un formato a otro.

Aqui te paso el formato interno de un BMP y el formato de un RAW de Canon (por poner un ejemplo). Transformar de uno a otro es "simplemente" leer el fichero y escribir los datos como los necesita el otro fichero.
__________________
Aviso: No se resuelven dudas por MP!
  #11 (permalink)  
Antiguo 09/07/2014, 07:41
 
Fecha de Ingreso: febrero-2014
Mensajes: 55
Antigüedad: 10 años, 1 mes
Puntos: 3
Respuesta: Crear una imagen .raw a partir de varios bmp

Ok, entiendo.

Entonces necesito saber cómo son los ficheros .raw de mi cámara, intentaré averiguarlo.

Me sigue quedando el problema del hdr que, como veis, tiene un montón de parámetros y no se de donde salen ni nada.

Saludos.
  #12 (permalink)  
Antiguo 09/07/2014, 07:45
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Crear una imagen .raw a partir de varios bmp

El HDR es un efecto que tendrás que conseguir aplicando unos filtros matemáticos a las imagenes.
__________________
Aviso: No se resuelven dudas por MP!
  #13 (permalink)  
Antiguo 10/07/2014, 04:30
 
Fecha de Ingreso: febrero-2014
Mensajes: 55
Antigüedad: 10 años, 1 mes
Puntos: 3
Respuesta: Crear una imagen .raw a partir de varios bmp

La API de la cámara si que tiene una clase para utilizar filtros.
¿Lo que me dices es que los parámetros del hdr los tengo que sacar de esa clase?

Gracias.
  #14 (permalink)  
Antiguo 11/07/2014, 01:10
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Crear una imagen .raw a partir de varios bmp

Cita:
- Entonces, ¿solo con quitarles la cabecera y escribirlos juntos en un .raw ya es suficiente? (añadiendo el .hdr claro)
No, no basta con eso. Para unir varias imágenes en un solo BMP, tendrás que crear la cabecera adecuada. Por ejemplo, partiendo de una cabecera ya existente, poner correctamente el tamaño final total, así como la anchura y altura de la nueva imagen. Luego, tendrás que colocar los pixels de las imágenes en su orden correcto, creo que vienen primero los pixels correspondientes a la primera línea horizontal, a continuación los de la segunda, etc. Es decir, que tendrás que ir leyendo a la vez, línea por línea de pixels, de todos los BMPs que quieras unir para ir creando el de salida. Suponiendo que todo haya ido bien, tendrías un BMP "gigante" con todos los BMPs que querías unir (así, al menos, comprobarás si has montado bien las imágenes). Y, finalmente, pasarlo a RAW.

Para ponerlo en formato RAW, bueno, ya tienes el enlace de Malenko para el formato de Canon. Aunque tu cámara no sea una Canon, puedes suponer que "los tiros sonarán por ahí". Es más, para Nikon (la que tengo yo) hay esto:

http://www.nikonusa.com/en/Learn-And...ormat-nef.html

De la lectura de estos enlaces concluyo que la imagen RAW es un negativo, y que la cabecera, además de la información sobre la imagen, contiene datos acerca de cómo se ha obtenido esa imagen e instrucciones sobre cómo tratarla. Es decir, que no será tan fácil generar el HDR adecuado.

Por cierto, que quizá programas como Scilab tengan funciones que te faciliten esa composición que buscas (al menos, para unir varios BMP en uno solo y luego partir de ahí).

Aunque nunca me he metido en estos temas, me ha picado la curiosidad, así que, si saco algo en claro, ya avisaré.

Saludos,

Etiquetas: bmp
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 17:37.