[prev in list] [next in list] [prev in thread] [next in thread] 

List:       insight-users
Subject:    Re: [ITK-users] [ITK]  Siemens 4d data
From:       Andras Lasso <lasso () queensu ! ca>
Date:       2017-07-30 19:50:32
Message-ID: BY2PR0701MB19416D7200C6762A94D715A3D8BD0 () BY2PR0701MB1941 ! namprd07 ! prod ! outlook ! com
[Download RAW message or body]

Does Slicer load it correctly as a 4D volume? If yes, you can use that or copy it's \
behavior on your own software. If Slicer does not load it correctly or you are not \
sure how to do it, then ask help on the Slicer forum (discourse.slicer.org).

Andras

From: Sonia Pozzi<mailto:sonia.pozzi89@gmail.com>
Sent: Sunday, July 30, 2017 13:10
To: Andras Lasso<mailto:lasso@queensu.ca>
Cc: Lambert Zijp<mailto:ljzijp@gmail.com>; \
                Insight-users<mailto:insight-users@itk.org>
Subject: Re: [ITK-users] [ITK] Siemens 4d data

Dear Andras and Lambert,

here is the code I’m using. Every one of my time series contains the same slice for \
different times.

The problem is that it is importing the series one by one and it seems that it is not \
working in checking out which slice belong to the same time acquisition. At the end \
my 4D volume has coordinates [x,y,t,z]. I also tried to switch t- and z-coordinates \
at the end of my simulation but then I have some problem in the resulting volume (I’m \
not able to  continuing working on it). As you know I can’t share MRI data here, but \
if you are willing I could send you a small part of them to try to figure out \
together how to read them... That would help me a lot.

Regards and thank you for your time,

Sonia

          nameGenerator -> SetDirectory( _dicomDirectory );
          ReaderType::Pointer reader = ReaderType::New();

          ShortImageType4D::Pointer image4D = ShortImageType4D::New();
          ShortImageType::Pointer image3D = ShortImageType::New();

          reader->SetImageIO(dicomIO);

          const std::string entry_id = "0018|1090 ";

          nameGenerator->AddSeriesRestriction(entry_id);


          typedef std::vector< std::string >    SeriesIdContainer;
          const SeriesIdContainer & seriesUID = nameGenerator->GetSeriesUIDs();
          SeriesIdContainer::const_iterator seriesItr = seriesUID.begin();
          SeriesIdContainer::const_iterator seriesEnd = seriesUID.end();

          typedef std::vector< std::string >   FileNamesContainer;

          // figure out how many time points there are based on number of series
          unsigned int timepoints = 0;
          while (seriesItr != seriesEnd){
          timepoints++;
          seriesItr++;
          }
          std::cout << "Number of time points  : " << timepoints << std::endl;

          seriesItr = seriesUID.begin();
          std::cout << "Reading first image : " << std::endl;
          std::cout << seriesItr->c_str() << std::endl;

          std::string seriesIdentifier;
          seriesIdentifier = seriesItr->c_str();

          FileNamesContainer fileNames;
          fileNames = nameGenerator->GetFileNames(seriesIdentifier);
          FileNamesContainer::iterator fileiterator = fileNames.begin();


          std::cout<<"sono qui"<<seriesIdentifier<<std::endl;

          reader->SetFileNames(fileNames);

          try
          {
          reader->Update();
          }
          catch (itk::ExceptionObject &ex)
          {
          std::cout << ex << std::endl;
          }



          const ShortImageType::SpacingType& spacing3D = \
                reader->GetOutput()->GetSpacing();
          std::cout << "Spacing 3D = " << spacing3D[0] << ", " << spacing3D[1] << ", \
                " << spacing3D[2] << std::endl;
          const ShortImageType::PointType origin3D = \
                reader->GetOutput()->GetOrigin();
          std::cout << "Origin  3D = " << origin3D[0] << ", " << origin3D[1] << ", " \
                << origin3D[2] << std::endl;
          const ShortImageType::SizeType size3D = \
reader->GetOutput()->GetBufferedRegion().GetSize();

          ShortImageType4D::SpacingType spacing4D;
          ShortImageType4D::PointType origin4D;
          ShortImageType4D::SizeType size4D;

          for (int i = 0; i < 3; ++i){
          spacing4D[i] = spacing3D[i];
          origin4D[i] = origin3D[i];
          size4D[i] = size3D[i];
          }

          spacing4D[3] = 1;
          origin4D[3] = 0;
          size4D[3] = timepoints;

          ShortImageType4D::IndexType start4D;
          start4D.Fill(0);

          ShortImageType4D::RegionType region4D(start4D, size4D);

          std::cout << "Spacing 4D = " << spacing4D[0] << ", " << spacing4D[1] << ", \
                " << spacing4D[2] << ", " << spacing4D[3] << std::endl;
          std::cout << "Size 4D = " << size4D[0] << ", " << size4D[1] << ", " << \
