After completing the imaging process for your desired biological model, you may find that some of your images have artifacts that are likely not a part of the true signal you’re attempting to extract. This can be caused by anything from non-specific binding to the circuitry of the scanner of your preferred imager. It is at this point in the image analysis process where we must employ some noise reduction techniques to ensure we only get high quality data from our image sets. In this short tutorial, we will go over a couple different ways in which we can manipulate our images to produce accurate data.
Image 1
Part 1: Prepping the images
Take for example a section of tissue imaged with a stain for DAPI as shown above. Following contrast adjustment and thresholding, you’re left with a large number of particles in your resultant mask (below image), some of which may be from background signals. Using the binary watershed feature within ImageJ helps split apart the cells that are bunched together, but there still remains small particles which may have resulted from non-specific binding or other causes of noise.
Image 2
Part 2: Particle Filtering
One simple technique we can use to remove these noisy particles is by using a size filter. In ImageJ, we can run the built-in “Analyze Particles…” plug-in to separate out particles based on their pixel area and roundness. First, we must get a general idea of how large an average cell is and determine the optimum size thresholds so as to not remove cellular objects. Using the draw and measure tools, we determine that the cells in this set are generally between 30 and 150 pixels squared in area. This is an acceptable range, however it is important to consider that some cells may be slightly smaller and others may be slightly larger. Since we can assume that most of the large particles are indeed cells, we only need to restrict the size filter’s lower bound. Following a size filter of the thresholded mask (and selecting “Show Masks”), we get the following result (Image 3):
Image 3
Before the size filter, we were left with 970 objects in the original mask. After the size filter, only 846 objects remain, despite the visual change being nominal. This shows how easy it is for small noisy particles to slip into the dataset and its ability to greatly skew your results, whether it be for basic cell counting or any other characterization.
Part 3: Plug-in Based Noise Reduction
Additionally, ImageJ also contains a “Subtract Background” plug-in that can help reduce the intensity of background artifacts. This plug-in can be used prior to any segmentation processes to help with thresholding later. For example, using the “Subtract Background” plug-in (with a radius value of roughly 25 to signify the approximate size of our foreground objects) on our original image produces the following (Image 4):
Image 4
As shown, much of the non-specific and lower-intensity signal from the background has been filtered out, producing an image which is almost entirely the desired signal. From here, we can again threshold the image and count the number of particles as before, and can even include a size filter to further help with noise reduction.
There are several other options you can use to try and mitigate the effects of noise (Despeckle, Fourier transform manipulations, etc.), but employing the two simple strategies outlined above in your image processing pipelines can greatly improve the quality of the data you produce.