<div dir="ltr">A simple, although not necessarily efficient, way of doing this is to create an image with a single voxel where you want the centre of the (hemi)sphere to be, then dilate using the binary dilate filter (alternatively compute a distance transform them threshold). These two methods will give you a sphere, and you can then blank the half you don't want.<div><br></div><div>Depending on the interface to ITK you are using, you could probably achieve something similar by generating images containing physical coordinates an plug those into formula for a sphere.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 10, 2017 at 8:40 PM, Matt McCormick <span dir="ltr"><<a href="mailto:matt.mccormick@kitware.com" target="_blank">matt.mccormick@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Depending on the code, MY_RADIUS may need to be divided by two.<br>
<br>
To avoid difficulties like this, it is better to work in physical<br>
space versus index space. For more information on how physical space<br>
works in ITK, see the itk::Image overview in the ITK Software Guide:<br>
<br>
  <a href="https://itk.org/ITKSoftwareGuide/html/Book1/ITKSoftwareGuide-Book1ch4.html#x38-450004.1" rel="noreferrer" target="_blank">https://itk.org/<wbr>ITKSoftwareGuide/html/Book1/<wbr>ITKSoftwareGuide-Book1ch4.<wbr>html#x38-450004.1</a><br>
<br>
<br>
There is a filter that can be used to anti-alias the mask.  Here is an example:<br>
<br>
  <a href="https://itk.org/ITKExamples/src/Filtering/AntiAlias/SmoothBinaryImageBeforeSurfaceExtraction/Documentation.html" rel="noreferrer" target="_blank">https://itk.org/ITKExamples/<wbr>src/Filtering/AntiAlias/<wbr>SmoothBinaryImageBeforeSurface<wbr>Extraction/Documentation.html</a><br>
<br>
<br>
I hope this helps.<br>
<br>
Matt<br>
<br>
On Wed, May 10, 2017 at 6:19 AM, sidharta <<a href="mailto:sidharta.gupta93@gmail.com">sidharta.gupta93@gmail.com</a>> wrote:<br>
> Dear all,<br>
><br>
> I am trying to make a 3D dome (ie; Half Sphere) and then generating a binary<br>
> image out of it. The aim is to use this binary image as a mask in<br>
> maskFilter. I was able to generate a 2D circular mask, which was straight<br>
> forward. I used this in a maskFilter and masked the 3D image using<br>
> slicebysliceFilter.<br>
><br>
> I can think of two ways to do it:<br>
> 1. Make several masks of decreasing circle radius which ultimately would<br>
> represent a dome.<br>
> 2. Make a mask image and assign the values at indices accordingly to get a<br>
> dome mask.<br>
><br>
> The first step seems doable but to my understanding would be an overkill.<br>
> I am not able to do the second step. Following is the code I tried:<br>
><br>
> float MY_RADIUS = maskRegion.GetSize()[0];<br>
> MaskIteratorType iterator(maskImage, maskImage-><wbr>GetLargestPossibleRegion());<br>
> while (!iterator.IsAtEnd())<br>
>         {<br>
>                 const InputImageType::IndexType & index = iterator.GetIndex();<br>
>                 std::cout << "Index is " << index;<br>
>                 float value = (index[0] - centerPoint[0]) * (index[0] - centerPoint[0])<br>
>                         + (index[1] - centerPoint[1]) * (index[1] - centerPoint[1]);<br>
>                 std::cout << "Compare - LHS = " << value << " RHS = " << MY_RADIUS *<br>
> MY_RADIUS << std::endl;<br>
>                 if ((index[0] - centerPoint[0]) * (index[0] - centerPoint[0])<br>
>                         + (index[1] - centerPoint[1]) * (index[1] - centerPoint[1])<br>
>                         <= MY_RADIUS * MY_RADIUS)<br>
>                 {<br>
>                         iterator.Set(1);<br>
>                 }<br>
>                 --MY_RADIUS;<br>
>                 ++iterator;<br>
>         }<br>
><br>
> After adding the cout commands I saw that --MY_RADIUS is incorrect. I<br>
> generated the required sphere using matlab, just to get the values I should<br>
> assign to the pixels.<br>
><br>
> Additionally, I noticed there is a need for anti-aliasing to the mask.<br>
> Kindly let me know how this can be done iteratively.<br>
><br>
> Thank you!<br>
><br>
><br>
><br>
> --<br>
> View this message in context: <a href="http://itk-users.7.n7.nabble.com/Creating-3D-dome-using-ITK-tp38201.html" rel="noreferrer" target="_blank">http://itk-users.7.n7.nabble.<wbr>com/Creating-3D-dome-using-<wbr>ITK-tp38201.html</a><br>
> Sent from the ITK - Users mailing list archive at Nabble.com.<br>
> ______________________________<wbr>_______<br>
> Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
><br>
> Visit other Kitware open-source projects at<br>
> <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/<wbr>opensource/opensource.html</a><br>
><br>
> Kitware offers ITK Training Courses, for more information visit:<br>
> <a href="http://www.kitware.com/products/protraining.php" rel="noreferrer" target="_blank">http://www.kitware.com/<wbr>products/protraining.php</a><br>
><br>
> Please keep messages on-topic and check the ITK FAQ at:<br>
> <a href="http://www.itk.org/Wiki/ITK_FAQ" rel="noreferrer" target="_blank">http://www.itk.org/Wiki/ITK_<wbr>FAQ</a><br>
><br>
> Follow this link to subscribe/unsubscribe:<br>
> <a href="http://public.kitware.com/mailman/listinfo/insight-users" rel="noreferrer" target="_blank">http://public.kitware.com/<wbr>mailman/listinfo/insight-users</a><br>
______________________________<wbr>_______<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/<wbr>opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.php" rel="noreferrer" target="_blank">http://www.kitware.com/<wbr>products/protraining.php</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" rel="noreferrer" target="_blank">http://www.itk.org/Wiki/ITK_<wbr>FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/insight-users" rel="noreferrer" target="_blank">http://public.kitware.com/<wbr>mailman/listinfo/insight-users</a><br>
</blockquote></div><br></div>