OJODIGITAL |
|
|
|
| perfectRAW/perfectBLEND Foro para tratar todo lo relacionado con estos dos programas basados en DCRaw para el revelado de imágenes RAW y el blending de imágenes para aumentar su rango dinámico |
![]() |
|
||||
|
Desarrollo de un GUI (Interface Gráfica) para DCRAW
Abro este Hilo a petición de Manuel Llorens para continuar con el tema iniciado en el hilo Recuperación altas luces distintos reveladores RAW
En él se había iniciado una serie de mensajes que no tenían mucho que ver con el post original en la dirección de desarrollar un nuevo GUI para DCRaw en C# que integrara DCRaw como una librería. A continuación copiaré los mensajes del post original relacionados con este tema. _________________________________ Por ariznaf en el hilo original: Pues la verdad es que hay una diferencia notable. Es impresionante que un revelador gratuito y sin ningún apoyo de las marcas pueda conseguir esos resultados. ¡¡Cuánto me gustaría que DCRAW tuviera una interface mucho más amigable e integrada en Lightroom o Photoshop al estilo del ACR!! Con una interface así le haría el revelador ideal para todas las fotos. Con la interface actual (aún con las interfaces visuales), la verdad es que al flujo de trabajo se me hace mucho más complejo y sólo lo utilizo de manera muy puntual (por tus recomendaciones). Pero eso no creo que llegue, porque por lo que he leido sobre Coffin es un purista y seguro que usa la interface de Linux de linea de comandos ![]() Por cierto, la imagen de DCRAW -h 9 ¿la has corregido en rojos o es un resultado de la recuperación de altas luces? Veo los ojos un poco más rojizos que en la otra y también en los brillos de la frente parece tener un ligerísimo tono rojizo, aunque los resultados son muy buenos. _________________________________ Por _GUI_ en el post original: Cita: Empezado por ariznaf Pues la verdad es que hay una diferencia notable. Es impresionante que un revelador gratuito y sin ningún apoyo de las marcas pueda conseguir esos resultados. ¡¡Cuánto me gustaría que DCRAW tuviera una interface mucho más amigable e integrada en Lightroom o Photoshop al estilo del ACR!! Coffin no tiene ninguna intención de generalizar DCRAW como revelador. De hecho, usarlo en modo línea de comandos es un mal uso del mismo. Lo verdaderametne valioso de DCRAW y de lo que se benefician un montón de programas (algunos se están haciendo muy populares pese a no ser comerciales como UFRAW y RAW Therapee) es su código fuente, y en particular la parte de decodificación de formatos RAW. Cuando miras el código de DCRAW te das cuenta de lo sumamente puñeteros que son los fabricantes de cámaras, con formatos RAW totalmente distintos unos de otros, llenos de "trampas", de modo que prácticamente hay que tratar la decodificación de cada modelo, o como poco de cada marca, de manera individualizada. DCRAW es la única manera que tienen muchos otros de hacer aplicaciones capaces de leer RAWs de cualquier cámara, sin él, esto estaría vetado a los programas comerciales y los no comerciales leerían 2 o 3 formatos populares y el DNG a lo sumo. Lo que pasa es que además DCRAW cuenta con alguna lindeza peculiar que en determinados casos funciona bien, como lo de la recuperación de altas luces. Pero en otros no, dando resultados horribles (sin ir más lejos en el ejemplo de arriba, las zonas quemadas de la camisa se ven invadidas de tonos procedentes de la piel), y esto es algo que no puede permitirse un revelador comercial el cual debe dar un resultado correcto con solo pulsar un botón o de lo contrario el usuario medio directamente diría que funciona mal. Por eso creo que aquí DCRAW juega con ventaja ya que puede permitirse el lujo de hacer cosas ("experimentos") que en ocasiones funcionan, y en otras no; pero es que el usuario de DCRAW ya está acostumbrado y sabe que tiene que aportar más que el usuario de ACR, a cambio en ocasiones de un beneficio extra que ACR no te puede dar. Si la imagen del chico anterior la revelamos 2 veces: una como he mostrado para salvar los brillos de la piel, y otra en tonos neutros para la camisa, el resultado simplemente no se puede mejorar con ningún revelador comercial actual. Pero claro, tienes que saberlo manejar, y conocer sus limitaciones y cómo trampearlas. _________________________________ Por ManuelLlorens en el post original: _GUI_ el resultado es increíble, algún fanático de ACR podría pensar que lo has retocado a mano . Creo que DCRAW tiene otra ventaja clara, además de las ya comentadas, y es que nos sirve de plataforma para experimentar con él. Podemos modificar el código fuente y adaptarlo a nuestras necesidades. Como dice _GUI_, Adobe no va a realizar añadir una función que no siempre funcione bien, pero tampoco va a añadir una funcionalidad que solo demanden unos pocos usuarios. Además, crear un interfaz gráfico en condiciones es mucho más fácil que hacer un revelador. La mayoría de funciones que añaden los reveladores no se usan casi nunca o pueden hacerse con más calidad en PS. No hace falta que sea tan completo como alguno de los que ya hay, basta con que tenga las opciones básicas que más se utilizan. Al final, si vas a acabar retoncando en PS, puedes dejar que dcraw haga el revelado y poco más y para eso no hace falta un interfaz gráfico complejo. Yo lo que veo primordial, es que DCRAW haga todo aquello que de hacerse a posteriori haga perder calidad a la imagen, aunque sea muy poca. Esa es la filosofía que entiendo que trata de extender _GUI_ y yo me he suscrito a ella. La lista de funciones que yo necesitaría en un interfez gráfico es corta. Yo usaría ACDSee Pro o Adobe Bridge como catalogador/navegador. Con una orden se manda el archivo al GUI de DCRAW. Previsualización, poder marcar la zona de medición para el balance de blancos. Ajustar exposición y previsualizar con un histograma. Ver detalles ampliados de una zona para ver la recuperación de luces, el ruido, el enfoque y la corrección de aberraciones cromáticas y grabar. También es fácil crear un archivo con los parámetros de revelado para procesar un lote de fotos. Yo diría que si fusionamos el DCRAW modificado por nosotros (y las modificaciones que quedan por hacerle), el MEGUI, el Histogrammar y cuatro cosas más tenemos todo lo que necesitamos o mejor. El resultado final estoy seguro que se convertiría en mi revelador principal. Un saludo: _________________________________ Por ariznaf en el post original: @Manuel: sí, estoy bastante de acuerdo con lo que dices de que no necesitamos en el GUI del revelador demasiadas cosas. A tu lista yo añadiría almacenar los parámetros utilizados de revelado en el archivo xmp (o dentro del DNG en el caso de los DNG) asociado, para poder repetir el revelado. Con ello, no necesitaríamos conservar los TIFF generados por el revelador, pues siempre podríamos repetir el proceso (a mi me gusta conservar los RAW intactos y no los TIFF porque ocupan mucho menos y son "el original"). Otra cosa que le pediría para poder sustituir a reveladores como el ACR es una cierta integración con Lightroom, o PS. No hace falta que vaya muy allá, únicamente que se pueda lanzar el revelador del DCRaw desde los programas de catalogación pasándoles la lista de las imágenes actualmente seleccionadas para trabajar sobre ellas (al estilo del ACR con Bridge). Una última cosa que sería muy deseable es que el revelador actualizara las imágenes de previsualización de los RAW, para que los catalogadores mostraran los resultados de los ajustes realizados y no se quedaran con sus propios parámetros de revelado únicamente. Sé que esto puede ser algo más difícil, pues habría que actualizar esos valores en los RAW. En los DNG se podría utilizar el API de Adobe, pero en los otros no tengo ni idea. Muchos usamos un catalogador para manejar las imágenes, y para poder integrar el revelador en el flujo de trabajo (y que DCRAW sustituya a ACR por ejemplo), resulta imprescindible poder lanzar el revelador desde el programa de catalogación y ver los resultados en las previsualizaciones. Si os decidís a lanzaros con eso, yo podría colaborar algo en la interface del programa´. Hace tiempo que no programo, pero tengo experiencia en C# (y también en C++, aunque para la interface creo que sería preferible C#). También podría intentar pelearme con el API de Adobe para escribir los xmp, si os parece de interés. Eso sí me tendríais que indicar cuál sería el compilador a utilizar (y por favor que no sea de linea de comandos exclusivamente muchos hace tiempo que manejamos entornos de programación tipo a Visual Studio).Un entorno de este tipo sería SharpDevelop (la desventaja es que sólo admite C#) que utilizando Mono y .NET podría generar ejecutables para Linus. Otra alternativa Eclipse (con C# y C++ pero un entorno mucho más complejo) o Mono Develop. ¿Tíenes experiencia con ellos? No dispongo de un tiempo grande o que pueda dedicar todos los días, por lo que creo que podría ayudar mejor en tareas que fueran muy concretas e independientes del resto (por ejemplo lo de los xmp). _________________________________ Por ManuelLlorens en el post original: Cita: Empezado por ariznaf A tu lista yo añadiría almacenar los parámetros utilizados de revelado en el archivo xmp (o dentro del DNG en el caso de los DNG) asociado, para poder repetir el revelado. Sí a algo así me refería en mi lista. Es un "por supuesto" clarísimo. Cita: Empezado por ariznaf Con ello, no necesitaríamos conservar los TIFF generados por el revelador, pues siempre podríamos repetir el proceso (a mi me gusta conservar los RAW intactos y no los TIFF porque ocupan mucho menos y son "el original"). Yo actualmente solo relevo las que voy a procesar después en PS, con lo que solo guardo esos TIFFs, el resto se quedan en RAW o en DNG (esa es otra discusión sobra la que aún no tengo formada un opinión definitiva). Cita: Empezado por ariznaf una cierta integración con Lightroom, o PS. No hace falta que vaya muy allá, únicamente que se pueda lanzar el revelador del DCRaw desde los programas de catalogación pasándoles la lista de las imágenes actualmente seleccionadas para trabajar sobre ellas (al estilo del ACR con Bridge). Yo uso ACDSee Pro 2 y sí se puede hacer eso. A mí me parece más cómodo que Bridge o Lightroom. Bueno que Lightroom seguro porque para mí es bastante incómodo. Cita: Empezado por ariznaf Una última cosa que sería muy deseable es que el revelador actualizara las imágenes de previsualización de los RAW, para que los catalogadores mostraran los resultados de los ajustes realizados y no se quedaran con sus propios parámetros de revelado únicamente. Totalmente de acuerdo. En eso habría que hacer ingeniería inversa de DCRAW que extrae esos thumbnails y hacer "lo contrario". Cita: Empezado por ariznaf Si os decidís a lanzaros con eso, yo podría colaborar algo en la interface del programa´. Hace tiempo que no programo, pero tengo experiencia en C# (y también en C++, aunque para la interface creo que sería preferible C#). Yo ya me había decantado por C#, en el que tengo experiencia. Lo malo es que _muy_ lento trabajando con TIFF, incluso con secciones unsafe. Estaba empezando un GUI con C# y direct-x, pero me echa para atrás que al usar direct-x me quedo sin poder portar a Linux. Así que la alternativa es usar una librería de código abierto para TIFF en C/C++ e integrarla en C#. Lo tengo en la lista de cosas a mirar. Cita: Empezado por ariznaf También podría intentar pelearme con el API de Adobe para escribir los xmp, si os parece de interés. Buff. Yo he estado mirando y es tremendamente compleja, al menos para mi oxidado C++. La verdad es que el C++ y yo nunca nos hemos gustado, a mí él me cae mal, y yo a él le caigo peor. En serio, me parece super improductivo trabajar en C++. Yo en los tiempos pre .NET trabajaba mucho en VB6/ASP los GUIs y tiraba de COM/ATLs en C++. Sin duda alguna el GUI en C#. Cita: Empezado por ariznaf Un entorno de este tipo sería SharpDevelop (la desventaja es que sólo admite C#) que utilizando Mono y .NET podría generar ejecutables para Linus. Otra alternativa Eclipse (con C# y C++ pero un entorno mucho más complejo) o Mono Develop. ¿Tíenes experiencia con ellos? Para C# sólo con VS, pero echo un vistazo ahora. Cita: Empezado por ariznaf No dispongo de un tiempo grande o que pueda dedicar todos los días, por lo que creo que podría ayudar mejor en tareas que fueran muy concretas e independientes del resto (por ejemplo lo de los xmp). Me parece perfecto. Cuando tenga un rato voy a diseñar una maqueta del GUI en PS y un mínimo análisis funcional. En paralelo haré un primer intento. En cualquier caso creo que lo ideal es tener algo funcionando en un plazo mínimo y luego ir añadiendo cosas. Si nos embarcamos en algo muy ambicioso nos hundimos antes de acabar. Lo que no tengo claro y me anda dando vueltas en la cabeza es si integrar DCRAW en una DLL (o utilizar alguna que ya hay) o dejarlo en un EXE. Lo malo de lo primero es que habría que estar programando cada vez que Coffin actualice (aunque ya habrá que actualizar la versión que hemos modificado de DCRAW, pero los cambios son mucho menores) y eso puede matar el proyecto. La segunda opción nos da un resultado más lento, pero más versátil. Para ello voy a añadir a DCRAW la opción de revelar solo un trozo de la imagen. Aún así también quiero mirar si puedo crear una cutre librería (aunque sea estática) con DCRAW sin tocar el código de Coffin, solo añadiendo algunas funciones. Un saludo: _________________________________ Por ariznaf en el post original: Cita: Buff. Yo he estado mirando y es tremendamente compleja, al menos para mi oxidado C++. La verdad es que el C++ y yo nunca nos hemos gustado, a mí él me cae mal, y yo a él le caigo peor. En serio, me parece super improductivo trabajar en C++. Yo en los tiempos pre .NET trabajaba mucho en VB6/ASP los GUIs y tiraba de COM/ATLs en C++. Sin duda alguna el GUI en C#. Sí, la verdad es que C++ es muy tiquismiquis con el acceso a la memoria y la liberación de memoria. Pero si queremos reaprovechar librerías (como la de Adobe) no quedara más remedio que hacer un "stub" en C++ y que presente una interface C# para hacer justo lo que se necesite (como pasarle al "stub" los parámetros de revelado y que éste los guarde en los metadatos xmp). Yo también creo que es mejor huir lo más posible de C++. Cita: Yo ya me había decantado por C#, en el que tengo experiencia. Lo malo es que _muy_ lento trabajando con TIFF, incluso con secciones unsafe. Estaba empezando un GUI con C# y direct-x, pero me echa para atrás que al usar direct-x me quedo sin poder portar a Linux. Así que la alternativa es usar una librería de código abierto para TIFF en C/C++ e integrarla en C#. Lo tengo en la lista de cosas a mirar. Sí, si queremos que pite en Linux (y creo que se le debe a Coffin y la comunidad Linux, aunque yo no lo uso) no se podrá usar direct-x. ¿Qué ótras alternativas hay como librería para manejo de bitmaps? ¿OpenGL podría servir? Está más orientada a representación 3D, pero maneja texturas y por tanto bitmaps. No sé si la funcionalidad de Open GL puede ser suficiente. Cita: Para C# sólo con VS, pero echo un vistazo ahora. Yo también utilizé sólo VS. Pero buscando alternativas gratuitas encontré lo de #Develop. El problema está en que sólo compila C# y por tanto no se podría utilizar para compilar el código C++ ni C. Sé de otras alternativas como MonoDevelop y Eclipse con un plugin para C# y Mono, pero no los he utilizado. Cita: Lo que no tengo claro y me anda dando vueltas en la cabeza es si integrar DCRAW en una DLL (o utilizar alguna que ya hay) o dejarlo en un EXE. Lo malo de lo primero es que habría que estar programando cada vez que Coffin actualice (aunque ya habrá que actualizar la versión que hemos modificado de DCRAW, pero los cambios son mucho menores) y eso puede matar el proyecto. La segunda opción nos da un resultado más lento, pero más versátil. Para ello voy a añadir a DCRAW la opción de revelar solo un trozo de la imagen. Aún así también quiero mirar si puedo crear una cutre librería (aunque sea estática) con DCRAW sin tocar el código de Coffin, solo añadiendo algunas funciones. Eso habrá que analizarlo con detenimiento, pues creo que será crucial para el éxito del proyecto y también lo puede complicar bastante (por el tema de mantenimiento del código que mencionas).
De esta forma el código se aislaría lo más posible en ese componente que sería lo único a tocar (o casi) de cara a desarrollos futuros de DCRAW.
Para no tener que generar un fichero TIFF en el disco y volver a leerlo, se pueden crear pipes para leer la salida estándar del programa (que tiene una opción para escribir en stdout) o bien utilizar pipes con nombre.Bueno ya nos dirás a qué conclusiones llegas... Saludos _________________________________ Por ManuelLlorens en el post original: Cita: Empezado por ariznaf Pero si queremos reaprovechar librerías (como la de Adobe) no quedara más remedio que hacer un "stub" en C++ y que presente una interface C# para hacer justo lo que se necesite Exactamente, justo y solo lo que se necesita en C++, por ejemplo la parte del SDK de DNG que se limitaría a insertar en el DNG los parámetros de revelado y actualizar sus thumbnails, ¿no? Eso te lo dejamos a ti, que te veo muy animado. Yo empecé a mirar el código de Adobe y me quedé dormido . En serio, ¿no te parece super engorrosa?Sin embargo, DCRAW está en C, no vamos a portarlo a C++. Basta con compilarlo como un DLL y añadirle unas pocas funciones con la funcionalidad que necesitamos para comunicarnos con él (te la detallo más abajo). Tengo un ejemplo funcionando en el que no toco nada de DCRAW, solo le añado al final del archivo las funciones que necesito. En realidad lo que hacemos es descomponer su main() en varias funciones a nuestra conveniencia (En eso es una ventaja el código lineal de Coffin). Luego podemos tirar de esa DLL en el lenguaje que queramos, por ejemplo en C# con solo hacer: [DllImport("DCRAW_DLL.dll")] static extern void DCRAW_End(); [DllImport("DCRAW_DLL.dll")] static extern int DCRAW_Init(String rawfile); [DllImport("DCRAW_DLL.dll")] static extern String DCRAW_GetCamera();(Esto de arriba es código que ya tengo funcionando, con dcraw compilado con MinGW y C# con VS2003. Con esto tan simple perdemos la opción de ejecutar dcraw en multitarea, pero es que si no sí que hay que modificar mucho código de Coffin). Cita: Empezado por ariznaf Sí, si queremos que pite en Linux (y creo que se le debe a Coffin y la comunidad Linux, aunque yo no lo uso) no se podrá usar direct-x. ¿Qué ótras alternativas hay como librería para manejo de bitmaps? ¿OpenGL podría servir? Está más orientada a representación 3D, pero maneja texturas y por tanto bitmaps. No sé si la funcionalidad de Open GL puede ser suficiente. Nunca he hecho nada en OpenGL pero desde luego sí sería portable. En realidad el único problema que tenemos con GDI+ es que el volcado a pantalla de los TIFFs es lento. Solo necesitamos arreglar eso, porque lo demás lo va a hacer DCRAW. No pretendemos procesar en C# nada más, y si queremos lo añadiremos a nuestra versión de DCRAW, en C y a toda pastilla. Cita: Empezado por ariznaf Opción DLL: más que una DLL creo que lo suyo sería crear un componente .NET en C++ que exponga los métodos de acceso a los parámetros de revelado y los métodos para revelar el fichero yBueno ya nos dirás a qué conclusiones llegas... Saludos Ya me he decidido por esta opción, pero sin C++ para dcraw. Creo que lo ideal es lo siguiente:
y explicarme como se hace para la siguiente ocasión.Otra cosa, hay que buscarle un nombre. Un saludo: _________________________________ Por _GUI_ en el post original: Por pedir que no quede:
Por ManuelLlorens en el mensaje original: Maqueta del GUI de DCRAW - Hoy, 14:47 Bueno, pues aquí va la maqueta para que opinéis y la afinemos. En vez de ordenar los parámetros como suelen hacer los reveladores, he partido de la idea (que me parece bueno mantener) de separar el proceso en los siguientes pasos:
En IMAGE INFO ponemos los multiplicadores de la cámara y todo lo que nos guste. La imagen principal NO se puede ver a distintos tamaños, ni redimiensionar, girar, cortar, etc... solo se puede ver ampliada en la ventana de detalle de la derecha. De definir la funcionalidad del histograma se encargaría evidentemente _GUI_, que es el experto. ![]() Un saludo: _________________________________ Bueno y esos son todos los mensajes del post original. A partir de ahora seguiremos aquí. _________________________________ A ver Manuel, te intentaré contestar a todo lo que comentas. Es un post muy denso y no sé si te seguí bien. Cita:
La actualización de las previsualizaciones incrustadas y lo de los datos guardar los datos de revelado en xmp son dos tareas separadas y en el SDK traen dos ejemplos distintos: uno para leer los parámetros xmp (que pueden estar en un DNG o en un archivo xmp separado) y otro para acceder a los ficheros DNG y leer datos EXIF y acceder a la imagen. La parte de leer los DNG no la necesitamos porque eso ya lo hace DCRAW en el revelado (tanto para los DNG como para los demás ficheros RAW). En cuanto a lo de escribir la imagen de previsualización en el archivo una vez revelada (para que los catalogadores puedan actualizar su propia imagen), aquí el SDK de Adobe no ayudará mucho, pues efectivamente es posible que se pueda hacer analizando el código del SDK, pero no sería de mucha ayuda, pues el SDK sólo maneja archivos DNG y no archivos en otros formatos RAW. Creo que el tema no es tan sencillo si queremos actualizar dichas imágenes en cualquier formato de fichero y no sé si el análisis del código de DCRaw ayudaría. Cita:
Esto evita al máximo el tocar el código de DCRaw, haciendo las menos modificiaciones posibles. Además posibilita acceder a las funciones desde otros lenguajes que no sean .NET (tal y como comentas, desde VB 6 por ejemplo). Aun así yo haría una clase de C# que se encargara de gestionar los parámetros de revelado seleccionados por el usuario, almacenándolos internamente. Esta clase debería presentar métodos para proceder al revelado (utilizando la DLL que accede a DCRaw) y devolver el bitmap generado por DCRaw para poder mostrarlo en la pantalla. Luego sería también la encargada de llamar a las funciones de escribir dichos parámetros en los datos xmp de la imagen generada (utilizando el SDK de Adobe). La interface gráfica simplemente tendría que almacenar los cambios en los parámetros de revelado utilizando los métodos expuestos por dicha clase y luego llamar al método de revelado para obtener el bitmap. Esto aisla al máximo posible el acceso a la librería de DCRaw dentro de esta clase y facilita las modificaciones futuras y el añadir nuevas funcionalidades (o la conversión entre formatos de bitmaps, etc). Cita:
Hay un problema y es que el acceso directo a memoria desde C# utilizando punteros no es posible (bueno quizas con el unsafe y haciendo filigranas sí, no recuerdo muy bien). Por ello creo que para manejar el puntero devuelto habría que utilizar un componente de .NET programado en C++ que aislara esa parte y expusiera los métodos necesarios para manipular dicho bitmap en RGB, convertirlo a GDI+, etc. Quizás el crear un componente en C++ (que haga la traslación entre código no manejado utilizado internamente y código manejado de cara al exterior) pueda resultar complicado (creo recordar que la mezcla de código manejado y no manejado en C++ no era una tarea evidente). En ese caso una alternativa es crear una DLL con funciones públicas en C++ que reciban el puntero devuelto por DCRaw y se encargen de todas las manipulaciones de imagen. Después se importarían dichas funciones desde C# (al estilo de la DLL de DCRaw) y crearíamos una clase (que almacenaría el puntero como una variable privada) para exponer los métodos necesarios para la gestión de la imagen y que se encargaría de llamar a las funciones de la DLL necesarias. Cita:
Lo que sí quedaría pendiente es el tema de la actualización de las imágenes de previsualización (que si es un DNG se podría hacer en teoría con el SDK de Adobe pero si es otro formato, no lo tengo tan claro). Última edición por ariznaf; 07-may-2008 a las 16:58. Razón: Fusión automática de mensajes para prevenir autosubir post |
| Publicidad |
|
||||
|
A ver, voy a ser un poco más radical. Pero primero daré mis razones: lo que se pretende es hacer un revelador RAW milimétrico, que nos permita a nivel de píxel obtener el mejor resultado posible. En esa tesitura mostrar una imagen completa ocupando la mayor parte del interface, tiene un precio muy alto (en cuanto a espacio ocupado) y no demasiada utilidad. No vamos a aplicar curvas, ni cambios de saturación, ni nada que tenga un efecto global en la imagen que valga la pena observar en conjunto.
Por eso propongo hacer lo que hace Gabor en su RAWnalyze: - Único display de imagen, y SIEMPRE en relaciones de zoom enteras: 1:1, 1:2, 1:3, 1:4. Tamaño estático (1024 píxels de ancho me parecería una buena opción). - Si se quiere observar la imagen en conjunto también se puede hacer zoom out con diezmado entero de píxels: 2:1, 3:1,... - El modo por defecto sería zoom 1:1, o sea recorte al 100%. Para movernos sobre la imagen bastaría pinchar en ella y desplazar. El zoom con la rueda de desplazamiento sería la bomba de cómodo (yo lo uso en PS). Este display se concentra en ajustar los parámetros que se van a aplicar en DCRAW y que SÍ afectan a la imagen, y son mejor observados con este alto grado de detalle. Son: - Algoritmo de demosaicing - Balance de blancos - Aberración cromática - Reducción de ruido (wavelet, mediana) - y chimpún, no hay más. Veo mucho más útil la posibilidad de, en un momento dado, congelar la pantalla principal y que ésta se divida en mitad y mitad para comparar el antes/después de la aplicación de los parámetros. Se guarda el antes en una imagen temporal (toda la imagen, para poder movernos a cualquier parte del "después"), y el después se va actualizando con los cambios que haga el usuario. Puede haber un modo que muestre la misma porción de ambas imágenes, o que muestre una imagen a tamaño normal solo que la mitad izquierda (o superior) pertenezca al antes y la derecha (o inferior) al después. Muchas veces una imagen nos parece bien ajustada, y basta compararla con otra versión de sí misma para desecharla. El histograma será útil visualizarlo (siempre en escala X de potencias de 2, y dando la posibilidad de logarítmico como Histogrammar), pero más útil aún es tener: - Distintos modos de representar la imagen: * Normal (demosaicing con todos los params. introducidos) * Normal + superpuestas saturaciones parciales y zonas a negro del RAW (pueden parpadear) * Solo saturaciones parciales (para detectarlas rápidamente y probar en ellas <> estrategias de recuperación). No sé como de complejo será hacer un revelado de solo una zona de la imagen cuando activamos -H 2-9, esto puede tener tela. - Conteos absolutos y en % de píxels quemados en cada canal Manuel, te invito a que juegues con algún RAW en RAWnalyze y veas la filosofía que propongo, y lo pronto que tomas conciencia de tener la certeza de estar controlando al máximo tu RAW. Es un concepto diferente al de los reveladores RAW al uso, pero es que no buscamos un revelador RAW al uso. El ajuste de exposición, si se quiere hacer con preservación de altas luces y de tono, ha de ser posterior al demosaicing. Sería una idea algo así: ![]() Cita:
__________________
"En ocasiones veo halos." Canon EOS 350D | EOS 300 | 10-22 | 24-70 f2.8L | 70-200 f4L | 300 f4L IS http://www.guillermoluijk.com para suscribirte pulsa aquí Última edición por _GUI_; 07-may-2008 a las 18:24. Razón: Fusión automática de mensajes para prevenir autosubir post |
|
|||
|
Quien esté interesado en el ´codigo fuente de MEGUI 3.0 lo tiene completamente a su dispoción.
está escrito en Visual Basic, y yo tampoco soy programador por lo que tengo muchas lagunas, es una aficción que de vez encuando retomo. lo dicho a vuestra dispocisión, sin ningún problema, por si os sirve de ayuda en algo. salu2
__________________
Actual E-3 y SLHD-4, EX- E-300, E-330 y E-1 y E-510. 12-60SWD, 50-200SWD, 7-14mm FL-50R y SB28 Utilidad Mejorada MEGUI V3.1: G.U.I. para el revelador DCRAW: http://es.geocities.com/meiker10/ Galerías: Galería Flickr
|
|
|||
|
@_GUI_:
Cita:
![]() Lo que pasa que lo de escribir DNG no parece demasiado sencillo. Además un DNG tiene sentido sobre todo para almacenar imágenes en mosaico (como los RAW) es decir, donde en cada pixel se guarda un sólo canal de información y los otros se derivan por interpolación. En este caso el RAW tiene grandes ventajas sobre el TIFF porque se reduce mucho el tamaño, pero ¿Zero Noise entregaría imágenes con el demosaicing hecho o son imágenes previas al democising? En el último caso, si la fusión se hace con la imagen todavía en RAW, desde luego generar un DNG sería lo ideal. Zero Noise generaría el DNG y luego se revelaría con el que quisiéramos (ACR, el nuevo revelador de Manuel, u otro). Creo que antes de pelearme con escribir DNG, tendría que controlar primero lo de los xmp (parece más fácil). Otro problema está en que si hago cosas en C#, tú no lo podrías aprovechar en VB (a no ser que te cambiaras a VB .NET lo cuál sería ideal). @ManuelLlorens: Manuel, quedó algo por definir: el entorno de programación. ¿Estás decidido a hacerlo en VS? ¿Sería compatible en ese caso con Linux con sólo instalar Mono? ¿Tiene mono implementadas todas las funciones de GDI+? Según he leido, Mono es compatible con .NET v1.2 y no con la 2.0. Habría que asegurarse en VS de no utilizar nada de la 2.0. Como te comenté hay otras dos alternativas: #Develop y MonoDevelop. El primero sólo puede compilar C# (en realidad usa un compilador de C# distribuido gratuitamente por MS). Por tanto creo que debemos de rechazarlo porque tendremos código C++ y C. MonoDevelop me han comentado que tiene compilador C# y C++ por lo menos. Conozco un compañero que lo utilizó y habla bien de él. También me ha hablado de una librería de gráficos llamada QT. Por lo que he visto es un sustituto de winforms y creo que también tiene manejo de bitmaps y es multiplataforma. Existe para Java y C++. Habría que ver si existe para C#. Tampoco tengo claro que sea gratuita. Otra alternativa sería openGL (es lo más portable). Incluso hay frameworks tipo winforms sobre openGL (aunque si Mono funciona bien, yo soy partidario de winforms, por serme más conocido). Hay además dos librerías de openGL para C#:La verdad es que a mi me da mucha pereza usar VS. Yo la última versión que usé creo que fue la 2003. El otro día vi el nuevo VS y era un mamotreto inmenso con infinidad de opciones de instalación y una interface llena de montones de cosas que seguro que no usaremos. Mi portátil no creo ni que lo pueda mover con mínima soltura (el de casa sí). Por ello preferiría un entorno más reducido, pero tú me dirás si te decides a VS creo que yo también tendría que usar VS (y misma versión) por no tener problemas de compatibilidad. Última edición por ariznaf; 07-may-2008 a las 19:19. |
|
||||
|
Cita:
A mí dadme los nombres de las matrices que contienen los 4 canales RAW RGBG en float, que yo escribo en C el código para fusionarlas; con antighosting, fusión progresiva y ajuste de exposición inclusive. Con que luego sepáis embutir eso en un DNG de 16 bits, estaría hecho.
__________________
"En ocasiones veo halos." Canon EOS 350D | EOS 300 | 10-22 | 24-70 f2.8L | 70-200 f4L | 300 f4L IS http://www.guillermoluijk.com para suscribirte pulsa aquí |
|
|||
|
De acuerdo GUI, pero vas demasiado deprisa para mí.
Yo todavía estoy aterrizando (como dije hace unos pocos años que no programo prácticamente, aunque antes programé bastante). Empezaré por instalar el entorno de compilación y recompilar el SDK de Adobe a ver cómo va la cosa y si los programas de ejemplo funcionan. Luego intentaré añadir datos xmp a una imagen y escribir una imagen inventada (una imagen gris plana por ejemplo) en un DNG. A ver cómo va el tema. Yo no he utilizado (en programación me refiero) imágenes RAW todavía. Cuando dices que te den los nombres de las matrices RAW, no sé muy bien a qué te refieres. La extracción de los datos RAW tendría que hacerse desde DCRaw, entiendo. Por lo que decía Manual, había una función que devolvía un puntero al bitmap pero era en RGB. Habría que pedir a Manuel que hiciera otra función para que devuelva un puntero a la imagen en RAW (antes de cualquier operación o procesado sobre ella). Por lo que dices, ¿se almacenan float en los RAW? yo creí que eran enteros de 16 bits, uno por cada pixel de la imagen, almacenados en forma de matriz (de filas) y haría falta la información de la máscara utilizada (qué pixel es R, G y B). ¿Es que hay una función de DCRaw que separe eso en cuatro matrices R,G,B,G con los valores convertidos a float de 32 bits? Si es así, bastaría con pedirle a Manuel que exportara esa función en la librería DLL ¿no? _________________________________ Ah por cierto sería estupendo convertir ZN en una librería e integrarlo de alguna manera en el revelador, de manera que hubiera una opción para fusionar imágenes. _________________________________ @ManuelLlorens: Manuel, he estado mirando MonoDevelop y tiene algunas limitaciones. Parece que funciona con Mono pero como framework de ventanas utiliza gTk# (versión C# de la librería Gtk de Linux). No parece que se pueda utilizar GDI+ ni WinForms (aunque no estoy seguro). Además parece que hay alguna dificultad para que funcione en Windows, está más orientado a Linux. No hay un instalador para Windows (aunque sí hay instrucciones de cómo instalar MonoDevelop, Gtk# y Mono en windows para que funcione). Ello me hace pensar que la plataforma windows está un poco dejada de lado en MonoDevelop y por tanto puede haber dificultades en el uso de ese entorno de programación en Windows. Eso nos dejaría sólo con Eclipse (bastante complejo y también bastante mamotrético) o con Visual Studio. Creo que no va a quedar más tu tía que usar VS. Última edición por ariznaf; 07-may-2008 a las 19:26. Razón: Fusión automática de mensajes para prevenir autosubir post |
|
||||
|
No a ver, los RAW son enteros claro que sí, pero yo tengo que operar con ellos en float. Habría que reutilizar DCRAW para que solo hiciera estas dos cosas:
1. Coger los datos RAW y convertirlos a float. 2. Sustraer el punto negro, ajustar al punto de saturación y escalar al rango 0..65535 (pero en float) Si no recuerdo mal la función scale_colors() hace esto y además el balance de blancos, eso habría que quitárselo. Con los nombres de las matrices me refiero que me digáis como acceder a los datos RAW tras los procesos 1 y 2. Digo yo que serán matrices del tipo: float nivel[i][x][y] donde i es el canal: 0..3 y x,y las coordenadas. Bueno o quizá se accedan como array lineal: nivel[i][x+y*width], pero eso es pura nomenclatura.
__________________
"En ocasiones veo halos." Canon EOS 350D | EOS 300 | 10-22 | 24-70 f2.8L | 70-200 f4L | 300 f4L IS http://www.guillermoluijk.com para suscribirte pulsa aquí |
|
||||
|
Un hilo interesante que merece la pena leer con más detalle.
Aporto dos cositas que tal vez puedan ayudar un poco, ambos son programas que ya ofrecen un interfaz gráfico para dcraw aunque tal vez les falte algun detalle. Estan disponibles para gnu/linux con el código fuente disponible (supongo que c y c++) y desconozco si estan disponibles para otras plataformas. ufraw. Muy completo, permite modificar muchos de los parámetros, aplicar curvas, perfiles de color, recortes, etc... http://ufraw.sourceforge.net/ digikam. Es bastante más recargado que el anterior, es un sistema de gestión fotográfico que incluye una "mesa de luz" donde podemos trabajar con el fichero raw. Usa una versión de dcraw que ha sido portada a una librería. http://www.digikam.org Ninguno llega a un control absoluto pero pueden ser buenas aproximaciones |
|
||||
|
Podéis contar conmigo, soy consultor y desarrollador de C/C++ y C#.
Me da igual VS 2003, VS 2005 o VS 2008. Saludos. |
|
||||
|
Cita:
Un saludo: |
|
||||
|
Cita:
Vosotros las birras. ![]() |