size4D[2] << ", " << size4D[3] << std::endl;  image4D->SetRegions(region4D);
          image4D->SetSpacing(spacing4D);
          image4D->SetOrigin(origin4D);
          image4D->Allocate();

          seriesItr = seriesUID.begin();

          typedef itk::ImageRegionConstIterator< ShortImageType >  Iterator3D;
          typedef itk::ImageRegionIterator< ShortImageType4D >  Iterator4D;


          Iterator4D it4(image4D, image4D->GetBufferedRegion());
          it4.GoToBegin();


          unsigned short int idx = 0;
          while (seriesItr != seriesEnd){

          seriesIdentifier = seriesItr->c_str();
          std::cout << "Reading series " << std::endl;
          std::cout << seriesItr->c_str() << std::endl;

          fileNames = nameGenerator->GetFileNames(seriesIdentifier);

          for(unsigned int fni = 0; fni<fileNames.size(); fni++)
          {  std::cout<<"FN "<<fileNames[fni]<<std::endl;

            }


          reader->SetFileNames(fileNames);

          image3D = reader->GetOutput();
          image3D->SetRegions(reader->GetOutput()->GetRequestedRegion());
          image3D->CopyInformation(reader->GetOutput());
          image3D->Allocate();

          std::cout << "reading image volume " << idx << std::endl << std::endl;
          try
          {
          reader->Update();
          }
          catch (itk::ExceptionObject &ex)
          {
          std::cout << ex << std::endl;
          }


          Iterator3D it3(image3D, image3D->GetBufferedRegion());
          it3.GoToBegin();

          while (!it3.IsAtEnd())
          {
          it4.Set(it3.Get());
          ++it3;
          ++it4;
          }

          // increment iterator
          seriesItr++;
          idx++;

          }

On 29 Jul 2017, at 20:58, Andras Lasso <lasso@queensu.ca<mailto:lasso@queensu.ca>> \
wrote:

Finding out what DICOM fields to use for grouping frames is a complex topic. There is \
no universally accepted standard, the field(s) to use depend on scanner manufacturer, \
imaging modality, and imaging protocol.

You can have a look at the 4D image importer logic in 3D Slicer (what DICOM fields \
are considered, what heuristics are used for automatically detecting special cases, \
etc): https://github.com/fedorov/MultiVolumeImporter/blob/master/MultiVolumeImporterPl \
ugin.py<https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2F \
fedorov%2FMultiVolumeImporter%2Fblob%2Fmaster%2FMultiVolumeImporterPlugin.py&data=02%7 \
C01%7Classo%40queensu.ca%7C2c8ee4263d3e4bc7852e08d4d76dcf42%7Cd61ecb3b38b142d582c4efb2 \
838b925c%7C1%7C0%7C636370314013534944&sdata=TSgfUbldP6g%2ByIXlxlKKTog3wDo95QduwU9YAut52A4%3D&reserved=0>


You may also consider using 3D Slicer for loading DICOM data and saving as a 4D nrrd \
file that you can then easily load into ITK. If you have any questions related to \
this then post it on \
https://discourse.slicer.org<https://na01.safelinks.protection.outlook.com/?url=https% \
3A%2F%2Fdiscourse.slicer.org%2F&data=02%7C01%7Classo%40queensu.ca%7C2c8ee4263d3e4bc785 \
2e08d4d76dcf42%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636370314013534944&sdata=RIwlK%2BCGepL9Fd5q4NvhCoZAq6qCe7Uyay1%2FBH%2B8hVA%3D&reserved=0>.


Andras

From: Community [mailto:community-bounces@itk.org] On Behalf Of Lambert Zijp
Sent: Saturday, July 29, 2017 1:38 PM
To: Sonia Pozzi <sonia.pozzi89@gmail.com<mailto:sonia.pozzi89@gmail.com>>
Cc: Insight-users <insight-users@itk.org<mailto:insight-users@itk.org>>
Subject: Re: [ITK] [ITK-users] Siemens 4d data

Hi Sonia,

Apparently SeriesInstanceUID does not help; sounds familiar. Maybe FrameNumber, \
SeriesNumber or AcquisitionNumber? If not, sorting slices on slice coordinate and \
AcquisitionTime could be done as a last resort. If you post two slices with the same \
coordinate but belonging to different volumes, I will take  look at it.

Greetings, Lambert

On Sat, Jul 29, 2017 at 12:26 AM, Sonia Pozzi \
<sonia.pozzi89@gmail.com<mailto:sonia.pozzi89@gmail.com>> wrote: Hello,

I have a set of Siemens series. In each series there is the same slice for different \
times. I would like to be able to reconstruct in itk each single volume (a complete \
volume for every time step). It is a couple of week that I’m trying how to do that…
I understood that I should use some tag, but I’m not sure about which and my code is \
not working.

