Hats off to the developers of Cellprofiler for providing a package that allows one to quickly put together and customize an image analysis module/pipeline. The flexibility in its use far out-weighs its somewhat sluggish operating speeds which could be overcome by allocating more computers to the job. What I like most about CellProfiler is that it allows one to add new modules that would facilitate or enable new features to the program.
In the last month, I have put together a number of modules which may be useful to others, and if so could be included in future revisions of the software.
First I created the modules MinImages.m and MaxImages.m (based on Average.m) as an exercise in creating modules for CellProfiler and for experimenting with an uneven illumination correction technique.
I then created SplitObjectByMeasurement.m (based on FilterByObjectMeasurement.m) which allow me to specify two output targets: one for those objects that meet the criterion (as in FillterByObjectMeasurement) another for those that do not meet the criterion (so that I do not have to call the FillterByObjectMeasurement function twice).
To see the different objects overlays all in one module/image, I created OverlaySegmentedBoundary.m which expects as input, three original greyscale images (for up to three input channels) and upto eight masked images (labelled images for each object class e.g. the input or output images to the above SplitObjectByMeasurement.m module). Each object class is displayed with a different overlay boundary on the original image. In addition, a summary table of the number of objects within each class and the number of objects that overlap (by a user-defined percentage area) with another object class are shown and saved as a features that describe the summary for the image. This module allows us to visually verify the classfication of objects and to generate a report summary of the number of detected objects within each image (without having to filter the raw data generated by the measurement modules).
I also added a module for MeasureCorrectedIntensity.m (based on MeasureImageIntensity.m) which attempts to determine the intensity of background and subtracts it from the measured intensity values. The background can be obtained either from the entire image statistics or locally using areas around each object that are not occupied by any other object.
In order for the help menu screens to correspond to the listed function in the program, the help-menu code will need to be updated (low priority on my list of things to do at this time).