Hi,
I am writing a macro which segments ROIA, and then segments things within ROIA - I'll call them ROIA1, ROIA2. Likewise, I have a large ROIB and within it, some small ROIs - ROIB1, ROIB2, ROIB3, etc. (there may be 400 large ROIs containing smaller ROIs within them) I would like to be able to select all of the ROIs which are contained within a certain ROI. How would I do that? In Java, I would use a tree data structure for this type of search. How would I do this in a macro? Searching the whole ROI list every time I want to find a subset is time consuming. Thanks, Avital -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Instead of working with ROIs it might be easier to work with images
you have primary large ROIs, use them to fill a blank image with a different color for each ROI - use the ROI's ID as the intensity used for the fill operation. You now have a segmented image where each ROI is represented by the pixels of a single intensity, with each ROI having a unique intensity based on its ID create a second blank image and repeat the fill process with the smaller (secondary) ROIs, again using the ROI ID as the fill color. Now you combine the two images using the Image Correlator plugin - producing an image that shows which primary and secondary ROIs overlap - to check for overlap you just read the pixel value at a xy coordinate based on the IDs of the primary and secondary ROI. a non zero value shows overlap and the number itself is the number of pixels that overlap This assumes the that the primary ROIs do not overlap each other and similarly that the secondary ROIs do not overlap. I suspect that the image correlator plugin is limited to 8 bit images, so this approach would be limited to 255 primary and 255 secondary ROIs A lot depends on the questions you want to answer - you may be able to work with images and not ROIs. If your secondary ROIs are used, or even originate, from a binary image you could use this binary image and the segmented primary ROI image to select all the objects within each primary ROI and then use this image to generate a new ROI of all the parts of the secondary ROIs within the each primary ROI and then used analyze\particles etc to make the measurements you want. ________________________________________ From: ImageJ Interest Group [[hidden email]] on behalf of Avital Steinberg [[hidden email]] Sent: 10 July 2015 06:04 To: [hidden email] Subject: How can I select ROIs within a ROI? Hi, I am writing a macro which segments ROIA, and then segments things within ROIA - I'll call them ROIA1, ROIA2. Likewise, I have a large ROIB and within it, some small ROIs - ROIB1, ROIB2, ROIB3, etc. (there may be 400 large ROIs containing smaller ROIs within them) I would like to be able to select all of the ROIs which are contained within a certain ROI. How would I do that? In Java, I would use a tree data structure for this type of search. How would I do this in a macro? Searching the whole ROI list every time I want to find a subset is time consuming. Thanks, Avital -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hi Jeremy,
I think I can do something simpler than that. I can rename the ROIs in a certain way that will enable me to sort the ROI manager so that each large ROI will appear before the small ROIs that are contained in it. And I can add a property to each ROI, such as "big" and "small". Then, I can iterate over a limited number of ROIs each time I want to find "daughter" ROIs. This is still complicated compared to a tree data structure, which is meant for this purpose. Thanks, Avital On Fri, Jul 10, 2015 at 8:29 AM, Jeremy Adler <[hidden email]> wrote: > Instead of working with ROIs it might be easier to work with images > > you have primary large ROIs, use them to fill a blank image with a > different color for each ROI - use the ROI's ID as the intensity used for > the fill operation. You now have a segmented image where each ROI is > represented by the pixels of a single intensity, with each ROI having a > unique intensity based on its ID > > create a second blank image and repeat the fill process with the smaller > (secondary) ROIs, again using the ROI ID as the fill color. > > Now you combine the two images using the Image Correlator plugin - > producing an image that shows which primary and secondary ROIs overlap - to > check for overlap you just read the pixel value at a xy coordinate based on > the IDs of the primary and secondary ROI. a non zero value shows overlap > and the number itself is the number of pixels that overlap > > This assumes the that the primary ROIs do not overlap each other and > similarly that the secondary ROIs do not overlap. I suspect that the image > correlator plugin is limited to 8 bit images, so this approach would be > limited to 255 primary and 255 secondary ROIs > > A lot depends on the questions you want to answer - you may be able to > work with images and not ROIs. If your secondary ROIs are used, or even > originate, from a binary image you could use this binary image and the > segmented primary ROI image to select all the objects within each primary > ROI and then use this image to generate a new ROI of all the parts of the > secondary ROIs within the each primary ROI and then used analyze\particles > etc to make the measurements you want. > > > ________________________________________ > From: ImageJ Interest Group [[hidden email]] on behalf of Avital > Steinberg [[hidden email]] > Sent: 10 July 2015 06:04 > To: [hidden email] > Subject: How can I select ROIs within a ROI? > > Hi, > I am writing a macro which segments ROIA, and then segments things within > ROIA - I'll call them ROIA1, ROIA2. Likewise, I have a large ROIB and > within it, some small ROIs - ROIB1, ROIB2, ROIB3, etc. (there may be 400 > large ROIs containing smaller ROIs within them) > > I would like to be able to select all of the ROIs which are contained > within a certain ROI. How would I do that? > > In Java, I would use a tree data structure for this type of search. > > How would I do this in a macro? Searching the whole ROI list every time I > want to find a subset is time consuming. > > Thanks, > Avital > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Free forum by Nabble | Edit this page |