pythonimage-segmentationscikit-image

Measuring the radial intensity distribution of equally spaced regions of circular-like shapes


Hi I'm currently stuck on a problem that I'm hoping someone may be able to help me with. I've tried looking around for a solution but haven't had too much luck. I am a biologist starting to integrate automated image-analysis into my workflow so forgive me if this isn't the right place to ask this question. I have performed segmentation with skimage to identify objects within a set of images (example below) obtained via microscopy as seen below:

What I am wanting to do now however is take each one of these objects and measure their individual radial profiles by creating an n-number of equally spaced rings within the object. From this I want to extract the mean and total intensity from each of those rings in order to quantify the variation of radial intensity (example below). The biggest issue I'm having is actually finding a way to re-segment these objects into equally spaced rings with skimage. I have tried creating multiple rings from the object-center however as the object-bounds are not perfect circles this does not achieve what we want.

enter image description here

FYI - This is also a function available using the software CellProfiler which I have used in the past to accomplish this (example of function can be found here) however I am attempting to recreate this functionality independently of CellProfiler so we can run our analysis more efficiently. Any guidance or even nudges in the right direction would be greatly appreciated.


Solution

  • Let's say we have the coordinates of the object-center (x0, y0) along with the set of M coordinates of the object-edge H={(hx1, hy1), (hx2, hy2), ..., (hxM, hyM)}.
    In this context, our aim is to find the coordinates of N rings or closed curves that equally segment the object. All the rings have the same center as the object located at (x0, y0).
    I suggest that we can do it through calculating the coordinates of N evenly spaced sections segmenting all the lines lying between the object-center and the object edge as L={ {(x0, y0), (hx1, hy1)}, {(x0, y0), (hx2, hy2)}, ..., {(x0, y0), (hxM, hyM)} }.
    E.g, utilizing this formula https://www.geeksforgeeks.org/section-formula-point-divides-line-given-ratio/