Monday, March 25, 2013

Creating Noise Profiles

I was asked what I use to create noise profiles. It is ImageJ'  a free cross platform Java app from NIH.  The best and ad free download site is from NIH-- http://rsbweb.nih.gov/ij/download.html

Once you have it installed  open your photo and choose your line type. Drag it across  the area of your photo where you want to measure noise.  Cntrl+K creates the graph.


To  change the Y scale of the graph go to edit, options, plot profile options



For  my measurement in the black area of this poster I picked  min 0, max 40


Once you have a flat noise profile, go to analyse, measure or hit Cntrl+M

For an accurate noise measurement signal average several. This is a square law thing so 4 measurements doubles your accuracy and 9 measurements triples it. Summarize will do the math where your Signal to Noise (S/N) is the Mean divided by the StdDev (Standard Deviation)



Is this conventional statistical definition of S/N to best way to characterize photographic signal to noise?Probably not.  Noise peaks, especially colored noise peaks, that jump out of the average noise are far more distracting than a mild increase in the average noise. So is pattern noise.  Both these noise problems will become lost in these numbers. But if you do these comparisons carefully ImageJ is a very useful tool for working out how well the various combinations of sliders and methods work for you.

Final note.  You can not save a picture of your graph directly in ImageJ. 'Save as' creates a spread sheet file, 'Clear\' clears out you mistakes and 'Rename' allows you to start a new results list without losing your previous numbers.

Again if you want to know more about noise read Emil's article,  http://theory.uchicago.edu/~ejm/pix/20d/tests/noise/noise-p2.html





7 comments:

  1. great use for this tool.
    must one first convert the raw image to a jpg before using this method?

    ReplyDelete
    Replies
    1. From the documentation
      It can display, edit, analyze, process, save and print 8-bit, 16-bit and 32-bit images. It can read many image formats including TIFF, GIF, JPEG, BMP, DICOM, FITS and "raw"

      By "raw" it means the most basic type, a list of numbers without a header.

      Delete
  2. I guessed that may be the case.
    When I open a NEF (Nikon raw) file the display shows a very pixelated image.
    And I get very bizarre results when attempting to get a noise profile.

    ReplyDelete
  3. Bizarre in what way? Spiky or clipped profiles for example are all indications of happenings/problems in the camera or during postprocessing.

    ReplyDelete
  4. scribble-

    Back after a long summer. ImageJ will not work properly with a NEF raw file.

    The documentation says:

    "Image files must be in TIFF, GIF, JPEG,
    DICOM, BMP, PGM or FITS format, or in a format supported by a reader plugin."

    I have not been able to find a plugin for raw files for any camera. Tiff files and jpegs work fine.

    mikesan

    ReplyDelete
  5. A suggestion for setting the Profile Plot Options (min and max Y scale values):

    Your example of 0 - 40 works ok for darker areas in a jpeg (8 bit) file but you need much larger values when working with a 16 bit (tiff) file.

    First run Analyze > Measure and note the Mean value. Set the Y scale values to include this value + or - 10%.

    mikesan

    ReplyDelete
  6. Agree with both comments. ImageJ works with the the pure RAW data that you get out of scientific cameras but not with the compressed NEFs from my Nikons

    ReplyDelete