<div dir="ltr"><div><div>Hi,<br><br></div>I don't mind. After changes that Ivan Kubarev proposed this image is being read to unsigned short properly for me. Problem may be the same for 64-bit TIFF.<br><br></div>Marian<br>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-08-14 17:18 GMT+03:00 Matt McCormick <span dir="ltr"><<a href="mailto:matt.mccormick@kitware.com" target="_blank">matt.mccormick@kitware.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks for the nice example!<br>
<br>
<br>
I have been able to reproduce the output.  If it is a bug, can the<br>
given image be added to the repository as part of a unit test?<br>
<br>
Thanks,<br>
Matt<br>
<div class="HOEnZb"><div class="h5"><br>
On Thu, Aug 14, 2014 at 9:51 AM, Мар'ян Климов <<a href="mailto:nekto1989@gmail.com">nekto1989@gmail.com</a>> wrote:<br>
> Image Watch during debugging in Visual Studio.<br>
> Windows Photo Viewer after results dumped to disk.<br>
><br>
><br>
> 2014-08-14 15:35 GMT+03:00 Bill Lorensen <<a href="mailto:bill.lorensen@gmail.com">bill.lorensen@gmail.com</a>>:<br>
><br>
>> How are you displaying the unsigned short image? Many viewers cannot<br>
>> properly display unsigned short.<br>
>><br>
>> On Aug 14, 2014 7:23 AM, "Мар'ян Климов" <<a href="mailto:nekto1989@gmail.com">nekto1989@gmail.com</a>> wrote:<br>
>>><br>
>>> Hi,<br>
>>><br>
>>> I've tried different methods. Reading to RGBPixel<unsigned char>, then<br>
>>> using RGBToLuminanceImageFilter and MultiplyImageFilter (2 ^ 8) produces the<br>
>>> same visually proper image. Reading directly to <unsigned short, 2> fails.<br>
>>> Looks like this is bug in TIFFImageIO and not in the way it is being called.<br>
>>> <a href="http://itk-users.7.n7.nabble.com/TiffIO-strange-behaviour-td32215.html" target="_blank">http://itk-users.7.n7.nabble.com/TiffIO-strange-behaviour-td32215.html</a><br>
>>><br>
>>> Marian<br>
>>><br>
>>><br>
>>> 2014-08-13 23:55 GMT+03:00 Мар'ян Климов <<a href="mailto:nekto1989@gmail.com">nekto1989@gmail.com</a>>:<br>
>>>><br>
>>>> Hi Matt,<br>
>>>><br>
>>>> I hope this is proper cmakelists.txt. I'm used to using ITK connected<br>
>>>> through *.props into Visual Studio solution.<br>
>>>><br>
>>>> Best regards,<br>
>>>> Marian<br>
>>>><br>
>>>><br>
>>>><br>
>>>> 2014-08-13 22:52 GMT+03:00 Matt McCormick <<a href="mailto:matt.mccormick@kitware.com">matt.mccormick@kitware.com</a>>:<br>
>>>><br>
>>>>> Hi Marian,<br>
>>>>><br>
>>>>> Thanks for the update.  Offhand, I am not seeing the issue.<br>
>>>>><br>
>>>>> Could you please post a SSCCE [1], i.e. CMakeLists.txt, the code, and<br>
>>>>> the input data?<br>
>>>>><br>
>>>>> Thanks,<br>
>>>>> Matt<br>
>>>>><br>
>>>>> [1] <a href="http://sscce.org/" target="_blank">http://sscce.org/</a><br>
>>>>><br>
>>>>> On Wed, Aug 13, 2014 at 2:27 PM, Мар'ян Климов <<a href="mailto:nekto1989@gmail.com">nekto1989@gmail.com</a>><br>
>>>>> wrote:<br>
>>>>> > {<br>
>>>>> >     typedef unsigned short PixelType;<br>
>>>>> >     typedef itk::Image<PixelType, 2> ImageType;<br>
>>>>> >     auto reader = itk::ImageFileReader<<br>
>>>>> > ImageType>::New();<br>
>>>>> >     reader->SetFileName("D:/TestData/input/input.tif");<br>
>>>>> >     reader->SetImageIO(itk::TIFFImageIO::New());<br>
>>>>> ><br>
>>>>> >     typedef unsigned short OutputPixelType;<br>
>>>>> >     typedef itk::Image<OutputPixelType, 2> OutputImageType;<br>
>>>>> ><br>
>>>>> >     auto writer = itk::ImageFileWriter<OutputImageType>::New();<br>
>>>>> >     writer->SetFileName("D:/TestData/output/ushort_to_ushort.tif");<br>
>>>>> >     auto image_io = itk::TIFFImageIO::New();<br>
>>>>> >     image_io->SetPixelType(itk::ImageIOBase::SCALAR);<br>
>>>>> >     writer->SetImageIO(image_io);<br>
>>>>> >     writer->SetInput(reader->GetOutput());<br>
>>>>> >     writer->Update(); //produces completely black<br>
>>>>> >     }<br>
>>>>> ><br>
>>>>> >     {<br>
>>>>> >     typedef itk::RGBAPixel<char> PixelType;<br>
>>>>> >     typedef itk::Image<PixelType, 2> ImageType;<br>
>>>>> >     auto reader = itk::ImageFileReader<ImageType>::New();<br>
>>>>> >     reader->SetFileName("D:/TestData/input/input.tif");<br>
>>>>> >     reader->SetImageIO(itk::TIFFImageIO::New());<br>
>>>>> >     reader->Update();<br>
>>>>> ><br>
>>>>> >     typedef unsigned short OutputPixelType;<br>
>>>>> >     typedef itk::Image<OutputPixelType, 2> OutputImageType;<br>
>>>>> ><br>
>>>>> >     auto input_image = reader->GetOutput();<br>
>>>>> >     auto output_image = OutputImageType::New();<br>
>>>>> >     output_image->CopyInformation(input_image);<br>
>>>>> ><br>
>>>>> > output_image->SetRegions(input_image->GetLargestPossibleRegion());<br>
>>>>> >     output_image->Allocate();<br>
>>>>> >     itk::ImageRegionConstIterator<ImageType><br>
>>>>> > const_iterator(input_image,<br>
>>>>> > input_image->GetLargestPossibleRegion());<br>
>>>>> >     itk::ImageRegionIterator<OutputImageType><br>
>>>>> > rescaled_iterator(output_image,<br>
>>>>> > output_image->GetLargestPossibleRegion());<br>
>>>>> >     for (const_iterator.GoToBegin(), rescaled_iterator.GoToBegin();<br>
>>>>> > !const_iterator.IsAtEnd(); ++const_iterator, ++rescaled_iterator)<br>
>>>>> >       {<br>
>>>>> >       const PixelType& pixel = const_iterator.Get();<br>
>>>>> >       rescaled_iterator.Set(((pixel.GetAlpha() * 16 + pixel.GetRed())<br>
>>>>> > * 16 +<br>
>>>>> > pixel.GetGreen()) * 16 + pixel.GetBlue());<br>
>>>>> >       }<br>
>>>>> ><br>
>>>>> >     auto writer = itk::ImageFileWriter<OutputImageType>::New();<br>
>>>>> ><br>
>>>>> > writer->SetFileName("D:/TestData/output/rgba_char_to_ushort.tif");<br>
>>>>> >     auto image_io = itk::TIFFImageIO::New();<br>
>>>>> >     image_io->SetPixelType(itk::ImageIOBase::SCALAR);<br>
>>>>> >     writer->SetImageIO(image_io);<br>
>>>>> >     writer->SetInput(output_image);<br>
>>>>> >     writer->Update(); //output looks the same<br>
>>>>> >     }<br>
>>>>> ><br>
>>>>> ><br>
>>>>> > 2014-08-13 20:50 GMT+03:00 Matt McCormick<br>
>>>>> > <<a href="mailto:matt.mccormick@kitware.com">matt.mccormick@kitware.com</a>>:<br>
>>>>> >><br>
>>>>> >> Hi Marian,<br>
>>>>> >><br>
>>>>> >><br>
>>>>> >> If<br>
>>>>> >><br>
>>>>> >>   itk::Image< unsigned  short, 2 ><br>
>>>>> >><br>
>>>>> >> is used for the ImageType, does it work (note the dimension<br>
>>>>> >> specification).<br>
>>>>> >><br>
>>>>> >> HTH,<br>
>>>>> >> Matt<br>
>>>>> >><br>
>>>>> >> On Wed, Aug 13, 2014 at 1:47 PM, Мар'ян Климов <<a href="mailto:nekto1989@gmail.com">nekto1989@gmail.com</a>><br>
>>>>> >> wrote:<br>
>>>>> >> > Hi,<br>
>>>>> >> ><br>
>>>>> >> > How to properly read 32-bit TIFF? I need to get<br>
>>>>> >> > itk::Image<unsigned<br>
>>>>> >> > short><br>
>>>>> >> > on output. If I use it as ImageType for ImageFileReader, it is<br>
>>>>> >> > read as<br>
>>>>> >> > fully<br>
>>>>> >> > black (checked contrast with Image Watch and it is for sure<br>
>>>>> >> > completely<br>
>>>>> >> > empty). If I read it with pixel type RGBPixel<unsigned char> or<br>
>>>>> >> > RGBAPixel<unsigned char>, it is read properly. But I need to<br>
>>>>> >> > convert it<br>
>>>>> >> > manually to unsigned short after this. So what is the proper way<br>
>>>>> >> > of<br>
>>>>> >> > reading<br>
>>>>> >> > it? Do I need to create templated methods for every pixeltype with<br>
>>>>> >> > conversions to unsigned short?<br>
>>>>> >> ><br>
>>>>> >> > Best regards,<br>
>>>>> >> > Marian<br>
>>>>> >> ><br>
>>>>> >> > _______________________________________________<br>
>>>>> >> > Community mailing list<br>
>>>>> >> > <a href="mailto:Community@itk.org">Community@itk.org</a><br>
>>>>> >> > <a href="http://public.kitware.com/mailman/listinfo/community" target="_blank">http://public.kitware.com/mailman/listinfo/community</a><br>
>>>>> >> ><br>
>>>>> ><br>
>>>>> ><br>
>>>><br>
>>>><br>
>>><br>
>>><br>
>>> _______________________________________________<br>
>>> Community mailing list<br>
>>> <a href="mailto:Community@itk.org">Community@itk.org</a><br>
>>> <a href="http://public.kitware.com/mailman/listinfo/community" target="_blank">http://public.kitware.com/mailman/listinfo/community</a><br>
>>><br>
><br>
</div></div></blockquote></div><br></div>