09.May.2007: I have created a Wiki Version of this page. This page is hense forth deprecated. Use the wiki version from now on. Create a wiki account, and have at it where it needs updating.|
feedback: firstname.lastname@example.org (Updated: Sat 29.Jul.2006)
It started as just a simple guide to setting the Canon 10D to take better photos. At first that was enough. Then, more and more people started writing better and better software for Linux Digital Photographers. At some point, the Linux information outgrew the Canon 10D page. So, here and I am trying to bring some balance.
Please send me feedback on the stuff I miss. The field of Digital Photography and Linux is changing very rapidly, and I can't keep this up to date without help.
I've been running Linux as my primary desktop OS since August, 2001. I'm very happy with it, so I was not interested in being slaved back to a Windows box to use my digital camera. Happily, new tools for processing digital images and RAW digital images are being made available to Linux users every day. Now, Linux can satisfy 100% of what I need for post processing of digital images.
For the first year I owned my Canon EOS 10D, I shot in Large, Fine JPEG only (no RAW images). In June 2004, I started shooting RAW when I had the oportunity to be a beta tester for Bibble Labs. With BibblePro 4, I can convert my RAW digital images on my Linux box, and life is very good. I was shocked to discover how much more information the RAW digital format stores at 16-bits per channel than JPEG at only 8-bits per channel. I'm not likely to ever return to the limitations of shooting JPEG.
KimDaBa - Organizing images:
I highly recommend KimDaBa (K Image Database). KimDaBa allows me to categorize and organize images quickly, and in any way I want. I can put all the information on 100 images (location, keywords, people, event) in less than 15 minutes. I'm very pleased with it.
Versions up to 1.1 do not support RAW image conversion. As of version 2.0, KimDaBa does some RAW conversion, but it is limited and not completely tested. I continue use a parallel tree of JPEG "thumbnails" of all my digital images for managing, organizing and cataloging. I include KimDaBa on this page because KimDaBa is unquestionably the best tool for digital image cataloging, sorting, and searching I've ever seen. KimDaBa is already included in most of the Linux desktop distributions.
Some people have the desire for the most accurate possible images. For them, shooting in RAW digital mode is their only option. Here, I attempt to present a comprehensive set of Linux tools for people who want to take advantage of RAW format digital images....
David Coffin's dcraw is, to my knowlege, the first RAW converter for Linux, and the backend for a whole array of RAW converters. At this point, you'll have to compile it yourself. I know that Robert Krawitz has done some good work extending dcraw. I will link to his work when he has some information on it. In the mean time, you can grab a copy of his version of dcraw from here. (Again, it's source, follow the compile instructions from David Coffin's page.)
The images resulting from a dcraw conversion will appear dark and flat until you apply a color profile to them. See Little CMS
As of 6.0, ImageMagick has been able to convert (some) RAW digital formats. I do use it to convert Canon's CRW files. Agains, as with dcraw, the images are rendered dark and flat until a color profile is applied. ImageMagick is not able to apply the color profiles internally, so I export them as TIFFs, and use Little CMS to apply a color profile.
Little CMS is a "free color management engine in 100K." Little CMS is, specifically, a C library, but they also ship tifficc and jpegicc runtimes which you can use to apply ICC or ICM profiles to digital images. This is handly if you have programs, like dcraw or ImageMagick, which don't support color profiles. I have found that liblcms SUSE Pro 9.2 installed this package, which included the tifficc and jpegicc runtimes, by default.
LittleCMS is included on SUSE as "liblcms" and "liblcms-devel." It is apparently required by ImageMagick and the Gimp as well as other packages. I guess it's just one of those "hidden treasures."
Bibble Pro and lite - Bibble Labs:
Bibble Labs has released a new version of BibblePro (4.x). BibblePro 4.x runs on Windows, Mac and Linux! I am very excited about this product. I had the pleasure (and pain) of being involved in the beta testing of this product, and I can say, it's great! It is commercial software, so it's not free, but Bibble Labs does give you a 14 day trail before you have to decide if you want to pay. Being able to shoot in RAW digital and do all of my work in Linux is just pure joy. The people at Bibble Labs are very responsive to their customers, and they are even considering adding features that only Linux users would seriously ask for (like making many of the functions available from the command line for scripting).
RawView - Through-the-Lens.net:
RawView is "an extremely small Java program which allows you to view a variety of raw-files from digital cameras and batch convert the images to JPEGs." Thanks to Ananda Debnath for pointing me at this product.
Alternate 10D color profile:
Someone posted a link to this page by "Ture Pålsson, Lysator," which contains a link to an alternate color profile for the 10D. I don't understand lots of things, but the colors from this profile seem to be better than those that result from the original profile that Bibble Labs has assigned to the 10D. The site also shows how to apply a profile to an image generated by dcraw or ImageMagick using the LittleCMS tifficc runtime:
An example workflow could be
dcraw -4 -c -w CRW_0123.CRW | pnmnorm -bpercent 0 -wpercent 0.1 -brightmax | pnmtotiff >temp.tif
tifficc -i eos10d-linear.icc temp.tif CRW_0123.tif
[UPDATE 30.Mar.2005] **** After sending off almost 200 images that I used this profile, LittleCMS and dcraw to create, I have come to the conclusion that this profile is not acceptable for prints. I have located three places with Canon EOS 10D color profiles. One of which gives them away for free, but they are not LittleCMS compatible. The other two places charge for the profiles, and I haven't decided if I really want to risk even as little as $15-25 on profiles that may turn out to be useless.
I'll keep you posted.
[UPDATE 01.May.2005] **** Got a note from Stephen Tweedie concerning the profile:
The problem I'd _expect_ to see, given what I've seen of the workflow
On his suggetion, I finally managed to get Cinepaint to compile and run, and the profile works fine there. See the rest of my notes on cinepaint
and how the profile was prepared, is one of clipping. Canon raw encodes
for about a stop of headroom --- the highest values in the raw file are
approximately 200% brightness, not 100%.
So if you're only using up to 100% exposure in your scene, then you're
only using values up to 50% in the raw. And ICC profiles are usually
really bad at dealing with that --- they really, really want everything
to be relative to 100% white for the current profile, not relative to
50% white. If they see 50% in the raw, they will map that to grey, not
white, in the output profile.
That's where pnmnorm comes in: it will expand the "normal" exposure of
the raw file to fill the full 16 bits of the pnm file, so that the icc
transform really maps white to white.
But this is completely the wrong thing to do, because highlights in the
scene are going to get fully expanded in the final output, which
compresses the tonal range of the rest of the image; in reality, you
want to either clip or compress highlights.
The default behaviour of pnmnorm also looks _totally_ incorrect in the
way it normalises each colour band separately. If the highlights aren't
pure white, then that necessarily introduces a colour shift into the
So with better normalisation/clipping, the profile there may well be
RawPhoto in GIMP-2.2: [updated 01.May.2005]
Gimp 2.2 does include RawPhoto for opening many (most?) RAW formats. it seems to work fairly well. At least on my system, it's a little rough, but it does work. So, you now have direct access to your RAW photos from within the Gimp. You still can only work on them in 8-bits per channel, but you can at least open them directly.
Cinepaint (v0.19): [Added 01.May.2005]
The CinePaint Project: "CinePaint is different from other painting tools because it supports deep color depth image formats up to 32-bit per channel deep. For comparison, GIMP is limited to 8-bit, and Photoshop to 16-bit."
On Stephen Tweedie's suggestion, I made another pass at getting Cinepaint to compile and run. I had tried and failed before, I tried and failed again, but after several attempts, it finally came up running. Maybe I'll be able to post some more useful information later, if I can get a better handle on using it.
- It will let you work on your images in 16-bit colors. (and higher, when those cameras eventually become available).
- It will open some (I have no idea how many) RAW formats directly. I've only tested it with images from my Canon EOS 10D.
- It supports ICC profiles for image, monitor and printer.
- It lets you chose the working color space.
- Good luck finding an RPM for your distro. I think you can get them for Red Hat and Mandr... Man... Mandriva. (!)
- If not, you'll have to compile it on your own.
- I took me a while (several hours) to get 0.19 to compile.
- Cinepaint is the recipient of the old, brain dead Gimp 1.x interface. (yuck!)
- Very few advanced tools are available.
- It crashes periodically
- because of the obtuse nature of the UI and hotkey selection, working in it is very slow, at least at the start.
BUT IT DOES WORK, AND IT DOES ALLOW YOU TO WORK IN 16-BIT COLORS!
Perl now offers a wide selection of tools for working with images. I have not used most of them. I will document them as I use them.
This package is notoriously painful to install UNLESS you install it from your distribution. All of the methods available though ImageMagick are available through Image::Magick, or "PerlMagick." It is also painfully poorly documented. The documentation is available through the ImageMagick web site: PerlMagick documentation. In spite of the pain, I find that I love to use this tool.
Google's Picasa: [added: 29.Jul.2006]
It's free, it's slick, it does a pretty good job of converting RAW (at least as far as my tests have gone), the colors and tones are as different as any of the other converters, so you may or may not like it. The "I'm feeling lucky" button is about as hit-or-miss as you would expect, but if you're in a hurry, it hits more often than not.
Gripe: I don't know if this has affected other Linux users. I don't know if the programmers are working on it or not, but when I right-click the Picasa icon in the toolbar, and request it to shut down the background process that watches for new photos, I get a runaway process by the name of Picasa2 which consumes all available processor power. I have to kill it manually to get it to exit.
Picasa for Linux is mostly just Picasa for Windows with a lot of custom tweaks done to Wine to make it run. it actually runs very well, and the work on Wine, to my understanding, will be flowing back out to the wine community. That's all good. I'm not one to demand that everything be native Linux, but I do demand that the software I run behave in a predictable manner.
Meta data (EXIF headers):
Some kind soul pointed me toward metacam. metacam will spit out the EXIF data in a nice, human readable format, or in XML. Cool, handy, easy, useful
jhead is a powerful an popular tool for working with EXIF tags. Not only will it list out your EXIF tags, but it also offers thumbnail removal, lossless JPEG rotation and EXIF tag copying (from one file to another).
ImageMagick EXIF handling:
ImageMagick's identify tool can extract EXIF data. See the main ImageMagick documentation for information. Look under "-format."
Perl and EXIF information:
Perl now offers a good selection of tools for working with EXIF tags, including tools for writing EXIF tags into images.
See my notes earlier about the pain in installing Image::Magick.
Image::Magick can glean some EXIF data from image files. I've found that I use the other tools listed here more often than not.
My buddy Brian pointed me at Phil Harvey's ExifTool, which also includes his Perl library Image::ExifTool. If you're a Perl hacker, and you like to combine your photography with your Perl, you'll enjoy Image::ExifTool. The documentation is a little lacking. I need to write up what I've learned that makes things easier as well as some examples and send them back to Phil. He has done a great service for Perl hackers who like to dig into their Exif headers.
Image::ExifTool is available via CPAN.
Image::MetaData::JPEG is a tool to "read/modify/rewrite meta-data segments in JPEG files, which can contain comments, thumbnails, Exif information, IPTC information and similar data." You cannot use Image::MetaData::JPEG to edit the MakerNotes, but you can modify all of the standard EXIF headers with it. The documentation is verbose. The interface is pretty straight forward. I use this module to copy the standard EXIF data from Canon's THM file into the JPEG files I create for organizing and managing photos.
Image::MetaData::JPEG is available via CPAN.
I have an HP Deskjet 1220C, I never use it. I much prefer to order real photo prints, which is what I describe below...
For prints I no longer mess with Wal-mart. I order them from ClubPhoto.com. ClubPhoto charges $0.25 ($0.17 on sale -- and they have sales all the time) for 4x6s, but they also will print as large as 30x40 for only $39.95. That's big.
I always do simple color work, adjust the levels and such before I send images off for printing.
I have started writing a tool in Perl to upload images to ClubPhoto.com since their software only supports Windows and Mac. It uses WWW::Mechanize. It works, it just needs polish. Let me know if you're interested in seeing my code, or helping me. [update: 04.Dec.2004] The Perl uploader for ClubPhoto.com is actually coming along swimmingly. I'm toying with the idea of giving it a GUI wrap with UI::Dialog::Backend::KDialog, but so far all I've added is the ability to select the upload directory with the GUI. I'm not sufficiently inspired to wrap the rest right now. Maybe I would work on the rest of the wrapper if I thought someone like my wife might use it.
If you see anything that I've got wrong, or you have other tips or suggestions, please let me know. I'm not an expert, I just thought I'd share what I've learned. I'm always interested in learning better or easier ways of doing things.