Scaling for MeasureObjectIntensity

Dear CellProfiler gurus,
I have a question regarding the unit for the object intensity. From the manual, it claims that “the default behavior in CellProfiler is to rescale the image intensity from 0 to 1 by dividing all pixels in the image by the maximum possible intensity value.” I did not change the default (actually I don’t know how). However, I got some values, for example, for the IntegratedIntensity, that are in the range of thousands. My object is a cell (about 10um) and the scale for my picture is 1 pixel per um. Even if every pixel in the cell is super saturated, I don’t think I can possibly get values in the thousands. Could you help me understand what is going on?
Thank you so much!

A couple things I think are leading to this confusion! One is that CellProfiler calculates your objects in pixels, not microns; so even though your cell might only be 10um depending on your magnification it’s likely to be thousands of pixels. The other is the meaning of individual measurements in the MeasureObjectIntensity module (you should check out the module help for more information!)- the IntegratedIntensity is the sum of all the pixel intensities in your object. So if you have an object that’s 10,000 pixels in area and has an average brightness of 0.2 on a scale of 0-1, your IntegratedIntensity would be ~2,000.

Does that make more sense?

Dear bcimini,
Thanks for the explanation. i am still confused since my scale is 1 pixel per um. so each cell should only take about 10 pixels. Am I missing something here?

Do you mean your cells are 10 pixels in area or in diameter? If you mean your cell is 10 pixels in diameter, that would make it about 75 pixels in area (so having a range of IntegratedIntensities of between 0-75). You can see the 10th, 50th, and 90th percentile diameter of your identified objects in your IdentifyPrimaryObjects module.

Without seeing your pipeline and your images, I have no idea if it’s that your pixel-to-micron conversion scale isn’t what you think it is (1 micron per pixel doesn’t sound quite right to me but if you’re using a low-mag low-res setup it’s possible), whether you’re measuring the intensity on rescaled images with intensities of >1, or whether you have some objects that are being identified at about a >40 pixel diameter (meaning they’re greater than 1000 pixels in area, and therefore could possibly be greater than 1000 in IntegratedIntensity), but those are the most likely options I think you should check.

Dear Beth,
I am attaching the pictures I used to identify primary (DNA) and secondary object (membrane), together with my pipeline. I am trying to measure C-pep (insulin) intensity (hopefully this will work).
I see that from your calculation, my cell area can be about 1000. However, I still think the values I get a a little too high. I am using a low-mag, low-res scope, with a scale of 1um per pixel.
Thank you so much for your help!!

islet_hormones.cpproj (1.5 MB)

The objects you’re measuring the intensity of are the secondary objects, which don’t have any explicit size measurements put on them in your pipeline; in the example image you sent me, the average area was about 115 pixels in area (with a SD of about 70), and visually there didn’t seem to be a huge range in size in the identified objects, but that may not be true for your other images. Can you confirm whether the image you sent was one that had objects with integrated intensity of >1000 in your hands? I can’t confirm on my end since I don’t have the images of the other channels to actually carry out the measurement.

All that being said, it’s pretty easy for you to validate this yourself (and worth knowing how to do!) rather than me doing it for you- you should look at the output of IdentifySecondaryObjects in test mode (open the eye to see the output) on an image that you know produces objects with integrated intensities that seem too high. Are there objects there that visually look too big? If so, you’ve got a couple options-

  • Use Distance-B as your thresholding method in IdentifySecondaryObjects; this will allow you to set an upper limit on how far outside the nuclear diameter cell edges can be set, which should keep the size to within a constrained range.
  • If for whatever reason Distance-B doesn’t work nicely on your images, after your IDSecondary step as it’s currently configured add a MeasureObjectSizeAndShape and a FilterObjects modules to throw out cells (and their corresponding nuclei) that are too big.

If it’s not that your objects are too big, then something is going wrong in your Rescale modules (I hadn’t realized you were using 32 bit input images before, which can sometimes behave a little quirkily)- hover over the output images on each of your RescaleIntensity modules to make sure that the rescaled output images never have intensities >1.