X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=itk%2FclitkCropLikeImageFilter.txx;h=e7e342fce498464947a9dd841aad4cb54da0cf29;hb=HEAD;hp=5a9696e8b935434ed969194e89c1e7dd4236c09d;hpb=a595d0ae02a42e1fc87d8cf044243da08e39414c;p=clitk.git diff --git a/itk/clitkCropLikeImageFilter.txx b/itk/clitkCropLikeImageFilter.txx index 5a9696e..e7e342f 100644 --- a/itk/clitkCropLikeImageFilter.txx +++ b/itk/clitkCropLikeImageFilter.txx @@ -30,7 +30,7 @@ CropLikeImageFilter():itk::ImageToImageFilter() { this->SetNumberOfRequiredInputs(1); m_LikeImage = NULL; m_LikeFilenameIsGiven = false; - this->SetBackgroundValue(0); + this->SetBackgroundValue(typename PixelTraits::ValueType(0)); m_CropAlongThisDimension.resize(ImageType::ImageDimension); for(uint i=0; iGetLargestPossibleRegion().GetSize(); likeStart = m_LikeImage->GetLargestPossibleRegion().GetIndex(); likeOrigin = m_LikeImage->GetOrigin(); likeSpacing = m_LikeImage->GetSpacing(); - output->CopyInformation(m_LikeImage); + likeDirection = m_LikeImage->GetDirection(); + //I don't know really why I need the inverse... + like_invDirection = likeDirection.GetInverse(); + //output->CopyInformation(m_LikeImage); } else { // Only load the header (allows to use 'like' with any image type) @@ -119,8 +124,12 @@ GenerateOutputInformation() { likeStart[i] = 0;//header->GetIORegion().GetIndex()[i]; likeOrigin[i] = header->GetOrigin(i); likeSpacing[i] = header->GetSpacing(i); + for(unsigned int j=0; jGetDirection(i)[j]; + } + //I don't know really why I need the inverse... + like_invDirection = likeDirection.GetInverse(); } - } else { clitkExceptionMacro("You should provide SetCropLikeFilename or SetCropLike to CropLikeImageFilter"); } @@ -152,6 +161,7 @@ GenerateOutputInformation() { output->SetBufferedRegion(m_OutputRegion); output->SetSpacing(likeSpacing); output->SetOrigin(likeOrigin); + output->SetDirection(like_invDirection); output->Allocate(); // Needed ? // get startpoint source/dest @@ -259,5 +269,41 @@ clitk::ResizeImageLike(const ImageType * input, } //-------------------------------------------------------------------- - + +//-------------------------------------------------------------------- +template +typename ImageType::Pointer +clitk::ResizeImageLike(const ImageType * input, + typename itk::ImageBase::RegionType * region, + typename ImageType::PixelType backgroundValue) +{ + typename ImageType::Pointer output = ImageType::New(); + output->CopyInformation(input); + typename ImageType::RegionType reg; + reg.SetIndex(region->GetIndex()); + reg.SetSize(region->GetSize()); + output->SetRegions(reg); + output->Allocate(); + return clitk::ResizeImageLike(input, output, backgroundValue); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +template +typename ImageType::Pointer +clitk::ResizeImageLike(const ImageType * input, + typename itk::BoundingBox::Pointer bb, + typename ImageType::PixelType BG) +{ + typename ImageType::RegionType region; + clitk::ComputeRegionFromBB(input, bb, region); + typename ImageType::Pointer output = ImageType::New(); + output->CopyInformation(input); + output->SetRegions(region); + output->Allocate(); + return clitk::ResizeImageLike(input, output, BG); +} +//-------------------------------------------------------------------- + #endif //#define CLITKCROPLIKEIMAGEFILTER_TXX