void CreateImage(const typename TImage::Pointer & image) { // This function creates a 2D image consisting of a black background, // a large square of a non-zero pixel value, and a single "erroneous" pixel // near the square. typename TImage::IndexType corner = {{0,0,0}}; typename TImage::SizeType size = {{20,20,20}}; typename TImage::RegionType region(corner, size); image->SetRegions(region); image->Allocate(); image->FillBuffer(0); // Make a square for(int r = 4; r < 10; r++){ for(int c = 4; c < 10; c++){ for(int h=4;h < 10;h++){ typename TImage::IndexType pixelIndex = {{r,c,h}}; image->SetPixel(pixelIndex, 1); } } } // typename TImage::IndexType pixelIndex = {{102, 102}}; // image->SetPixel(pixelIndex, 50); }
void CreateImage(typename TImage::Pointer image) { typename TImage::IndexType start; start.Fill(0); typename TImage::SizeType size; size.Fill(s); typename TImage::RegionType region(start, size); image->SetRegions(region); image->Allocate(); itk::ImageRegionIterator<TImage> it(image, image->GetLargestPossibleRegion()); it.GoToBegin(); int i = 0; typename TImage::PixelType vv = 1; for (it = it.Begin(); !it.IsAtEnd(); ++it) { vv++; it.Set(i++ % 3 == 0 ? 0 : vv); } }
void SmoothedClassProbabilites< TImage> ::GenerateData() { typename TImage::Pointer out = this->GetOutput(0); out->SetRegions(this->GetInput(0)->GetLargestPossibleRegion()); out->Allocate(); for(unsigned int i = 0 ; i < this->GetNumberOfInputs(); i++) { auto gf = itk::DiscreteGaussianImageFilter<TImage,TImage>::New(); gf->SetInput(this->GetInput(i)); gf->SetVariance(this->m_Sigma); gf->Update(); ImageRegionConstIterator<TImage> git(gf->GetOutput(),gf->GetOutput()->GetLargestPossibleRegion()); ImageRegionIterator<TImage> maskiter(m_MaskImage, m_MaskImage->GetLargestPossibleRegion()); ImageRegionIterator<TImage> outputIter(out, out->GetLargestPossibleRegion()); while (!outputIter.IsAtEnd()) { if(maskiter.Value() > 0 ){ if(git.Value() > outputIter.Value()) outputIter.Set(i); }else { outputIter.Set(0); } ++git; ++outputIter; ++maskiter; } } }
void ManualPatchSelectionDialog<TImage>::slot_UpdateResult(const itk::ImageRegion<2>& sourceRegion, const itk::ImageRegion<2>& targetRegion) { assert(sourceRegion.GetSize() == targetRegion.GetSize()); if(!this->Image->GetLargestPossibleRegion().IsInside(sourceRegion)) { std::cerr << "Source region is outside the image!" << std::endl; return; } QImage qimage(sourceRegion.GetSize()[0], sourceRegion.GetSize()[1], QImage::Format_RGB888); if(MaskImage->CountHolePixels(sourceRegion) > 0) { //std::cerr << "The source patch must not have any hole pixels!" << std::endl; //btnAccept->setVisible(false); qimage.fill(Qt::green); } else { typename TImage::Pointer tempImage = TImage::New(); ITKHelpers::ConvertTo3Channel(this->Image, tempImage.GetPointer()); if(this->Image->GetNumberOfComponentsPerPixel() != 3) { ITKHelpers::ScaleAllChannelsTo255(tempImage.GetPointer()); } itk::ImageRegionIterator<TImage> sourceIterator(tempImage, sourceRegion); itk::ImageRegionIterator<TImage> targetIterator(tempImage, targetRegion); itk::ImageRegionIterator<Mask> maskIterator(MaskImage, targetRegion); typename TImage::Pointer resultPatch = TImage::New(); resultPatch->SetNumberOfComponentsPerPixel(Image->GetNumberOfComponentsPerPixel()); itk::ImageRegion<2> resultPatchRegion; resultPatchRegion.SetSize(sourceRegion.GetSize()); resultPatch->SetRegions(resultPatchRegion); resultPatch->Allocate(); while(!maskIterator.IsAtEnd()) { ITKHelpers::FloatVectorImageType::PixelType pixel; if(MaskImage->IsHole(maskIterator.GetIndex())) { pixel = sourceIterator.Get(); } else { pixel = targetIterator.Get(); } itk::Offset<2> offset = sourceIterator.GetIndex() - sourceRegion.GetIndex(); itk::Index<2> offsetIndex; offsetIndex[0] = offset[0]; offsetIndex[1] = offset[1]; resultPatch->SetPixel(offsetIndex, pixel); ++sourceIterator; ++targetIterator; ++maskIterator; } // end iterator loop qimage = ITKQtHelpers::GetQImageColor(resultPatch.GetPointer(), resultPatch->GetLargestPossibleRegion()); } // end else this->ResultPatchScene->clear(); QGraphicsPixmapItem* item = this->ResultPatchScene->addPixmap(QPixmap::fromImage(qimage)); gfxResult->fitInView(item); }