本文整理汇总了C++中inputimagetype::Pointer::Allocate方法的典型用法代码示例。如果您正苦于以下问题:C++ Pointer::Allocate方法的具体用法?C++ Pointer::Allocate怎么用?C++ Pointer::Allocate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类inputimagetype::Pointer
的用法示例。
在下文中一共展示了Pointer::Allocate方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getEmpty
InputImageType::Pointer getEmpty(int s1,int s2, int s3)
{
InputImageType::Pointer p = InputImageType::New();
InputImageType::SizeType size;
InputImageType::IndexType index;
InputImageType::RegionType region;
size[0] = s1; size[1] = s2; size[2] = s3;
index.Fill(0);
region.SetSize(size);
region.SetIndex(index);
p->SetRegions(region);
p->Allocate();
return p;
}
示例2: on_retinalLayerSegButton_clicked
void segmentation::on_retinalLayerSegButton_clicked()
{
fstream fin1, fin7, fin11, fin12;
char* s1Txt = ("../data/ped/txt/15715_1.txt");//s1.txt
char* s7Txt = ("../data/ped/txt/15715_7.txt");
char* s11Txt = ("../data/ped/txt/15715_11.txt");
char* s12Txt = ("../data/ped/txt/15715_12.txt");
//这样开辟内存容易出现堆栈溢出问题, 选择new & delete
//int s1[64][512], s7[64][512], s11[64][512], s12[64][512];
int (*s1)[512] = new int [64][512];
int (*s7)[512] = new int [64][512];
int (*s11)[512] = new int [64][512];
int (*s12)[512] = new int [64][512];
fin1.open(s1Txt, ios::in);
fin7.open(s7Txt, ios::in);
fin11.open(s11Txt, ios::in);
fin12.open(s12Txt, ios::in);
for(int z=0; z<64; z++)
{
for(int x=0; x<512; x++)
{
fin1>>s1[z][x];
fin7>>s7[z][x];
fin11>>s11[z][x];
fin12>>s12[z][x];
}
}
fin1.close();
fin7.close();
fin11.close();
fin12.close();
typedef itk::Image<unsigned short,3>InputImageType;
typedef itk::Image<unsigned short,3>OutputImageType;
InputImageType::Pointer inputImage = InputImageType::New();
InputImageType::Pointer outputImage = InputImageType::New();
typedef itk::ImageFileReader<InputImageType>ReaderType;
ReaderType::Pointer reader = ReaderType::New();
reader->SetFileName(inputFileName);
reader->Update();
inputImage = reader->GetOutput();
InputImageType::IndexType voxelIndex;
InputImageType::SizeType imgSize = inputImage->GetLargestPossibleRegion().GetSize();
OutputImageType::IndexType index;
index[0]=0;
index[1]=0;
index[2]=0;
OutputImageType::SizeType size;
size[0]=imgSize[0];
size[1]=imgSize[1];
size[2]=imgSize[2];
//create a region for enhance result
OutputImageType::RegionType region;
region.SetIndex(index);
region.SetSize(size);
outputImage->SetRegions(region);
outputImage->Allocate();
//make four surfaces into a MHD file
for(int z = 0; z < imgSize[2]; z++)
for(int y = 0; y < imgSize[1]; y++)
for(int x = 0; x < imgSize[0]; x++)
{
voxelIndex[0] = x;
voxelIndex[1] = y;
voxelIndex[2] = z;
if(y == s1[z][x])
{
inputImage->SetPixel(voxelIndex, 65535);
}
if(y == s7[z][x])
{
inputImage->SetPixel(voxelIndex, 65535);
}
if(y == s11[z][x])
{
inputImage->SetPixel(voxelIndex, 65535);
}
if(y == s12[z][x])
{
inputImage->SetPixel(voxelIndex, 65535);
}
}
delete []s1;//释放内存
delete []s7;
delete []s11;
delete []s12;
//文件前缀名
filePrefix = inputFileName;//char* to string
filePrefix = filePrefix.substr(0, filePrefix.length() - 4);
filePrefix = filePrefix + "_layerSeg.mhd";
strcpy(outputFileName, filePrefix.c_str());//string to char*
typedef itk::ImageFileWriter<OutputImageType>WriterType;
WriterType::Pointer writer = WriterType::New();
writer->SetFileName(outputFileName);
writer->SetInput(inputImage);
writer->Update();
emit returnOutputFileName(outputFileName);//发出信号
}
示例3: RunOnInputImage
InputImageType::Pointer Curvelet::RunOnInputImage(InputImageType::Pointer InputImage)
{
//InputImage = NewInputImage;
slices = InputImage->GetLargestPossibleRegion().GetSize()[2];
InputImageType::Pointer outputim = InputImageType::New();
outputim->SetRegions(InputImage->GetLargestPossibleRegion());
outputim->Allocate();
FloatImageType::Pointer cosim = FloatImageType::New();
cosim->SetRegions(InputImage->GetLargestPossibleRegion());
cosim->Allocate();
FloatImageType::Pointer sinim = FloatImageType::New();
sinim->SetRegions(InputImage->GetLargestPossibleRegion());
sinim->Allocate();
if(outputim->GetBufferPointer() == NULL || cosim->GetBufferPointer() == NULL || sinim->GetBufferPointer() == NULL)
{
printf("Couldnt' allocate memory - 3.. going to crash now\n");
}
int max_dim = tile_size;
int xsize = InputImage->GetLargestPossibleRegion().GetSize()[0];
int ysize = InputImage->GetLargestPossibleRegion().GetSize()[1];
int kx = 0;int ky = 0;
kx = xsize /(max_dim-this->border);
ky = ysize /(max_dim-this->border);
int remx = xsize % (max_dim-this->border);
int remy = ysize % (max_dim-this->border);
if ( remx > 0 )
kx ++;
if ( remy > 0 )
ky ++;
for(int xco = 0; xco < kx; xco++)
{
for(int yco = 0; yco < ky; yco++)
{
InputImageType::SizeType imsize = InputImage->GetLargestPossibleRegion().GetSize();
InputImageType::IndexType index;
InputImageType::SizeType size;
InputImageType::RegionType region;
index.Fill(0);
size[0] = MIN((xco)*(max_dim-this->border)+max_dim-1,imsize[0]-1) - xco * (max_dim-this->border) +1;
size[1] = MIN((yco)*(max_dim-this->border)+max_dim-1,imsize[1]-1) - yco * (max_dim-this->border) +1;
size[2] = imsize[2];
InputImageType::Pointer imtile = InputImageType::New();
region.SetIndex(index);
region.SetSize(size);
imtile->SetRegions(region);
imtile->Allocate();
if(imtile->GetBufferPointer()==NULL)
printf("Couldn't allocate memory - 4 .. going to crash now\n");
InputImageType::RegionType region1;
index[0] = xco *(max_dim-this->border);
index[1] = yco *(max_dim-this->border);
index[2] = 0;
region1.SetIndex(index);
region1.SetSize(size);
typedef itk::ImageRegionIterator<InputImageType> IteratorType;
IteratorType iter1(InputImage,region1);
IteratorType iter2(imtile,region);
//printf("xco = %d yco = %d :\n",xco,yco);
region1.Print(std::cout);
region.Print(std::cout);
iter1.GoToBegin();
iter2.GoToBegin();
for(;!iter1.IsAtEnd();++iter1,++iter2)
{
iter2.Set(iter1.Get());
}
InputImageType::Pointer outputtile = InputImageType::New();
outputtile->SetRegions(imtile->GetLargestPossibleRegion());
outputtile->Allocate();
FloatImageType::Pointer cosimtile = FloatImageType::New();
cosimtile->SetRegions(imtile->GetLargestPossibleRegion());
cosimtile->Allocate();
FloatImageType::Pointer sinimtile = FloatImageType::New();
sinimtile->SetRegions(imtile->GetLargestPossibleRegion());
sinimtile->Allocate();
if(outputtile->GetBufferPointer() == NULL || cosimtile->GetBufferPointer()==NULL || sinimtile->GetBufferPointer() == NULL )
{
printf("Couldn't allocate memory - 5 .. going to crash now ..\n");
}
{
#pragma omp parallel for shared(cosimtile,imtile,sinimtile,outputtile) num_threads(numt)
//.........这里部分代码省略.........