Could you be so kind to give me a suggestion here?

My regards,

Sonia
_____________________________________
Powered by www.kitware.com<https://na01.safelinks.protection.outlook.com/?url=http%3A% \
2F%2Fwww.kitware.com&data=02%7C01%7Classo%40queensu.ca%7Cb3ff832c055844c3723708d4d6a89 \
52e%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636369466924361221&sdata=reUnVLyhbeksZSU3vfoYkbLsWGY00wLNMS8x06VkMW0%3D&reserved=0>


Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html<https://na01.safelinks.protection.ou \
tlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fopensource%2Fopensource.html&data=02%7C0 \
1%7Classo%40queensu.ca%7Cb3ff832c055844c3723708d4d6a8952e%7Cd61ecb3b38b142d582c4efb283 \
8b925c%7C1%7C0%7C636369466924361221&sdata=rktVpsgRtuqvnhg1mwUXcYWEnHpZvD4OVUJXYgfmfUE%3D&reserved=0>


Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php<https://na01.safelinks.protection.outl \
ook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7C \
lasso%40queensu.ca%7Cb3ff832c055844c3723708d4d6a8952e%7Cd61ecb3b38b142d582c4efb2838b92 \
5c%7C1%7C0%7C636369466924361221&sdata=NPImYVLXkps1zXFWNaMTXI1%2BlG3%2FrVljLn%2F8uvc9WxA%3D&reserved=0>


Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ<https://na01.safelinks.protection.outlook.com/?url=htt \
p%3A%2F%2Fwww.itk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7Cb3ff832c055 \
844c3723708d4d6a8952e%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636369466924361221&sdata=TOa5cYIKt5uJHlNffUAGiVE%2FxoLeQ42gIVd3PtBJqS4%3D&reserved=0>


Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users<https://na01.safelinks.protec \
tion.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Finsight-u \
sers&data=02%7C01%7Classo%40queensu.ca%7Cb3ff832c055844c3723708d4d6a8952e%7Cd61ecb3b38 \
b142d582c4efb2838b925c%7C1%7C0%7C636369466924361221&sdata=uZ%2F6Ap%2BSbMzWJ4WU8Bu11x4Oui8T8NNQn8vzevtAC6M%3D&reserved=0>


_____________________________________
Powered by www.kitware.com<https://na01.safelinks.protection.outlook.com/?url=http%3A% \
2F%2Fwww.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C2c8ee4263d3e4bc7852e08d4d76dc \
f42%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636370314013534944&sdata=%2FhTw0WuqtTkVin7lYS0mgP8TU4xTdMzcb2rpacH3LLE%3D&reserved=0>


Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html<https://na01.safelinks.protection.ou \
tlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fopensource%2Fopensource.html&data=02%7C0 \
1%7Classo%40queensu.ca%7C2c8ee4263d3e4bc7852e08d4d76dcf42%7Cd61ecb3b38b142d582c4efb283 \
8b925c%7C1%7C0%7C636370314013534944&sdata=mNaYG7f%2B8HfPpq4nIoISipMyKPpeO7jst6ENNFt9%2Bes%3D&reserved=0>


Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php<https://na01.safelinks.protection.outl \
ook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7C \
lasso%40queensu.ca%7C2c8ee4263d3e4bc7852e08d4d76dcf42%7Cd61ecb3b38b142d582c4efb2838b92 \
5c%7C1%7C0%7C636370314013534944&sdata=sRN31UAYKK9OWn7tw%2BBHiZkBEg6AMoFv7gS%2ByQfWIxE%3D&reserved=0>


Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ<https://na01.safelinks.protection.outlook.com/?url=htt \
p%3A%2F%2Fwww.itk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C2c8ee4263d3 \
e4bc7852e08d4d76dcf42%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636370314013534944&sdata=x%2B0%2BTk9MXpDkB588kVo4IG00bwkrtHzLiYOr%2Ftgrd1g%3D&reserved=0>


Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users<https://na01.safelinks.protec \
tion.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Finsight-u \
sers&data=02%7C01%7Classo%40queensu.ca%7C2c8ee4263d3e4bc7852e08d4d76dcf42%7Cd61ecb3b38 \
b142d582c4efb2838b925c%7C1%7C0%7C636370314013534944&sdata=6Btol9UmUL7G6k4xXuLYwxbMtV%2FJM7uCtiNkKyBeqf8%3D&reserved=0>



