Noise Reduction


The Problem

<div style="border: solid thin black; text-indent: 0; padding: 1ex; margin: 1ex;" class="rightblock"> <img src="pix/noise/baseimage.jpg"/> <p style="text-indent: 0; padding-left: 2ex; padding-right: 2ex;"> Base image used in <br/> 8 bit JPEG comparisons. <br/> Circle indicates area enlarged.</p> <p style="text-indent: 0; padding-left: 2ex; padding-right: 2ex;"> Canon 20D, 70-300 USM IS@85mm, <br/> ISO 800, 1/100 sec f/4.0</p> </div>

A thread on NPN asked which was better: Neat Image or Noise Ninja .

I'm new to advanced digital photography so I'm just learning standard flows and processing steps but I've been doing a bit of comparison here.

I'll be happy to have people give me insight into the validity of this comparison.

Executive Summary

In one comparison (using a flat light JPEG format image) Neat Image appears to do a better job. In another comparsion (high color high contrast 16 bit TIF image) Noise Ninja seems better. Using either is much better than using nothing at all.

Noise Ninja is noticably faster performing noise removal and much faster (6x) performing auto-profiling.

Results

Run on 8 bit JPEG

Conclusion

Both Neat Image and Noise Ninja appear to remove noise well on an unsharpened image. Neat Image processed images that seem to maintain lower noise after sharpening. Neat Image processed JPEGs are significantly smaller for roughly the same appearance, which I take to mean that Neat Image has done a better job of noise removal.

The base image (above right) was taken with a Canon 20D, 70-300 USM IS@85mm, ISO 800, 1/100 sec f/4.0 as high quality JPG (yes, I realize that RAW is better -- and that might affect the analysis.)

Process

I downloaded the stand-alone demos/crippleware of Noise Ninja and Neat Image for side by side comparison. I downloaded the only profile set for the Canon 20D available on the Noise Ninja web site and what appeared to be the most complete profile set from the Neat Image web site.

For the 16 bit TIF test I used a purchased copy of Neat Image Pro +.

I executed the follwing procedure for each test case:

Note that Noise Ninja includes sharpening in it's default operation which I set to zero for these tests.

For the "sharpening" case I used Photoshop to apply an unsharp mask to the entire image before cropping. I used settings of 200%, 1.6 pixels and 0 threshold. These settings seemed to work well on the plain image. I did not try to modify the settings to find the "best" sharpening after noise reduction.

<br class="clear"/>

Results Table

The following table shows my test results.

Note that they grey line in the Noise Ninja pictures is an artifact of the demo program.

<a name="comparisontable"/> <table id="imagetable" border="1" rules="all"> <th> Process</th><th>Processing<br/>Time</th><th>Unsharpened</th><th>Sharpened</th> <tr> <td class="label"> Plain</td> <td> </td> <td> <img src="pix/noise/NotSharpened/plain.jpg"/> <p> 30.3k</p></td> <td> <img src="pix/noise/Sharpened/plain.jpg"/> <p> 34.7k</p></td> </tr> <tr> <td class="label"> Neat Image<br/>Auto profile</td> <td> 24 seconds</td> <td> <img src="pix/noise/NotSharpened/NeatImage-Auto.jpg"/> <p> 11.4k</p></td> <td> <img src="pix/noise/Sharpened/NeatImage-Auto.jpg"/> <p> 14.8k</p></td> </tr> <tr> <td class="label"> Neat Image<br/>Profile: Canon 20D, <br/> ISO 800 JPEG 'Bible'</td> <td> 24 seconds</td> <td> <img src="pix/noise/NotSharpened/NeatImage-Stored.jpg"/> <p> 10.4k</p></td> <td> <img src="pix/noise/Sharpened/NeatImage-Stored.jpg"/> <p> 14.5k</p></td> </tr> <tr> <td class="label"> Noise Ninja<br/>Auto</td> <td> 17 seconds<br/>(turbo mode)</td> <td> <img src="pix/noise/NotSharpened/NoiseNinja-Auto.jpg"/> <p> 29.0k</p></td> <td> <img src="pix/noise/Sharpened/NoiseNinja-Auto.jpg"/> <p> 35.3k</p></td> </tr> <tr> <td class="label"> Noise Ninja<br/>Canon 20D, <br/> ISO 800 (turbo mode)</td> <td> 17 seconds<br/>(turbo mode)</td> <td> <img src="pix/noise/NotSharpened/NoiseNinja-Stored.jpg"/> <p> 28.9k</p></td> <td> <img src="pix/noise/Sharpened/NoiseNinja-Stored.jpg"/> <p> 34.9k</p></td> </tr> <tr> <td class="label"> Noise Ninja<br/>Canon 20D, <br/> ISO 800 (non-turbo mode)</td> <td> 27 seconds</td> <td> <img src="pix/noise/NotSharpened/NoiseNinja-Stored-NT.jpg"/> <p> 29.2k</p></td> <td> <img src="pix/noise/Sharpened/NoiseNinja-Stored-NT.jpg"/> <p> 34.6k</p></td> </tr>

</table>

Potential Problems

Potential problems with this comparison:

  1. I shot in JPEG HIGH instead of RAW.
  2. The Noise Ninja profile did not specify RAW or JPEG -- it may have been a profile for RAW. The Neat Image profile set had one for each.
  3. I did not take any steps to attempt to use the noise reduction tools in some "best practice" fashion -- I simply used the default settings (other than sharpening in Noise Ninja).
  4. The images here are extremely flat. Results might differ on images with a broader range of intensity.

