<div dir="ltr"><div>I also tried VTK3.20 and got the same good results.<br><br><br></div><div>You could try one of these:<br><a href="http://placid.nlm.nih.gov/community/21">http://placid.nlm.nih.gov/community/21</a><br><br>
</div><div>If your data is anonymized, perhaps you can send me a link or just a few slices.<br><br></div><div>Bill<br><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Aug 12, 2013 at 2:45 PM, Constantine Z <span dir="ltr"><<a href="mailto:mnkz@leeds.ac.uk" target="_blank">mnkz@leeds.ac.uk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks. Yes, I can see it all looks completely legit.<br>
<br>
Perhaps I can send you my data? MR from a Philips scanner. Or maybe on Win it might work differently?<br>
<br>
Regards,<br>
Constartine<div class="im"><br>
<br>
On 12/08/2013 7:38 p.m., Bill Lorensen wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
<br>
I just tried your code on two different dicom datasets, a ct and an mr.<br>
<br>
Both worked for me.<br>
./DICOMTest ~/Data/itkTestcases/Back\ to\ Front/ .<br>
ITK Version: 4.5<br>
Stats for file: /home/lorensen/Data/<u></u>itkTestcases/Back to<br>
Front//i24389.MRDC.34<br>
Min: 0, Max: 293, Mean: 28.7654, Sigma: 37.2513, Variance: 1387.66, Sum:<br>
1.88517e+06<br>
Stats for file: ./file00.dcm<br>
Min: 0, Max: 293, Mean: 28.7654, Sigma: 37.2513, Variance: 1387.66, Sum:<br>
1.88517e+06<br>
[build] ./DICOMTest ~/Data/NAV/CT/ ./<br>
ITK Version: 4.5<br>
Stats for file: /home/lorensen/Data/NAV/CT//<u></u>ct.1<br>
Min: -1024, Max: 31744, Mean: 6277.24, Sigma: 13249.9, Variance:<br>
1.75559e+08, Sum: 1.64554e+09<br>
Stats for file: .//file00.dcm<br>
Min: -1024, Max: 31744, Mean: 6277.24, Sigma: 13249.9, Variance:<br>
1.75559e+08, Sum: 1.64554e+09<br>
<br>
<br>
<br>
<br>
On Mon, Aug 12, 2013 at 11:46 AM, Constantine Zakkaroff<br></div><div class="im">
<<a href="mailto:mnkz@leeds.ac.uk" target="_blank">mnkz@leeds.ac.uk</a> <mailto:<a href="mailto:mnkz@leeds.ac.uk" target="_blank">mnkz@leeds.ac.uk</a>>> wrote:<br>
<br>
Hi Brad,<br>
<br>
Yes, here's the minimal code:<br>
<br></div>
******************************<u></u>__****************************<u></u>**__************<div class="im"><br>
#include <cstdlib><br>
#include <itkImage.h><br>
#include <itkMetaImageIO.h><br>
#include <itkGDCMImageIO.h><br>
#include <itkGDCMSeriesFileNames.h><br>
#include <itkImageFileReader.h><br>
#include <itkImageFileWriter.h><br>
#include <itkStatisticsImageFilter.h><br>
<br>
int main(int argc, char *argv[])<br>
{<br>
std::clog << "ITK Version: " << ITK_VERSION_STRING <<<br>
std::endl;<br>
<br>
typedef itk::GDCMSeriesFileNames NamesGeneratorType;<br>
typedef itk::Image<short, 3> ImageType;<br>
<br>
NamesGeneratorType::Pointer namesGenerator =<br>
NamesGeneratorType::New();<br></div>
namesGenerator->__<u></u>SetUseSeriesDetails(true);<br>
namesGenerator->__<u></u>SetInputDirectory(argv[1]);<br>
<br>
typedef itk::StatisticsImageFilter<__<u></u>ImageType><br>
StatsFilterType;<br>
typedef itk::ImageFileReader<__<u></u>ImageType> ImageReaderType;<br>
typedef itk::ImageFileWriter<__<u></u>ImageType> ImageWriterType;<div class="im"><br>
<br>
ImageReaderType::Pointer imageReader0 = ImageReaderType::New();<br></div>
imageReader0->SetImageIO(itk::<u></u>__GDCMImageIO::New());<div class="im"><br>
StatsFilterType::Pointer statsFilter0 = StatsFilterType::New();<br>
<br></div>
imageReader0->SetFileName(__<u></u>namesGenerator->__<u></u>GetInputFileNames()[0]);<br>
statsFilter0->SetInput(__<u></u>imageReader0->GetOutput());<div class="im"><br>
statsFilter0->Update();<br>
<br>
std::clog << "Stats for file: " <<<br></div>
namesGenerator->__<u></u>GetInputFileNames()[0] << std::endl;<div class="im"><br>
std::clog <<<br>
"Min: " << statsFilter0->GetMinimum() << ", "<br>
"Max: " << statsFilter0->GetMaximum() << ", "<br>
"Mean: " << statsFilter0->GetMean() << ", "<br>
"Sigma: " << statsFilter0->GetSigma() << ", "<br>
"Variance: " << statsFilter0->GetVariance() << ", "<br>
"Sum: " << statsFilter0->GetSum()<br>
<< std::endl;<br>
<br>
ImageWriterType::Pointer imageWriter0 = ImageWriterType::New();<br></div>
imageWriter0->SetInput(__<u></u>imageReader0->GetOutput());<br>
imageWriter0->SetImageIO(itk::<u></u>__GDCMImageIO::New());<div class="im"><br>
std::string fileName0 = std::string(argv[2]) + "/file00.dcm";<br></div>
imageWriter0->SetFileName(__<u></u>fileName0);<div class="im"><br>
imageWriter0->Update();<br>
<br>
ImageReaderType::Pointer imageReader1 = ImageReaderType::New();<br></div>
imageReader1->SetImageIO(itk::<u></u>__GDCMImageIO::New());<div class="im"><br>
StatsFilterType::Pointer statsFilter1 = StatsFilterType::New();<br></div>
imageReader1->SetFileName(__<u></u>fileName0);<br>
statsFilter1->SetInput(__<u></u>imageReader1->GetOutput());<div class="im"><br>
statsFilter1->Update();<br>
<br>
std::clog << "Stats for file: " << fileName0 << std::endl;<br>
std::clog <<<br>
"Min: " << statsFilter1->GetMinimum() << ", "<br>
"Max: " << statsFilter1->GetMaximum() << ", "<br>
"Mean: " << statsFilter1->GetMean() << ", "<br>
"Sigma: " << statsFilter1->GetSigma() << ", "<br>
"Variance: " << statsFilter1->GetVariance() << ", "<br>
"Sum: " << statsFilter1->GetSum()<br>
<< std::endl;<br>
<br>
system("pause");<br>
<br>
return EXIT_SUCCESS;<br>
}<br></div>
******************************<u></u>__****************************<u></u>**__************<div class="im"><br>
<br>
Many thanks,<br>
Constantine<br>
<br>
<br>
On 12/08/2013 14:48, Bradley Lowekamp wrote:<br>
<br>
<br>
Do you have the code to share so that it can be easily reproduced?<br>
<br>
<br>
Thanks,<br>
Brad<br>
<br>
On Aug 12, 2013, at 9:33 AM, Constantine Zakkaroff<br></div><div class="im">
<<a href="mailto:mnkz@leeds.ac.uk" target="_blank">mnkz@leeds.ac.uk</a> <mailto:<a href="mailto:mnkz@leeds.ac.uk" target="_blank">mnkz@leeds.ac.uk</a>>> wrote:<br>
<br>
Hello ALL,<br>
<br>
I'm wondering if anyone can explain what's going on with the<br>
changing image intensities in a read-write-read round-trip.<br>
I think it's a bug, but the <a href="http://issues.itk.org" target="_blank">issues.itk.org</a><br></div>
<<a href="http://issues.itk.org" target="_blank">http://issues.itk.org</a>> is unresponsive at the moment.<div><div class="h5"><br>
Another bug? ;)<br>
<br>
Anyhow, the strange thing is that the results for the round<br>
trip read-write-read test are very different for ITK 3.20<br>
and ITK 4.4.1.<br>
<br>
I use to StatisticsImageFilter to examine the intensity<br>
values. Here's what happens, when I simply read a DICOM<br>
image, print stats, save the image and read it again,<br>
followed by printing the stats:<br>
<br>
ITK Version: 3.20<br>
Stats for original file:<br>
Min: 0, Max: 2474, Mean: 169.236, Sigma: 256.719, Variance:<br>
65904.7, Sum: 1.40371e+007<br>
Stats for saved file:<br>
Min: 0, Max: 2471, Mean: 167.132, Sigma: 256.125, Variance:<br>
65600.1, Sum: 1.38626e+007<br>
<br>
ITK Version: 4.4<br>
Stats for original file:<br>
Min: 0, Max: 2474, Mean: 169.236, Sigma: 256.719, Variance:<br>
65904.7, Sum: 1.40371e+007<br>
Stats for saved file:<br>
Min: 0, Max: 7446, Mean: 509.114, Sigma: 772.59, Variance:<br>
596895, Sum: 4.22279e+007<br>
<br>
In both cases the code is identical. Just compiled against<br>
different versions of ITK. The images are read and written<br>
as itk::Image<unsigned short, 3>, with no processing, no<br>
changes to any aspect of the images.<br>
<br>
So, ITK 3.20 introduces a small change, which I'm pretty<br>
sure shouldn't be there. But in ITK 4.4.1 the scale of<br>
intensities changes three-fold.<br>
<br>
I'd not be surprised by a change of this magnitude if I was<br>
photocopying those images, but not when using digital<br>
software and hardware. :^) Is there something I'm not<br>
understanding here?<br>
<br>
None of this happens with<br></div></div>
read(DICOM)-write(MHD)-read(__<u></u>MHD), where the original and<div class="im"><br>
round-trip values are identical:<br>
Stats for saved file: file0.mhd<br>
Min: 0, Max: 2474, Mean: 169.236, Sigma: 256.719, Variance:<br>
65904.7, Sum: 1.40371e+007<br>
<br>
Many thanks,<br>
Constantine<br>
<br></div>
______________________________<u></u>_________<div class="im"><br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a> <<a href="http://www.kitware.com" target="_blank">http://www.kitware.com</a>><br>
<br></div><div class="im">
Visit other Kitware open-source projects at<br></div>
<a href="http://www.kitware.com/__opensource/opensource.html" target="_blank">http://www.kitware.com/__<u></u>opensource/opensource.html</a><div class="im"><br>
<<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/<u></u>opensource/opensource.html</a>><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br></div>
<a href="http://www.kitware.com/__products/protraining.php" target="_blank">http://www.kitware.com/__<u></u>products/protraining.php</a><div class="im"><br>
<<a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/<u></u>products/protraining.php</a>><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br></div>
<a href="http://www.itk.org/Wiki/ITK___FAQ" target="_blank">http://www.itk.org/Wiki/ITK___<u></u>FAQ</a><div class="im"><br>
<<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_<u></u>FAQ</a>><br>
<br>
Follow this link to subscribe/unsubscribe:<br></div>
<a href="http://www.itk.org/mailman/__listinfo/insight-users" target="_blank">http://www.itk.org/mailman/__<u></u>listinfo/insight-users</a><br>
<<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/<u></u>listinfo/insight-users</a>><br>
<br>
<br>
______________________________<u></u>_________<div class="im"><br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a> <<a href="http://www.kitware.com" target="_blank">http://www.kitware.com</a>><br>
<br></div><div class="im">
Visit other Kitware open-source projects at<br></div>
<a href="http://www.kitware.com/__opensource/opensource.html" target="_blank">http://www.kitware.com/__<u></u>opensource/opensource.html</a><div class="im"><br>
<<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/<u></u>opensource/opensource.html</a>><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br></div>
<a href="http://www.kitware.com/__products/protraining.php" target="_blank">http://www.kitware.com/__<u></u>products/protraining.php</a><div class="im"><br>
<<a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/<u></u>products/protraining.php</a>><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br></div>
<a href="http://www.itk.org/Wiki/ITK___FAQ" target="_blank">http://www.itk.org/Wiki/ITK___<u></u>FAQ</a> <<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_<u></u>FAQ</a>><div class="im">
<br>
<br>
Follow this link to subscribe/unsubscribe:<br></div>
<a href="http://www.itk.org/mailman/__listinfo/insight-users" target="_blank">http://www.itk.org/mailman/__<u></u>listinfo/insight-users</a><div class="im"><br>
<<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/<u></u>listinfo/insight-users</a>><br>
<br>
<br>
<br>
<br>
--<br>
Unpaid intern in BillsBasement at noware dot com<br>
</div></blockquote>
<br>
</blockquote></div><br><br clear="all"><br>-- <br>Unpaid intern in BillsBasement at noware dot com<br>
</div>