我的目标是计算2D图像每行的计算(在x方向上) 在遵循Cory的提示后,我尝试使用'ConvolutionImageFilter',并使用我之前计算的高斯值制作内核。 我看了一下这个例子(http://www.itk.org/Wiki/ITK/Examples/ImageProcessing/ConvolutionImageFilter),我的问题是如何将高斯滤波器的值包含到内核中,我尝试了代码下面它编译,但似乎当我更新convolutionFilter时执行没有结束......因为我觉得我做错了。我的代码在下面并没有那么多,如果有人可以提供一些帮助,我会非常感激!!!!。
typedef itk::ConvolutionImageFilter <ImageType> ConvFilterType;
ImageType::Pointer kernel = ImageType::New();
CreateKernel(kernel, Gaussian , 256);
//Convolve image with kernel
ConvFilterType::Pointer convolutionFilter = ConvFilterType::New();
convolutionFilter->SetInput(Li_itk);
convolutionFilter->SetImageKernelInput(kernel);
convolutionFilter->Update();
void Reg_image_v2::CreateKernel(Reg_image_v2::ImageType::Pointer kernel, double *Gaussian, unsigned int width) {
ImageType::IndexType start;
start.Fill(0);
ImageType::SizeType size;
size[0] = width;
size[1] = 1;
ImageType::RegionType region;
region.SetSize(size);
region.SetIndex(start);
kernel->SetRegions(region);
kernel->Allocate();
ImageType::IndexType pixelIndex;
for (int i = 0 ; i < width ; i ++){
pixelIndex[0] = i ;
pixelIndex[1] = 0 ;
kernel->SetPixel(pixelIndex,Gaussian[i]);
}
itk::ImageRegionIterator<ImageType> imageIterator(kernel, region);
while(!imageIterator.IsAtEnd())
{
//imageIterator.Set??
++imageIterator; //operator++ increments the iterator one position in the positive direction
}
} // end createKernel
安东尼奥
答案 0 :(得分:1)
你看过itkGaussianOperator了吗? http://www.itk.org/Wiki/ITK/Examples/Operators/GaussianOperator