|
It's a noisy world dammit! At least, the visual
world is blessedly quiet . . . ah, peace at last. But still our
photos of it are suffused with visual noise: with lumps of silver
particles, with clumps of dyes and with pixels that just won't behave
well.
In traditional film photography, film grain is
inescapable. It is intrinsically part of any film emulsion: it is the more
or less densely packed silver or dye particles that makes up the varying
tones of the image. Therefore, film grain can never be avoided, only
minimized as the conventional guidance goes by using slow films, large
film formats and "not enlarging too much" (how's that for exact
instructions?). But with the advent of digital photography, it has finally
become possible to take pictures without any film grain whatsoever no matter
how much you enlarge. In theory, at least. For when receiving the same
illumination, two adjacent pixel sensors in a digital camera or scanner
should produce ecactly the same color but they don't. In
practice, the sad fact is that most digital cameras produce about as much
"film grain" as traditional film, especially in low-light scenes. Why? In
a word: noise. Electronic signal noise.
Owing to imperfections in the sensors, as well as in
the interpolation of the three adjacent RGB sensors to produce one
full-color pixel (which is the current technology), there is always some
unwanted difference between the values of the pixels. Put differently, the
pixels play a variation around the theme of the base color, and this
variation ends up creating a grainy pattern. In low light scenes the
problem is exacerbated, as greater strain is put on the circuits, causing
more electronic "shaking" analogous to the greater shaking of your
muscles when lifting very heavy objects. Boosting the "film speed" on
your camera the ISO level (a newfangled term for what we called ASA back
when I learned about photography) also increases the amount of pixel
noise.
Like film grain, pixel noise is not a
problem when printing the photos at smallish and therefore reasonably
high-resolution sizes. On files printed out at around 250-300 dpi, the
effect of halftone screens and inkjet droplets is to cancel out all the
noise in fact, noise can even be indispensible for reproducing
smooth, non-banding gradations. True. That's why gradient tools in image
editors often have a "dither" option (a sad necessity with 8 bit per
channel files, though redundant with 16 bits.) But if you want to make
larger prints of your digital photos, at letter or tabloid sizes, the
grainy noise will become clearly perceptible even if you use a high-quality
image interpolator like S-Spline. And for Web display, where the file
pixels are mapped one-on-one onto the screen pixels, the digital noise
will also very often be highly visible.
Here is an example of such noise, from a low-light
shot taken with an excellent digital camera, the Nikon CoolPix 950, just a section of the
original 1200x1600 image, displayed at 1:1. The
photo was taken and saved as TIFF, so there are no JPG
compression artifacts in the original image. To make the noise pattern
clearer, I have enlarged the lion head two times with "nearest neighbor"
interpolation, so as to not destroy the original pixels. (What is
displayed here on the Web is of course a JPG file, although I have compressed it very
little so as to not introduce any artifacts.)
The lioness is roaring rather noisily, eh? What in
reality are smooth, textureless surfaces have here become mottled,
dappled, uneven areas. To hone in on the culprit, we can see that while
the B&W image of the Red channel is not much marred by noise,
the Blue one certainly is (the Green is similar to the Red, so I dropped
showing it). It is usually the Blue channel, which suffers most from
digital noise (why, I don't know). And while sophisticated image editing
programs like Photoshop come with a gazillion filters for all kinds of
effects, there is as yet no single filter that can adequately
eliminate this kind of noise without also introducing fuzzyness.
To the rescue . . .
Enter Neat Image from ABSoft. Its sole
function in the Grand Scheme of Things is to eliminate digital noise from
our photos, whether grabbed with cameras or scanners. On the left is a
screenshot of the whole interface (click for larger view). Neat Image is a
standalone program, not a plugin, but using the program is quite simple:
just open your noisy file (JPG, TIF or BMP), marquee-select an area of
flat tones with no details, tell Neat Image to analyze the area, look at
the preview and if it looks fine apply the noise profile to the whole
image. (Do I have to say that you must also save the file?) If you
like, you can also apply sharpening at the same time. Neat Image
allows for a lot of manual fine-tuning of the parameters, but the
automatic procedure works fine in most instances. Here is a
before-and-after, side-by-side comparison of the lionness head, also
enlarged two times:
Note that all noise has been
fully eliminated, without introducing any unsharpness wonderful!
What happens is that Neat Image can extract the noise pattern, which is
largely unique to each image, and then "subtract" it from the whole image,
without changing tonal values or sharpness.
If you now think that the sharpness has been
notably affected, I submit that this is because the overall noise in the
original falsely contributes to the appearance of sharpness: you mistake
the image noise for object texture. But this object has no texture
I know, because the lady and her lioness live a happy life on my desk
and so we must judge the image's sharpness by examining the abrupt
edges between lights and darks. And when you do, you will find that
there has hardly been any noticeable changes.
What lurks beneath the tabs?
Delving a bit deeper into the
program than the most basic "use it and lose it" function, we find quite a
bit of sophistication. The four most annoyingly non-detachable
function tabs are here shown next to each other, courtesy of my slick
cutting and pasting, thus revealing all the various controls. Device
Noise Profile is the main control, with the blue little thingy (a ruler?)
being used to analyze a sample, once you have marquee selected it. Here
you can also pick the color
space model to be used, open/save your custom noise profiles and
annotate your settings. The idea behind a noise profile is that a given
camera under similar light/exposure conditions will produce the same kind
of noise. Hence if you know that a bunch of photos are similar in this
respect you only need to analyze one and can then apply the generated
noise profile to all the rest.
Neat Image can work in three different
color spaces: YCrCb Symmetric, YCrCb JPEG (also known as YCC) and the
trusty RGB. No CMYK, but that's really an irrelevant omission, as no
consumer digital imaging device produces CMYK files directly. The vendor
advises using the default YCrCb JPEG space for most cases (and I have
blithely taken their word for it and not yet tested using the other two).
The second most useful tab is Smart Sharpening, which
when enabled performs sharpening along with the denoising. I don't
know if this function uses the unsharp masking method or not (though I
suspect so, owing to the type of sharpening I see), but the quality of the
sharping seems fine. The best thing about the Smart Sharpening is that it
hardly takes any more time to process an image with sharpening than
without, so this is one fast algorithm! But I also found that while the
small preview in Neat Image seemed to give a good sharpening result of the
previewed areas, when I applied it to the whole file a lot of unforeseen odd
effects would occur in areas I had not been able to preview. So, for my
own use, I will for now mostly forego using Neat Image's sharpening. I
find that Photoshop's instant, full-screen preview together with the
three standard variables Amount, Radius, Threshold is more
predictable.
The two other tabs, Noise Filter and Noise Profile
Equalizer, are powerful ways of fine-tuning the denoising. But since I
have so often found that the profile which Neat Image automatically
generates does such a fine denoising job, I have not yet tested these
controls extensively. So I will only acknowledge that they may come in
handy some day, for that priceless photo which deserves the royal
treatment.
|
|
The Plugin of My Dreams
This is all I want out of life (among many other things,
naturally), namely a Photoshop plugin which has:
- A large, zoomable before-and-after preview
- The high-quality image interpolation of S-Spline
- Fractal analysis of textures, and regeneration of
higher-resolution textures
- The denoising capabilities of Neat Image
- Automatic discovery of flat image areas for noise profiling
- Deshifting of color shifted pixels along edges
- The unsharp masking functions of Photoshop
- Removal of JPG compression artifacts
- Anti-aliasing of existing jaggies
- Fully automatic batch processing
Is this really too much to ask of my fellow men? To me, it seems
like a modest request. But then, I don't have to code this beautiful
beast. |
|
A Perceptive Trick
To make your JPG files quite a bit smaller about 10-20%
do this:
- Convert to LAB color space
- Select the "a" channel
- Apply Gaussian Blur - about 2 or 3 pixels
- Ditto for the "b" channel
- Save as JPG
What this accomplishes is to reduce the amount of
"sharp" information in the two color channels. This
reduction hardly makes any difference to our eyes, but the JPG
compression algorithm will have less information to worry about. The
higher JPG quality setting you use for the final save, the more you
will gain by this procedure. You don't have to start with a JPG file
any format wil do as the original. An additional wise move is to
apply, as the second step, some Unsharp Masking to the LAB file's
Lightness channel the web is choking with fuzzy images!
And making a macro of it all is of course the
only sensible thing to do.
|
|
|
Honest shortcomings
In Neat Image's 35-page PDF manual, which is clear in
explanation but not exactly great design (see my diatribe
against ugly manuals in my previous column), we discover this
refreshingly forthright statement: "The current version of Neat Image is
the intermediate result of our research on noise filtration." What? It is
not The Totally Ultimate Program Of Its Kind? I'm stunned by such
honesty. And then follows something I have never seen in a software manual
before, but which I strongly applaud: the company's clearly spelled out
plans for improvements and additions! I'm stunned again. And in this vast
ocean of software non-nondisclosure, we discover that the developers are
planning these features, among others: hot pixel removal (better called
"stuck pixels"), batch mode, support for gray-scale images, support for
48-bit images and a plug-in version.
Given that this list, as well
as other items mentioned, covers a lot of what I consider to be inadequate
in Neat Image now, I will reward this refreshing openness by going somewhat
easy on my critical remarks.
For there are a few things that make the program
awkward to use. There is no full sized before-and-after preview of your
file. Nor can you simultaneously view variants of various filter settings
or zoom in on your image. The UI has vast areas of wasted gray space, as
the tabbed controls are not detachable. The selection of areas for
analysis require you to look at some itty-bitty numbers in the lower-left
corner, to check on the pixel size of the selected area a sure recipe
for eyestrain. The area to be analyzed must be a minimum of 60x60 pixels,
of smooth, even color and not all images will have that. You must use
scrollbars to move around in the image, instead of a grabber hand. And you
can neither open files by drag-and-drop onto the program, nor use regular
CTRL-C/V for pasting to and from the Clipboard reactionary! Oh
and a cropping tool would have been damn handy!
That's as much critical leniency as I can
stand.
Speedwise, it must be admitted that Neat Image takes
a fair amount of processing power. Even on my
well-rigged Athlon XP1800 system it takes about 50 seconds to denoise
one 1200x1600 image and that's only a 2-megapixel image file, with
output from the newer "prosumer" cameras now being both 4 and 5
megapixels. But considering how great the photos look after they have been
denoised, this CPU time is a small price to pay. (And in The Future Plans
the developers promise much speedier execution in the next version.) The
also-promised fully automatic batch function would of course allow you to
pick a bunch of pictures and leave the machine to itself for some hours,
instead of the present manual, tedious one-by-one
procedure.
Conclusion
There are competitors to Neat Image, like Grain Surgery and the forthcoming
Image Doctor from Alien
Skin (now in public beta). Yes, I have looked at those also, but as
this is not a comparative review I will just state that for now Neat
Image is my denoising tool of choice. The two others are plugins and may
have slicker UIs, but Neat Image's technology is better and easier to use:
its automatic analysis of a sampled area makes noisy-grainy image files
look superbly clean, with no loss in sharpness.
And at the price of merely $30, this is a
great bargain!
In five years or so, digital camera technology will
hopefully have developed sufficiently to have eliminated all random
noise, and all our photos will be as smooth as silk. But until then, Neat
Image will serve you faithfully, and like a well-trained butler quite
noiselessly.
|