本文整理汇总了C++中imagereadertype::Pointer类的典型用法代码示例。如果您正苦于以下问题:C++ Pointer类的具体用法?C++ Pointer怎么用?C++ Pointer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Pointer类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: main
int main (int argc, char *argv[])
{
if(argc != 4)
{
std::cout << "Required arguments: InputFilename(ptx) NewRGB(mhd) OutputFilename(ptx)" << std::endl;
return EXIT_FAILURE;
}
std::string inputFilename = argv[1];
std::string newDepthImageFilename = argv[2];
std::string outputFilename = argv[3];
PTXImage ptxImage = PTXReader::Read(inputFilename);
typedef itk::ImageFileReader<PTXImage::RGBVectorImageType> ImageReaderType;
ImageReaderType::Pointer reader = ImageReaderType::New();
reader->SetFileName(newDepthImageFilename);
reader->Update();
if(reader->GetOutput()->GetLargestPossibleRegion().GetSize() != ptxImage.GetSize())
{
std::cerr << "RGB image must be the same size as PTX image!" << std::endl;
exit(-1);
}
ptxImage.ReplaceRGB(reader->GetOutput());
ptxImage.WritePTX(outputFilename);
return EXIT_SUCCESS;
}
开发者ID:daviddoria,项目名称:PTXTools,代码行数:31,代码来源:PTXReplaceRGB.cpp
示例2: main
// Run with: image.png image.mask 15 filled.png
int main(int argc, char *argv[])
{
// Verify arguments
if(argc != 5)
{
std::cerr << "Required arguments: image.png image.mask patchHalfWidth output.png" << std::endl;
std::cerr << "Input arguments: ";
for(int i = 1; i < argc; ++i)
{
std::cerr << argv[i] << " ";
}
return EXIT_FAILURE;
}
// Parse arguments
std::string imageFilename = argv[1];
std::string maskFilename = argv[2];
std::stringstream ssPatchRadius;
ssPatchRadius << argv[3];
unsigned int patchHalfWidth = 0;
ssPatchRadius >> patchHalfWidth;
std::string outputFilename = argv[4];
// Output arguments
std::cout << "Reading image: " << imageFilename << std::endl;
std::cout << "Reading mask: " << maskFilename << std::endl;
std::cout << "Patch half width: " << patchHalfWidth << std::endl;
std::cout << "Output: " << outputFilename << std::endl;
typedef itk::Image<itk::CovariantVector<float, 3>, 2> ImageType;
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(imageFilename);
imageReader->Update();
ImageType::Pointer image = ImageType::New();
ITKHelpers::DeepCopy(imageReader->GetOutput(), image.GetPointer());
Mask::Pointer mask = Mask::New();
mask->Read(maskFilename);
std::cout << "Mask size: " << mask->GetLargestPossibleRegion().GetSize() << std::endl;
std::cout << "hole pixels: " << mask->CountHolePixels() << std::endl;
std::cout << "valid pixels: " << mask->CountValidPixels() << std::endl;
// Setup the GUI system
QApplication app( argc, argv );
// Without this, after we close the first dialog
// (after the first iteration that is not accepted automatically), the event loop quits.
app.setQuitOnLastWindowClosed(false);
DummyPatchesDriver(image, mask, patchHalfWidth);
return app.exec();
}
开发者ID:SXYJerry,项目名称:PatchBasedInpainting,代码行数:59,代码来源:DummyPatchesInpainting.cpp
示例3: ApplyDeformationField
void QmitkDeformableRegistrationView::ApplyDeformationField()
{
ImageReaderType::Pointer reader = ImageReaderType::New();
reader->SetFileName( m_Controls.m_QmitkBSplineRegistrationViewControls->m_Controls.m_DeformationField->text().toStdString() );
reader->Update();
DeformationFieldType::Pointer deformationField = reader->GetOutput();
mitk::Image * mimage = dynamic_cast<mitk::Image*> (m_MovingNode->GetData());
mitk::Image * fimage = dynamic_cast<mitk::Image*> (m_FixedNode->GetData());
typedef itk::Image<float, 3> FloatImageType;
FloatImageType::Pointer itkMovingImage = FloatImageType::New();
FloatImageType::Pointer itkFixedImage = FloatImageType::New();
mitk::CastToItkImage(mimage, itkMovingImage);
mitk::CastToItkImage(fimage, itkFixedImage);
typedef itk::WarpImageFilter<
FloatImageType,
FloatImageType,
DeformationFieldType > WarperType;
typedef itk::LinearInterpolateImageFunction<
FloatImageType,
double > InterpolatorType;
WarperType::Pointer warper = WarperType::New();
InterpolatorType::Pointer interpolator = InterpolatorType::New();
warper->SetInput( itkMovingImage );
warper->SetInterpolator( interpolator );
warper->SetOutputSpacing( itkFixedImage->GetSpacing() );
warper->SetOutputOrigin( itkFixedImage->GetOrigin() );
warper->SetOutputDirection (itkFixedImage->GetDirection() );
warper->SetDisplacementField( deformationField );
warper->Update();
FloatImageType::Pointer outputImage = warper->GetOutput();
mitk::Image::Pointer result = mitk::Image::New();
mitk::CastToMitkImage(outputImage, result);
// Create new DataNode
mitk::DataNode::Pointer newNode = mitk::DataNode::New();
newNode->SetData( result );
newNode->SetProperty( "name", mitk::StringProperty::New("warped image") );
// add the new datatree node to the datatree
this->GetDefaultDataStorage()->Add(newNode);
mitk::RenderingManager::GetInstance()->RequestUpdateAll();
//Image::Pointer outputImage = this->GetOutput();
//mitk::CastToMitkImage( warper->GetOutput(), outputImage );
}
开发者ID:GHfangxin,项目名称:MITK,代码行数:58,代码来源:QmitkDeformableRegistrationView.cpp
示例4: main
int main(int argc, char*argv[])
{
if(argc < 4)
{
std::cerr << "Required arguments: image mask output" << std::endl;
return EXIT_FAILURE;
}
std::string imageFilename = argv[1];
std::string maskFilename = argv[2];
std::string outputFilename = argv[3];
std::cout << "imageFilename: " << imageFilename << std::endl;
std::cout << "maskFilename: " << maskFilename << std::endl;
std::cout << "outputFilename: " << outputFilename << std::endl;
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(imageFilename);
imageReader->Update();
Mask::Pointer sourceMask = Mask::New();
sourceMask->Read(maskFilename);
Mask::Pointer targetMask = Mask::New();
targetMask->SetRegions(sourceMask->GetLargestPossibleRegion());
targetMask->Allocate();
ITKHelpers::SetImageToConstant(targetMask.GetPointer(), HoleMaskPixelTypeEnum::VALID);
typedef SSD<ImageType> DistanceFunctorType;
DistanceFunctorType* patchDistanceFunctor = new DistanceFunctorType;
patchDistanceFunctor->SetImage(imageReader->GetOutput());
typedef Propagator<DistanceFunctorType> PropagatorType;
PropagatorType* propagationFunctor = new PropagatorType;
typedef RandomSearch<ImageType, DistanceFunctorType> RandomSearchType;
RandomSearchType* randomSearchFunctor = new RandomSearchType;
typedef PatchMatch<ImageType, PropagatorType, RandomSearchType> PatchMatchType;
PatchMatchType patchMatch;
patchMatch.SetImage(imageReader->GetOutput());
patchMatch.SetPatchRadius(3);
patchMatch.SetPropagationFunctor(propagationFunctor);
patchMatch.SetRandomSearchFunctor(randomSearchFunctor);
patchMatch.Compute();
NNFieldType::Pointer output = patchMatch.GetNNField();
PatchMatchHelpers::WriteNNField(output.GetPointer(), "nnfield.mha");
return EXIT_SUCCESS;
}
开发者ID:daviddoria,项目名称:PatchMatch,代码行数:54,代码来源:TestPatchMatch.cpp
示例5: OpenImage
void SuperPixelSegmentationGUI::OpenImage(const std::string& imageFileName)
{
// Load and display image
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(imageFileName);
imageReader->Update();
Helpers::DeepCopy<ImageType>(imageReader->GetOutput(), this->Image);
QImage qimageImage = HelpersQt::GetQImageRGBA<ImageType>(this->Image);
this->ImagePixmapItem = this->Scene->addPixmap(QPixmap::fromImage(qimageImage));
this->graphicsView->fitInView(this->ImagePixmapItem);
Refresh();
}
开发者ID:blackball,项目名称:SuperPixelSegmentation,代码行数:15,代码来源:SuperPixelSegmentationGUI.cpp
示例6: main
int main(int argc, char *argv[])
{
// Verify arguments
if(argc != 5)
{
std::cerr << "Required arguments: image imageMask patchRadius output" << std::endl;
return EXIT_FAILURE;
}
// Parse arguments
std::string imageFilename = argv[1];
std::string maskFilename = argv[2];
std::stringstream ssPatchRadius;
ssPatchRadius << argv[3];
int patchRadius = 0;
ssPatchRadius >> patchRadius;
std::string outputFilename = argv[4];
// Output arguments
std::cout << "Reading image: " << imageFilename << std::endl;
std::cout << "Reading mask: " << maskFilename << std::endl;
std::cout << "Patch radius: " << patchRadius << std::endl;
std::cout << "Output: " << outputFilename << std::endl;
typedef itk::ImageFileReader< FloatVectorImageType > ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(imageFilename.c_str());
imageReader->Update();
typedef itk::ImageFileReader< Mask > MaskReaderType;
MaskReaderType::Pointer maskReader = MaskReaderType::New();
maskReader->SetFileName(maskFilename.c_str());
maskReader->Update();
CriminisiInpainting Inpainting;
Inpainting.SetPatchRadius(patchRadius);
Inpainting.SetDebug(false);
Inpainting.SetImage(imageReader->GetOutput());
Inpainting.SetMask(maskReader->GetOutput());
Inpainting.Inpaint();
Helpers::WriteImage<FloatVectorImageType>(Inpainting.GetResult(), outputFilename);
return EXIT_SUCCESS;
}
开发者ID:daviddoria,项目名称:CriminisiLidarInpainting,代码行数:47,代码来源:CriminisiInpaintingNonInteractive.cpp
示例7: PrintDeformationField
void QmitkBSplineRegistrationView::PrintDeformationField()
{
ImageReaderType::Pointer reader = ImageReaderType::New();
reader->SetFileName( m_Controls.m_DeformationField->text().toStdString() );
reader->Update();
DeformationFieldType::Pointer deformationField = reader->GetOutput();
typedef itk::ImageRegionIterator<DeformationFieldType> IteratorType;
IteratorType deformIter(deformationField, deformationField->GetRequestedRegion());
for(deformIter.GoToBegin(); !deformIter.IsAtEnd(); ++deformIter)
{
std::cout << deformIter.Get() << std::endl;
}
}
开发者ID:test-fd301,项目名称:MITK,代码行数:18,代码来源:QmitkBSplineRegistrationView.cpp
示例8: readBinaryImage
BinaryImageType::Pointer readBinaryImage(const std::string& filename) {
ImageReaderType::Pointer reader = ImageReaderType::New();
reader->SetFileName(filename.c_str());
reader->Update();
// we make sure that the image really has value 0 and 1
typedef itk::BinaryThresholdImageFilter<BinaryImageType, BinaryImageType> ThresholdFilterType;
ThresholdFilterType::Pointer thresholdFilter = ThresholdFilterType::New();
thresholdFilter->SetInsideValue(1);
thresholdFilter->SetOutsideValue(0);
thresholdFilter->SetLowerThreshold(1);
thresholdFilter->SetUpperThreshold(255);
thresholdFilter->SetInput(reader->GetOutput());
thresholdFilter->Update();
BinaryImageType::Pointer img = thresholdFilter->GetOutput();
img->DisconnectPipeline();
return img;
}
开发者ID:statismo,项目名称:shape-challenge-2014,代码行数:18,代码来源:utils.cpp
示例9: ReadFromImage
void Mask::ReadFromImage(const std::string& filename,
const HolePixelValueWrapper<TPixel>& holeValue,
const ValidPixelValueWrapper<TPixel>& validValue)
{
std::cout << "Reading mask from image: " << filename << std::endl;
// Ensure the input image can be interpreted as a mask.
unsigned int numberOfComponents = GetNumberOfComponentsPerPixelInFile( filename );
if(!(numberOfComponents == 1 || numberOfComponents == 3))
{
std::stringstream ss;
ss << "Number of components for a mask must be 1 or 3! (" << filename
<< " is " << numberOfComponents << ")";
throw std::runtime_error(ss.str());
}
// Read the image
typedef int ReadPixelType;
typedef itk::Image<ReadPixelType, 2> ImageType;
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(filename);
imageReader->Update();
this->SetRegions(imageReader->GetOutput()->GetLargestPossibleRegion());
this->Allocate();
CreateHolesFromValue(imageReader->GetOutput(),
static_cast<ReadPixelType>(holeValue.Value));
CreateValidPixelsFromValue(imageReader->GetOutput(),
static_cast<ReadPixelType>(validValue.Value));
}
开发者ID:badrobit,项目名称:RGBD-Inpainting,代码行数:33,代码来源:DepthMask.hpp
示例10: main
int main(int argc, char*argv[])
{
if(argc != 5)
{
std::cerr << "Required arguments: image mask kernelRadius output" << std::endl;
return EXIT_FAILURE;
}
std::string imageFilename = argv[1];
std::string maskFilename = argv[2];
std::stringstream ssRadius;
ssRadius << argv[3];
unsigned int kernelRadius = 0;
ssRadius >> kernelRadius;
std::string outputFilename = argv[4];
std::cout << "Reading image: " << imageFilename << std::endl;
std::cout << "Reading mask: " << maskFilename << std::endl;
std::cout << "Kernel radius: " << kernelRadius << std::endl;
std::cout << "Output: " << outputFilename << std::endl;
typedef itk::Image<float, 2> ImageType;
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(imageFilename.c_str());
imageReader->Update();
Mask::Pointer mask = Mask::New();
mask->Read(maskFilename.c_str());
MaskOperations::MedianFilterInHole(imageReader->GetOutput(), mask, kernelRadius);
OutputHelpers::WriteImage(imageReader->GetOutput(), outputFilename);
return EXIT_SUCCESS;
}
开发者ID:daviddoria,项目名称:MaskOperations,代码行数:39,代码来源:MedianFilterInHole.cpp
示例11: runtime_error
void ForegroundBackgroundSegmentMask::
ReadFromImage(const std::string& filename,
const ForegroundPixelValueWrapper<TPixel>& foregroundValue,
const BackgroundPixelValueWrapper<TPixel>& backgroundValue)
{
std::cout << "Reading mask from image: " << filename << std::endl;
// Ensure the input image can be interpreted as a mask.
unsigned int numberOfComponents =
ITKHelpers::GetNumberOfComponentsPerPixelInFile(filename);
if(!(numberOfComponents == 1 || numberOfComponents == 3))
{
std::stringstream ss;
ss << "Number of components for a mask must be 1 or 3! (" << filename
<< " is " << numberOfComponents << ")";
throw std::runtime_error(ss.str());
}
// Read the image
typedef int ReadPixelType;
typedef itk::Image<ReadPixelType, 2> ImageType;
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(filename);
imageReader->Update();
this->SetRegions(imageReader->GetOutput()->GetLargestPossibleRegion());
this->Allocate();
itk::ImageRegionConstIteratorWithIndex<ImageType>
imageIterator(imageReader->GetOutput(),
imageReader->GetOutput()->GetLargestPossibleRegion());
while(!imageIterator.IsAtEnd())
{
if(imageIterator.Get() == foregroundValue.Value)
{
this->SetPixel(imageIterator.GetIndex(),
ForegroundBackgroundSegmentMaskPixelTypeEnum::FOREGROUND);
}
else if(imageIterator.Get() == backgroundValue.Value)
{
this->SetPixel(imageIterator.GetIndex(),
ForegroundBackgroundSegmentMaskPixelTypeEnum::BACKGROUND);
}
else
{
std::cerr << "Warning: Pixels with value " << imageIterator.Get()
<< " found and is being ignored." << std::endl;
// std::cerr << "Warning: Pixels with values other than the specified foreground "
// "and background values exist in the image and are being ignored." << std::endl;
}
++imageIterator;
}
}
开发者ID:Tabshi,项目名称:Mask,代码行数:57,代码来源:ForegroundBackgroundSegmentMask.hpp
示例12: main
int main(int argc, char*argv[])
{
if(argc != 4)
{
std::cerr << "Required arguments: image mask output" << std::endl;
return EXIT_FAILURE;
}
std::string imageFilename = argv[1];
std::string maskFilename = argv[2];
std::string outputFilename = argv[3];
std::cout << "Reading image: " << imageFilename << std::endl;
std::cout << "Reading mask: " << maskFilename << std::endl;
std::cout << "Output: " << outputFilename << std::endl;
//typedef itk::Image<float, 2> ImageType;
//typedef itk::Image<itk::CovariantVector<unsigned char, 3>, 2> ImageType;
// ImageType::PixelType color;
// color[0] = 0;
// color[1] = 255;
// color[2] = 0;
typedef itk::VectorImage<float, 2> ImageType;
// ImageType::PixelType color;
// color.SetRed(0);
// color.SetGreen(255);
// color.SetBlue(0);
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(imageFilename.c_str());
imageReader->Update();
ImageType::PixelType value(imageReader->GetOutput()->GetNumberOfComponentsPerPixel());
value.Fill(0);
Mask::Pointer mask = Mask::New();
mask->Read(maskFilename.c_str());
mask->ApplyToImage(imageReader->GetOutput(), value);
OutputHelpers::WriteImage(imageReader->GetOutput(), outputFilename);
return EXIT_SUCCESS;
}
开发者ID:daviddoria,项目名称:MaskOperations,代码行数:49,代码来源:SetMaskedPixelsToValue.cpp
示例13: runtime_error
void StrokeMask::
ReadFromImage(const std::string& filename,
const TPixel& strokeValue)
{
std::cout << "Reading stroke mask from image: " << filename << std::endl;
// Ensure the input image can be interpreted as a mask.
unsigned int numberOfComponents =
ITKHelpers::GetNumberOfComponentsPerPixelInFile(filename);
if(!(numberOfComponents == 1 || numberOfComponents == 3))
{
std::stringstream ss;
ss << "Number of components for a mask must be 1 or 3! (" << filename
<< " is " << numberOfComponents << ")";
throw std::runtime_error(ss.str());
}
// Read the image
typedef int ReadPixelType;
typedef itk::Image<ReadPixelType, 2> ImageType;
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(filename);
imageReader->Update();
this->SetRegions(imageReader->GetOutput()->GetLargestPossibleRegion());
this->Allocate();
itk::ImageRegionConstIteratorWithIndex<ImageType>
imageIterator(imageReader->GetOutput(),
imageReader->GetOutput()->GetLargestPossibleRegion());
while(!imageIterator.IsAtEnd())
{
if(imageIterator.Get() == strokeValue)
{
this->SetPixel(imageIterator.GetIndex(),
StrokeMaskPixelTypeEnum::STROKE);
}
else
{
this->SetPixel(imageIterator.GetIndex(),
StrokeMaskPixelTypeEnum::NOTSTROKE);
}
++imageIterator;
}
}
开发者ID:Tabshi,项目名称:Mask,代码行数:48,代码来源:StrokeMask.hpp
示例14: main
int main(int argc, char *argv[])
{
if(argc != 3)
{
std::cerr << "Required arguments: image mask" << std::endl;
return EXIT_FAILURE;
}
std::string imageFilename = argv[1];
std::string maskFilename = argv[2];
std::cout << "Reading image: " << imageFilename << std::endl;
std::cout << "Reading mask: " << maskFilename << std::endl;
typedef itk::ImageFileReader<FloatVectorImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(imageFilename.c_str());
imageReader->Update();
typedef itk::ImageFileReader<Mask> MaskReaderType;
MaskReaderType::Pointer maskReader = MaskReaderType::New();
maskReader->SetFileName(maskFilename.c_str());
maskReader->Update();
std::shared_ptr<SelfPatchCompare> patchCompare(new SelfPatchCompare);
patchCompare->SetNumberOfComponentsPerPixel(imageReader->GetOutput()->GetNumberOfComponentsPerPixel());
//patchCompare->FunctionsToCompute.push_back(boost::bind(&SelfPatchCompare::SetPatchAverageAbsoluteSourceDifference,patchCompare,_1));
//patchCompare->FunctionsToCompute.push_back(boost::bind(&SelfPatchCompare::SetPatchColorDifference,patchCompare,_1));
patchCompare->FunctionsToCompute.push_back(boost::bind(&SelfPatchCompare::SetPatchDepthDifference,patchCompare.get(),_1));
//patchCompare->SetImage(imageReader->GetOutput());
//patchCompare->SetMask(maskReader->GetOutput());
PatchBasedInpainting inpainting;
inpainting.SetMask(maskReader->GetOutput());
inpainting.SetImage(imageReader->GetOutput());
//inpainting.PatchSortFunction = &SortByDepthDifference;
//inpainting.SetPatchCompare(patchCompare);
inpainting.Initialize();
inpainting.Iterate();
CandidatePairs candidatePairs = inpainting.GetPotentialCandidatePairs()[0];
//patchCompare->SetPairs(&candidatePairs);
//patchCompare->ComputeAllSourceDifferences();
WriteImageOfScores(candidatePairs, imageReader->GetOutput()->GetLargestPossibleRegion(), "ScoreImage_TargetPatch.mha");
return EXIT_SUCCESS;
}
开发者ID:daviddoria,项目名称:TempRepo,代码行数:45,代码来源:DemoColorImageByScore.cpp
示例15: main
// Run with: Data/trashcan.mha Data/trashcan_mask.mha 15 filled.mha
int main(int argc, char *argv[])
{
// Verify arguments
if(argc != 6)
{
std::cerr << "Required arguments: image.mha imageMask.mha patchHalfWidth neighborhoodRadius output.mha" << std::endl;
std::cerr << "Input arguments: ";
for(int i = 1; i < argc; ++i)
{
std::cerr << argv[i] << " ";
}
return EXIT_FAILURE;
}
// Parse arguments
std::string imageFileName = argv[1];
std::string maskFileName = argv[2];
std::stringstream ssPatchRadius;
ssPatchRadius << argv[3];
unsigned int patchHalfWidth = 0;
ssPatchRadius >> patchHalfWidth;
// The percent of the image size to use as the neighborhood (0 - 1)
std::stringstream ssNeighborhoodPercent;
ssNeighborhoodPercent << argv[4];
float neighborhoodPercent = 0;
ssNeighborhoodPercent >> neighborhoodPercent;
std::string outputFileName = argv[5];
// Output arguments
std::cout << "Reading image: " << imageFileName << std::endl;
std::cout << "Reading mask: " << maskFileName << std::endl;
std::cout << "Patch half width: " << patchHalfWidth << std::endl;
std::cout << "Neighborhood percent: " << neighborhoodPercent << std::endl;
std::cout << "Output: " << outputFileName << std::endl;
typedef itk::Image<itk::CovariantVector<int, 3>, 2> ImageType;
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(imageFileName);
imageReader->Update();
ImageType::Pointer image = ImageType::New();
ITKHelpers::DeepCopy(imageReader->GetOutput(), image.GetPointer());
Mask::Pointer mask = Mask::New();
mask->Read(maskFileName);
std::cout << "hole pixels: " << mask->CountHolePixels() << std::endl;
std::cout << "valid pixels: " << mask->CountValidPixels() << std::endl;
typedef ImagePatchPixelDescriptor<ImageType> ImagePatchPixelDescriptorType;
// Create the graph
typedef boost::grid_graph<2> VertexListGraphType;
boost::array<std::size_t, 2> graphSideLengths = { { imageReader->GetOutput()->GetLargestPossibleRegion().GetSize()[0],
imageReader->GetOutput()->GetLargestPossibleRegion().GetSize()[1] } };
// VertexListGraphType graph(graphSideLengths);
std::shared_ptr<VertexListGraphType> graph(new VertexListGraphType(graphSideLengths));
typedef boost::graph_traits<VertexListGraphType>::vertex_descriptor VertexDescriptorType;
//ImagePatchDescriptorMapType smallImagePatchDescriptorMap(num_vertices(graph), indexMap);
// Create the patch inpainter. The inpainter needs to know the status of each pixel to determine if they should be inpainted.
typedef PatchInpainter<ImageType> ImageInpainterType;
std::shared_ptr<ImageInpainterType> imagePatchInpainter(new
ImageInpainterType(patchHalfWidth, image, mask));
// Create the priority function
typedef PriorityRandom PriorityType;
std::shared_ptr<PriorityType> priorityFunction(new PriorityType);
// typedef PriorityCriminisi<ImageType> PriorityType;
// std::shared_ptr<PriorityType> priorityFunction(new PriorityType(image, mask, patchHalfWidth));
typedef IndirectPriorityQueue<VertexListGraphType> BoundaryNodeQueueType;
std::shared_ptr<BoundaryNodeQueueType> boundaryNodeQueue(new BoundaryNodeQueueType(*graph));
// Create the descriptor map. This is where the data for each pixel is stored.
typedef boost::vector_property_map<ImagePatchPixelDescriptorType, BoundaryNodeQueueType::IndexMapType> ImagePatchDescriptorMapType;
// ImagePatchDescriptorMapType imagePatchDescriptorMap(num_vertices(graph), indexMap);
std::shared_ptr<ImagePatchDescriptorMapType> imagePatchDescriptorMap(new
ImagePatchDescriptorMapType(num_vertices(*graph), *(boundaryNodeQueue->GetIndexMap())));
// Create the descriptor visitor
typedef ImagePatchDescriptorVisitor<VertexListGraphType, ImageType, ImagePatchDescriptorMapType>
ImagePatchDescriptorVisitorType;
// ImagePatchDescriptorVisitorType imagePatchDescriptorVisitor(image, mask, imagePatchDescriptorMap, patchHalfWidth);
std::shared_ptr<ImagePatchDescriptorVisitorType> imagePatchDescriptorVisitor(new
ImagePatchDescriptorVisitorType(image.GetPointer(), mask,
imagePatchDescriptorMap, patchHalfWidth));
/* ImagePatchDescriptorVisitor(TImage* const in_image, Mask* const in_mask,
std::shared_ptr<TDescriptorMap> in_descriptorMap,
const unsigned int in_half_width) : */
typedef ImagePatchDifference<ImagePatchPixelDescriptorType, SumAbsolutePixelDifference<ImageType::PixelType> >
//.........这里部分代码省略.........
开发者ID:SXYJerry,项目名称:PatchBasedInpainting,代码行数:101,代码来源:InpaintingWithLocalSearch.cpp
示例16: main
// Run with: Data/trashcan.mha Data/trashcan_mask.mha 15 filled.mha
int main(int argc, char *argv[])
{
// Verify arguments
if(argc != 5)
{
std::cerr << "Required arguments: image.mha imageMask.mha patchHalfWidth output.mha" << std::endl;
std::cerr << "Input arguments: ";
for(int i = 1; i < argc; ++i)
{
std::cerr << argv[i] << " ";
}
return EXIT_FAILURE;
}
// Setup the GUI system
QApplication app( argc, argv );
// Parse arguments
std::string imageFilename = argv[1];
std::string maskFilename = argv[2];
std::stringstream ssPatchRadius;
ssPatchRadius << argv[3];
unsigned int patchHalfWidth = 0;
ssPatchRadius >> patchHalfWidth;
std::string outputFilename = argv[4];
// Output arguments
std::cout << "Reading image: " << imageFilename << std::endl;
std::cout << "Reading mask: " << maskFilename << std::endl;
std::cout << "Patch half width: " << patchHalfWidth << std::endl;
std::cout << "Output: " << outputFilename << std::endl;
typedef FloatVectorImageType ImageType;
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(imageFilename);
imageReader->Update();
ImageType* image = imageReader->GetOutput();
itk::ImageRegion<2> fullRegion = imageReader->GetOutput()->GetLargestPossibleRegion();
Mask::Pointer mask = Mask::New();
mask->Read(maskFilename);
std::cout << "hole pixels: " << mask->CountHolePixels() << std::endl;
std::cout << "valid pixels: " << mask->CountValidPixels() << std::endl;
std::cout << "image has " << image->GetNumberOfComponentsPerPixel() << " components." << std::endl;
typedef ImagePatchPixelDescriptor<ImageType> ImagePatchPixelDescriptorType;
// Create the graph
typedef boost::grid_graph<2> VertexListGraphType;
boost::array<std::size_t, 2> graphSideLengths = { { fullRegion.GetSize()[0],
fullRegion.GetSize()[1] } };
VertexListGraphType graph(graphSideLengths);
typedef boost::graph_traits<VertexListGraphType>::vertex_descriptor VertexDescriptorType;
// Get the index map
typedef boost::property_map<VertexListGraphType, boost::vertex_index_t>::const_type IndexMapType;
IndexMapType indexMap(get(boost::vertex_index, graph));
// Create the priority map
typedef boost::vector_property_map<float, IndexMapType> PriorityMapType;
PriorityMapType priorityMap(num_vertices(graph), indexMap);
// Create the boundary status map. A node is on the current boundary if this property is true.
// This property helps the boundaryNodeQueue because we can mark here if a node has become no longer
// part of the boundary, so when the queue is popped we can check this property to see if it should
// actually be processed.
typedef boost::vector_property_map<bool, IndexMapType> BoundaryStatusMapType;
BoundaryStatusMapType boundaryStatusMap(num_vertices(graph), indexMap);
// Create the descriptor map. This is where the data for each pixel is stored.
typedef boost::vector_property_map<ImagePatchPixelDescriptorType, IndexMapType> ImagePatchDescriptorMapType;
ImagePatchDescriptorMapType imagePatchDescriptorMap(num_vertices(graph), indexMap);
//ImagePatchDescriptorMapType smallImagePatchDescriptorMap(num_vertices(graph), indexMap);
// Create the patch inpainter. The inpainter needs to know the status of each
// pixel to determine if they should be inpainted.
typedef MaskImagePatchInpainter InpainterType;
MaskImagePatchInpainter patchInpainter(patchHalfWidth, mask);
// Create the priority function
// typedef PriorityRandom PriorityType;
// PriorityType priorityFunction;
typedef PriorityOnionPeel PriorityType;
PriorityType priorityFunction(mask, patchHalfWidth);
// Create the boundary node queue. The priority of each node is used to order the queue.
typedef boost::vector_property_map<std::size_t, IndexMapType> IndexInHeapMap;
IndexInHeapMap index_in_heap(indexMap);
// Create the priority compare functor (we want the highest priority nodes to be first in the queue)
typedef std::greater<float> PriorityCompareType;
//.........这里部分代码省略.........
开发者ID:SXYJerry,项目名称:PatchBasedInpainting,代码行数:101,代码来源:InpaintingAutomatic.cpp
示例17: main
int main(int argc, char*argv[])
{
if(argc != 6)
{
std::cerr << "Required arguments: image output R G B" << std::endl;
return EXIT_FAILURE;
}
std::vector<int> values(3,0);
std::stringstream ss;
unsigned int counter = 0;
for(int i = 3; i < argc; ++i)
{
ss << argv[i] << " ";
counter++;
}
for(int i = 0; i < 3; ++i)
{
ss >> values[i];
}
// itk::RGBPixel<unsigned char> color;
// color.SetRed(values[0]);
// color.SetGreen(values[1]);
// color.SetBlue(values[2]);
Color color;
color.r = values[0];
color.g = values[1];
color.b = values[2];
std::string imageFilename = argv[1];
std::string outputMaskFilename = argv[2];
std::cout << "Reading image: " << imageFilename << std::endl;
std::cout << "outputMaskFilename: " << outputMaskFilename << std::endl;
std::cout << "Color: " << static_cast<int>(values[0]) << " " << static_cast<int>(values[1]) << " " << static_cast<int>(values[2]) << std::endl;
//typedef itk::Image<float, 2> ImageType;
typedef itk::Image<itk::CovariantVector<unsigned char, 3>, 2> ImageType;
ImageType::PixelType pixelColor;
pixelColor[0] = color.r;
pixelColor[1] = color.g;
pixelColor[2] = color.b;
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(imageFilename.c_str());
imageReader->Update();
Mask::Pointer mask = Mask::New();
mask->SetRegions(imageReader->GetOutput()->GetLargestPossibleRegion());
mask->Allocate();
mask->CreateFromImage(imageReader->GetOutput(), pixelColor);
OutputHelpers::WriteImage(mask.GetPointer(), outputMaskFilename);
return EXIT_SUCCESS;
}
开发者ID:daviddoria,项目名称:MaskOperations,代码行数:62,代码来源:CreateMaskFromImage.cpp
示例18: main
int main(int argc, char*argv[])
{
// Parse the input
if(argc < 6)
{
std::cerr << "Required arguments: image sourceMask.mask targetMask.mask patchRadius output" << std::endl;
return EXIT_FAILURE;
}
std::stringstream ss;
for(int i = 1; i < argc; ++i)
{
ss << argv[i] << " ";
}
std::string imageFilename;
std::string sourceMaskFilename;
std::string targetMaskFilename;
unsigned int patchRadius;
std::string outputFilename;
ss >> imageFilename >> sourceMaskFilename >> targetMaskFilename >> patchRadius >> outputFilename;
// Output the parsed values
std::cout << "imageFilename: " << imageFilename << std::endl
<< "sourceMaskFilename: " << sourceMaskFilename << std::endl
<< "targetMaskFilename: " << targetMaskFilename << std::endl
<< "patchRadius: " << patchRadius << std::endl
<< "outputFilename: " << outputFilename << std::endl;
typedef itk::Image<itk::CovariantVector<unsigned char, 3>, 2> ImageType;
// Read the image and the masks
typedef itk::ImageFileReader<ImageType> ImageReaderType;
ImageReaderType::Pointer imageReader = ImageReaderType::New();
imageReader->SetFileName(imageFilename);
imageReader->Update();
ImageType* image = imageReader->GetOutput();
Mask::Pointer sourceMask = Mask::New();
sourceMask->Read(sourceMaskFilename);
Mask::Pointer targetMask = Mask::New();
targetMask->Read(targetMaskFilename);
// Poisson fill the input image in HSV space
typedef itk::Image<itk::CovariantVector<float, 3>, 2> HSVImageType;
HSVImageType::Pointer hsvImage = HSVImageType::New();
ITKVTKHelpers::ConvertRGBtoHSV(image, hsvImage.GetPointer());
ITKHelpers::WriteImage(image, "HSV.mha");
typedef PoissonEditing<typename TypeTraits<HSVImageType::PixelType>::ComponentType> PoissonEditingType;
typename PoissonEditingType::GuidanceFieldType::Pointer zeroGuidanceField =
PoissonEditingType::GuidanceFieldType::New();
zeroGuidanceField->SetRegions(hsvImage->GetLargestPossibleRegion());
zeroGuidanceField->Allocate();
typename PoissonEditingType::GuidanceFieldType::PixelType zeroPixel;
zeroPixel.Fill(0);
ITKHelpers::SetImageToConstant(zeroGuidanceField.GetPointer(), zeroPixel);
PoissonEditingType::FillImage(hsvImage.GetPointer(), targetMask,
zeroGuidanceField.GetPointer(), hsvImage.GetPointer());
ITKHelpers::WriteImage(image, "PoissonFilled_HSV.mha");
ITKVTKHelpers::ConvertHSVtoRGB(hsvImage.GetPointer(), image);
ITKHelpers::WriteRGBImage(image, "PoissonFilled_HSV.png");
// PatchMatch requires that the target region be specified by valid pixels
targetMask->InvertData();
// Here, the source mask and target mask are the same, specifying the classicial
// "use pixels outside the hole to fill the pixels inside the hole".
// In an interactive algorith, the user could manually specify a source region,
// improving the resulting inpainting.
BDSInpaintingRings<ImageType> bdsInpainting;
bdsInpainting.SetPatchRadius(patchRadius);
bdsInpainting.SetImage(image);
bdsInpainting.SetSourceMask(sourceMask);
bdsInpainting.SetTargetMask(targetMask);
bdsInpainting.SetIterations(1);
//bdsInpainting.SetIterations(4);
Compositor<ImageType, PixelCompositorAverage> compositor;
bdsInpainting.Inpaint();
ITKHelpers::WriteRGBImage(bdsInpainting.GetOutput(), outputFilename);
return EXIT_SUCCESS;
}
开发者ID:daviddoria,项目名称:BDSInpainting,代码行数:95,代码来源:BDSInpaintingRings.cpp
示例19: main
int main(int argc, char* argv[])
{
// Verify arguments
if(argc < 5)
{
std::cout << "Usage: PatchImage repeatX repeatY outputImage" << std::endl;
return EXIT_FAILURE;
}
// Parse arguments
std::string patchImageFilename = argv[1];
std::stringstream ssRepeatX;
ssRepeatX << argv[2];
unsigned int repeatX = 0;
ssRepeatX >> repeatX;
std::stringstream ssRepeatY;
ssRepeatY << argv[3];
unsigned int repeatY = 0;
ssRepeatY >> repeatY;
std::string outputFilename = argv[4];
// Output arguments
std::cout << &qu
|
请发表评论