Other interesting tidbits:

  1. The Neat Image processed images are much smaller in JPG than the others. This typically means there's less "information" in the image so it compresses better. While less information is usually a bad thing for digital photography, I have no need of tracking all the information about the noise so this might actually be a good thing.

Run on 16 Bit TIFF

Conclusions

Results in this test case have swapped. Here, Noise Ninja (against the saved profile) provides the best image. Once again file size is coorelated to subjective judgement. Noise Ninja is also faster across the board but particularly in auto-profiling.

Description

I used the same process here except that I took a Canon 20D RAW image, saved it as a 16 bit TIFF using the Canon tool and used that as my "original" for comparison purposes.

Note that the demo version of Noise Ninja, being the non-pro version, will only save 8 bit output. I saved as 8 bit TIFF and performed further manipulation in Photoshop 6.

I purchased Neat Image 5.25 Pro+ edition. In order to keep the comparison as even as possible I had Neat Image save the output at 8 bit TIFF as well. I found it interesting that after I adjusted the output depth Neat Image indicated I had to run the noise reduction again where Noise Ninja gave me (well, forced me) the choice at image save time.

For the "plain" comparison I converted the image to 8 bits in Photoshop before sharpening.

As my camera is currently with my daughter in Costa Rica, Eric Smith was kind enough to let me run these tests on one of his excellent images. As such I'm not going to post the full image but I did secure his permission to post the crops.

The image was taken on a Canon 20D & Canon 600mm f/4L IS + 1.4x teleconverter, ISO 200, 1/640s, F/8.

Results Table

<a name="comparisontable16bit"/> <table id="imagetable" border="1" rules="all"> <th> Process</th><th>Processing<br/>Time</th><th>Unsharpened</th><th>Sharpened</th> <tr> <td class="label"> Plain</td> <td> </td> <td> <img src="pix/noise/NotSharpened/raw-plain.jpg"/> <p> 22.2k</p></td> <td> <img src="pix/noise/Sharpened/raw-plain.jpg"/> <p> 32.6k</p></td> </tr> <tr> <td class="label"> Neat Image<br/>Auto profile</td> <td> 29 seconds to profile,<br/>26seconds to filter</td> <td> <img src="pix/noise/NotSharpened/raw-ni-auto.jpg"/> <p> 18.5k</p></td> <td> <img src="pix/noise/Sharpened/raw-ni-auto.jpg"/> <p> 26.7k</p></td> </tr> <tr> <td class="label"> Neat Image<br/>Profile: Canon 20D, <br/> ISO 200 JPEG 'Bible'</td> <td> 25 seconds</td> <td> <img src="pix/noise/NotSharpened/raw-ni-saved.jpg"/> <p> 18.5k</p></td> <td> <img src="pix/noise/Sharpened/raw-ni-saved.jpg"/> <p> 26.8k</p></td> </tr> <tr> <td class="label"> Noise Ninja<br/>Auto</td> <td> 5 seconds profile<br/>15 seconds filter<br/>(turbo mode)</td> <td> <img src="pix/noise/NotSharpened/raw-nn-auto.jpg"/> <p> 18.6k</p></td> <td> <img src="pix/noise/Sharpened/raw-nn-auto.jpg"/> <p> 26.4k</p></td> </tr> <tr> <td class="label"> Noise Ninja<br/>Canon 20D, <br/> ISO 200 (turbo mode)</td> <td> 19 seconds<br/>(turbo mode)</td> <td> <img src="pix/noise/NotSharpened/raw-nn-saved.jpg"/> <p> 17.1k</p></td> <td> <img src="pix/noise/Sharpened/raw-nn-saved.jpg"/> <p> 22.0</p></td> </tr> <tr> <td class="label"> Noise Ninja<br/>Canon 20D, <br/> ISO 200 (non-turbo mode)</td> <td> 25 seconds</td> <td> <img src="pix/noise/NotSharpened/raw-nnnt-saved.jpg"/> <p> 16.9k</p></td> <td> <img src="pix/noise/Sharpened/raw-nnnt-saved.jpg"/> <p> 21.1k</p></td> </tr> </table>

Potential Problems

  1. Once again, it might be that the saved profile is more important than the program
  2. The demo version of Noise Ninja is limited to 8 bits. Perhaps it would behave differently in full 16 bit mode.

Another Example

<div style="border: solid thin black; text-indent: 0; padding: 1ex; margin: 1ex;" class="rightblock"> <img src="pix/noise/other/baseimage.jpg"/> <p style="text-indent: 0; padding-left: 2ex; padding-right: 2ex;"> Canon 20D, 70-300 USM IS@300, <br/> ISO 400, 1/100s, f/5.6</p> </div>

The following is a 100% crop from the image to the right (before resizing) run through the various tools with the downloaded profiles and sharpened.

<table id="imagetable" border="1" rules="all"> <th> Process</th><th>Image</th> <tr> <td> Plain</td> <td> <img src="pix/noise/other/BirdBeak-Plain.jpg"/> </td> </tr> <tr> <td> Neat Image</td> <td> <img src="pix/noise/other/BirdBeak-NeatImage.jpg"/> </td> </tr> <tr> <td> Noise Ninja</td> <td> <img src="pix/noise/other/BirdBeak-NoiseNinja.jpg"/> </td> </tr> </table>


(last updated 2006-11-19 13:55 GMT )