X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=itk%2FclitkSegmentationUtils.txx;h=a57d8136becb4b919b1b1bc9360f6343c6547028;hb=e2d2096e1a3a4afdad6446bf09d0e05f47d9b7eb;hp=76572b594540e9f7393e38a535a40ff3f4ffcb52;hpb=1d616cc7be31f7195c8bba4142e02350cd2fb958;p=clitk.git diff --git a/itk/clitkSegmentationUtils.txx b/itk/clitkSegmentationUtils.txx index 76572b5..a57d813 100644 --- a/itk/clitkSegmentationUtils.txx +++ b/itk/clitkSegmentationUtils.txx @@ -766,8 +766,7 @@ namespace clitk { { assert((mainDirection==0) || (mainDirection==1)); typedef itk::ImageSliceIteratorWithIndex SliceIteratorType; - SliceIteratorType siter = SliceIteratorType(input, - input->GetLargestPossibleRegion()); + SliceIteratorType siter = SliceIteratorType(input, input->GetLargestPossibleRegion()); siter.SetFirstDirection(0); siter.SetSecondDirection(1); siter.GoToBegin(); @@ -786,7 +785,6 @@ namespace clitk { A = lA[i]; B = lB[i]; C = A; - // Check that the line is not a point (A=B) bool p = (A[0] == B[0]) && (A[1] == B[1]); @@ -1323,11 +1321,11 @@ namespace clitk { // Compute dmap for S1 *TO PUT IN FONCTION* dmap = clitk::DistanceMap(slices_s1[i], BG); dmaps1.push_back(dmap); - writeImage(dmap, "dmap1.mha"); + //writeImage(dmap, "dmap1.mha"); // Compute dmap for S2 dmap = clitk::DistanceMap(slices_s2[i], BG); dmaps2.push_back(dmap); - writeImage(dmap, "dmap2.mha"); + //writeImage(dmap, "dmap2.mha"); // Look in S2 for the point the closest to S1 typename SliceType::PointType p = ComputeClosestPoint(slices_s1[i], dmaps2[i], BG); @@ -1373,6 +1371,7 @@ namespace clitk { iter2.GoToBegin(); double dmin = 100000.0; typename ImageType::IndexType indexmin; + indexmin.Fill(0); while (!iter1.IsAtEnd()) { if (iter1.Get() != BG) { double d = iter2.Get(); @@ -1393,6 +1392,30 @@ namespace clitk { //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + template + typename ImageType::Pointer + RemoveNegativeIndexFromRegion(ImageType * input) { + typedef itk::ChangeInformationImageFilter< ImageType > InfoFilterType; + typename InfoFilterType::Pointer indexChangeFilter = InfoFilterType::New(); + indexChangeFilter->ChangeRegionOn(); + // The next line is commented because not exist in itk 3 + // typename InfoFilterType::OutputImageOffsetValueType indexShift[3]; + long indexShift[3]; + typename ImageType::IndexType index = input->GetLargestPossibleRegion().GetIndex(); + for(uint i=0;iGetOrigin()[i] - indexShift[i]*input->GetSpacing()[i]; + indexChangeFilter->SetOutputOffset( indexShift ); + indexChangeFilter->SetInput(input); + indexChangeFilter->SetOutputOrigin(origin); + indexChangeFilter->ChangeOriginOn(); + indexChangeFilter->Update(); + return indexChangeFilter->GetOutput(); + } + //-------------------------------------------------------------------- } // end of namespace