Automatic thresholding
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")
Figure
Activities
Apply manual and automated thresholds
- Manual vs. auto thresholding
- Open xy_8bit__nuclei_without_offset.tif and xy_8bit__nuclei_with_offset.tif
- Explore the differences in doing manual and auto thresholding
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
orApply
- 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
Galaxy
- Navigate to Galaxy
- Upload an image
- In the Tools panel on the left side, click
Upload Data
.- Click the
Paste/Fetch data
button.- Paste the URLs of the images : xy_8bit__nuclei_without_offset.tif and xy_8bit__nuclei_with_offset.tif
- Click the
Start
button and wait for the upload to complete.- Once the upload is finished, click the
Close
button. The image will now be available in your Galaxy history.- Apply a threshhold
- In the Tools panel on the left side, search
Threshold image
.- Choose the tool named
Threshold image with scikit-image
, and click on it.
- Manual threshold
xy_8bit__nuclei_without_offset.tif
- Select the image
xy_8bit__nuclei_without_offset.tif
from theSelect image
dropdown list.- Select
Manual
from theThresholding method
dropdown list.- Set
Threshold value
to20
.- Toggle
Invert output labels
toYes
- Click the
Run Tool
button and wait for the job to finish (The job will turn green).- Click on the job in your Galaxy history to download the resulting image.
xy_8bit__nuclei_with_offset.tif
- Select the image
xy_8bit__nuclei_with_offset.tif
from theSelect image
dropdown list.- Select
Manual
from theThresholding method
dropdown list.- Set
Threshold value
to40
.- Toggle
Invert output labels
toYes
- Click the
Run Tool
button and wait for the job to finish (The job will turn green).- Click on the job in your Galaxy history to retrieve the results.
- Auto threshold
xy_8bit__nuclei_without_offset.tif
- Select the image
xy_8bit__nuclei_without_offset.tif
from theSelect image
dropdown list.- Select
Otsu
from theThresholding Method
dropdown list.- Leave
Offset
value unchanged.- Toggle
Invert output labels
toYes
- Click the
Run Tool
button and wait for the job to finish (The job will turn green).- Click on the job in your Galaxy history to retrieve the results.
- Repeat the steps for a different image
xy_8bit__nuclei_with_offset.tif
Apply automated thresholds in 3D
- Open xyz_8bit__nuclei_autothresh.tif
- Apply one or more automated thresholding methods to this image
- Appreciate that they yield different results
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
skimage napari
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
Solution
- 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:
Learn more:
Some common automatic thresholding methods can be studied here Imagej.net Auto-threshold
Advanced material can be found in Introduction to Bioimage Analysis by Pete Bankhead