-
-
- SliceType::RegionType sliceRegion = tmp->GetLargestPossibleRegion();
- SliceType::SizeType size = sliceRegion.GetSize();
- SliceType::SpacingType spacing = tmp->GetSpacing();
- SliceType::PointType origin = tmp->GetOrigin();
- SliceType::IndexType start = sliceRegion.GetIndex();
-
- SliceType::Pointer seedsObject = SliceType::New();
- seedsObject->SetRegions(sliceRegion);
- seedsObject->SetOrigin(origin);
- seedsObject->SetSpacing(spacing);
- seedsObject->Allocate();
- seedsObject->FillBuffer(0);
-
- SliceType::Pointer seedsBackground = SliceType::New();
- seedsBackground->SetRegions(sliceRegion);
- seedsBackground->SetOrigin(origin);
- seedsBackground->SetSpacing(spacing);
- seedsBackground->Allocate();
- seedsBackground->FillBuffer(0);
-
- typedef itk::ImageRegionIteratorWithIndex<SliceType> SliceIteratorType;
- SliceIteratorType itSliceMori(tmp, tmp->GetLargestPossibleRegion());
-
- int len = 0;
- int numO = 0;
- int numB = 0;
-
- itSliceMori.GoToBegin();
-
- while (!itSliceMori.IsAtEnd())
- {
- if (itSliceMori.Get() != 0)
- len++;
-
- typename TImage::PixelType vessVal = vess->GetPixel(itSliceMori.GetIndex());
- typename TImage::PixelType imgVal = data->GetPixel(itSliceMori.GetIndex());
- typename TImage::PixelType bw = tmp->GetPixel(itSliceMori.GetIndex());
-
- if (bw != 0 && vessVal > this->m_VessTh * this->m_vessMax / 100)
- {
- seedsObject->SetPixel(itSliceMori.GetIndex(), 1);
- numO++;
- }
-
- itSliceMori++;
- }
-
- if (len == 0)
- {
- std::cout << "Slice " << z << ": - brak pikseli zakwalifikowanych do drzewa" << std::endl;
- continue;
- }
-
- SliceIteratorType itSliceVess(vess, vess->GetLargestPossibleRegion());
- itSliceVess.GoToBegin();
-
- while (!itSliceVess.IsAtEnd())
- {
- if (itSliceVess.Get() < this->m_VessTh * this->m_vessMax / 100)
- {
- seedsBackground->SetPixel(itSliceVess.GetIndex(), 1);
- numB++;
- }
- itSliceVess++;
-
- }
-
- std::cout << "slice: " << z << "seeds obj: " << numO << " seeds bkg " << numB << std::endl;
- // przygotowania do Random Walkera
-
- typename TImage::PixelType *bufferImg = 0;
- typename TImage::PixelType *bufferSeedsObj = 0;
- typename TImage::PixelType *bufferSeedsBkg = 0;
-
- int dims[2], dims2[2], dims3[2];
- double spac[2], orig[2], spac2[2], orig2[2], spac3[2], orig3[2];
-
- image2buffer(bufferImg, dims, spac, orig, 2, data);
- image2buffer(bufferSeedsObj, dims2, spac2, orig2, 2, seedsObject);
- image2buffer(bufferSeedsBkg, dims3, spac3, orig3, 2, seedsBackground);
-
- // TO DO HERE
- int width = dims[0];
- int height = dims[1];
-
- PixelType *mask = new PixelType[width*height];
- double *probs = new double[2 * width*height];
-
- int i, j, no_seeds = 0;
-
- for (i = 0; i < width*height; i++)
-
- if (bufferSeedsObj[i] == 1 || bufferSeedsBkg[i] == 1)
- no_seeds++;
-
- int *seed_indexes = new int[no_seeds];
- int *seed_labels = new int[no_seeds];
-
- for (j = 0, i = 0; i < width*height; i++)
- {
- if (bufferSeedsObj[i] == 1)
- {
- seed_indexes[j] = i + 1;//=i+1 (i)
- seed_labels[j] = this->m_replaceValue;
- j++;
- }
- else if (bufferSeedsBkg[i] == 1)
- {
- seed_indexes[j] = i + 1;//=i+1 (i)
- seed_labels[j] = 0;
- j++;
- }
- }
-
- call_walker(mask, probs, bufferImg, height, width, seed_indexes, no_seeds, seed_labels, 2, this->m_beta);
-
- delete[] bufferSeedsObj;
- delete[] bufferSeedsBkg;
- delete[] seed_indexes;
- delete[] seed_labels;
-
- SliceType::Pointer img2 = buffer2image(mask, dims, spac, orig, 2);
-
- SliceType::PixelType *probs_img = new PixelType[width*height];
- for (i = 0; i < width*height; i++)
- probs_img[i] = floor(255 * probs[i]);
-
- SliceType::Pointer img3 = buffer2image(probs_img, dims, spac, orig, 2);
-