Approaches to Image Analysis with PlantCV

The following are suggestions on how to approach image analysis with PlantCV.

Image Processing Goals

When starting an image-based phenotyping project it is important to consider what the end goals of the project are. This is important because the goals of the project will determine the the camera type, imaging layout, and will help to guide downstream analysis. For example, if the goal of the project is to quantify the growth rates of a population of Arabidopsis plants, you may want to take timelapse images of whole flats of plants with an RGB (VIS) camera. If it was an experiment focused on drought of maize plants and your goal was to get information about water content of plants you might want to take side-view and top-view images of a single plant with a near-infrared camera. If the goal of the project is to classify disease symptoms on leaves then you may want to use a scanner to take detailed images of leaf tissue.

Image Layout Considerations

It is a good idea to capture a test image and process it using PlantCV (or any other software that you might use) before capturing a full set of data. It is ALWAYS best to try to reduce potential image processing problems up front, rather than to try to process 'bad' / inconsistent images. Things to think about:

Developing Image Processing Workflows (Pipeline Development)

There are two major steps to developing an image analysis pipeline:

  1. Object segmentation (detection/isolation) - This is likely a multi-step process. There are many ways to approach object segmentation, we detail those approaches below.
  2. Object analysis - Analysis on isolated objects, the categories of object analysis are below.

We primarily use Jupyter notebooks for pipeline development, and there is more information about using Jupyter notebooks here. Once a pipeline has been developed for one image, it's best to test it on other images in the dataset to determine how robust the pipeline will be. Example pipelines and tutorials are available and are meant to demonstrate how modules can be used. Keep in mind that modules can be linked together in a variety of different configurations to meet image processing goals so the tutorials simply examples of a few approaches:

1. Methods of Isolating Target Objects

Regardless of the objective of the experiment, it will likely be necessary to segment features of interest in the image (likely the plant material in the image). Isolating the target object or objects can be approached a number of different ways in PlantCV.

Image Normalization
Object Segmentation Approaches
Noise Reduction
Region of Interest
Connecting Objects or Splitting Objects

2. Object Analysis in PlantCV

These are the general categories of object analysis that are available in PlantCV

For a detailed list of types of PlantCV measurement outputs see 'Summary of Output Measurements'.

Parallelizing Pipelines

Troubleshooting

Recommendations for troubleshooting.

  1. If you run into an error, first use the error message as Google search terms to see if anyone else has run into (and solved) a similar problem. This isn't snark, the internet is a magical place.
  2. If your problem isn't solved after a search post an issue on GitHub here. It's possible that you have discovered a bug, or there is a use error.
  3. When posting an issue on GitHub the community can better help you if you provide detailed information. If you have triggered an error be sure to paste in the error message, the situation that you think triggered that error message, and what you are trying to do (end goal).
  4. If you are having issues processing a specific image it is also fine to post on GitHub here. But again, be sure to include the image, the specific problem you are having and the end goal. Also, make sure you have looked over the available tutorials.