Sizing up the ColorHug open source colorimeter
Having covered the open source graphics software community for several years, I was immediately intrigued when I learned about the ColorHug project. ColorHug is a spare-time effort by Red Hat's Richard Hughes to build an open source monitor calibration device. I am still resigned to the fact that most people's eyes will glaze over whenever you utter the phrase "color management," but with ColorHug, at least interested parties have a simple and affordable option — and as with any good open source project, there are hints at more things still to come.
Color me good
For the benefit of the uninitiated, the ColorHug is a tristimulus colorimeter. That means it can measure the amount of RGB light hitting its sensor; by displaying a carefully-chosen set of color swatches on the screen, it can characterize the display's output and generate an ICC profile. You can then load the ICC profile into the OS color management system, and enjoy balanced output. The ColorHug sports a 64-pixel light sensor, and like other colorimeters uses filters to read the red, green, and blue values separately. Unlike many other colorimeters, the ColorHug also converts the readings into a standardized XYZ color value in the firmware, and can correct the output to account for the different illumination characteristics (e.g., varying backlights and primary colors) found in different display types.
Unlike essentially every other colorimeter, the ColorHug is supported only under Linux — it ships with a Fedora-based live CD to perform the calibration, although the resulting ICC profile can be used by any operating system. That aspect of the project receives little attention, but it is significant. There are other colorimeters supported by open source software projects like Argyll (which handles underlying calibration tasks), but there is no official Linux support. On top of that, the existing Windows and OS X client software is usually restrictive, with limits on the number of copies that can be installed, requiring email registration, and so on. Hughes made a point of designing the ColorHug to be fast and accurate hardware at a low price point (currently £60), but the software support is equally significant. It even gets free firmware updates, which could make for some interesting developments down the road.
How it works
Physically the ColorHug is a small black puck about the size of a matchbox, with a sensor aperture on one side and a mini-USB port on the end. It comes with a mini-to-fullsize USB cable and the aforementioned live CD. Hughes is also the author and maintainer of GNOME Color Manager (g-c-m) and colord, so that software is used by the live CD to detect attached displays and colorimeters, as well as to step the user through the process of creating a display profile. G-c-m should automatically recognize your displays and list them in its main window; to start creating a profile you simply select one and click the "Create Profile" button.
The application will ask you to name your new profile (although it maintains a time-sorted list of the resulting profiles in the window, too, so the name is primarily for your benefit) and select the accuracy at which to analyze the monitor. The approximate measurement times listed — up to 20 minutes for the most thorough — are very conservative when it comes to the ColorHug; I cannot think of any reason to create a low-accuracy profile other than curiosity. I tested the ColorHug against a Pantone Huey (a common proprietary colorimeter), and creating an accurate profile took well under 10 minutes for each device, with a slight edge going to the ColorHug.
Whatever accuracy you choose, when you click the "Start" button the application launches into a sequence of color patches displayed in the center of the screen. You must have the ColorHug centered on the display area and keep it still for the duration of the process. That proved to be the trickiest part of the formula for me; the USB cable is on the thick side, and the ColorHug weighs so little that the cable pulls it out of position if you don't take care to wedge it in place with a nearby object. Even then, profiling a laptop is easier because you can maneuver the display to lie flat. Back when CRTs were the norm, proprietary colorimeters often used suction cups to stick to the front of the monitor. That is clearly a bad idea for LCDs, but some form of clip to hang the device in place against a vertical surface might be a nice addition in the future.
| Calibration example | |
|---|---|
| Before | After |
|
|
After a few minutes of silent color-swatch juggling, g-c-m announces that it is finished, and you can instantly apply the freshly baked ICC profile to your display. This is the point where you might notice trouble. Early versions of the software asked you to select the white point of the monitor during the first step, and the wording encouraged you to select the daylight-balanced D65, but that resulted in profiles skewed sharply into the red part of the spectrum. The correct choice was to use the display's "Native" white point, and updated versions of the software and live CD now choose that setting automatically.
The other tricky bit is that it might be hard to find the actual ICC profile files if you are running the live CD. They are located in ~/.local/share/icc/, so you need to copy them to another storage location in order to load them into your normal desktop environment and reap the benefits. However, you still may find the newly-adjusted profile looks different than you expect. The truth is that most LCDs are factory set to a very cool-blue white point because that appears brighter to the human eye. But brighter is not accurate; I immediately noticed that the Fedora live CD's aquatic background image had a lot more color variation when I applied the new ICC profile; without it the entire ocean scene was deep blue. Your eyes will adjust to the change. More importantly, if you profile multiple displays, your eyes will not have to adjust when you switch between them. You can see "before" and "after" photos above ("before" is on the left). Of course, how much of a difference you see depends on your own display as well, but hopefully it is at least clear that the grays are much bluer in the "before" shot.
Using the live CD is actually pretty important; Hughes updates the client code and utilities frequently and his updated ISOs are the only officially guaranteed path to making all of the pieces work together. Your distribution might not package the most recent version of Argyll or other dependencies for several months.
Auxiliary bits
Display profiling is the ColorHug's primary purpose, but the project has other interesting infrastructure built in as well. For instance, it is firmware-upgradeable: the live CD comes with a GUI firmware updater that checks the project web site for a new release, and allows you to download and flash it. The first time I tried that, it did not work. But the ColorHug is also designed with a separate firmware bootloader to prevent accidentally bricking the device. The ColorHug site explains how to recover from a bad flash with command line utilities included on the live CD, and I am happy to say that they worked.
You can also use the ColorHug to calculate a CCMX color transformation matrix, if you have access to a separate spectrophotometer. A spectrophotometer is a different class of calibration device from a colorimeter; rather than using a light sensor to measure RGB values, it measures the amount of light output by a display across the full visual spectrum, in tiny increments. They are pretty expensive in practice, but if you can wrestle one away from a friend, you can use it to create a CCMX matrix that will be shared with the rest of the community. These matrices are most valuable for non-standard display types; most LCD screens work fine with the standard sRGB matrix shipping in the ColorHug. But mobile phones, TVs, and other devices do differ, and the project is interested in collecting as many good samples at it can, which will then be included in future firmware updates. You can grab and install new CCMXes with the colorhug-ccmx tool included on the CD.
On the ColorHug mailing list, there was a thread about using other colorimeters to generate CCMX data. The process relies on Argyll, and author Graeme Gill confirmed that the Argyll tools can create a matrix from two colorimeters. I asked Hughes what the relative value of such a colorimeter-to-colorimeter matrix is, and he likened it to trying to adjust your speedometer by driving alongside another car: not totally useless, but definitely not reliable enough to recommend.
Finally, the G-c-m build on the live CD includes tools for examining ICC profiles themselves. In the version of the CD I tested, they qualify as interesting but not rigorous. For example, you can show a 3D rendering of each profile as a solid space, but you cannot overlay to profiles to compare them. I hope that that will improve in the future, the other major Linux color management system, Oyranos, has a very nice profile inspection tool called ICC Examin, so there is hope.
Speaking of Oyranos, just because colord is used by the live CD, that does not mean that the ColorHug's ICC profiles are usable only with colord on a GNOME system. The profiles are bound to the hardware, whichever software is used to load them. Oyranos developer Kai-Uwe Behrmann is also working on a set of enhancements to ICC file metadata via the OpenICC project which should make interoperability better in the future, but you can simply install the profiles on an Oyranos system and take advantage of them now. You can also submit them to the taxi service, which collects user-generated ICC profiles in an effort to build a more reliable set of real-world options for users who cannot generate their own profiles. You can even use the profiles in Mac OS X and Windows if you multi-boot.
The future
Automatically installing the profiles created by the live CD is a possible enhancement that has come up on the ColorHug mailing list, although for now it is not high-priority. More interesting is the possibility of extending the hardware's usefulness — such as to CRT displays and projectors. Supporting CRTs requires different color-measurement timing, due to that hardware's refresh rate.
Projectors are another beast altogether. There are proprietary colorimeters intended for use with projectors, and technically the ColorHug hardware can be used with them as well — but it is tricky. There is an aperture disk in front of the ColorHug light sensor; removing it allows the sensor to see a larger sample area, which would be useful for projectors, but the details of placing and orienting the device have yet to be worked out. Similarly, removing the aperture disk would also make the device useful for profiling the ambient light in a room, but here again the details have yet to be worked out. Hughes and Gill have discussed the issues on the mailing list — including whether or not a light diffuser would be required, but it is possible that future versions of the software will support these or other new functions.
Looking even further out, Hughes has floated the idea of building an open source spectrophotometer as a sequel or companion piece to the ColorHug. There was interest in the idea on the mailing list, but most thought such a device would be useful only if it was designed to help profile reflective light — in other words, printers. Not all spectrophotometers do so; the hardware challenge is significantly steeper, because in addition to making precise measurements at specific wavelengths, a reflective light spectrometer also needs to provide a precise illumination source, which is a tricky prospect for any project. Hughes indicated that such a device was a 2013-or-later project, and it would cost at least four or five times as much as the ColorHug.
Of course, the ColorHug proves that there is at least some market for open source color-measurement hardware, which few people would have predicted before the project launched. In fact, according to Hughes' talk at Libre Graphics Meeting 2012, he can barely keep up with demand for the devices. The tale of designing, manufacturing, and iterating the devices is interesting for anyone looking for real-world information on open hardware projects; hopefully slides or a recording of the session will be available soon. As an open hardware device, you can download the gEDA schematics and the firmware for the ColorHug from the same repository that hosts the client software. But for everyone who is merely interested in getting good results from a monitor, the ColorHug is a good buy on its own. It would probably be a good buy even if it was closed source: it is fast, inexpensive, and accurate. But the fact that you can tweak and modify it only adds to the value.
Posted Jun 1, 2012 12:57 UTC (Fri)
by nix (subscriber, #2304)
[Link] (15 responses)
That's... demented. I suppose it's easier than providing a list of dependencies though. (I'm sure he does that too.)
(It's a shame KDE support for this thing is nearly nonexistent, thanks to yet more bickering, this time between the Oyranos developers and Richard. There's a separate program that runs g-c-m for you, but that's such a kludge...)
Posted Jun 1, 2012 13:20 UTC (Fri)
by TomH (subscriber, #56149)
[Link]
For the record I've never used the LiveCD that came with my ColorHug at all, but I am using Fedora which tends to get the latest builds of the relevant software straight away as Richard is the packager for them as well as the ColorHug developer ;-)
I believe, from discussions on the colorhug list, that there are KDE tools in development.
Posted Jun 1, 2012 14:29 UTC (Fri)
by n8willis (subscriber, #43041)
[Link] (7 responses)
Nate
Posted Jun 1, 2012 17:53 UTC (Fri)
by nix (subscriber, #2304)
[Link] (6 responses)
Posted Jun 1, 2012 18:18 UTC (Fri)
by jimparis (guest, #38647)
[Link] (3 responses)
Posted Jun 1, 2012 18:38 UTC (Fri)
by n8willis (subscriber, #43041)
[Link] (2 responses)
Nate
Posted Jun 1, 2012 18:44 UTC (Fri)
by jimparis (guest, #38647)
[Link] (1 responses)
Posted Jun 7, 2012 21:59 UTC (Thu)
by n8willis (subscriber, #43041)
[Link]
Nate
Posted Jun 1, 2012 23:43 UTC (Fri)
by giraffedata (guest, #1954)
[Link]
That isn't an extension. ColorHug could easily have a bug that manifests only in some environment other than the live CD one.
Posted Jun 2, 2012 2:45 UTC (Sat)
by rgmoore (✭ supporter ✭, #75)
[Link]
I'd assume that it's also about development speed. If the software is being updated rapidly, it's especially likely that user bugs are stale. Making a live CD gives users access to the latest bug fixes and helps to guard against reports of bugs that have already been fixed.
It's also worth noting that this is a program that it makes some sense to run from a live CD. Profiling a monitor takes a bit of time during which you aren't going to do much else with the computer, so rebooting isn't a huge problem, and the profile will still be useful when you boot back to your regular version. It's also not something you have to do terribly often, so it's not a huge imposition. It's a bit more of a hassle than running within your distribution, but still very reasonable if it decreases the chance of crippling bugs.
Posted Jun 1, 2012 18:48 UTC (Fri)
by n8willis (subscriber, #43041)
[Link] (3 responses)
Nate
Posted Jun 4, 2012 12:41 UTC (Mon)
by nix (subscriber, #2304)
[Link] (2 responses)
Posted Jun 4, 2012 15:44 UTC (Mon)
by Jonno (subscriber, #49613)
[Link] (1 responses)
Unfortunately colord-kde is to new to be packaged by any distribution yet, but you can get the source at [1] and build it yourself, it worked just fine for me in Kubuntu 12.04 (with two PPAs [2,3] to get recent enough colord, argyll and gcm).
1: http://download.kde.org/stable/colord-kde/0.2.0/src/color...
Posted Jun 4, 2012 18:19 UTC (Mon)
by nix (subscriber, #2304)
[Link]
Posted Jun 1, 2012 22:41 UTC (Fri)
by gutschke (subscriber, #27910)
[Link] (1 responses)
I can see the color profile application in my system settings (good!) And it shows me my devices (good). But the list of devices currently includes my monochrome printer, a virtual print-to-file printer, my webcam and my cellphone. All of these are devices that I can't really use with the ColorHug. In fact, for some of these devices, color profiles don't even make much sense.
And most importantly, it doesn't list my laptop's screen (not so good). I have no idea why that is and how I would go about fixing it.
I can run the argyll tools from the command line. And they correctly find and interact with the ColorHug (good). But after taking a really long time (~30min) to measure the screen, the results looked pretty horrible (no so good).
So, for the time being, I either need to use the life CD or I need to go back to using my proprietary colorimeter.
I was planning on doing some more detective work to figure out what is going on, but I got distracted by other commitments.
Posted Jun 6, 2012 7:49 UTC (Wed)
by TomH (subscriber, #56149)
[Link]
Posted Jun 2, 2012 17:45 UTC (Sat)
by Klavs (guest, #10563)
[Link] (7 responses)
Perhaps a device with a build-in light-source - and big square box with rubber-edge - so it can shut out other light than what it, itself emits would make it easier/cheaper/better ?
Posted Jun 2, 2012 22:58 UTC (Sat)
by rgmoore (✭ supporter ✭, #75)
[Link] (6 responses)
That's the general idea of a spectrophotometer, but the actual implementation can be trickier. You can only get an accurate reflection profile if you know the exact characteristics of your illumination, which means you need to have a very well characterized light source. I assume you can calibrate your meter by measuring a well defined image like a color checker chart, but it adds to the complexity of generating a profile.
Posted Jun 3, 2012 3:41 UTC (Sun)
by rahvin (guest, #16953)
[Link] (5 responses)
Commercial parts that provide what they are talking about are in the $500 range. Without commercial volumes the price could be 10x that much. Normal consumers don't generally buy these but they are essential in the printing and art reproduction business and doing the hardware right is very hard and expensive.
Great article, as someone who's done enough amateur photography that I was forced to buy monitor color calibration hardware and go through color calibration routines to ensure I got good reproduction of what I was looking at on screen. When I purchased though I wasn't aware that the commercial providers expect you to buy new hardware every few years because they abandon all support and driver updates. I can't afford to buy every couple years which left me having to either keep older hardware and software around to do photography on or to simply stop calibrating. I wasn't aware of the OSS options. Argyll made my older but still perfectly functional hardware usable not only in Linux but newer versions of Windows without being forced into another multi hundred hardware purchase. So thank you. I'll add my voice as someone that would be very interested in a OSS reflected light spectrophotometer that I could use for color calibration. Even if it was more expensive than the commercial options it would be better for no other reason than the hardware and software being OSS would be far less likely to be abandoned.
Posted Jun 3, 2012 23:46 UTC (Sun)
by rgmoore (✭ supporter ✭, #75)
[Link] (4 responses)
Presumably you can avoid the issue of background lighting by (as Klavs pointed out) making the colorimeter thoroughly light proof and placing the print you're reading on a black backing so external light can't shine through and you don't get any stray reflections from anything behind the print. I'd think that a well designed LED light source would be pretty stable, though it might not be as stable as you need. The only cheap approach I can think of would be to provide something like a Gretag Macbeth Color Checker with the colorimeter and use it to calibrate the device before each use. That would have to be a lot cheaper than trying to provide a nearly perfect light source.
And I'll say, I've been very happy with Argyll. It not only lets you keep using your device after the manufacturer has stopped supporting it, it also lets you use it better than the manufacturer intended. In a lot of cases, the only difference between different models is the software. Argyll lets you use its most sophisticated software even on the cheapest hardware, which is a big bonus.
Posted Jun 4, 2012 2:52 UTC (Mon)
by rahvin (guest, #16953)
[Link] (3 responses)
Light tight source exposure is pretty much a requirement for these systems. The problems you run into is that you have to have very expensive light source. Most light sources change during warm-up and even as they age. You see this most with florescent lighting but even LED's have variations. Then you have to regulate power tightly because as with most light sources if the input power varies the light sources will change spectrum. Even a tiny shift in spectrum will significantly alter the results. Think about it, you have to have absolutely precise knowledge of the spectrum being produced by the light or you can't measure anything with accuracy. Given how light sources behave and their limitations it shouldn't be hard to see why this would be so hard to do right, and in this case the difficulty directly affects the cost. As I said, at commercial volumes these devices typically go for $500 for low end models. That includes some software costs but by far the hardware is the most expensive piece.
Posted Jun 7, 2012 12:52 UTC (Thu)
by slashdot (guest, #22014)
[Link] (2 responses)
That should cancel out the light contribution, and would seem to work with any light as long as it emits at decent power at all wavelengths you are measuring, and is constant over time as you switch the measured material.
Of course, the reference reflective material also needs to reflect at all wavelengths in question, and the spectrometer needs to be very high resolution, so that light and reflectivity over the atomic intervals of measurement are minimal.
It could probably work as some sort of tray supplied with the spectrometer where you put samples to measure on after initial calibration, with the spectrometer being a camera-like device on a fixed tripod pointed at it.
This would also be very user-friendly since you could just lay down the sample on the tray, and wouldn't need to touch the spectrometer at all.
I'm not really knowledgeable about this kind of hardware though, so maybe there's some issue with this design.
Posted Jun 7, 2012 13:16 UTC (Thu)
by slashdot (guest, #22014)
[Link]
Which probably means there needs to be an enclosure, and some way to have an "diffuse" light source, or a rotating one-directional light source taking with multiple exposures taken.
But in general, don't people want to know the full BRDF if they are bothering with spectral measurement/
So maybe something like a rotating laser in an enclosure or dark room or similar is the way to go.
Posted Jun 7, 2012 19:47 UTC (Thu)
by rgmoore (✭ supporter ✭, #75)
[Link]
Posted Jun 7, 2012 20:46 UTC (Thu)
by apollock (guest, #14629)
[Link] (2 responses)
Posted Jun 7, 2012 21:57 UTC (Thu)
by n8willis (subscriber, #43041)
[Link]
Nate
Posted Jun 8, 2012 20:12 UTC (Fri)
by rgmoore (✭ supporter ✭, #75)
[Link]
I wouldn't think so. The biggest shift in calibrating a monitor correctly comes from setting the black point, white point, and color temperature correctly, which can be done fairly well with your eyes and a set of instructions. For the majority of people who just want reasonable consistency between computers and between computer and print, that very rough calibration is probably good enough. On the other hand, monitors are imperfect, and their calibration does drift measurably over time. The kind of people who need a full calibration rather than a rough adjustment will also care enough to recalibrate regularly to correct for the calibration drift. I don't see a lot of room between the two poles.
Posted Jun 5, 2013 16:00 UTC (Wed)
by anarcat (subscriber, #66354)
[Link]
I opened a bug in the Debian bugtracker to implement this in screentest:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=711218
.. but is there any software that does something similar out there?
Worse: is that image even free? https://en.wikipedia.org/wiki/Talk:IT8
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
(and, by extension, determination that bugs are *not* in the software but in some other piece of software, if they go away when using the livecd).
Sizing up the ColorHug open source colorimeter
That makes sense, and is actually a really nice way to ensure reproducibility of bug reports (and, by extension, determination that bugs are *not* in the software but in some other piece of software, if they go away when using the livecd).
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
2: https://launchpad.net/~dantti/+archive/colord-kde
3: https://launchpad.net/~pmjdebruijn/+archive/gcm-colorhug
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Perhaps a device with a build-in light-source - and big square box with rubber-edge - so it can shut out other light than what it, itself emits would make it easier/cheaper/better ?
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Can't you just measure using material of known reflective properties, then measure with the printed document, and divide the values?
This is what I meant when I mentioned calibrating the device. You have it measure a reference standard, ideally one with several different patches that are expected to behave differently so you can measure its performance better, and use that to figure out what your light source is actually doing.
and the spectrometer needs to be very high resolution, so that light and reflectivity over the atomic intervals of measurement are minimal.
I think that's exactly backward. You want to have an average reading for a decent sized patch that's supposed to be the same color. If you take your readings at too fine a resolution, you risk having your calibration thrown off by different behavior of the material over the scale you're looking at. For example, when you're measuring the output of your printer, you need to make sure you're looking at a scale substantially larger than individual ink droplets so you correctly measure the effect of its dithering pattern.
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
Sizing up the ColorHug open source colorimeter
any better screen testing tool out there?
