16 #include <itkImageRegionConstIterator.h> 17 #include <itkImageRegionIterator.h> 20 int main(
int argc,
char* argv[])
24 typedef ImageType::Pointer ImagePointerType;
25 typedef MaskImageType::Pointer MaskImagePointerType;
27 typedef itk::ImageRegionConstIterator<ImageType> ConstIteratorType;
28 typedef itk::ImageRegionConstIterator<MaskImageType> ConstMaskIteratorType;
29 typedef itk::ImageRegionIterator<ImageType> IteratorType;
30 typedef itk::ImageRegionIterator<MaskImageType> MaskIteratorType;
34 parser.
setTitle(
"Remove empty voxels Sampling");
45 for (
int i = 0; i < 100; ++i)
47 std::stringstream s1; s1 << i; std::string number = s1.str();
52 std::map<std::string, us::Any> parsedArgs = parser.
parseArguments(argc, argv);
54 if (parsedArgs.size() == 0)
58 if (parsedArgs.count(
"help") || parsedArgs.count(
"h"))
66 MaskImagePointerType itkMask = MaskImageType::New();
68 ConstMaskIteratorType maskIter(itkMask, itkMask->GetLargestPossibleRegion());
69 std::size_t nonZero = 0;
70 while (!maskIter.IsAtEnd())
72 if (maskIter.Value() > 0)
81 auto mitkNewMask = mitk::ImageGenerator::GenerateGradientImage<unsigned char>(nonZero, 1, 1, 1, 1, 1);
82 MaskImagePointerType itkNewMask = MaskImageType::New();
84 MaskIteratorType newMaskIter(itkNewMask, itkNewMask->GetLargestPossibleRegion());
87 std::vector<mitk::Image::Pointer> mitkImagesVector;
88 std::vector<ImagePointerType> itkImageVector;
89 std::vector<ImagePointerType> itkOutputImageVector;
90 std::vector<ConstIteratorType> inputIteratorVector;
91 std::vector<IteratorType> outputIteratorVector;
92 for (
int i = 0; i < 100; ++i)
94 std::stringstream s1; s1 << i; std::string number = s1.str();
95 if (parsedArgs.count(
"input" + number) < 1)
97 if (parsedArgs.count(
"output" + number) < 1)
101 mitkImagesVector.push_back(image);
103 ImagePointerType itkImage = ImageType::New();
105 itkImageVector.push_back(itkImage);
107 ConstIteratorType iter(itkImage, itkImage->GetLargestPossibleRegion());
108 inputIteratorVector.push_back(iter);
110 auto mitkNewImage = mitk::ImageGenerator::GenerateGradientImage<double>(nonZero, 1, 1, 1, 1, 1);
111 ImagePointerType itkNewOutput = ImageType::New();
113 IteratorType outputIter(itkNewOutput, itkNewOutput->GetLargestPossibleRegion());
114 itkOutputImageVector.push_back(itkNewOutput);
115 outputIteratorVector.push_back(outputIter);
119 while (!maskIter.IsAtEnd())
121 if (maskIter.Value() > 0)
123 newMaskIter.Set(maskIter.Value());
125 for (std::size_t i = 0; i < outputIteratorVector.size(); ++i)
127 outputIteratorVector[i].Set(inputIteratorVector[i].Value());
128 ++(outputIteratorVector[i]);
132 for (std::size_t i = 0; i < inputIteratorVector.size(); ++i)
134 ++(inputIteratorVector[i]);
140 for (std::size_t i = 0; i < outputIteratorVector.size(); ++i)
142 std::stringstream s1; s1 << i; std::string number = s1.str();
itk::Image< unsigned char, 3 > ImageType
void setContributor(std::string contributor)
void addArgument(const std::string &longarg, const std::string &shortarg, Type type, const std::string &argLabel, const std::string &argHelp=std::string(), const us::Any &defaultValue=us::Any(), bool optional=true, bool ignoreRest=false, bool deprecated=false, mitkCommandLineParser::Channel channel=mitkCommandLineParser::Channel::None)
std::map< std::string, us::Any > parseArguments(const StringContainerType &arguments, bool *ok=nullptr)
itk::Image< unsigned char, 3 > MaskImageType
std::string helpText() const
void setCategory(std::string category)
mitk::Image::Pointer image
void setArgumentPrefix(const std::string &longPrefix, const std::string &shortPrefix)
void CastToMitkImage(const itk::SmartPointer< ItkOutputImageType > &itkimage, itk::SmartPointer< mitk::Image > &mitkoutputimage)
Cast an itk::Image (with a specific type) to an mitk::Image.
void MITKCORE_EXPORT CastToItkImage(const mitk::Image *mitkImage, itk::SmartPointer< ItkOutputImageType > &itkOutputImage)
Cast an mitk::Image to an itk::Image with a specific type.
static void Save(const mitk::BaseData *data, const std::string &path, bool setPathProperty=false)
Save a mitk::BaseData instance.
mitk::Image::Pointer mask
void setTitle(std::string title)
int main(int argc, char *argv[])
void setDescription(std::string description)