本文整理汇总了C++中typenameimagetype::Pointer类的典型用法代码示例。如果您正苦于以下问题:C++ Pointer类的具体用法?C++ Pointer怎么用?C++ Pointer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Pointer类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: GetVoxelSpaceToRASPhysicalSpaceMatrix
TransformMatrixType GetVoxelSpaceToRASPhysicalSpaceMatrix(typename ImageType::Pointer image)
{
// Generate intermediate terms
vnl_matrix<double> m_dir, m_ras_matrix;
vnl_diag_matrix<double> m_scale, m_lps_to_ras;
vnl_vector<double> v_origin, v_ras_offset;
// Compute the matrix
m_dir = image->GetDirection().GetVnlMatrix();
m_scale.set(image->GetSpacing().GetVnlVector());
m_lps_to_ras.set(vnl_vector<double>(ImageType::ImageDimension, 1.0));
m_lps_to_ras[0] = -1;
m_lps_to_ras[1] = -1;
m_ras_matrix = m_lps_to_ras * m_dir * m_scale;
// Compute the vector
v_origin = image->GetOrigin().GetVnlVector();
v_ras_offset = m_lps_to_ras * v_origin;
// Create the larger matrix
TransformMatrixType mat;
vnl_vector<double> vcol(ImageType::ImageDimension+1, 1.0);
vcol.update(v_ras_offset);
mat.SetIdentity();
mat.GetVnlMatrix().update(m_ras_matrix);
mat.GetVnlMatrix().set_column(ImageType::ImageDimension, vcol);
return mat;
}
开发者ID:Tokazama,项目名称:ANTsR,代码行数:29,代码来源:fsl2antsrTransform.cpp
示例2: maskIterator
void StrokeMask::
Write(const std::string& filename,
const TPixel& strokeValue)
{
typedef itk::Image<TPixel, 2> ImageType;
typename ImageType::Pointer image = ImageType::New();
image->SetRegions(this->GetLargestPossibleRegion());
image->Allocate();
itk::ImageRegionConstIteratorWithIndex<StrokeMask>
maskIterator(this,
this->GetLargestPossibleRegion());
while(!maskIterator.IsAtEnd())
{
if(maskIterator.Get() == StrokeMaskPixelTypeEnum::STROKE)
{
image->SetPixel(maskIterator.GetIndex(),
strokeValue);
}
else
{
image->SetPixel(maskIterator.GetIndex(), itk::NumericTraits<TPixel>::Zero);
}
++maskIterator;
}
typedef itk::ImageFileWriter<ImageType> WriterType;
typename WriterType::Pointer writer = WriterType::New();
writer->SetFileName(filename);
writer->SetInput(image);
writer->Update();
}
开发者ID:Tabshi,项目名称:Mask,代码行数:35,代码来源:StrokeMask.hpp
示例3: testBackCasting
int testBackCasting(mitk::Image* imgMem, typename ImageType::Pointer & itkImage, bool disconnectAfterImport)
{
int result;
if(itkImage.IsNull())
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
int *p = (int*)itkImage->GetBufferPointer();
if(p==NULL)
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Testing mitk::CastToMitkImage: " << std::flush;
mitk::Image::Pointer mitkImage = mitk::Image::New();
mitk::CastToMitkImage( itkImage, mitkImage );
std::cout<<"[PASSED]"<<std::endl;
result = compareGeometries(imgMem->GetGeometry(), mitkImage->GetGeometry());
if(result != EXIT_SUCCESS)
return result;
std::cout << "Testing whether data after mitk::CastToMitkImage is available: " << std::flush;
if(mitkImage->IsChannelSet()==false)
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Testing mitk::ImportItkImage: " << std::flush;
mitkImage = mitk::ImportItkImage(itkImage);
std::cout<<"[PASSED]"<<std::endl;
if(disconnectAfterImport)
{
std::cout << "Testing DisconnectPipeline() on mitk::Image into which was imported : " << std::flush;
mitkImage->DisconnectPipeline();
std::cout<<"[PASSED]"<<std::endl;
}
result = compareGeometries(imgMem->GetGeometry(), mitkImage->GetGeometry());
if(result != EXIT_SUCCESS)
return result;
std::cout << "Testing whether data after mitk::ImportItkImage is available: " << std::flush;
if(mitkImage->IsChannelSet()==false)
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
return EXIT_SUCCESS;
}
开发者ID:david-guerrero,项目名称:MITK,代码行数:59,代码来源:mitkImageToItkTest.cpp
示例4: operator
void operator()(Parameters& params)
{
typedef typename ::itk::Image< PIXELTYPE, 3 > ImageType;
const typename ImageType::Pointer itkImage = ::fwItkIO::itkImageFactory< ImageType >(params.i_image);
typename ::itk::ResampleImageFilter<ImageType, ImageType>::Pointer resampler =
::itk::ResampleImageFilter<ImageType, ImageType>::New();
typename ::itk::MinimumMaximumImageCalculator< ImageType >::Pointer minCalculator =
::itk::MinimumMaximumImageCalculator< ImageType >::New();
minCalculator->SetImage(itkImage);
minCalculator->ComputeMinimum();
resampler->SetDefaultPixelValue(minCalculator->GetMinimum());
resampler->SetTransform(params.i_trf.GetPointer());
resampler->SetInput(itkImage);
typename ImageType::SizeType size = itkImage->GetLargestPossibleRegion().GetSize();
typename ImageType::PointType origin = itkImage->GetOrigin();
typename ImageType::SpacingType spacing = itkImage->GetSpacing();
typename ImageType::DirectionType direction = itkImage->GetDirection();
SLM_ASSERT("Input spacing can't be null along any axis", spacing[0] > 0 && spacing[1] > 0 && spacing[2] > 0);
if(params.i_targetImage)
{
for(std::uint8_t i = 0; i < 3; ++i)
{
// ITK uses unsigned long to store sizes.
size[i] = static_cast<typename ImageType::SizeType::SizeValueType>(params.i_targetImage->getSize()[i]);
origin[i] = params.i_targetImage->getOrigin()[i];
spacing[i] = params.i_targetImage->getSpacing()[i];
SLM_ASSERT("Output spacing can't be null along any axis.", spacing[i] > 0);
}
}
resampler->SetSize(size);
resampler->SetOutputOrigin(origin);
resampler->SetOutputDirection(direction);
resampler->SetOutputSpacing(spacing);
resampler->Update();
typename ImageType::Pointer outputImage = resampler->GetOutput();
::fwItkIO::itkImageToFwDataImage(outputImage, params.o_image);
}
开发者ID:fw4spl-org,项目名称:fw4spl-ext,代码行数:50,代码来源:Resampler.cpp
示例5: convolveImageHelper
typename ImageType::Pointer convolveImageHelper(
typename ImageType::Pointer image,
typename ImageType::Pointer kernel )
{
enum { Dimension = ImageType::ImageDimension };
if( image.IsNotNull() & kernel.IsNotNull() )
{
typedef itk::ConvolutionImageFilter<ImageType> FilterType;
typename FilterType::Pointer convolutionFilter = FilterType::New();
convolutionFilter->SetInput( image );
convolutionFilter->SetKernelImage( kernel );
convolutionFilter->Update();
return convolutionFilter->GetOutput();
}
return NULL;
}
开发者ID:BrysonBR,项目名称:ANTsR,代码行数:16,代码来源:invariantImageSimilarity.cpp
示例6: addPaddingItk
void WorkbenchUtils::addPaddingItk(itk::Image <PixelType, ImageDimension> *itkImage, Axis axis, bool append,
int numberOfSlices, float pixelValue, Image::Pointer outImage) {
// pixel type is templated. The input field for the value is set to float, so the user might enter some invalid values for the image type at hand.
// since all primitive built-in types have well defined casting behaviour between each other, we'll just do a typecast. we will clip the entered
// value at PixelTypes min/max to prevent an overflow. The possible loss of precision is ignored.
float lower = itk::NumericTraits<PixelType>::min();
float upper = itk::NumericTraits<PixelType>::max();
float clippedPixelValue = std::max(lower, std::min(pixelValue, upper));
PixelType paddingPixelValue = (PixelType) clippedPixelValue;
typedef itk::Image <PixelType, ImageDimension> ImageType;
// gather all data
typename ImageType::SizeType lowerBound;
typename ImageType::SizeType upperBound;
lowerBound.Fill(0);
upperBound.Fill(0);
unsigned int itkAxis = convertToItkAxis(axis);
if (append) {
upperBound[itkAxis] = numberOfSlices;
} else {
lowerBound[itkAxis] = numberOfSlices;
}
// setup the filter
typedef itk::ConstantPadImageFilter <ImageType, ImageType> PadFilterType;
typename PadFilterType::Pointer padFilter = PadFilterType::New();
padFilter->SetInput(itkImage);
padFilter->SetConstant(paddingPixelValue);
padFilter->SetPadLowerBound(lowerBound);
padFilter->SetPadUpperBound(upperBound);
padFilter->UpdateLargestPossibleRegion();
// Update the origin, since padding creates negative index that is lost when returned to MITK
typename ImageType::Pointer paddedImage = padFilter->GetOutput();
typename ImageType::RegionType paddedImageRegion = paddedImage->GetLargestPossibleRegion();
typename ImageType::PointType origin;
paddedImage->TransformIndexToPhysicalPoint(paddedImageRegion.GetIndex(), origin);
paddedImage->SetOrigin(origin);
// get the results and cast them back to mitk. return via out parameter.
outImage->InitializeByItk(paddedImage.GetPointer());
CastToMitkImage(paddedImage, outImage);
}
开发者ID:wennsbray,项目名称:mitk-gem,代码行数:46,代码来源:WorkbenchUtils.cpp
示例7: update
template <class ImagePixelType, class MaskPixelType> int update()
{
typedef itk::Image<ImagePixelType, 3> ImageType;
typedef itk::Image<MaskPixelType, 3> MaskType;
if ( !input ||!input->data() || !mask ||!mask->data())
return EXIT_FAILURE;
typedef itk::MaskImageFilter< ImageType, MaskType> MaskFilterType;
typename MaskFilterType::Pointer maskFilter = MaskFilterType::New();
typename ImageType::Pointer imgInput = dynamic_cast<ImageType *> ( ( itk::Object* ) ( input->data() )) ;
typename MaskType::Pointer maskInput = dynamic_cast<MaskType *> ( ( itk::Object* ) ( mask->data() )) ;
try
{
maskInput->SetOrigin(imgInput->GetOrigin());
maskInput->SetSpacing(imgInput->GetSpacing());
maskFilter->SetInput(imgInput);
maskFilter->SetMaskingValue(maskBackgroundValue);
maskFilter->SetMaskImage(maskInput);
//Outside values set to the lowest reachable value
typedef itk::MinimumMaximumImageCalculator <ImageType> ImageCalculatorFilterType;
typename ImageCalculatorFilterType::Pointer imageCalculatorFilter
= ImageCalculatorFilterType::New ();
imageCalculatorFilter->SetImage(imgInput);
imageCalculatorFilter->ComputeMinimum();
maskFilter->SetOutsideValue(std::min(double(imageCalculatorFilter->GetMinimum()), 0.0));
maskFilter->Update();
output->setData(maskFilter->GetOutput());
}
catch( itk::ExceptionObject & err )
{
std::cerr << "ExceptionObject caught in medMaskApplication!" << std::endl;
std::cerr << err << std::endl;
return EXIT_FAILURE;
}
medUtilities::setDerivedMetaData(output, input, "masked");
return EXIT_SUCCESS;
}
开发者ID:LoicCadour,项目名称:medInria-public,代码行数:45,代码来源:medMaskApplication.cpp
示例8: memcpy
Image::Pointer mitk::OpenCVToMitkImageFilter::ConvertIplToMitkImage( const IplImage * input )
{
typedef itk::Image< TPixel, VImageDimension > ImageType;
typename ImageType::Pointer output = ImageType::New();
typename ImageType::RegionType region;
typename ImageType::RegionType::SizeType size;
typename ImageType::RegionType::IndexType index;
typename ImageType::SpacingType spacing;
size.Fill( 1 );
size[0] = input->width;
size[1] = input->height;
index.Fill(0);
spacing.Fill(1);
region.SetSize(size);
region.SetIndex(index);
output->SetRegions(region);
output->SetSpacing(spacing);
output->Allocate();
// CAVE: The itk openCV bridge seem to NOT correctly copy the image data, hence the call to
// itk::OpenCVImageBridge::IplImageToITKImage<ImageType>() is simply used to initialize the itk image
// and in the next step the image data are copied by hand!
if(input->nChannels == 3) // these are RGB images and need to be set to BGR before conversion!
{
output = itk::OpenCVImageBridge::IplImageToITKImage<ImageType>(input);
}
else
{
memcpy((void*) output->GetBufferPointer(), (void*) input->imageDataOrigin,
input->width*input->height*sizeof(TPixel));
}
Image::Pointer mitkImage = Image::New();
mitkImage = GrabItkImageMemory(output);
return mitkImage;
}
开发者ID:GHfangxin,项目名称:MITK,代码行数:39,代码来源:mitkOpenCVToMitkImageFilter.cpp
示例9: addNeighborhoodToImageHelper
SEXP addNeighborhoodToImageHelper(
SEXP r_antsimage,
SEXP r_center,
SEXP r_rad,
SEXP r_vec)
{
typedef typename ImageType::Pointer ImagePointerType;
const unsigned int ImageDimension = ImageType::ImageDimension;
typedef float PixelType;
typename ImageType::Pointer image =
Rcpp::as< ImagePointerType >( r_antsimage );
Rcpp::NumericVector center( r_center );
Rcpp::NumericVector rad( r_rad );
Rcpp::NumericVector intvec( r_vec );
if ( center.size() != ImageDimension )
Rcpp::stop("addNeighborhoodToImageHelper dim error.");
typename itk::NeighborhoodIterator<ImageType>::SizeType nSize;
typename ImageType::IndexType ind;
ind.Fill( 0 );
for ( unsigned int i=0; i<ImageDimension; i++ )
{
nSize[i] = rad[i];
ind[i] = center[i]; // R coords to ITK
}
itk::NeighborhoodIterator<ImageType> nit( nSize, image,
image->GetLargestPossibleRegion() ) ;
// for each location in nitSearch, compute the correlation
// of the intvec with the nit neighborhood
nit.SetLocation( ind );
for( unsigned int i = 0; i < nit.Size(); i++ )
{
typename ImageType::IndexType ind2 = nit.GetIndex(i);
PixelType lval = image->GetPixel( ind2 );
image->SetPixel( ind2, lval + intvec[i] );
}
return 0;
}
开发者ID:BrysonBR,项目名称:ANTsR,代码行数:37,代码来源:jif.cpp
示例10: if
void ForegroundBackgroundSegmentMask::
Write(const std::string& filename,
const ForegroundPixelValueWrapper<TPixel>& foregroundValue,
const BackgroundPixelValueWrapper<TPixel>& backgroundValue)
{
typedef itk::Image<TPixel, 2> ImageType;
typename ImageType::Pointer image = ImageType::New();
image->SetRegions(this->GetLargestPossibleRegion());
image->Allocate();
itk::ImageRegionConstIteratorWithIndex<ForegroundBackgroundSegmentMask>
maskIterator(this,
this->GetLargestPossibleRegion());
while(!maskIterator.IsAtEnd())
{
if(maskIterator.Get() == ForegroundBackgroundSegmentMaskPixelTypeEnum::FOREGROUND)
{
image->SetPixel(maskIterator.GetIndex(),
foregroundValue.Value);
}
else if(maskIterator.Get() == ForegroundBackgroundSegmentMaskPixelTypeEnum::BACKGROUND)
{
image->SetPixel(maskIterator.GetIndex(), backgroundValue.Value);
}
++maskIterator;
}
typedef itk::ImageFileWriter<ImageType> WriterType;
typename WriterType::Pointer writer = WriterType::New();
writer->SetFileName(filename);
writer->SetInput(image);
writer->Update();
}
开发者ID:Tabshi,项目名称:Mask,代码行数:36,代码来源:ForegroundBackgroundSegmentMask.hpp
示例11: imageIt
typename PatchExtractor<PValue>::ImageType::Pointer
PatchExtractor<PValue>::ExtractPatch()
{
ContIndexType startIndex;
for(unsigned int i = 0; i < 2; i++)
{
startIndex[i] = m_Center[i] - (m_Size[i] / 2.0);
}
startIndex[2] = 0;
PointType newOrigin;
m_Image->TransformContinuousIndexToPhysicalPoint(startIndex, newOrigin);
typename ImageType::Pointer patch = ImageType::New();
patch->SetDirection(m_Image->GetDirection());
patch->SetOrigin(newOrigin);
patch->SetSpacing(m_Image->GetSpacing());
typename ImageType::RegionType region;
m_Size[2] = 1;
region.SetSize(m_Size);
patch->SetRegions(region);
patch->Allocate();
typedef itk::NearestNeighborInterpolateImageFunction<ImageType, double> InterpolatorType;
typename InterpolatorType::Pointer interpolator = InterpolatorType::New();
interpolator->SetInputImage(m_Image);
itk::ImageRegionIterator<ImageType> imageIt(patch, region);
while(!imageIt.IsAtEnd())
{
typename ImageType::IndexType index = imageIt.GetIndex();
PointType point;
patch->TransformIndexToPhysicalPoint(index, point);
if(interpolator->IsInsideBuffer(point))
imageIt.Set(interpolator->Evaluate(point));
else
imageIt.Set(0);
++imageIt;
}
return patch;
}
开发者ID:zhuangfangwang,项目名称:PhDProject,代码行数:49,代码来源:PatchExtractor.cpp
示例12: jointLabelFusionNeighborhoodSearchHelper
SEXP jointLabelFusionNeighborhoodSearchHelper(
SEXP r_intvec,
SEXP r_center,
unsigned int rad,
unsigned int radSearch,
SEXP r_antsimage,
SEXP r_antsimageseg)
{
unsigned int segval = 0;
typedef typename ImageType::Pointer ImagePointerType;
const unsigned int ImageDimension = ImageType::ImageDimension;
typedef float PixelType;
typename ImageType::Pointer image =
Rcpp::as< ImagePointerType >( r_antsimage );
typename ImageType::Pointer imageseg =
Rcpp::as< ImagePointerType >( r_antsimageseg );
Rcpp::NumericVector intvec( r_intvec );
Rcpp::NumericVector outvec =
Rcpp::NumericVector( intvec.size(), Rcpp::NumericVector::get_na() );
Rcpp::NumericVector bestvec =
Rcpp::NumericVector( intvec.size(), Rcpp::NumericVector::get_na() );
Rcpp::NumericVector outsegvec =
Rcpp::NumericVector( intvec.size(), Rcpp::NumericVector::get_na() );
Rcpp::NumericVector bestsegvec =
Rcpp::NumericVector( intvec.size(), Rcpp::NumericVector::get_na() );
Rcpp::NumericVector center( r_center );
if ( center.size() != ImageDimension )
Rcpp::stop("jointLabelFusionNeighborhoodSearchHelper dim error.");
typename itk::NeighborhoodIterator<ImageType>::SizeType nSize;
typename itk::NeighborhoodIterator<ImageType>::SizeType nSizeSearch;
typename ImageType::IndexType ind;
ind.Fill( 0 );
for ( unsigned int i=0; i<ImageDimension; i++ )
{
nSize[i] = rad;
nSizeSearch[i] = radSearch;
ind[i] = center[i]; // R coords to ITK
}
itk::NeighborhoodIterator<ImageType> nit( nSize, image,
image->GetLargestPossibleRegion() ) ;
itk::NeighborhoodIterator<ImageType> nitSearch( nSizeSearch, image,
image->GetLargestPossibleRegion() ) ;
// for each location in nitSearch, compute the correlation
// of the intvec with the nit neighborhood
nitSearch.SetLocation( ind );
PixelType bestcor = 1.e11;
PixelType bestsd = 0;
PixelType bestmean = 0;
for( unsigned int i = 0; i < nitSearch.Size(); i++ )
{
typename ImageType::IndexType ind2 = nitSearch.GetIndex(i);
nit.SetLocation( ind2 );
PixelType outmean = 0;
PixelType outsd = 0;
PixelType inmean = 0;
PixelType insd = 0;
for ( unsigned int i=0; i < intvec.size(); i++ ) {
PixelType pix = image->GetPixel( nit.GetIndex(i) );
outvec[i] = pix;
outsegvec[i] = imageseg->GetPixel( nit.GetIndex(i) );
outmean += pix;
inmean += intvec[i];
}
outmean /= ( static_cast<PixelType>(intvec.size()) );
inmean /= ( static_cast<PixelType>(intvec.size()) );
for ( unsigned int i=0; i < intvec.size(); i++ ) {
// should use recursive formula in above loop
outsd += ( outvec[i] - outmean ) * ( outvec[i] - outmean );
insd += ( intvec[i] - inmean ) * ( intvec[i] - inmean );
}
outsd = sqrt( outsd );
insd = sqrt( insd );
PixelType sum_uv = 0;
PixelType sum_psearch = 0;
PixelType ssq_psearch = 0;
unsigned int n = intvec.size();
for(unsigned int i = 0; i < n; i++)
{
PixelType v = intvec[i];
PixelType u = outvec[i];
sum_psearch += u;
ssq_psearch += u * u;
sum_uv += u * v;
}
PixelType var_u_unnorm = ssq_psearch - sum_psearch * sum_psearch / n;
if(var_u_unnorm < 1.0e-6)
var_u_unnorm = 1.0e-6;
PixelType locor = 0;
if ( sum_uv > 0 )
locor = ( -1.0 * (sum_uv * sum_uv) / var_u_unnorm );
else
locor = ( sum_uv * sum_uv ) / var_u_unnorm;
// - (\Sum u_i v_i)^2 / z, where z = sigma_v^2 * (n-1)
// locor = locor / ( insd * outsd );
if ( locor < bestcor )
{
segval = imageseg->GetPixel( ind2 );
for ( unsigned int i=0; i < intvec.size(); i++ ) {
bestvec[i] = outvec[i];
bestsegvec[i] = outsegvec[i];
//.........这里部分代码省略.........
开发者ID:BrysonBR,项目名称:ANTsR,代码行数:101,代码来源:jif.cpp
示例13: sourceIter
void mitk::SurfaceStampImageFilter::SurfaceStampProcessing(itk::Image<TPixel, 3> *input, MeshType *mesh)
{
typedef itk::Image<TPixel, 3> ImageType;
typedef itk::Image<unsigned char, 3> BinaryImageType;
typedef itk::TriangleMeshToBinaryImageFilter<mitk::SurfaceStampImageFilter::MeshType, BinaryImageType> FilterType;
BinaryImageType::Pointer binaryInput = BinaryImageType::New();
binaryInput->SetSpacing(input->GetSpacing());
binaryInput->SetOrigin(input->GetOrigin());
binaryInput->SetDirection(input->GetDirection());
binaryInput->SetRegions(input->GetLargestPossibleRegion());
binaryInput->Allocate();
binaryInput->FillBuffer(0);
FilterType::Pointer filter = FilterType::New();
filter->SetInput(mesh);
filter->SetInfoImage(binaryInput);
filter->SetInsideValue(1);
filter->SetOutsideValue(0);
filter->Update();
BinaryImageType::Pointer resultImage = filter->GetOutput();
resultImage->DisconnectPipeline();
mitk::Image::Pointer outputImage = this->GetOutput();
typename ImageType::Pointer itkOutputImage;
mitk::CastToItkImage(outputImage, itkOutputImage);
typedef itk::ImageRegionConstIterator<BinaryImageType> BinaryIteratorType;
typedef itk::ImageRegionConstIterator<ImageType> InputIteratorType;
typedef itk::ImageRegionIterator<ImageType> OutputIteratorType;
BinaryIteratorType sourceIter(resultImage, resultImage->GetLargestPossibleRegion());
sourceIter.GoToBegin();
InputIteratorType inputIter(input, input->GetLargestPossibleRegion());
inputIter.GoToBegin();
OutputIteratorType outputIter(itkOutputImage, itkOutputImage->GetLargestPossibleRegion());
outputIter.GoToBegin();
typename ImageType::PixelType inputValue;
unsigned char sourceValue;
auto fgValue = static_cast<typename ImageType::PixelType>(m_ForegroundValue);
auto bgValue = static_cast<typename ImageType::PixelType>(m_BackgroundValue);
while (!sourceIter.IsAtEnd())
{
sourceValue = static_cast<unsigned char>(sourceIter.Get());
inputValue = static_cast<typename ImageType::PixelType>(inputIter.Get());
if (sourceValue != 0)
outputIter.Set(fgValue);
else if (m_OverwriteBackground)
outputIter.Set(bgValue);
else
outputIter.Set(inputValue);
++sourceIter;
++inputIter;
++outputIter;
}
}
开发者ID:Cdebus,项目名称:MITK,代码行数:65,代码来源:mitkSurfaceStampImageFilter.cpp
示例14: sccanCppHelper
SEXP sccanCppHelper(
NumericMatrix X,
NumericMatrix Y,
SEXP r_maskx,
SEXP r_masky,
RealType sparsenessx,
RealType sparsenessy,
IntType nvecs,
IntType its,
IntType cthreshx,
IntType cthreshy,
RealType z,
RealType smooth,
Rcpp::List initializationListx,
Rcpp::List initializationListy,
IntType covering,
RealType ell1,
IntType verbose,
RealType priorWeight )
{
enum { Dimension = ImageType::ImageDimension };
typename ImageType::RegionType region;
typedef typename ImageType::PixelType PixelType;
typedef typename ImageType::Pointer ImagePointerType;
typedef double Scalar;
typedef itk::ants::antsSCCANObject<ImageType, Scalar> SCCANType;
typedef typename SCCANType::MatrixType vMatrix;
typename SCCANType::Pointer sccanobj = SCCANType::New();
typename ImageType::Pointer maskx = Rcpp::as<ImagePointerType>( r_maskx );
typename ImageType::Pointer masky = Rcpp::as<ImagePointerType>( r_masky );
bool maskxisnull = maskx.IsNull();
bool maskyisnull = masky.IsNull();
// deal with the initializationList, if any
unsigned int nImagesx = initializationListx.size();
if ( ( nImagesx > 0 ) && ( !maskxisnull ) )
{
itk::ImageRegionIteratorWithIndex<ImageType> it( maskx,
maskx->GetLargestPossibleRegion() );
vMatrix priorROIMatx( nImagesx , X.cols() );
priorROIMatx.fill( 0 );
for ( unsigned int i = 0; i < nImagesx; i++ )
{
typename ImageType::Pointer init =
Rcpp::as<ImagePointerType>( initializationListx[i] );
unsigned long ct = 0;
it.GoToBegin();
while ( !it.IsAtEnd() )
{
PixelType pix = it.Get();
if ( pix >= 0.5 )
{
pix = init->GetPixel( it.GetIndex() );
priorROIMatx( i, ct ) = pix;
ct++;
}
++it;
}
}
sccanobj->SetMatrixPriorROI( priorROIMatx );
nvecs = nImagesx;
}
unsigned int nImagesy = initializationListy.size();
if ( ( nImagesy > 0 ) && ( !maskyisnull ) )
{
itk::ImageRegionIteratorWithIndex<ImageType> it( masky,
masky->GetLargestPossibleRegion() );
vMatrix priorROIMaty( nImagesy , Y.cols() );
priorROIMaty.fill( 0 );
for ( unsigned int i = 0; i < nImagesy; i++ )
{
typename ImageType::Pointer init =
Rcpp::as<ImagePointerType>( initializationListy[i] );
unsigned long ct = 0;
it.GoToBegin();
while ( !it.IsAtEnd() )
{
PixelType pix = it.Get();
if ( pix >= 0.5 )
{
pix = init->GetPixel( it.GetIndex() );
priorROIMaty( i, ct ) = pix;
ct++;
}
++it;
}
}
sccanobj->SetMatrixPriorROI2( priorROIMaty );
nvecs = nImagesy;
}
sccanobj->SetPriorWeight( priorWeight );
sccanobj->SetLambda( priorWeight );
// cast hack from Rcpp type to sccan type
std::vector<double> xdat =
Rcpp::as< std::vector<double> >( X );
const double* _xdata = &xdat[0];
vMatrix vnlX( _xdata , X.cols(), X.rows() );
vnlX = vnlX.transpose();
//.........这里部分代码省略.........
开发者ID:BrysonBR,项目名称:ANTsR,代码行数:101,代码来源:sccaner.cpp
示例15: invcondemonsforces
void invcondemonsforces(int nlhs,
mxArray *plhs[],
int nrhs,
const mxArray *prhs[])
{
typedef float PixelType;
typedef itk::Image< PixelType, Dimension > ImageType;
typedef float VectorComponentType;
typedef itk::Vector<VectorComponentType, Dimension> VectorPixelType;
typedef itk::Image<VectorPixelType, Dimension> DeformationFieldType;
typedef itk::ESMInvConDemonsRegistrationFunction
<ImageType,ImageType,DeformationFieldType> DemonsRegistrationFunctionType;
//boost::timer timer;
// Allocate images and deformation field
typename ImageType::Pointer fixedimage
= ImageType::New();
typename ImageType::Pointer movingimage
= ImageType::New();
typename ImageType::Pointer fw_weightimage
= ImageType::New();
typename DeformationFieldType::Pointer field
= DeformationFieldType::New();
typename ImageType::Pointer jacobianimage
= ImageType::New();
typename DeformationFieldType::Pointer inv_field
= DeformationFieldType::New();
typename DeformationFieldType::Pointer update
= DeformationFieldType::New();
typename DeformationFieldType::SpacingType spacing;
spacing.Fill( 1.0 );
typename DeformationFieldType::PointType origin;
origin.Fill( 0.0 );
typename DeformationFieldType::RegionType region;
typename DeformationFieldType::SizeType size;
typename DeformationFieldType::IndexType start;
unsigned int numPix(1u);
const MatlabPixelType * fixinptr = static_cast<const MatlabPixelType *>(mxGetData(prhs[0]));
const MatlabPixelType * movinptr = static_cast<const MatlabPixelType *>(mxGetData(prhs[1]));
const MatlabPixelType * fieldinptrs[Dimension];
const MatlabPixelType * inv_fieldinptrs[Dimension];
mwSize matlabdims[Dimension];
for (unsigned int d=0; d<Dimension; d++)
{
matlabdims[d]= mxGetDimensions(prhs[0])[d];
size[d] = matlabdims[d];
start[d] = 0;
numPix *= size[d];
fieldinptrs[d] = static_cast<const MatlabPixelType *>(mxGetData(prhs[2+d]));
inv_fieldinptrs[d] = static_cast<const MatlabPixelType *>(mxGetData(prhs[2+Dimension+d]));
}
const MatlabPixelType * jacobianptr = static_cast<const MatlabPixelType *> (mxGetData(prhs[2*Dimension + 2]));
const MatlabPixelType * fw_weightptr = static_cast<const MatlabPixelType *> (mxGetData(prhs[2*Dimension + 3]));
const double RegWeight = static_cast<double>( mxGetPr(prhs[2*Dimension+4])[0] );
const unsigned int UseJacFlag = 1;
//std::cout << "RegWeight : " << RegWeight << std::endl;
region.SetSize( size );
region.SetIndex( start );
fixedimage->SetOrigin( origin );
fixedimage->SetSpacing( spacing );
fixedimage->SetRegions( region );
fixedimage->Allocate();
movingimage->SetOrigin( origin );
movingimage->SetSpacing( spacing );
movingimage->SetRegions( region );
movingimage->Allocate();
fw_weightimage->SetOrigin( origin );
fw_weightimage->SetSpacing( spacing );
fw_weightimage->SetRegions( region );
fw_weightimage->Allocate();
field->SetOrigin( origin );
field->SetSpacing( spacing );
field->SetRegions( region );
field->Allocate();
//.........这里部分代码省略.........
开发者ID:gang-liu,项目名称:BFL_fusionlab,代码行数:101,代码来源:mex_weightedfwdemonsforces.cpp
示例16: switch
void mitk::MRNormLinearStatisticBasedFilter::InternalComputeMask(itk::Image<TPixel, VImageDimension>* itkImage)
{
// Define all necessary Types
typedef itk::Image<TPixel, VImageDimension> ImageType;
typedef itk::Image<int, VImageDimension> MaskType;
typedef itk::LabelStatisticsImageFilter<ImageType, MaskType> FilterType;
typedef itk::MinimumMaximumImageCalculator<ImageType> MinMaxComputerType;
typename MaskType::Pointer itkMask0 = MaskType::New();
mitk::CastToItkImage(this->GetMask(), itkMask0);
typename ImageType::Pointer outImage = ImageType::New();
mitk::CastToItkImage(this->GetOutput(0), outImage);
typename MinMaxComputerType::Pointer minMaxComputer = MinMaxComputerType::New();
minMaxComputer->SetImage(itkImage);
minMaxComputer->Compute();
typename FilterType::Pointer labelStatisticsImageFilter = FilterType::New();
labelStatisticsImageFilter->SetUseHistograms(true);
labelStatisticsImageFilter->SetHistogramParameters(256, minMaxComputer->GetMinimum(),minMaxComputer->GetMaximum());
labelStatisticsImageFilter->SetInput( itkImage );
labelStatisticsImageFilter->SetLabelInput(itkMask0);
labelStatisticsImageFilter->Update();
double median0 = labelStatisticsImageFilter->GetMedian(1);
double mean0 = labelStatisticsImageFilter->GetMean(1);
double stddev = labelStatisticsImageFilter->GetSigma(1);
double modulo0=0;
{
auto histo = labelStatisticsImageFilter->GetHistogram(1);
double maxFrequency=0;
for (auto hIter=histo->Begin();hIter!=histo->End();++hIter)
{
if (maxFrequency < hIter.GetFrequency())
{
maxFrequency = hIter.GetFrequency();
modulo0 = (histo->GetBinMin(0,hIter.GetInstanceIdentifier()) + histo->GetBinMax(0,hIter.GetInstanceIdentifier())) / 2.0;
}
}
}
double value0=0;
switch (m_CenterMode)
{
case MRNormLinearStatisticBasedFilter::MEAN:
value0=mean0; break;
case MRNormLinearStatisticBasedFilter::MEDIAN:
value0=median0; break;
case MRNormLinearStatisticBasedFilter::MODE:
value0=modulo0; break;
}
double offset = value0;
double scaling = stddev;
if (scaling < 0.0001)
return;
itk::ImageRegionIterator<ImageType> inIter(itkImage, itkImage->GetLargestPossibleRegion());
itk::ImageRegionIterator<ImageType> outIter(outImage, outImage->GetLargestPossibleRegion());
while (! inIter.IsAtEnd())
{
TPixel value = inIter.Value();
outIter.Set((value - offset) / scaling);
++inIter;
++outIter;
}
}
开发者ID:0r,项目名称:MITK,代码行数:68,代码来源:mitkMRNormLinearStatisticBasedFilter.cpp
示例17: GenerateMaskImage
static mitk::Image::Pointer GenerateMaskImage(unsigned int dimX,
unsigned int dimY,
unsigned int dimZ,
float spacingX = 1,
float spacingY = 1,
float spacingZ = 1)
{
typedef itk::Image< TPixelType, 3 > ImageType;
typename ImageType::RegionType imageRegion;
imageRegion.SetSize(0, dimX);
imageRegion.SetSize(1, dimY);
imageRegion.SetSize(2, dimZ);
typename ImageType::SpacingType spacing;
spacing[0] = spacingX;
spacing[1] = spacingY;
spacing[2] = spacingZ;
mitk::Point3D origin; origin.Fill(0.0);
itk::Matrix<double, 3, 3> directionMatrix; directionMatrix.SetIdentity();
typename ImageType::Pointer image = ImageType::New();
image->SetSpacing( spacing );
image->SetOrigin( origin );
image->SetDirection( directionMatrix );
image->SetLargestPossibleRegion( imageRegion );
image->SetBufferedRegion( imageRegion );
image->SetRequestedRegion( imageRegion );
image->Allocate();
image->FillBuffer(1);
mitk::Image::Pointer mitkImage = mitk::Image::New();
mitkImage->InitializeByItk( image.GetPointer() );
mitkImage->SetVolume( image->GetBufferPointer() );
return mitkImage;
}
开发者ID:junaidnaseer,项目名称:MITK,代码行数:35,代码来源:mitkGlobalFeaturesTest.cpp
示例18: it
static mitk::Image::Pointer GenerateGradientWithDimXImage(unsigned int dimX,
unsigned int dimY,
unsigned int dimZ,
float spacingX = 1,
float spacingY = 1,
float spacingZ = 1)
{
typedef itk::Image< TPixelType, 3 > ImageType;
typename ImageType::RegionType imageRegion;
imageRegion.SetSize(0, dimX);
imageRegion.SetSize(1, dimY);
imageRegion.SetSize(2, dimZ);
typename ImageType::SpacingType spacing;
spacing[0] = spacingX;
spacing[1] = spacingY;
spacing[2] = spacingZ;
mitk::Point3D origin; origin.Fill(0.0);
itk::Matrix<double, 3, 3> directionMatrix; directionMatrix.SetIdentity();
typename ImageType::Pointer image = ImageType::New();
image->SetSpacing( spacing );
image->SetOrigin( origin );
image->SetDirection( directionMatrix );
image->SetLargestPossibleRegion( imageRegion );
image->SetBufferedRegion( imageRegion );
image->SetRequestedRegion( imageRegion );
image->Allocate();
image->FillBuffer(0.0);
typedef itk::ImageRegionIterator<ImageType> IteratorOutputType;
IteratorOutputType it(image, imageRegion);
it.GoToBegin();
TPixelType val = 0;
while(!it.IsAtEnd())
{
it.Set(val % dimX);
val++;
++it;
}
mitk::Image::Pointer mitkImage = mitk::Image::New();
mitkImage->InitializeByItk( image.GetPointer() );
mitkImage->SetVolume( image->GetBufferPointer() );
return mitkImage;
}
开发者ID:junaidnaseer,项目名称:MITK,代码行数:47,代码来源:mitkGlobalFeaturesTest.cpp
示例19: eigenanatomyCppHelper
SEXP eigenanatomyCppHelper(
NumericMatrix X,
SEXP r_mask,
RealType sparseness,
IntType nvecs,
IntType its,
IntType cthresh,
RealType z,
RealType smooth,
// NumericMatrix initializationMatrix,
Rcpp::List initializationList,
IntType covering,
RealType ell1,
IntType verbose,
IntType powerit,
RealType priorWeight )
{
enum { Dimension = ImageType::ImageDimension };
typename ImageType::RegionType region;
typedef typename ImageType::PixelType PixelType;
typedef typename ImageType::Pointer ImagePointerType;
typedef double Scalar;
typedef itk::ants::antsSCCANObject<ImageType, Scalar> SCCANType;
typedef typename SCCANType::MatrixType vMatrix;
typename SCCANType::Pointer sccanobj = SCCANType::New();
typename ImageType::Pointer mask = Rcpp::as<ImagePointerType>( r_mask );
bool maskisnull = mask.IsNull();
// deal with the initializationList, if any
unsigned int nImages = initializationList.size();
if ( ( nImages > 0 ) && ( !maskisnull ) )
{
itk::ImageRegionIteratorWithIndex<ImageType> it( mask,
mask->GetLargestPossibleRegion() );
vMatrix priorROIMat( nImages , X.cols() );
priorROIMat.fill( 0 );
for ( unsigned int i = 0; i < nImages; i++ )
{
typename ImageType::Pointer init =
Rcpp::as<ImagePointerType>( initializationList[i] );
unsigned long ct = 0;
it.GoToBegin();
while ( !it.IsAtEnd() )
{
PixelType pix = it.Get();
if ( pix >= 0.5 )
{
pix = init->GetPixel( it.GetIndex() );
priorROIMat( i, ct ) = pix;
ct++;
}
++it;
}
}
sccanobj->SetMatrixPriorROI( priorROIMat );
nvecs = nImages;
}
sccanobj->SetPriorWeight( priorWeight );
sccanobj->SetLambda( priorWeight );
// cast hack from Rcpp type to sccan type
std::vector<double> xdat =
Rcpp::as< std::vector<double> >( X );
const double* _xdata = &xdat[0];
vMatrix vnlX( _xdata , X.cols(), X.rows() );
vnlX = vnlX.transpose();
sccanobj->SetGetSmall( false );
vMatrix priorROIMat;
// sccanobj->SetMatrixPriorROI( priorROIMat);
// sccanobj->SetMatrixPriorROI2( priorROIMat );
sccanobj->SetCovering( covering );
sccanobj->SetSilent( ! verbose );
if( ell1 > 0 )
{
sccanobj->SetUseL1( true );
}
else
{
sccanobj->
|
请发表评论