<div dir="auto">Thanks so much.<div dir="auto"><br></div><div dir="auto">That's very helpful.</div><div dir="auto"><br></div><div dir="auto">Tony</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Jul 18, 2017 8:09 AM, "Yaniv, Ziv Rafael (NIH/NLM/LHC) [C]" <<a href="mailto:zivrafael.yaniv@nih.gov">zivrafael.yaniv@nih.gov</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">







<div bgcolor="white" lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="m_1724441907976108766WordSection1">
<p class="MsoNormal">Hello Tony,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Short answer is yes.  <u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">To shrink a volume using integral sizes, use the BinShrinkImageFilter (<a href="https://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1BinShrinkImageFilter.html)" target="_blank">https://itk.org/<wbr>SimpleITKDoxygen/html/<wbr>classitk_1_1simple_1_<wbr>1BinShrinkImageFilter.html)</a>.<u></u><u></u></p>
<p class="MsoNormal">Using the procedural interface to shrink an image by 4 in x, by 4 in y and by 2 in z would be:<u></u><u></u></p>
<p class="MsoNormal">bShrinkImage = sitk.BinShrink(img, [4,4,2])<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The BinShrink filter also averages the neighborhood, so it deals to some extent with potential aliasing. Don’t use this filter if your volume represents a discrete set of labels (i.e. segmentation).<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Longer answer:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">For truly arbitrary resizing use the ResampleImageFilter (<a href="https://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1ResampleImageFilter.html)" target="_blank">https://itk.org/<wbr>SimpleITKDoxygen/html/<wbr>classitk_1_1simple_1_<wbr>1ResampleImageFilter.html)</a>.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Using the procedural interface to modify the original (style is verbose for clarity):<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">new_x_size = 700 #upsample<u></u><u></u></p>
<p class="MsoNormal">new_y_size = 64 #downsample<u></u><u></u></p>
<p class="MsoNormal">new_z_size = 5 #downsample<u></u><u></u></p>
<p class="MsoNormal">new_size = [new_x_size, new_y_size, new_z_size]<u></u><u></u></p>
<p class="MsoNormal">new_spacing = [old_sz*old_spc/new_sz  for old_sz, old_spc, new_sz in zip(img.GetSize(), img.GetSpacing(), new_size)]<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">interpolator_type = sitk.sitkLinear<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">new_img = sitk.Resample(img, new_size, sitk.Transform(), interpolator_type, img.GetOrigin(), new_spacing, img.GetDirection(), 0.0, img.GetPixelIDValue())<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The ResampleImageFilter does not deal with aliasing, so if you are downsampling it is recommended to blur prior to resampling. If you are resampling a volume with discrete labels you would use the sitk.sitkNearestNeighbor<u></u><u></u></p>
<p class="MsoNormal">interpolator type.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">    hope this helps<u></u><u></u></p>
<p class="MsoNormal">            Ziv        <u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black"><u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">G Reina <<a href="mailto:greina@eng.ucsd.edu" target="_blank">greina@eng.ucsd.edu</a>><br>
<b>Date: </b>Monday, July 17, 2017 at 6:52 PM<br>
<b>To: </b>"<a href="mailto:insight-users@itk.org" target="_blank">insight-users@itk.org</a>" <<a href="mailto:insight-users@itk.org" target="_blank">insight-users@itk.org</a>><br>
<b>Subject: </b>[ITK] [ITK-users] Resizing DICOM images<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I've seen in pydicom and opencv how to resize a DICOM image to an arbitrary pixel resolution (e.g. going from 512x512 down to 128x128).  
<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Does SimpleITK have a way to do this for 3D image volumes (i.e. rescale height, width, and slice at the same time?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I'm looking to have a method to make my DICOM volumes uniform in shape.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">-Tony<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div>
</div>

</blockquote></div></div>