python做网站 不适合,网站维护一般多少钱,模仿别人的网站,资讯门户网站怎么做目录 1、itkDiscreteGaussianImageFilter 离散高斯2、itkBinomialBlurImageFilter 二项式模糊3、itkSmoothingRecursiveGaussianImageFilter 图像模糊可以削弱图像频谱的高频部门 1、itkDiscreteGaussianImageFilter 离散高斯
该类通过图像与离散高斯算子#xff08;内核内核的可分离卷积来模糊图像。
如果 SetUseImageSpacing 关闭false则方差或标准差 (sigma) 将被评估为像素单位如果 SetUseImageSpacing 开启true默认值则方差或标准差 (sigma) 将被评估为物理单位。 方差可以在每个维度上独立设置。
常用的成员函数
Set/GetSigma()设置用于平滑的高斯的标准差Sigma以图像间距为单位进行测量Set/GetSigmaArray()保留 SetSigmaArray 以实现接口向后兼容性SetVariance()离散高斯核的方差为每个维度独立设置方差每个维度的默认值为 0.0如果 UseImageSpacing为 true则单位是图像的物理单位如果 UseImageSpacing 为 false则单位为像素Set/GetUseImageSpacing()设置/获取过滤器是否在计算中使用输入图像的间距参数为booltrueOn考虑图像间距信息并指定现实世界单位中的高斯方差falseOff忽略图像间距并以体素单位指定高斯方差默认为OnSetUseImageSpacingOn/Off()同上Set/GetMaximumKernelWidth()设置内核最大宽度像素值即使MaximumError需要默认值为 32 像素Set/GetMaximumError()调整离散内核的大小以便内核截断产生的误差不大于 MaximumError 每个维度的默认值为 0.01Set/GetInputBoundaryCondition()设置/获取边界条件Set/GetRealBoundaryCondition()设置/获取边界条件Set/GetFilterDimensionality()设置平滑维度数默认为图像维度可以设置为小于图像Dimension平滑所有小于FilterDimensionality的尺寸例如只需平滑3D数据的切片而不在 Z 轴上平滑则将 FilterDimensionality 设置为 2GetKernelRadius()获取每个方向上可分离核的半径GetKernelSize()获取每个方向上可分离核的大小公式KernelSize[i] KernelRadius[i] * 2 1GetKernelVarianceArray()获取方差可选择根据像素间距进行调整
示例代码
#include itkImage.h
#include itkDiscreteGaussianImageFilter.htypedef itk::Imagefloat, 3 FloatImageType;bool discreteGaussianImageFilter(FloatImageType* image, FloatImageType* outputImage)
{const double gaussianVariance 2.0;const int maxKernelWidth 32;typedef itk::DiscreteGaussianImageFilterFloatImageType, FloatImageType DiscreteGaussianFilterType;typename DiscreteGaussianFilterType::Pointer discreteGauFilter DiscreteGaussianFilterType::New();discreteGauFilter-SetInput(image);discreteGauFilter-SetVariance(gaussianVariance);discreteGauFilter-SetMaximumKernelWidth(32);discreteGauFilter-SetUseImageSpacing(true);try{discreteGauFilter-Update();}catch (itk::ExceptionObject ex){//读取过程发生错误std::cerr Error: ex std::endl;return false;}outputImage discreteGauFilter-GetOutput();return true;
}
itkDiscreteGaussianImageFilter和itkRecursiveGaussianImageFilter都是都是用于图像滤波的高斯滤波器。
相同之处在于都可以通过设置标准差参数来控制滤波的效果。
不同之处
itkDiscreteGaussianImageFilter是通过离散卷积的方式来计算高斯滤波使用离散的高斯核进行像素值的加权平均在实现上是基于卷积操作的基于卷积的方法可以保留图像中的边缘信息并且滤波时不会引入额外的图像数据依赖其结果近似于连续高斯滤波该类需要进行完整的离散卷积计算计算成本较高可以通过设置像素距离和变换到频率域等参数来调整滤波器的行为itkRecursiveGaussianImageFilter使用递归的高斯核进行滤波将二维高斯滤波分解成一维高斯滤波的连续求和从而实现递归滤波的方法由于它可以在空间域上利用中间结果进行优化递归滤波的方法可以有效地减少计算量并且在处理大图像时具有更高的效率然而递归滤波方法在滤波过程中会引入额外的图像数据依赖因此可能会导致边界像素的变化主要通过设置标准差来控制高斯核的大小和强度。
2、itkBinomialBlurImageFilter 二项式模糊
该类可以对图像的每个维度执行可分离的模糊。
二项式模糊由每个图像维度上的最近邻平均值组成沿每个维度来计算一个最接近的邻域平均理论上经过n 次迭代后的最终结果接近高斯卷积。
常用的成员函数
Set/GetRepetitions()设置/获取重复过滤的次数
示例代码
#include itkImage.h
#include itkBinomialBlurImageFilter.htypedef itk::Imagefloat, 3 FloatImageType;bool binomialBlurImageFilter(FloatImageType* image, FloatImageType* outputImage, int repetitions)
{typedef itk::BinomialBlurImageFilterFloatImageType, FloatImageType BinomialBlurFilterType;typename BinomialBlurFilterType::Pointer binmialBlurFilter BinomialBlurFilterType::New();binmialBlurFilter-SetInput(image);binmialBlurFilter-SetRepetitions(repetitions);try{binmialBlurFilter-Update();}catch (itk::ExceptionObject ex){//读取过程发生错误std::cerr Error: ex std::endl;return false;}outputImage binmialBlurFilter-GetOutput();return true;
}3、itkSmoothingRecursiveGaussianImageFilter
该类通过与实现为IIR滤波器的高斯核进行卷积来计算图像的平滑度。
该滤波器是使用递归高斯滤波器实现的对于多分量图像过滤器独立地作用于每个分量。
常用的成员函数
Set/GetSigma()设置/获取用于平滑的高斯的标准差Sigma以图像间距为单位进行测量可以使用 SetSigma方法在每个轴上设置相同的值或者如果需要沿每个轴使用不同的值则可以使用 SetSigmaArraySet/GetSigmaArray()设置/获取每个轴向的Sigma值Set/GetNumberOfWorkUnits()设置/获取要创建的工作单元的数量Set/GetNormalizeAcrossScale()设置/获取用于在尺度空间上标准化高斯的标志此方法不会影响该过滤器的输出NormalizeAcrossScaleOn/Off()同上
示例代码
#include itkImage.h
#include itkSmoothingRecursiveGaussianImageFilter.htypedef itk::Imagefloat, 3 FloatImageType;bool smoothingRecursiveGaussianImageFilter(FloatImageType* image, FloatImageType* outputImage, double sigma)
{typedef itk::SmoothingRecursiveGaussianImageFilterFloatImageType, FloatImageType SmoothingRecGauFilterType;typename SmoothingRecGauFilterType::Pointer smoothingFilter SmoothingRecGauFilterType::New();smoothingFilter-SetInput(image);smoothingFilter-SetSigma(sigma);//const itk::FixedArraydouble, 3U sigmaArry;//smoothingFilter-SetSigmaArray(sigmaArry);try{smoothingFilter-Update();}catch (itk::ExceptionObject ex){//读取过程发生错误std::cerr Error: ex std::endl;return false;}outputImage smoothingFilter-GetOutput();return true;
}此类与itkRecursiveGaussianImageFilter滤波器相比它们都是用于对图像进行高斯平滑处理的滤波器区别在于实现方式。 itkRecursiveGaussianImageFilter滤波器是使用递归的方式计算高斯卷积通过将二维高斯核分解为一维核进行计算可以有效地减少计算量和内存使用递归高斯滤波器具有线性计算复杂度适用于平滑大尺寸图像。 itkSmoothingRecursiveGaussianImageFilter滤波器是基于itkRecursiveGaussianImageFilter滤波器进行改进的主要是在高斯平滑的过程中引入了一个缩放因子用于控制滤波器的平滑程度可以灵活地调节滤波器的参数使得滤波结果更符合需求。
因此itkSmoothingRecursiveGaussianImageFilter滤波器相对于itkRecursiveGaussianImageFilter滤波器而言更加灵活可以得到更多种类的平滑结果。