Issue with "Set intensity range from:" for multiple channels and displaying those intensities


I am setting up a basic pipeline to segment cells from 3 channel images and quantify staining intensity. These images are collected in 12-bit (thus maxed out at 4095 intensity), but of course cellprofiler treats them as 16 bit, if I let it normalize to image metadata or bit depth. This results in all the intensity values being small, as with this camera even values of 10 or 15 are “signal” and thus end up as like 0.0002-0.0005, which is extremely difficult to work with.

This leads to two related questions:

  1. I tried to set the image intensity range to 4095 in Names and Types, and this works fine for a single channel, but when I try to set the image intensity range to 4095 for the next channel, the scroll bar goes away and the entry box for the value never pops up. As soon as I switch back to “from image metadata” or “image bitdepth” the program behaves fine. If I set the image intensity range to 4095 for the first channel, will all the other channels be similarly scaled, or no?

  2. When I tried playing with a pipeline where just the first channel was set to 4095, the image intensities do not display in the module window for IdentifyPrimaryObjects (ie down in the bottom right corner). I mouse over and the values are all 0.0000 (but RGB value of identified objects have values). If I set the first channel range to from metadata, then it gives me values, but as expected they are all ~0.0002 etc. This is also true if I delete the other channels and just use one with the manual setting of 4095 max. Is there a way to get the program to display the intensities of the scaled image?

Running CP 3.1.8 on Windows 7.


Hmmm, I can replicate the bug you’re seeing in NamesAndTypes and will file it. I can’t independently verify your second issue, the hover-over works fine for me when the image range is set manually.

One workaround in the meantime would be to let the program assign everything by bit depth (to 16-bit) on loading, then add one ImageMath module per channel, choose the ‘None’ option, then multiply by 16 (or, if you really want to be technical about the value of 65535/4095, 16.00366300366).

Thanks. It works ok with the ImageMath modules and the hover intensity works from those images, so that fixes my problem for now.

hoping on this, how can I know how CP normalizes the intensity? ie if it treats my images as 16 bit or uses the metadata to normalize.
in my case, I have for instance 8 bit images and on NamesAndTypes modules I set intensity range from Image metadata and get intensities between 0-1 (as explained in documentation). Does CP then divides each pixel intensity by 255?
(this was driving me crazy as I tried to compare fiji and CP intensity measurements…)

If it is set to Set from Image Metadata, it’ll depend on how your camera encodes it, but it’ll either be divided by 255 or 65535. If you want to set it explicitly, you can do that with the “manual” option.