<div dir="ltr">The steps I&#39;ve given should also work in 3D if the slice thickness is low enough to provide the connectivity between slices. Personally, I haven&#39;t had much luck with the vesselness family. My rule of thumb is that if they happen to work, then a simple morphological approach will probably work too, more reliably and with fewer parameters to fiddle :-).</div>
<div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, May 23, 2013 at 5:36 PM, Dan Mueller <span dir="ltr">&lt;<a href="mailto:dan.muel@gmail.com" target="_blank">dan.muel@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Gib,<br>
<br>
Some more food for thought:<br>
<br>
(1) If you have a 3D image (as opposed to 2D slices) you may consider<br>
using Hessian-based vesselness enhancement:<br>
<a href="http://www.itk.org/Doxygen/html/classitk_1_1Hessian3DToVesselnessMeasureImageFilter.html" target="_blank">http://www.itk.org/Doxygen/html/classitk_1_1Hessian3DToVesselnessMeasureImageFilter.html</a><br>
<a href="http://www.itk.org/Doxygen/html/classitk_1_1MultiScaleHessianBasedMeasureImageFilter.html" target="_blank">http://www.itk.org/Doxygen/html/classitk_1_1MultiScaleHessianBasedMeasureImageFilter.html</a><br>
<a href="http://www.insight-journal.org/browse/publication/314" target="_blank">http://www.insight-journal.org/browse/publication/314</a><br>
<a href="http://www.insight-journal.org/browse/publication/175" target="_blank">http://www.insight-journal.org/browse/publication/175</a><br>
<a href="http://www.insight-journal.org/browse/publication/163" target="_blank">http://www.insight-journal.org/browse/publication/163</a><br>
<br>
This class of filters can enhance tube-like structures (e.g. vessels),<br>
while suppressing sheet like structures i.e. the outer border of your<br>
object.<br>
<br>
(2) You could consider using an active contour method to segment the<br>
outer structure (replacing step 1 in Richard&#39;s proposal above). You<br>
could achieve this by initializing the contour as the edge of your<br>
image, then shrink the contour until it attaches to the boundary of<br>
the tissue. Then continue to follow Richard&#39;s second step and remove<br>
the outer structure by erosion + masking.<br>
<br>
Good luck.<br>
<br>
Cheers, Dan<br>
<div class="HOEnZb"><div class="h5"><br>
On 23 May 2013 11:16, Gib Bogle &lt;<a href="mailto:g.bogle@auckland.ac.nz">g.bogle@auckland.ac.nz</a>&gt; wrote:<br>
&gt; Hi Richard,<br>
&gt;<br>
&gt; I don&#39;t have other staining.<br>
&gt;<br>
&gt; Thanks for your suggestion of a procedure.  I will have to study it and<br>
&gt; understand it, before I can comment on it.<br>
&gt;<br>
&gt; Gib<br>
&gt;<br>
&gt;<br>
&gt; On 23/05/2013 12:25 p.m., Richard Beare wrote:<br>
&gt;<br>
&gt; Hi,<br>
&gt; I&#39;m not sure I understand completely, but here&#39;s my suggestion of an<br>
&gt; approach. It may turn out to be easier if you have other staining too.<br>
&gt;<br>
&gt; 1) Segment the entire tissue - i.e generate one large object that contains<br>
&gt; all your small vessels and a boundary on your layer that you need to peel.<br>
&gt; More on how this might be achieved later.<br>
&gt;<br>
&gt; 2) Erode this object and use the eroded version to mask out the accidental<br>
&gt; staining - i.e. do the peeling. Then apply your normal segmentation to what<br>
&gt; is left.<br>
&gt;<br>
&gt;  If you have another channel where all the tissue has contrast then<br>
&gt; segmenting the tissue will be relatively easy. Otherwise it will be a bit<br>
&gt; more of a challenge. My first guess if the latter is the case is to use 2<br>
&gt; markers in a watershed. One marker will be the image border (definitely<br>
&gt; outside the tissue). Create the marker image as follows.<br>
&gt;    a) Apply a large closing, say about 15% of the tissue size. This will<br>
&gt; connect your interior objects together. Threshold the result, choose the<br>
&gt; largest connected component, then erode that component a little to make sure<br>
&gt; it stays inside the tissue and use the result as your foreground marker. Use<br>
&gt; rectangular structuring elements for the closing so you can take advantage<br>
&gt; of fast operations.<br>
&gt;    b) put the two markers together in an image such that they have different<br>
&gt; voxel values - i.e. image border has value 2, inside marker from step a has<br>
&gt; value 1.<br>
&gt;<br>
&gt; Use the combined image as the marker image for the morphological markers<br>
&gt; filter, use the original as the control. You may need to smooth the original<br>
&gt; to close boundary gaps in faint areas. You shouldn&#39;t need to take a gradient<br>
&gt; because the staining forms a line which the watershed should find.<br>
&gt;<br>
&gt; Select the foreground label from the watershed result. Erode it a bit<br>
&gt; (you&#39;ll need to look to confirm how much).<br>
&gt;<br>
&gt; If there is a gap then the watershed will leak through, but this won&#39;t<br>
&gt; matter as you are going to erode the mask and areas with gaps don&#39;t need to<br>
&gt; be corrected anyway.<br>
&gt;<br>
&gt;<br>
&gt; On Thu, May 23, 2013 at 7:47 AM, Gib Bogle &lt;<a href="mailto:g.bogle@auckland.ac.nz">g.bogle@auckland.ac.nz</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; I didn&#39;t think there would be a stock filter, but maybe somebody else has<br>
&gt;&gt; addressed this.<br>
&gt;&gt;<br>
&gt;&gt; I have attached a typical frame.  I can&#39;t show the wanted result, but I<br>
&gt;&gt; think it&#39;s obvious when you know that the interior of this piece of tissue<br>
&gt;&gt; has the blood vessels stained, while the faint rim is clearly not blood<br>
&gt;&gt; vessel.  The problem is that there will in general be many vessels stained<br>
&gt;&gt; to a similar intensity as this rim.<br>
&gt;&gt;<br>
&gt;&gt; Gib<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On 23/05/2013 8:53 a.m., Dženan Zukić wrote:<br>
&gt;&gt;<br>
&gt;&gt; I don&#39;t think there is any stock filter which does what you want. And I<br>
&gt;&gt; still don&#39;t understand your situation. Can you show us an example slice and<br>
&gt;&gt; wanted result?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Wed, May 22, 2013 at 10:50 PM, Gib Bogle &lt;<a href="mailto:g.bogle@auckland.ac.nz">g.bogle@auckland.ac.nz</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The reason why I don&#39;t think erode will work is that the part of the<br>
&gt;&gt;&gt; image that contains the information of interest is made up of many<br>
&gt;&gt;&gt; disconnected pieces, not very different from the boundary layer that I want<br>
&gt;&gt;&gt; to remove.  The only thing that I can use to distinguish the pixels that<br>
&gt;&gt;&gt; need to be removed is that they are near the outside of the region.  If I<br>
&gt;&gt;&gt; apply erosion I will remove many small but important features (this is<br>
&gt;&gt;&gt; labelled vasculature, and I do not want to lose fine capillaries).<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Gib<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On 22/05/2013 11:12 p.m., Dženan Zukić wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; <a href="http://www.itk.org/Doxygen/html/group__MathematicalMorphologyImageFilters.html" target="_blank">http://www.itk.org/Doxygen/html/group__MathematicalMorphologyImageFilters.html</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; What you probably want to do is BinaryErode and BinaryDilate.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Wed, May 22, 2013 at 7:04 AM, gib &lt;<a href="mailto:g.bogle@auckland.ac.nz">g.bogle@auckland.ac.nz</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; It&#39;s hard to know what to call the processing I want to apply.  I have a<br>
&gt;&gt;&gt;&gt; set<br>
&gt;&gt;&gt;&gt; of biological images (actually a 3D image, but for now I&#39;m happy to<br>
&gt;&gt;&gt;&gt; process<br>
&gt;&gt;&gt;&gt; the frames one-by-one) in which the region of interest has an irregular<br>
&gt;&gt;&gt;&gt; and<br>
&gt;&gt;&gt;&gt; incomplete labelled layer around the boundary.  The staining of the<br>
&gt;&gt;&gt;&gt; layer<br>
&gt;&gt;&gt;&gt; was unintended, and its presence interferes with the segmentation that I<br>
&gt;&gt;&gt;&gt; am<br>
&gt;&gt;&gt;&gt; doing.  The part of the image that I want to extract is made up of many<br>
&gt;&gt;&gt;&gt; disconnected objects, and there is not much difference in the intensity<br>
&gt;&gt;&gt;&gt; ranges of the objects of interest and the unwanted edge.  I am willing<br>
&gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt;&gt; trim a few pixels off the boundary all the way around - this will not<br>
&gt;&gt;&gt;&gt; cause<br>
&gt;&gt;&gt;&gt; much loss of information.  What I need is way to determine a sequence of<br>
&gt;&gt;&gt;&gt; pixels that in some sense defines the extent of the labelled region in<br>
&gt;&gt;&gt;&gt; the<br>
&gt;&gt;&gt;&gt; image, rather like a 2D shrink wrapping.  I could then use this to shave<br>
&gt;&gt;&gt;&gt; or<br>
&gt;&gt;&gt;&gt; peel off the outer layer of pixels.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Does this process have a name?  Are there any existing filters or code<br>
&gt;&gt;&gt;&gt; to do<br>
&gt;&gt;&gt;&gt; this?  Any clever suggestions (I have some ideas)?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Thanks<br>
&gt;&gt;&gt;&gt; Gib<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt; View this message in context:<br>
&gt;&gt;&gt;&gt; <a href="http://itk-insight-users.2283740.n2.nabble.com/Peel-an-image-tp7583137.html" target="_blank">http://itk-insight-users.2283740.n2.nabble.com/Peel-an-image-tp7583137.html</a><br>
&gt;&gt;&gt;&gt; Sent from the ITK Insight Users mailing list archive at Nabble.com.<br>
&gt;&gt;&gt;&gt; _____________________________________<br>
&gt;&gt;&gt;&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Visit other Kitware open-source projects at<br>
&gt;&gt;&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt;&gt;&gt;&gt; <a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt;&gt;&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt;&gt;&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; Dr. Gib Bogle<br>
&gt;&gt;&gt; Senior Research Fellow<br>
&gt;&gt;&gt; Auckland Bioengineering Institute<br>
&gt;&gt;&gt; University of Auckland<br>
&gt;&gt;&gt; New Zealand<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; <a href="http://www.bioeng.auckland.ac.nz" target="_blank">http://www.bioeng.auckland.ac.nz</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; <a href="mailto:g.bogle@auckland.ac.nz">g.bogle@auckland.ac.nz</a><br>
&gt;&gt;&gt; (64-9) 373-7599 Ext. 87030<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Dr. Gib Bogle<br>
&gt;&gt; Senior Research Fellow<br>
&gt;&gt; Auckland Bioengineering Institute<br>
&gt;&gt; University of Auckland<br>
&gt;&gt; New Zealand<br>
&gt;&gt;<br>
&gt;&gt; <a href="http://www.bioeng.auckland.ac.nz" target="_blank">http://www.bioeng.auckland.ac.nz</a><br>
&gt;&gt;<br>
&gt;&gt; <a href="mailto:g.bogle@auckland.ac.nz">g.bogle@auckland.ac.nz</a><br>
&gt;&gt; (64-9) 373-7599 Ext. 87030<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _____________________________________<br>
&gt;&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt;<br>
&gt;&gt; Visit other Kitware open-source projects at<br>
&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt;<br>
&gt;&gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt;&gt; <a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</a><br>
&gt;&gt;<br>
&gt;&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt;<br>
&gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Dr. Gib Bogle<br>
&gt; Senior Research Fellow<br>
&gt; Auckland Bioengineering Institute<br>
&gt; University of Auckland<br>
&gt; New Zealand<br>
&gt;<br>
&gt; <a href="http://www.bioeng.auckland.ac.nz" target="_blank">http://www.bioeng.auckland.ac.nz</a><br>
&gt;<br>
&gt; <a href="mailto:g.bogle@auckland.ac.nz">g.bogle@auckland.ac.nz</a><br>
&gt; (64-9) 373-7599 Ext. 87030<br>
&gt;<br>
&gt;<br>
&gt; _____________________________________<br>
&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;<br>
&gt; Visit other Kitware open-source projects at<br>
&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;<br>
&gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt; <a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</a><br>
&gt;<br>
&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;<br>
&gt; Follow this link to subscribe/unsubscribe:<br>
&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;<br>
</div></div></blockquote></div><br></div>