Find Maxima


image J has a function called “find maxima” (process>binary>find maxima) that is quite useful for finding/counting nuclei in crowded and badly (unevenly) illuminated images (see attachments). it is also very fast and requires virtually no optimization. is there an equivalent function within CP? None of the IdentifyPrimaryAutomatic seem to do the same thing, and they seem to spend a lot of time on finding an optimal threshold, which is not required for finding local maxima.




Hi Thorsten,

CellProfiler currently has a module called IdentifyPrimLoG which functions much the same way. Some tweaking with the settings will be needed to capture the maxima at your desired spatial scale. The resultant points are primary objects which can be fed into IdentifySecondary to identify cellular/subcompartmental boundaries. Eventually, our intent is to fold this module into IdentifyPrimAutomatic as a set of additional options.




I’ve been setting up a pipeline in CellProfiler to count cellular organelles (peroxisomes). The method used to stain the peroxisomes (viral infection with GFP labeled peroxisome localization tag) is such that signal intensity can be uneven between cells (in some cells, all the peroxisomes have a strong staining pattern while in others they have a weak pattern).

This means that a pipeline based on signal intensities of the organelles is difficult to use, it will either overestimate or underestimate the number in part of the population.

As mentioned in the original post (from 9 years ago!), ImageJ has a function called “Find Maxima” that I find extremely robust for identifying and counting objects like this, even if signal intensities vary greatly. However, ImageJ does not lend itself to analyzing many images, identifying cells, etc.

The module that mbray mentions above no longer seems to be a part of CellProfiler. Is there any other function that would give the same results?






Using local thresholding and the RobustBackground method might get you to where you need to be- RobustBackground is good at spots, and using a local threshold will account for heterogeneous expression. You could also consider inserting an EnhanceOrSuppressFeatures module upstream of your segmentation, which has an option specifically for trying to enhance speckle-y objects.


Thanks bcimini, I’ll check that out.