Prerequisites

Before starting this lesson, you should be familiar with:

Learning Objectives

After completing this lesson, learners should be able to:
• Understand how an image histogram can be used to derive a threshold

• Apply automatic threshold to distinguish foreground and background pixels

Motivation

The manual determination of a threshold value is tedious and subjective. This is problematic as it reduces the reproducibility of the results and may preclude determining threshold values for many different images as the dataset becomes large. It is therefore important to know about reproducible mathematical approaches to automatically determine threshold values for image segmentation.

Concept map

graph TD I("Image") --> H("Histogram") H -- algorithm --> T("Threshold value")

Activities

Apply manual and automated thresholds

Show activity for:

ImageJ GUI

• Manual vs. auto thresholding
• Open xy_8bit__nuclei_without_offset.tif
• [ Image > Adjust > Threshold… ]
• [X] `Dark Background`
• Selecting `Lower threshold level = 20` is a good example. Note down this value
• Press `Reset`
• Don’t press `Set` or `Apply`
• Open xy_8bit__nuclei_with_offset.tif
• [ Image > Adjust > Threshold… ]
• [X] `Dark Background`
• Selecting `Lower threshold level = 20` now does not work (i.e. all pixels are foreground)
• Here, selecting `Lower threshold level = 40` works
• Press `Reset`
• Select window xy_8bit__nuclei_without_offset.tif
• [ Image > Adjust > Auto Threshold ]
• `Method = Try all`
• [X] `White objects on black background`
• Keep all other options unchecked
• Press `OK`
• Select window xy_8bit__nuclei_with_offset.tif
• [ Image > Adjust > Auto Threshold ]
• `Method = Try all`
• [X] `White objects on black background`
• Keep all other options unchecked
• Press `OK`
• In auto thresholding several methods produce acceptable results and one can get rid of selecting manual threshold values for each different image

skimage napari

Apply automated thresholds in 3D

Show activity for:

ImageJ GUI

• Open xyz_8bit__nuclei_autothresh.tif
• Try all available methods
• [ Image > Adjust > Auto Threshold ]
• `Method = Try all`
• [X] `White objects on black background`
• [X] `Stack`
• [X] `Use stack histogram`
• Press `OK`
• Observe that the different methods give different outputs
• Appreciate that this montage view is not suited for further analysis of the binary output
• Apply one method to properly segment the stack, e.g. Otsu
• [ Image > Duplicate… ]
• `Title = Otsu`
• [X] `Duplicate stack`
• [ Image > Adjust > Auto Threshold ]
• `Method = Otsu`
• [X] `Stack`
• [X] `Use stack histogram`
• [X] `Show threshold values in log window`
• Press `OK`

Assessment

True or False

• Using stack histogram yields only one threshold value for binarization when applying auto thresholding
• Auto thresholding gives better segmentation results than manual thresholding in the presence of noise

• True
• False

Explanations

Key points

• Most auto thresholding methods do two class clustering
• If the histogram is bimodal, most automated methods will perform well
• If the histogram has more than two peaks, automated methods could produce noisy results

Follow-up material

Recommended follow-up modules: