 |
Duke the Photographer wants you!
Posted by fabriziogiudici on March 19, 2007 at 07:25 AM | Comments (11)
When you are forced to stop or slow down, as I'm being forced to due to my illness still evolving slowly, you have more time to spend just thinking (yep, this is just a try to catch the good in bad moments). For instance, you can look at the big picture of what you're doing, instead of focusing at a single activity, and see whether things are going in the (supposed) proper direction. In these days I realized that in the latest years I started up a lot of projects (that later went into opensource). Their primary purpose was to experiment with some technologies, and they were successful in this. But as they reach a critical mass and can be useful to others, it's a shame when they starve. And there's a project of mine that's really starving - being its latest release a 1.0.RC5 dated to November 2006; and it has been in RC stage for one year now... It's jrawio and it's a Java Image I/O plugin for camera raw files. With this blog, I'm explicitly calling for volunteers to join it.
Just a few words about jrawio. A "camera raw" or "raw image format" is a special file format for encoding digital photos. Instead of a regular file format, such as TIFF or JPEG, which - apart compression - contains the actual pixel data that should be shown on a display, a "camera raw" format just contains the dump from the digital sensor of the camera. A lot of computation is required to transform it into a viewable picture - some say that it's much like a "digital negative" that must be developed for viewing.
While this is a disadvantage from a computational perspective, it opens a lot of creative possibilities for the photographer, as in the classic "wet" development - no wonders it's the kind of format used by all professionals and most advanced amateurs. Now, the real trouble is that (apart from Adobe's DNG) there is no standard for "camera raw" formats: every manufacturer uses its own and, bad news, almost none documents it (you can go deeper in this argument looking at the OpenRAW initiative).
What can you do if you want to develop an open source application dealing with "camera raw" files? Up to a couple of years ago, there was just no choice: the only existing software was dcraw.c by Dave Coffin. Now, Dave's software is just invaluable: it supports hundreds of cameras and it's continuously evolving. Due to the lack of official documentation, it is the only centralized reference point to understand how bits are laid out for a given format and how you have to process it. Officially or not, Dave's software is used by a lot of commercial software for "camera raw" manipulation.
One of the problems of dcraw.c is that it's a single C file made of several hundreds lines. This makes integration harder, even though there's people that have successfully wrapped it into a Java JNI interface; but since one of the biggest advantage of a "camera raw" format is to tweak the development parameters, this is really a bad approach in my opinion. Recently (Sep 2006) another independent project has been started, libopenraw by Hubert Figuiere - which is a good thing for the C/C++ world. But in my opinion, the best solution for Java is a pure Java approach. That's why in 2003 I started a pure Java implementation, named nefio (it was only focused on Nikon's NEF format), which last year has turned into jrawio, which supports a lot of manufacturers' formats.
jrawio is a well-written plugin for Java Image I/O (the standard API for imaging I/O) and it's officially a subproject of imageio. My ambition is to keep on its development and submit it for inclusion in the Java distribution (Java 7, if time allows). Now, I'm going to enumerate which are the project troubles and thus the areas I'm asking for help:
- you have to test it with a lot of sample files, ideally many for every single camera model. A couple of years ago it was hard to find them; but thanks to Google and some photographers' communities, now it's not hard to get them. Up to now I've managed in collecting more than 1GB of samples - but they must be increased. This large number of samples is giving troubles to testing: for instance, to check that all metadata is properly read, there's a huge reference file that must be matched against, and it's so large to require more than 1GB when loaded in memory. This has actually blocked testing in the latest months. An alternate approach should be studied.
- While the processing pipeline is virtually complete, I'm not an imaging expert and I don't know which parameters should be placed inside the various filters (e.g. color space transformations, sharpening, etc). Also, some automated tests to compare results against the output of standard applications should be written. People with an image processing background would be useful here.
- The Java Image I/O API wasn't designed with "camera raw" files in mind, and thus it's possible that it requires a little extension to specify "development" parameters
That's all. If you are interested, you can:
- Post a comment here
- Subscribe and mail to the dev@jrawio.dev.java.net mailing list (if you rather prefer a forum, let me know and I'll create it).
- Contact me directly at fabrizio dot giudici at tidalwave dot it
Note: if we didn't get in touch with the above methods, please don't request a role in the jrawio project using the menu of dev.java.net! People have done this for other dev.java.net projects of mine, but for unknown reasons - including my incapacity - nine times out of ten I wasn't able to get in contact with them and include them into the project. So, first contact me and only later eventually ask to join the project.
PS If there will be a good response, we could even think in a broader perspective. The experience we would collect about treating "camera raw" files could be useful to other projects too, including those not made in Java. Exactly one year ago I thought about a specific opensource initiative only for documents, but I had to freeze it when I realized I hadn't the time to manage it. With the help of other people it could be resumed. If you're interested in it, there's a draft web site at http://www.rawdarkroom.org.
Technorati tags: camera raw, raw format, raw conversion, jrawio, OpenRAW
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
Hello.
I did not know that project. Too bad, i did loose some time in the past with dcraw.c and planned to do the same as you.
I would love to join the project, but i am already very very busy with too many projects. I am afraid not to be active at all.
But it would solve some problems i have and some others i will encounter.
I will watch the project and try to rejoin you as soon as i can.
Posted by: pepe on March 19, 2007 at 09:52 AM
-
Hi pepe. You gave me an important information, anyway - I think that the project is not yet publicized enough. I will now try to spread the world in tech/photo communities...
Posted by: fabriziogiudici on March 19, 2007 at 10:27 AM
-
First, I'm sorry your'e ill. Second, I'd very much like to help with the jrawio initiative but I'm sure if I'm qualified. I only recently battled with the current imaging IO packages because I were writing a small image album viewer, was I now finished and works well for my use. A few fellow phptographers have tried and find it useful too. But I'm very interested in the field and am an avid photographer, shooting in RAW/DNG with Pentax gear. And I'm tired of the many manual steps involved in developing my raw images into presentable jpgs in twi different sizes (one for PBase, the other for my own swign/awt-based album viewer app) and have been dreaming about going further with the automation of my post-processing workflow. i now want I miss in the current packages; rotation logic, more intelligent sharpening, and cropping functionality to mention some I use frequently. But I such at math! Well, at least I have a TON of raw files (PEF and DNG). Maybe I can help in some way? Let me know!
Posted by: larugl on March 21, 2007 at 12:36 AM
-
Thanks larugl, I've replied privately to your email.
Posted by: fabriziogiudici on March 21, 2007 at 03:34 AM
-
Ciao Fabricio ! Your last post was almost two week before, so I hope you feel better now.
Well, I got to your blog looking exactly for a Java version of the dcraw. At first I thought on a Jini based solution, but it was an ephemeral idea; I would like to have, I rather need a Java native solution.
Currently I'm endevouring on a startup and I do want to automate the process. As you said somewhere, the point is not just the tool, but the process. At this point I can subscribe the Iarugl words cause I have the fixed idea of creating an unatended thread for decoding raw and create image files in whatever format it may be required at the time.
The startup consumes lots of hours, but I would like to participate in your project. I must say I'm relatively new to Java, and till now never touched neither the ImageIO nor the JAI. So I have spent the last days reading and testing code that all be said, it shocked me being reading a tutorial from 1999 and testing code snippets with deprecations inside. Anyway, I think I can help in some way, I have never participated in a proyect like this, but I'm willing to, so let me know if you think I could do some helpful work.
We usually shoot with a Canon EOS D1S, so I can provide raw pics of this model.
Thanks for your attention.
Posted by: aledes on April 07, 2007 at 07:10 AM
-
aledes, welcome! Please get to jrawio.dev.java.net and request a role in the project, then join the "dev" mailing list. If you need assistance, mail me privately (fabrizio dot giudici at tidalwave dot it).
Posted by: fabriziogiudici on April 07, 2007 at 07:31 AM
-
Hello, I'm actually working on a project that uses jrawio called DCRaw4J. Like you, I was inspired by the work that David Coffin did in dcraw.c, and wanted to port it to a pure-Java implementation. jrawio has been an invaluable resource for reading the raw files and extracting the sensor data from them. What DCRaw4J does is apply exactly the same post-processing to the sensor data that dcraw.c does. Like dcraw.c, it can be run from the command line, but more importantly, it can be used as a pure-Java library in any Java application.
I'm planning to release it on SourceForge in a week or so, with initial support just for Canon CRW format, but I plan to open it up to all formats allowed by jrawio as soon as possible.
Maybe our projects can join forces? I hope all is well with you - Dan.
Posted by: danmascenik on May 09, 2007 at 06:08 AM
-
Dan, we _must_ join forces, the task is really hard to deal with as there are so many cameras. Please let's get in touch directly, write me at fabrizio DOT giudici AT tidalwave DOT it. See you later.
Posted by: fabriziogiudici on May 09, 2007 at 02:04 PM
-
I recently sent you a message because I could no longer access http://jrawio.tidalwave.it/, is there a new address for this or has it gone away?
That would be a shame since we really need pure Java camera raw support.
Posted by: pkwooster on October 28, 2007 at 03:57 PM
-
The website and the project are up and running. If you tried to connect around eight years ago, the webserver was actually down for maintainance (and I forgot to restart it :-)
Posted by: fabriziogiudici on October 28, 2007 at 11:14 PM
-
Of course the previous comment should be "eight HOURS ago"... :-))))
Posted by: fabriziogiudici on October 28, 2007 at 11:14 PM
|