By Nathan Willis
May 31, 2012
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.
(
Log in to post comments)