本文整理汇总了C++中TImage::GetLargestPossibleRegion方法的典型用法代码示例。如果您正苦于以下问题:C++ TImage::GetLargestPossibleRegion方法的具体用法?C++ TImage::GetLargestPossibleRegion怎么用?C++ TImage::GetLargestPossibleRegion使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TImage
的用法示例。
在下文中一共展示了TImage::GetLargestPossibleRegion方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FinishVertex
void FinishVertex(VertexDescriptorType target, VertexDescriptorType sourceNode)
{
//OutputHelpers::WriteImage(MaskImage, Helpers::GetSequentialFileName("mask", this->NumberOfFinishedVertices, "png"));
ITKHelpers::WriteImage(MaskImage, Helpers::GetSequentialFileName("mask",
this->NumberOfFinishedVertices, "mha"));
//OutputHelpers::WriteVectorImageAsRGB(Image, Helpers::GetSequentialFileName("output", this->NumberOfFinishedVertices, "png"));
ITKHelpers::WriteImage(Image, Helpers::GetSequentialFileName("output",
this->NumberOfFinishedVertices, "mha"));
ITKHelpers::WriteRGBImage(Image, Helpers::GetSequentialFileName("output",
this->NumberOfFinishedVertices, "png"));
typename TImage::PixelType holeColor;
holeColor.SetSize(Image->GetNumberOfComponentsPerPixel());
holeColor[0] = 255;
holeColor[1] = 0;
holeColor[2] = 0;
MaskOperations::WriteMaskedRegionPNG(Image, MaskImage, Image->GetLargestPossibleRegion(), Helpers::GetSequentialFileName("maskedOutput", this->NumberOfFinishedVertices, "png"),
holeColor);
typedef itk::Image<unsigned char, 2> IndicatorImageType;
IndicatorImageType::Pointer boundaryStatusMapImage = IndicatorImageType::New();
boundaryStatusMapImage->SetRegions(Image->GetLargestPossibleRegion());
boundaryStatusMapImage->Allocate();
// BoostHelpers::WritePropertyMapAsImage(BoundaryStatusMap, boundaryStatusMapImage.GetPointer(),
// Helpers::GetSequentialFileName("boundaryStatusMap",
// this->NumberOfFinishedVertices, "png"));
IndicatorImageType::Pointer validBoundaryNodeImage = IndicatorImageType::New();
validBoundaryNodeImage->SetRegions(Image->GetLargestPossibleRegion());
validBoundaryNodeImage->Allocate();
// BoostHelpers::WriteValidQueueNodesAsImage(BoundaryNodeQueue, BoundaryStatusMap,
// validBoundaryNodeImage.GetPointer(),
// Helpers::GetSequentialFileName("boundaryQueueValidNodes",
// this->NumberOfFinishedVertices, "png"));
IndicatorImageType::Pointer allBoundaryNodeImage = IndicatorImageType::New();
allBoundaryNodeImage->SetRegions(Image->GetLargestPossibleRegion());
allBoundaryNodeImage->Allocate();
// BoostHelpers::WriteAllQueueNodesAsImage(BoundaryNodeQueue, allBoundaryNodeImage.GetPointer(),
// Helpers::GetSequentialFileName("boundaryQueueAllNodes",
// this->NumberOfFinishedVertices, "png"));
this->NumberOfFinishedVertices++;
// std::cout << "Finished node " << this->NumberOfFinishedVertices << std::endl;
}
示例2: srand
void LabelSampler< TImage>
::GenerateData()
{
srand (time(nullptr));
this->AllocateOutputs();
typename TImage::ConstPointer input = this->GetInput();
TImage * output = this->GetOutput();
m_NumberOfSampledVoxels = 0;
ImageRegionConstIterator<TImage> inputIter(input, input->GetLargestPossibleRegion());
ImageRegionIterator<TImage> outputIter(output, output->GetLargestPossibleRegion());
while (!inputIter.IsAtEnd())
{
if (inputIter.Get() > 0)
{
if(m_LabelVoxelCountMap.find(inputIter.Get()) == m_LabelVoxelCountMap.end())
m_LabelVoxelCountMap[inputIter.Get()] = 0;
m_LabelVoxelCountMap[inputIter.Get()]++;
double r;
if(inputIter.Get() == m_Label || m_Label == -1 ){
r = (double)(rand()) / RAND_MAX;
if (r < m_AcceptRate)
{
outputIter.Set(inputIter.Get());
m_NumberOfSampledVoxels++;
}
}else
outputIter.Set(0);
}
else
{
outputIter.Set(0);
}
++inputIter;
++outputIter;
}
}
示例3: PaintPatch
void PaintPatch(TVertexDescriptor target, TVertexDescriptor source) const
{
TVertexDescriptor target_patch_corner;
target_patch_corner[0] = target[0] - PatchHalfWidth;
target_patch_corner[1] = target[1] - PatchHalfWidth;
TVertexDescriptor source_patch_corner;
source_patch_corner[0] = source[0] - PatchHalfWidth;
source_patch_corner[1] = source[1] - PatchHalfWidth;
TVertexDescriptor target_node;
TVertexDescriptor source_node;
for(std::size_t i = 0; i < PatchHalfWidth * 2 + 1; ++i)
{
for(std::size_t j = 0; j < PatchHalfWidth * 2 + 1; ++j)
{
target_node[0] = target_patch_corner[0] + i;
target_node[1] = target_patch_corner[1] + j;
source_node[0] = source_patch_corner[0] + i;
source_node[1] = source_patch_corner[1] + j;
// Only paint the pixel if it is currently a hole
if( MaskImage->IsHole(ITKHelpers::CreateIndex(target_node)) )
{
//std::cout << "Copying pixel " << source_node << " to pixel " << target_node << std::endl;
itk::Index<2> target_index = ITKHelpers::CreateIndex(target);
itk::Index<2> source_index = ITKHelpers::CreateIndex(source);
assert(Image->GetLargestPossibleRegion().IsInside(source_index));
assert(Image->GetLargestPossibleRegion().IsInside(target_index));
Image->SetPixel(target_index, Image->GetPixel(source_index));
}
}
}
};
示例4: finish_vertex
void finish_vertex(VertexDescriptorType v, VertexDescriptorType sourceNode, TGraph& g)
{
// Construct the region around the vertex
itk::Index<2> indexToFinish;
indexToFinish[0] = v[0];
indexToFinish[1] = v[1];
itk::ImageRegion<2> region = ITKHelpers::GetRegionInRadiusAroundPixel(indexToFinish, HalfWidth);
region.Crop(Image->GetLargestPossibleRegion()); // Make sure the region is entirely inside the image
// Mark all the pixels in this region as filled.
// It does not matter which image we iterate over, we just want the indices.
itk::ImageRegionConstIteratorWithIndex<TImage> gridIterator(Image, region);
while(!gridIterator.IsAtEnd())
{
VertexDescriptorType v;
v[0] = gridIterator.GetIndex()[0];
v[1] = gridIterator.GetIndex()[1];
put(FillStatusMap, v, true);
MaskImage->SetPixel(gridIterator.GetIndex(), MaskImage->GetValidValue());
++gridIterator;
}
// Additionally, initialize the filled vertices because they may now be valid.
// This must be done in a separate loop like this because the mask image used to check for boundary pixels is incorrect until the above loop updates it.
gridIterator.GoToBegin();
while(!gridIterator.IsAtEnd())
{
VertexDescriptorType v;
v[0] = gridIterator.GetIndex()[0];
v[1] = gridIterator.GetIndex()[1];
initialize_vertex(v, g);
++gridIterator;
}
// Update the priority function.
this->PriorityFunction->Update(sourceNode, v);
// Add pixels that are on the new boundary to the queue, and mark other pixels as not in the queue.
itk::ImageRegionConstIteratorWithIndex<Mask> imageIterator(this->MaskImage, region);
while(!imageIterator.IsAtEnd())
{
VertexDescriptorType v;
v[0] = imageIterator.GetIndex()[0];
v[1] = imageIterator.GetIndex()[1];
// Mark all nodes in the patch around this node as filled (in the FillStatusMap).
// This makes them ignored if they are still in the boundaryNodeQueue.
if(ITKHelpers::HasNeighborWithValue(imageIterator.GetIndex(), this->MaskImage, this->MaskImage->GetHoleValue()))
{
put(BoundaryStatusMap, v, true);
this->BoundaryNodeQueue.push(v);
float priority = this->PriorityFunction->ComputePriority(imageIterator.GetIndex());
//std::cout << "updated priority: " << priority << std::endl;
put(this->PriorityMap, v, priority);
}
else
{
put(this->BoundaryStatusMap, v, false);
}
++imageIterator;
}
{
// Debug only - write the mask to a file
HelpersOutput::WriteImage(this->MaskImage, Helpers::GetSequentialFileName("debugMask", this->NumberOfFinishedVertices, "png"));
HelpersOutput::WriteVectorImageAsRGB(this->Image, Helpers::GetSequentialFileName("output", this->NumberOfFinishedVertices, "png"));
this->NumberOfFinishedVertices++;
}
} // finish_vertex