[Attachment #3 (text/html)]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: \
after-white-space;" class=""> <meta name="Generator" content="Microsoft Word 15 \
(filtered medium)"> <style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;}
.MsoChpDefault
	{mso-style-type:export-only;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style>
<div class="WordSection1">
<p class="MsoNormal">Does Slicer load it correctly as a 4D volume? If yes, you can \
use that or copy it's behavior on your own software. If Slicer does not load it \
correctly or you are not sure how to do it, then ask help on the Slicer forum \
(discourse.slicer.org).</p> <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Andras</p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #E1E1E1 \
1.0pt;padding:3.0pt 0in 0in 0in"> <p class="MsoNormal" \
style="border:none;padding:0in"><b>From: </b><a \
href="mailto:sonia.pozzi89@gmail.com">Sonia Pozzi</a><br> <b>Sent: </b>Sunday, July \
30, 2017 13:10<br> <b>To: </b><a href="mailto:lasso@queensu.ca">Andras Lasso</a><br>
<b>Cc: </b><a href="mailto:ljzijp@gmail.com">Lambert Zijp</a>; <a \
href="mailto:insight-users@itk.org"> Insight-users</a><br>
<b>Subject: </b>Re: [ITK-users] [ITK] Siemens 4d data</p>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>Dear Andras and Lambert,
<div class=""><br class="">
</div>
<div class="">here is the code I’m using. Every one of my time series contains the \
same slice for different times.</div> <div class=""><br class="">
</div>
<div class="">The problem is that it is importing the series one by one and it seems \
that it is not working in checking out which slice belong to the same time \
acquisition.</div> <div class="">At the end my 4D volume has coordinates [x,y,t,z]. I \
also tried to switch t- and z-coordinates at the end of my simulation but then I have \
some problem in the resulting volume (I’m not able to &nbsp;continuing working on \
it).</div> <div class="">As you know I can’t share MRI data here, but if you are \
willing I could send you a small part of them to try to figure out together how to \
read them...</div> <div class="">That would help me a lot.</div>
<div class=""><br class="">
</div>
<div class="">Regards and thank you for your time,</div>
<div class=""><br class="">
</div>
<div class="">Sonia</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nameGenerator -&gt; SetDirectory( \
_dicomDirectory );</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
ReaderType::Pointer reader = ReaderType::New();</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ShortImageType4D::Pointer image4D = \
ShortImageType4D::New();</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
ShortImageType::Pointer image3D = ShortImageType::New();</div> <div class=""><br \
class=""> </div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
reader-&gt;SetImageIO(dicomIO);</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; const std::string entry_id = \
&quot;0018|1090 &quot;;</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
nameGenerator-&gt;AddSeriesRestriction(entry_id);</div> <div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; typedef std::vector&lt; std::string \
&gt; &nbsp; &nbsp;SeriesIdContainer;</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; const SeriesIdContainer &amp; seriesUID = \
nameGenerator-&gt;GetSeriesUIDs();</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; SeriesIdContainer::const_iterator seriesItr = seriesUID.begin();</div> <div \
class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SeriesIdContainer::const_iterator \
seriesEnd = seriesUID.end();</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; typedef std::vector&lt; std::string \
&gt; &nbsp; FileNamesContainer;</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // figure out how many time points \
there are based on number of series&nbsp;</div> <div class="">&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; unsigned int timepoints = 0;</div> <div class="">&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; while (seriesItr != seriesEnd){</div> <div class="">&nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; timepoints&#43;&#43;;</div> <div class="">&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; seriesItr&#43;&#43;;</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; }</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; \
&quot;Number of time points &nbsp;: &quot; &lt;&lt; timepoints &lt;&lt; \
std::endl;</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seriesItr = seriesUID.begin();</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; &quot;Reading \
first image : &quot; &lt;&lt; std::endl;</div> <div class="">&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; std::cout &lt;&lt; seriesItr-&gt;c_str() &lt;&lt; std::endl;</div> <div \
class=""><br class=""> </div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::string seriesIdentifier;</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seriesIdentifier = \
seriesItr-&gt;c_str();</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FileNamesContainer fileNames;</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fileNames = \
nameGenerator-&gt;GetFileNames(seriesIdentifier);</div> <div class="">&nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; FileNamesContainer::iterator fileiterator = \
fileNames.begin();</div> <div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::cout&lt;&lt;&quot;sono \
qui&quot;&lt;&lt;seriesIdentifier&lt;&lt;std::endl;</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
reader-&gt;SetFileNames(fileNames);</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reader-&gt;Update();</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; catch (itk::ExceptionObject \
&amp;ex)</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; ex &lt;&lt; \
std::endl;</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; const \
ShortImageType::SpacingType&amp; spacing3D = \
reader-&gt;GetOutput()-&gt;GetSpacing();</div> <div class="">&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; std::cout &lt;&lt; &quot;Spacing 3D = &quot; &lt;&lt; spacing3D[0] \
&lt;&lt; &quot;, &quot; &lt;&lt; spacing3D[1] &lt;&lt; &quot;, &quot; &lt;&lt; \
spacing3D[2] &lt;&lt; std::endl;</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; const ShortImageType::PointType origin3D = \
reader-&gt;GetOutput()-&gt;GetOrigin();</div> <div class="">&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; std::cout &lt;&lt; &quot;Origin &nbsp;3D = &quot; &lt;&lt; origin3D[0] \
&lt;&lt; &quot;, &quot; &lt;&lt; origin3D[1] &lt;&lt; &quot;, &quot; &lt;&lt; \
origin3D[2] &lt;&lt; std::endl;</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; const ShortImageType::SizeType size3D = \
reader-&gt;GetOutput()-&gt;GetBufferedRegion().GetSize();</div> <div class=""><br \
class=""> </div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ShortImageType4D::SpacingType \
spacing4D;</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
ShortImageType4D::PointType origin4D;</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; ShortImageType4D::SizeType size4D;</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i &lt; 3; \
&#43;&#43;i){</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; spacing4D[i] = \
spacing3D[i];</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; origin4D[i] = \
origin3D[i];</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; size4D[i] = \
size3D[i];</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
<div class="">&nbsp;</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; spacing4D[3] = 1;</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; origin4D[3] = 0;</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; size4D[3] = timepoints;</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ShortImageType4D::IndexType \
start4D;</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
start4D.Fill(0);</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ShortImageType4D::RegionType \
region4D(start4D, size4D);</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; &quot;Spacing 4D \
= &quot; &lt;&lt; spacing4D[0] &lt;&lt; &quot;, &quot; &lt;&lt; spacing4D[1] &lt;&lt; \
&quot;, &quot; &lt;&lt; spacing4D[2] &lt;&lt; &quot;, &quot; &lt;&lt; spacing4D[3] \
&lt;&lt; std::endl;</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::cout \
&lt;&lt; &quot;Size 4D = &quot; &lt;&lt; size4D[0] &lt;&lt; &quot;, &quot; &lt;&lt; \
size4D[1] &lt;&lt; &quot;, &quot; &lt;&lt; size4D[2] &lt;&lt; &quot;, &quot; &lt;&lt; \
size4D[3] &lt;&lt; std::endl;</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
image4D-&gt;SetRegions(region4D);</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; image4D-&gt;SetSpacing(spacing4D);</div> <div class="">&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; image4D-&gt;SetOrigin(origin4D);</div> <div class="">&nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; image4D-&gt;Allocate();</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seriesItr = seriesUID.begin();</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; typedef \
itk::ImageRegionConstIterator&lt; ShortImageType &gt; &nbsp;Iterator3D;</div> <div \
class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; typedef itk::ImageRegionIterator&lt; \
ShortImageType4D &gt; &nbsp;Iterator4D;</div> <div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Iterator4D it4(image4D, \
image4D-&gt;GetBufferedRegion());</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; it4.GoToBegin();</div> <div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unsigned short int idx = 0;</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (seriesItr != \
seriesEnd){</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seriesIdentifier = \
seriesItr-&gt;c_str();</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
std::cout &lt;&lt; &quot;Reading series &quot; &lt;&lt; std::endl;</div> <div \
class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; seriesItr-&gt;c_str() \
&lt;&lt; std::endl;</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fileNames = \
nameGenerator-&gt;GetFileNames(seriesIdentifier);</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(unsigned int fni = 0; \
fni&lt;fileNames.size(); fni&#43;&#43;)</div> <div class="">&nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; { &nbsp;std::cout&lt;&lt;&quot;FN \
&quot;&lt;&lt;fileNames[fni]&lt;&lt;std::endl;</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
reader-&gt;SetFileNames(fileNames);</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; image3D = \
reader-&gt;GetOutput();</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
image3D-&gt;SetRegions(reader-&gt;GetOutput()-&gt;GetRequestedRegion());</div> <div \
class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
image3D-&gt;CopyInformation(reader-&gt;GetOutput());</div> <div class="">&nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; image3D-&gt;Allocate();</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; &quot;reading \
image volume &quot; &lt;&lt; idx &lt;&lt; std::endl &lt;&lt; std::endl;</div> <div \
class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try</div> <div class="">&nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; {</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
reader-&gt;Update();</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; catch (itk::ExceptionObject \
&amp;ex)</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt; ex &lt;&lt; \
std::endl;</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp;</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Iterator3D it3(image3D, \
image3D-&gt;GetBufferedRegion());</div> <div class="">&nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; it3.GoToBegin();</div> <div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (!it3.IsAtEnd())</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; it4.Set(it3.Get());</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#43;&#43;it3;</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#43;&#43;it4;</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // increment iterator</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seriesItr&#43;&#43;;&nbsp;</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; idx&#43;&#43;;</div>
<div class=""><br class="">
</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
</div>
<div class=""><br class="">
<div>
<blockquote type="cite" class="">
<div class="">On 29 Jul 2017, at 20:58, Andras Lasso &lt;<a \
href="mailto:lasso@queensu.ca" class="">lasso@queensu.ca</a>&gt; wrote:</div> <br \
class="Apple-interchange-newline"> <div class="">
<div class="WordSection1" style="page: WordSection1; font-family: Helvetica; \
font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; \
text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; \
-webkit-text-stroke-width: 0px;"> <div style="margin: 0cm 0cm 0.0001pt; font-size: \
11pt; font-family: Calibri, sans-serif;" class=""> Finding out what DICOM fields to \
use for grouping frames is a complex topic. There is no universally accepted \
standard, the field(s) to use depend on scanner manufacturer, imaging modality, and \
imaging protocol.<o:p class=""></o:p></div> <div style="margin: 0cm 0cm 0.0001pt; \
font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p \
class="">&nbsp;</o:p></div> <div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; \
font-family: Calibri, sans-serif;" class=""> You can have a look at the 4D image \
importer logic in 3D Slicer (what DICOM fields are considered, what heuristics are \
used for automatically detecting special cases, etc):<o:p class=""></o:p></div> <div \
style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" \
class=""> <a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgi \
thub.com%2Ffedorov%2FMultiVolumeImporter%2Fblob%2Fmaster%2FMultiVolumeImporterPlugin.p \
y&amp;data=02%7C01%7Classo%40queensu.ca%7C2c8ee4263d3e4bc7852e08d4d76dcf42%7Cd61ecb3b3 \
8b142d582c4efb2838b925c%7C1%7C0%7C636370314013534944&amp;sdata=TSgfUbldP6g%2ByIXlxlKKTog3wDo95QduwU9YAut52A4%3D&amp;reserved=0" \
style="color: purple; text-decoration: underline;" \
class="">https://github.com/fedorov/MultiVolumeImporter/blob/master/MultiVolumeImporterPlugin.py</a><o:p \
class=""></o:p></div> <div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; \
font-family: Calibri, sans-serif;" class=""> <o:p class="">&nbsp;</o:p></div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> You may also consider using 3D Slicer for loading DICOM data \
and saving as a 4D nrrd file that you can then easily load into ITK. If you have any \
questions related to this then post it on<span \
class="Apple-converted-space">&nbsp;</span><a \
href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdiscourse.slice \
r.org%2F&amp;data=02%7C01%7Classo%40queensu.ca%7C2c8ee4263d3e4bc7852e08d4d76dcf42%7Cd6 \
1ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636370314013534944&amp;sdata=RIwlK%2BCGepL9Fd5q4NvhCoZAq6qCe7Uyay1%2FBH%2B8hVA%3D&amp;reserved=0" \
style="color: purple; text-decoration: underline;" \
class="">https://discourse.slicer.org</a>.<o:p class=""></o:p></div> <div \
style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" \
class=""> <o:p class="">&nbsp;</o:p></div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> Andras<o:p class=""></o:p></div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> <a name="_MailEndCompose" class=""><o:p \
class="">&nbsp;</o:p></a></div> <span class=""></span>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> <b class="">From:</b><span \
class="Apple-converted-space">&nbsp;</span>Community [<a \
href="mailto:community-bounces@itk.org" \
class="">mailto:community-bounces@itk.org</a>]<span \
class="Apple-converted-space">&nbsp;</span><b class="">On Behalf Of<span \
class="Apple-converted-space">&nbsp;</span></b>Lambert  Zijp<br class="">
<b class="">Sent:</b><span class="Apple-converted-space">&nbsp;</span>Saturday, July \
29, 2017 1:38 PM<br class=""> <b class="">To:</b><span \
class="Apple-converted-space">&nbsp;</span>Sonia Pozzi &lt;<a \
href="mailto:sonia.pozzi89@gmail.com" class="">sonia.pozzi89@gmail.com</a>&gt;<br \
class=""> <b class="">Cc:</b><span \
class="Apple-converted-space">&nbsp;</span>Insight-users &lt;<a \
href="mailto:insight-users@itk.org" class="">insight-users@itk.org</a>&gt;<br \
class=""> <b class="">Subject:</b><span \
class="Apple-converted-space">&nbsp;</span>Re: [ITK] [ITK-users] Siemens 4d data<o:p \
class=""></o:p></div> <div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; \
font-family: Calibri, sans-serif;" class=""> <o:p class="">&nbsp;</o:p></div>
<div class="">
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> Hi Sonia,<o:p class=""></o:p></div>
<div class="">
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> <o:p class="">&nbsp;</o:p></div>
</div>
<div class="">
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> Apparently SeriesInstanceUID does not help; sounds familiar. \
Maybe FrameNumber, SeriesNumber or AcquisitionNumber? If not, sorting slices on slice \
coordinate and AcquisitionTime could be done as a last resort. If you post two slices \
with the same coordinate  but belonging to different volumes, I will take &nbsp;look \
at it.<o:p class=""></o:p></div> </div>
<div class="">
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> <o:p class="">&nbsp;</o:p></div>
</div>
<div class="">
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> Greetings, Lambert<o:p class=""></o:p></div>
</div>
</div>
<div class="">
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> <o:p class="">&nbsp;</o:p></div>
<div class="">
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> On Sat, Jul 29, 2017 at 12:26 AM, Sonia Pozzi &lt;<a \
href="mailto:sonia.pozzi89@gmail.com" target="_blank" style="color: purple; \
text-decoration: underline;" class="">sonia.pozzi89@gmail.com</a>&gt; wrote:<o:p \
class=""></o:p></div> <blockquote style="border-style: none none none solid; \
border-left-color: rgb(204, 204, 204); border-left-width: 1pt; padding: 0cm 0cm 0cm \
6pt; margin-left: 4.8pt; margin-right: 0cm;" class=""> <div style="margin: 0cm 0cm \
0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> Hello,<br \
class=""> <br class="">
I have a set of Siemens series. In each series there is the same slice for different \
times.<br class=""> I would like to be able to reconstruct in itk each single volume \
(a complete volume for every time step).<br class=""> It is a couple of week that I’m \
trying how to do that…<br class=""> I understood that I should use some tag, but I’m \
not sure about which and my code is not working.<br class=""> <br class="">
Could you be so kind to give me a suggestion here?<br class="">
<br class="">
My regards,<br class="">
<br class="">
Sonia<br class="">
_____________________________________<br class="">
Powered by<span class="Apple-converted-space">&nbsp;</span><a \
href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com& \
amp;data=02%7C01%7Classo%40queensu.ca%7Cb3ff832c055844c3723708d4d6a8952e%7Cd61ecb3b38b \
142d582c4efb2838b925c%7C1%7C0%7C636369466924361221&amp;sdata=reUnVLyhbeksZSU3vfoYkbLsWGY00wLNMS8x06VkMW0%3D&amp;reserved=0" \
target="_blank" style="color: purple; text-decoration: underline;" \
class="">www.kitware.com</a><br class=""> <br class="">
Visit other Kitware open-source projects at<br class="">
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.c \
om%2Fopensource%2Fopensource.html&amp;data=02%7C01%7Classo%40queensu.ca%7Cb3ff832c0558 \
44c3723708d4d6a8952e%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636369466924361221&amp;sdata=rktVpsgRtuqvnhg1mwUXcYWEnHpZvD4OVUJXYgfmfUE%3D&amp;reserved=0" \
target="_blank" style="color: purple; text-decoration: underline;" \
class="">http://www.kitware.com/opensource/opensource.html</a><br class=""> <br \
class=""> Kitware offers ITK Training Courses, for more information visit:<br \
class=""> <a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww \
.kitware.com%2Fproducts%2Fprotraining.php&amp;data=02%7C01%7Classo%40queensu.ca%7Cb3ff \
832c055844c3723708d4d6a8952e%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636369466924 \
361221&amp;sdata=NPImYVLXkps1zXFWNaMTXI1%2BlG3%2FrVljLn%2F8uvc9WxA%3D&amp;reserved=0" \
target="_blank" style="color: purple; text-decoration: underline;" \
class="">http://www.kitware.com/products/protraining.php</a><br class=""> <br \
class=""> Please keep messages on-topic and check the ITK FAQ at:<br class="">
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.itk.org%2 \
FWiki%2FITK_FAQ&amp;data=02%7C01%7Classo%40queensu.ca%7Cb3ff832c055844c3723708d4d6a895 \
2e%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636369466924361221&amp;sdata=TOa5cYIKt5uJHlNffUAGiVE%2FxoLeQ42gIVd3PtBJqS4%3D&amp;reserved=0" \
target="_blank" style="color: purple; text-decoration: underline;" \
class="">http://www.itk.org/Wiki/ITK_FAQ</a><br class=""> <br class="">
Follow this link to subscribe/unsubscribe:<br class="">
<a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitwar \
e.com%2Fmailman%2Flistinfo%2Finsight-users&amp;data=02%7C01%7Classo%40queensu.ca%7Cb3f \
f832c055844c3723708d4d6a8952e%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C63636946692 \
4361221&amp;sdata=uZ%2F6Ap%2BSbMzWJ4WU8Bu11x4Oui8T8NNQn8vzevtAC6M%3D&amp;reserved=0" \
target="_blank" style="color: purple; text-decoration: underline;" \
class="">http://public.kitware.com/mailman/listinfo/insight-users</a><o:p \
class=""></o:p></div> </blockquote>
</div>
<div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, \
sans-serif;" class=""> <o:p class="">&nbsp;</o:p></div>
</div>
</div>
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: \
auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; \
display: inline !important;" class="">_____________________________________</span><br \
style="font-family: Helvetica; font-size: 12px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: \
auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""> <span \
style="font-family: Helvetica; font-size: 12px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: \
auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; \
display: inline !important;" class="">Powered  by <a \
href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com& \
amp;data=02%7C01%7Classo%40queensu.ca%7C2c8ee4263d3e4bc7852e08d4d76dcf42%7Cd61ecb3b38b \
142d582c4efb2838b925c%7C1%7C0%7C636370314013534944&amp;sdata=%2FhTw0WuqtTkVin7lYS0mgP8TU4xTdMzcb2rpacH3LLE%3D&amp;reserved=0" \
class=""> www.kitware.com</a></span><br style="font-family: Helvetica; font-size: \
12px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; \
text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; \
-webkit-text-stroke-width: 0px;" class=""> <br style="font-family: Helvetica; \
font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; \
text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; \
-webkit-text-stroke-width: 0px;" class=""> <span style="font-family: Helvetica; \
font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; \
text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; \
-webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">Visit  other Kitware open-source projects at</span><br style="font-family: \
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; \
font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; \
text-indent: 0px; text-transform: none; white-space: normal; widows: auto; \
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""> <span \
style="font-family: Helvetica; font-size: 12px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: \
auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; \
display: inline !important;" class=""><a \
href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com% \
2Fopensource%2Fopensource.html&amp;data=02%7C01%7Classo%40queensu.ca%7C2c8ee4263d3e4bc \
7852e08d4d76dcf42%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636370314013534944&amp;sdata=mNaYG7f%2B8HfPpq4nIoISipMyKPpeO7jst6ENNFt9%2Bes%3D&amp;reserved=0" \
class="">http://www.kitware.com/opensource/opensource.html</a></span><br \
style="font-family: Helvetica; font-size: 12px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: \
auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""> <br \
style="font-family: Helvetica; font-size: 12px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: \
auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""> <span \
style="font-family: Helvetica; font-size: 12px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: \
auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; \
display: inline !important;" class="">Kitware  offers ITK Training Courses, for more \
information visit:</span><br style="font-family: Helvetica; font-size: 12px; \
font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: \
normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: \
0px;" class=""> <span style="font-family: Helvetica; font-size: 12px; font-style: \
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; \
orphans: auto; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; \
float: none; display: inline !important;" class=""><a \
href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com% \
2Fproducts%2Fprotraining.php&amp;data=02%7C01%7Classo%40queensu.ca%7C2c8ee4263d3e4bc78 \
52e08d4d76dcf42%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636370314013534944&amp;sdata=sRN31UAYKK9OWn7tw%2BBHiZkBEg6AMoFv7gS%2ByQfWIxE%3D&amp;reserved=0" \
class="">http://www.kitware.com/products/protraining.php</a></span><br \
style="font-family: Helvetica; font-size: 12px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: \
auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""> <br \
style="font-family: Helvetica; font-size: 12px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: \
auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""> <span \
style="font-family: Helvetica; font-size: 12px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: \
auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; \
display: inline !important;" class="">Please  keep messages on-topic and check the \
ITK FAQ at:</span><br style="font-family: Helvetica; font-size: 12px; font-style: \
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; \
orphans: auto; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: \
0px;" class=""> <span style="font-family: Helvetica; font-size: 12px; font-style: \
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; \
orphans: auto; text-align: start; text-indent: 0px; text-transform: none; \
white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; \
float: none; display: inline !important;" class=""><a \
href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.itk.org%2FWi \
ki%2FITK_FAQ&amp;data=02%7C01%7Classo%40queensu.ca%7C2c8ee4263d3e4bc7852e08d4d76dcf42% \
7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636370314013534944&amp;sdata=x%2B0%2BTk9MXpDkB588kVo4IG00bwkrtHzLiYOr%2Ftgrd1g%3D&amp;reserved=0" \
class="">http://www.itk.org/Wiki/ITK_FAQ</a></span><br style="font-family: Helvetica; \
font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; \
text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; \
-webkit-text-stroke-width: 0px;" class=""> <br style="font-family: Helvetica; \
font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; \
text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; \
-webkit-text-stroke-width: 0px;" class=""> <span style="font-family: Helvetica; \
font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; \
letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; \
text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; \
-webkit-text-stroke-width: 0px; float: none; display: inline !important;" \
class="">Follow  this link to subscribe/unsubscribe:</span><br style="font-family: \
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; \
font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; \
text-indent: 0px; text-transform: none; white-space: normal; widows: auto; \
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""> <span \
style="font-family: Helvetica; font-size: 12px; font-style: normal; \
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: \
auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; \
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; \
display: inline !important;" class=""><a \
href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.c \
om%2Fmailman%2Flistinfo%2Finsight-users&amp;data=02%7C01%7Classo%40queensu.ca%7C2c8ee4 \
263d3e4bc7852e08d4d76dcf42%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636370314013534944&amp;sdata=6Btol9UmUL7G6k4xXuLYwxbMtV%2FJM7uCtiNkKyBeqf8%3D&amp;reserved=0" \
class="">http://public.kitware.com/mailman/listinfo/insight-users</a></span></div> \
</blockquote> </div>
<br class="">
</div>
</div>
</body>
</html>



_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users

--===============1065957473==--

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic