<div dir="ltr">Thanks, I actually had to add this line of code to the writer:<div>writer->UseInputMetaDataDictionaryOff();<br></div><div>Not sure why but it worked and it also copied all tags from the original image into the output image.</div></div><br><div class="gmail_quote"><div dir="ltr">El dom., 15 de may. de 2016 a la(s) 12:45, Bill Lorensen <<a href="mailto:bill.lorensen@gmail.com">bill.lorensen@gmail.com</a>> escribió:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">After<br>
reader->SetFileName(argv[1]);<br>
reader->Update();<br>
<br>
No need for inputImage->Update();<br>
<br>
Since you did not Update the reader, the origin and spacing will be<br>
(0,0,0) and(1,1,1) by defulat.<br>
<br>
<br>
On Sat, May 14, 2016 at 7:42 PM, Matias Montroull <<a href="mailto:matimontg@gmail.com" target="_blank">matimontg@gmail.com</a>> wrote:<br>
> Hi,<br>
><br>
> I have the following code to flip an image and preserve origin and spacing.<br>
> For some reason, the writer doesn't copy the Origin from the original image<br>
> into the output Image.<br>
><br>
> I can see the Output Image origin is the Original Image origin but I don't<br>
> understand why the writer doesn't take that value. I have no issues with the<br>
> spacing, that one is copied just fine into the output image.<br>
><br>
> I'm using ITK 4.7.2<br>
><br>
> #include "itkImage.h"<br>
> #include "itkImageFileReader.h"<br>
> #include "itkImageFileWriter.h"<br>
> #include "itkFlipImageFilter.h"<br>
> #include "itkChangeInformationImageFilter.h"<br>
><br>
> int main(int argc, char* argv[])<br>
> {<br>
> if (argc != 4)<br>
> {<br>
> std::cerr << "Usage: " << argv[0];<br>
> std::cerr << " <InputFileName> <OutputFileName> <AxisToFlip>";<br>
> std::cerr << std::endl;<br>
> return EXIT_FAILURE;<br>
> }<br>
><br>
> typedef itk::Image<signed short, 2 >  ImageType;<br>
><br>
> typedef itk::ImageFileReader< ImageType >   ReaderType;<br>
> ReaderType::Pointer reader = ReaderType::New();<br>
><br>
> reader->SetFileName(argv[1]);<br>
><br>
> ImageType::Pointer inputImage = reader->GetOutput();<br>
>     inputImage->Update(); //Importante!! Sin esto no agarra el origen<br>
><br>
> ImageType::PointType     origin = inputImage->GetOrigin();<br>
> ImageType::SpacingType   spacing = inputImage->GetSpacing();<br>
><br>
> typedef itk::FlipImageFilter< ImageType >   FlipImageFilterType;<br>
> FlipImageFilterType::Pointer flipFilter = FlipImageFilterType::New();<br>
><br>
> typedef itk::ChangeInformationImageFilter< ImageType >  FilterType;<br>
>     FilterType::Pointer filter = FilterType::New();<br>
> filter->SetInput(reader->GetOutput());<br>
><br>
> filter->SetOutputOrigin(origin);<br>
> filter->ChangeOriginOn();<br>
> filter->SetOutputSpacing(spacing);<br>
> filter->ChangeSpacingOn();<br>
><br>
> flipFilter->SetInput(filter->GetOutput());<br>
> flipFilter->Update();<br>
><br>
> FlipImageFilterType::FlipAxesArrayType flipAxes;<br>
> if (atoi(argv[3]) == 0)<br>
> {<br>
> flipAxes[0] = true;<br>
> flipAxes[1] = false;<br>
> }<br>
> else<br>
> {<br>
> flipAxes[0] = false;<br>
> flipAxes[1] = true;<br>
> }<br>
><br>
> flipFilter->SetFlipAxes(flipAxes);<br>
> typedef itk::ImageFileWriter< ImageType > WriterType;<br>
> WriterType::Pointer writer = WriterType::New();<br>
> writer->SetFileName(argv[2]);<br>
> writer->SetInput(flipFilter->GetOutput());<br>
> try<br>
> {<br>
> writer->Update();<br>
> std::cout << "Input origin is: " << reader->GetOutput()->GetOrigin() <<<br>
> std::endl;<br>
> std::cout << "Output origin is: " << flipFilter->GetOutput()->GetOrigin() <<<br>
> std::endl;<br>
> }<br>
> catch (itk::ExceptionObject & error)<br>
> {<br>
> std::cerr << "Error: " << error << std::endl;<br>
> return EXIT_FAILURE;<br>
> }<br>
><br>
> return EXIT_SUCCESS;<br>
> }<br>
><br>
> --<br>
> Matias<br>
><br>
> _____________________________________<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/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/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_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/mailman/listinfo/insight-users</a><br>
><br>
<br>
<br>
<br>
--<br>
Unpaid intern in BillsBasement at noware dot com<br>
</blockquote></div><div dir="ltr">-- <br></div><div><div dir="ltr">Matias</div></div>