[ITK] [ITK-users] Multiply two .img or .hdr images in ITK

Tobias Gass gass at vision.ee.ethz.ch
Sun Apr 27 06:21:12 EDT 2014


Hi,

I didn't follow everything in detail, but it looks as if you're trying to
pass an image with PixelType unsigned short to a writer which expects an
image with PixelType unsigned char, which wont work. Please also be aware
of the value ranges of the PixelTypes you declare. Multiplying two short
ints can easily lead to overflow when casting to unsigned char. I'd even be
careful casting them to short unless I am very certain about the expected
intensity range in the images.

HTH
Tobias


2014-04-27 12:20 GMT+02:00 Tobias Gass <tobiasgass at gmail.com>:

> Hi,
>
> I didn't follow everything in detail, but it looks as if you're trying to
> pass an image with PixelType unsigned short to a writer which expects an
> image with PixelType unsigned char, which wont work. Please also be aware
> of the value ranges of the PixelTypes you declare. Multiplying two short
> ints can easily lead to overflow when casting to unsigned char. I'd even be
> careful casting them to short unless I am very certain about the expected
> intensity range in the images.
>
> HTH
> Tobias
>
>
> 2014-04-27 11:15 GMT+02:00 Pansam Changmi <pansam5green at gmail.com>:
>
> Thanks Christopher,
>>
>> I removed the VTK viewer part and instead of creating two images I edited
>> the code to read tow ".hdr" files and write one ".hdr" output file. But I
>> am getting the following errors. I couldn't figure out the problem. Given
>> below is multiplyFilter.cxx code:
>>
>> #include "itkImage.h"
>> #include "itkImageFileReader.h"
>> #include "itkImageFileWriter.h"
>> #include "itkRescaleIntensityImageFilter.h"
>> #include "itkMultiplyImageFilter.h"
>>
>> int main( int argc, char * argv[] )
>> {
>>   if( argc < 4 )
>>     {
>>     std::cerr << "Usage: " << argv[0];
>>     std::cerr << " fixedImageFile  movingImageFile ";
>>     std::cerr << "outputImagefile " << std::endl;
>>     return EXIT_FAILURE;
>>     }
>>
>>   typedef  unsigned short  PixelType;
>>   const   unsigned int        Dimension = 3;
>>   typedef itk::Image< PixelType, Dimension >  FixedImageType;
>>   typedef itk::Image< PixelType, Dimension >  MovingImageType;
>>
>>   typedef itk::ImageFileReader< FixedImageType  > FixedImageReaderType;
>>   typedef itk::ImageFileReader< MovingImageType > MovingImageReaderType;
>>
>>   FixedImageReaderType::Pointer  fixedImageReader  =
>> FixedImageReaderType::New();
>>   MovingImageReaderType::Pointer movingImageReader =
>> MovingImageReaderType::New();
>>
>>   fixedImageReader->SetFileName( argv[1] );
>>   movingImageReader->SetFileName( argv[2] );
>>
>>   typedef itk::MultiplyImageFilter <FixedImageReaderType,
>> MovingImageReaderType >
>>       MultiplyImageFilterType;
>>
>>   MultiplyImageFilterType::Pointer multiplyFilter
>>     = MultiplyImageFilterType::New ();
>>   multiplyFilter->SetInput1(fixedImageReader);
>>   multiplyFilter->SetInput2(movingImageReader);
>>
>>   typedef  unsigned char  OutputPixelType;
>>
>>   typedef itk::Image< OutputPixelType, Dimension > OutputImageType;
>>
>>   typedef itk::ImageFileWriter< OutputImageType >  WriterType;
>>
>>   WriterType::Pointer      writer =  WriterType::New();
>>
>>   writer->SetFileName( argv[3] );
>>
>>   writer->SetInput( multiplyFilter->GetOutput() );
>>   writer->Update();
>>
>>   return EXIT_SUCCESS;
>> }
>>
>>
>>
>>
>> On Sun, Apr 27, 2014 at 11:14 AM, Christopher Mullins <
>> christopher.mullins at kitware.com> wrote:
>>
>>> This example might help. You can delete the VTK-viewer bit if you want,
>>> should only need ITK.
>>>
>>> http://www.itk.org/Wiki/ITK/Examples/ImageProcessing/MultiplyImageFilter
>>> On Apr 27, 2014 1:40 AM, "Pansam Changmi" <pansam5green at gmail.com>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> Can anyone tell me how to multiply two .img or .hdr images (for example
>>>> head.img and BrainMask.img) in ITK? Do I need VTK? ITK-Snap? C3d tool?
>>>>
>>>> Regards,
>>>> Pansam
>>>>
>>>> _____________________________________
>>>> 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://www.itk.org/mailman/listinfo/insight-users
>>>>
>>>>
>>
>> _____________________________________
>> 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://www.itk.org/mailman/listinfo/insight-users
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20140427/13ff6cdc/attachment-0002.html>
-------------- next part --------------
_____________________________________
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://www.itk.org/mailman/listinfo/insight-users


More information about the Community mailing list