SimpleITK  
HelloWorld/HelloWorld.cxx
/*=========================================================================
*
* Copyright NumFOCUS
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
// This one header will include all SimpleITK filters and external
// objects.
#include <SimpleITK.h>
#include <iostream>
#include <stdlib.h>
// create convenient namespace alias
namespace sitk = itk::simple;
int
main(int argc, char * argv[])
{
sitk::PixelIDValueEnum pixelType = sitk::sitkUInt8;
std::vector<unsigned int> imageSize(2, 128);
// Create an image
sitk::Image image(imageSize, pixelType);
// Create a face image
std::vector<double> faceSize(2, 64.0);
std::vector<double> faceCenter(2, 64.0);
;
sitk::Image face = sitk::GaussianSource(pixelType, imageSize, faceSize, faceCenter);
// Create eye images
std::vector<double> eyeSize(2, 5.0);
std::vector<double> eye1Center(2, 48.0);
std::vector<double> eye2Center = { 80.0, 48.0 };
sitk::Image eye1 = sitk::GaussianSource(pixelType, imageSize, eyeSize, eye1Center, 150);
sitk::Image eye2 = sitk::GaussianSource(pixelType, imageSize, eyeSize, eye2Center, 150);
// Apply the eyes to the face
face = face - eye1 - eye2;
face = sitk::BinaryThreshold(face, 200, 255, 255);
// Create the mouth
std::vector<double> mouthRadii = { 30.0, 20.0 };
std::vector<double> mouthCenter = { 64.0, 76.0 };
sitk::Image mouth =
255 - sitk::BinaryThreshold(sitk::GaussianSource(pixelType, imageSize, mouthRadii, mouthCenter), 200, 255, 255);
// Paste the mouth onto the face
std::vector<unsigned int> mouthSize = { 64, 18 };
std::vector<int> mouthLoc = { 32, 76 };
face = sitk::Paste(face, mouth, mouthSize, mouthLoc, mouthLoc);
// Apply the face to the original image
image = image + face;
// Display the results
if (getenv("SITK_NOSHOW") == NULL)
sitk::Show(image, "Hello World: C++", true);
}
itk::simple::Image
The Image class for SimpleITK.
Definition: sitkImage.h:76
itk::simple::GaussianSource
Image GaussianSource(PixelIDValueEnum outputPixelType=itk::simple::sitkFloat32, std::vector< unsigned int > size=std::vector< unsigned int >(3, 64), std::vector< double > sigma=std::vector< double >(3, 16.0), std::vector< double > mean=std::vector< double >(3, 32.0), double scale=255, std::vector< double > origin=std::vector< double >(3, 0.0), std::vector< double > spacing=std::vector< double >(3, 1.0), std::vector< double > direction=std::vector< double >(), bool normalized=false)
Generate an n-dimensional image of a Gaussian.
itk::simple::Show
void SITKIO_EXPORT Show(const Image &image, const std::string &title="", const bool debugOn=ProcessObject::GetGlobalDefaultDebug())
SimpleITK.h
itk::simple::PixelIDValueEnum
PixelIDValueEnum
Enumerated values of pixelIDs.
Definition: sitkPixelIDValues.h:100
itk::simple::Paste
Image Paste(Image &&destinationImage, const Image &sourceImage, std::vector< unsigned int > sourceSize=std::vector< unsigned int >(SITK_MAX_DIMENSION, 1), std::vector< int > sourceIndex=std::vector< int >(SITK_MAX_DIMENSION, 0), std::vector< int > destinationIndex=std::vector< int >(SITK_MAX_DIMENSION, 0), std::vector< bool > DestinationSkipAxes=std::vector< bool >())
Paste an image into another image.
sitkImageOperators.h
itk::simple
Definition: sitkAdditionalProcedures.h:28
itk::simple::BinaryThreshold
Image BinaryThreshold(Image &&image1, double lowerThreshold=0.0, double upperThreshold=255.0, uint8_t insideValue=1u, uint8_t outsideValue=0u)
Binarize an input image by thresholding.