derivate_gaussderivate_gaussDerivateGaussDerivateGaussderivate_gauss导数高斯(算子)

名称

derivate_gaussderivate_gaussDerivateGaussDerivateGaussderivate_gauss — 用高斯导数卷积图像。

签名

derivate_gauss(Image : DerivGauss : Sigma, Component : )

Herror derivate_gauss(const Hobject Image, Hobject* DerivGauss, double Sigma, const char* Component)

Herror T_derivate_gauss(const Hobject Image, Hobject* DerivGauss, const Htuple Sigma, const Htuple Component)

void DerivateGauss(const HObject& Image, HObject* DerivGauss, const HTuple& Sigma, const HTuple& Component)

HImage HImage::DerivateGauss(const HTuple& Sigma, const HString& Component) const

HImage HImage::DerivateGauss(double Sigma, const HString& Component) const

HImage HImage::DerivateGauss(double Sigma, const char* Component) const

HImage HImage::DerivateGauss(double Sigma, const wchar_t* Component) const   ( Windows only)

static void HOperatorSet.DerivateGauss(HObject image, out HObject derivGauss, HTuple sigma, HTuple component)

HImage HImage.DerivateGauss(HTuple sigma, string component)

HImage HImage.DerivateGauss(double sigma, string component)

def derivate_gauss(image: HObject, sigma: MaybeSequence[float], component: str) -> HObject

描述

derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGaussderivate_gauss 将图像与高斯函数的导数进行卷积,并计算由此衍生的各种特征。SigmaSigmaSigmaSigmasigmasigma 是高斯函数的参数(即平滑程度)。如果 SigmaSigmaSigmaSigmasigmasigma 参数中传入一个值,则列方向和行方向的平滑程度相同。如果 SigmaSigmaSigmaSigmasigmasigma 参数中传入两个值,则第一个值指定列方向的平滑程度,第二个值指定行方向的平滑程度。ComponentComponentComponentComponentcomponentcomponent 的可能取值包括:

'none'"none""none""none""none""none"

仅进行平滑处理。

'x'"x""x""x""x""x"

x 方向的一阶导数。

'y'"y""y""y""y""y"

y 方向的一阶导数。

'gradient'"gradient""gradient""gradient""gradient""gradient"

梯度的绝对值。

'gradient_dir'"gradient_dir""gradient_dir""gradient_dir""gradient_dir""gradient_dir"

梯度方向(单位:弧度)。

'xx'"xx""xx""xx""xx""xx"

x 方向的二阶导数。

'yy'"yy""yy""yy""yy""yy"

y 方向的二阶导数。

'xy'"xy""xy""xy""xy""xy"

x 和 y 方向的二阶导数。

'xxx'"xxx""xxx""xxx""xxx""xxx"

x 方向的三阶导数。

'yyy'"yyy""yyy""yyy""yyy""yyy"

y 方向的三阶导数。

'xxy'"xxy""xxy""xxy""xxy""xxy"

x、x 和 y 方向的三阶导数。

'xyy'"xyy""xyy""xyy""xyy""xyy"

x、y 和 y 方向的三阶导数。

'det'"det""det""det""det""det"

海森矩阵(Hessian matrix)的行列式:

'laplace'"laplace""laplace""laplace""laplace""laplace"

拉普拉斯算子(海森矩阵的迹):

'mean_curvature'"mean_curvature""mean_curvature""mean_curvature""mean_curvature""mean_curvature"

平均曲率 H

'gauss_curvature'"gauss_curvature""gauss_curvature""gauss_curvature""gauss_curvature""gauss_curvature"

高斯曲率 K

'area'"area""area""area""area""area"

微分面积 A

'eigenvalue1'"eigenvalue1""eigenvalue1""eigenvalue1""eigenvalue1""eigenvalue1"

第一特征值

'eigenvalue2'"eigenvalue2""eigenvalue2""eigenvalue2""eigenvalue2""eigenvalue2"

第二特征值

'eigenvec_dir'"eigenvec_dir""eigenvec_dir""eigenvec_dir""eigenvec_dir""eigenvec_dir"

对应于第一特征值的特征向量方向(单位:弧度)

'kitchen_rosenfeld'"kitchen_rosenfeld""kitchen_rosenfeld""kitchen_rosenfeld""kitchen_rosenfeld""kitchen_rosenfeld"

垂直于梯度的二阶导数

'zuniga_haralick'"zuniga_haralick""zuniga_haralick""zuniga_haralick""zuniga_haralick""zuniga_haralick"

归一化后的垂直于梯度的二阶导数

'2nd_ddg'"2nd_ddg""2nd_ddg""2nd_ddg""2nd_ddg""2nd_ddg"

沿梯度的二阶导数

'de_saint_venant'"de_saint_venant""de_saint_venant""de_saint_venant""de_saint_venant""de_saint_venant"

沿梯度方向及垂直于梯度的二阶导数

注意

除了纯 C 版本外,还有专门用于提速的 derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGaussderivate_gauss 实现。只有当系统支持此类优化且相应的系统参数 *_enable 被设置为 'true'"true""true""true""true""true" 时,才会应用此类优化,详见 set_systemset_systemSetSystemSetSystemSetSystemset_system。支持以下优化(按优先级排序):

由于数值计算方面的原因,这些实现与纯 C 版本相比存在轻微误差。例如,使用 SSE2 指令集时,对于“byte”图像且 ComponentComponentComponentComponentcomponentcomponent 设置为 'none'"none""none""none""none""none"'x'"x""x""x""x""x"'y'"y""y""y""y""y" 的情况,误差量级约为 1.0e-5。

若优先考虑精度而非性能,请在调用 derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGaussderivate_gauss 之前,将所有相应的系统参数设置为 'false'"false""false""false""false""false"(使用 set_systemset_systemSetSystemSetSystemSetSystemset_system)。这样 derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGaussderivate_gauss 就不会使用加速功能。请勿忘记随后将参数重新设回 'true'"true""true""true""true""true"

仅当 SigmaSigmaSigmaSigmasigmasigma 导致的滤波器宽度或高度不超过 129 像素时,derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGaussderivate_gauss 才会于 OpenCL 设备上执行。这对应于 ComponentComponentComponentComponentcomponentcomponent = 'none'"none""none""none""none""none"SigmaSigmaSigmaSigmasigmasigma 小于 20.7 的情况。由于数值计算问题,OpenCL 实现版本与纯 C 版本相比存在轻微误差。

请注意,若使用域缩减后的图像作为输入,滤波器算子可能会返回意外结果。请参阅 滤波器 一章

执行信息

参数

ImageImageImageImageimageimage (输入对象)  (multichannel-)image(-array) objectHImageHObjectHImageHobject (byte* / direction* / cyclic* / int1* / int2* / uint2* / int4* / real*) *允许用于计算设备

输入图像。

DerivGaussDerivGaussDerivGaussDerivGaussderivGaussderiv_gauss (输出对象)  (multichannel-)image(-array) objectHImageHObjectHImageHobject * (real)

滤波后的结果图像。

SigmaSigmaSigmaSigmasigmasigma (输入控制)  real(-array) HTupleMaybeSequence[float]HTupleHtuple (real) (double) (double) (double)

高斯函数的 Sigma (平滑)参数。

默认值: 1.0

建议值: 0.7, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0

值范围: 0.01 ≤ Sigma Sigma Sigma Sigma sigma sigma ≤ 50.0

最小增量: 0.01

建议增量: 0.1

ComponentComponentComponentComponentcomponentcomponent (输入控制)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

待计算的导数或特征。

默认值: 'x' "x" "x" "x" "x" "x"

值列表: '2nd_ddg'"2nd_ddg""2nd_ddg""2nd_ddg""2nd_ddg""2nd_ddg", 'area'"area""area""area""area""area", 'de_saint_venant'"de_saint_venant""de_saint_venant""de_saint_venant""de_saint_venant""de_saint_venant", 'det'"det""det""det""det""det", 'eigenvalue1'"eigenvalue1""eigenvalue1""eigenvalue1""eigenvalue1""eigenvalue1", 'eigenvalue2'"eigenvalue2""eigenvalue2""eigenvalue2""eigenvalue2""eigenvalue2", 'eigenvec_dir'"eigenvec_dir""eigenvec_dir""eigenvec_dir""eigenvec_dir""eigenvec_dir", 'gauss_curvature'"gauss_curvature""gauss_curvature""gauss_curvature""gauss_curvature""gauss_curvature", 'gradient'"gradient""gradient""gradient""gradient""gradient", 'gradient_dir'"gradient_dir""gradient_dir""gradient_dir""gradient_dir""gradient_dir", 'kitchen_rosenfeld'"kitchen_rosenfeld""kitchen_rosenfeld""kitchen_rosenfeld""kitchen_rosenfeld""kitchen_rosenfeld", 'laplace'"laplace""laplace""laplace""laplace""laplace", 'main1_curvature'"main1_curvature""main1_curvature""main1_curvature""main1_curvature""main1_curvature", 'main2_curvature'"main2_curvature""main2_curvature""main2_curvature""main2_curvature""main2_curvature", 'mean_curvature'"mean_curvature""mean_curvature""mean_curvature""mean_curvature""mean_curvature", 'none'"none""none""none""none""none", 'x'"x""x""x""x""x", 'xx'"xx""xx""xx""xx""xx", 'xxx'"xxx""xxx""xxx""xxx""xxx", 'xxy'"xxy""xxy""xxy""xxy""xxy", 'xy'"xy""xy""xy""xy""xy", 'xyy'"xyy""xyy""xyy""xyy""xyy", 'y'"y""y""y""y""y", 'yy'"yy""yy""yy""yy""yy", 'yyy'"yyy""yyy""yyy""yyy""yyy", 'zuniga_haralick'"zuniga_haralick""zuniga_haralick""zuniga_haralick""zuniga_haralick""zuniga_haralick"

值列表(用于计算设备):'none'"none""none""none""none""none", 'x'"x""x""x""x""x", 'y'"y""y""y""y""y", 'gradient'"gradient""gradient""gradient""gradient""gradient", 'gradient_dir'"gradient_dir""gradient_dir""gradient_dir""gradient_dir""gradient_dir", 'xx'"xx""xx""xx""xx""xx", 'yy'"yy""yy""yy""yy""yy", 'xy'"xy""xy""xy""xy""xy", 'xxx'"xxx""xxx""xxx""xxx""xxx", 'yyy'"yyy""yyy""yyy""yyy""yyy", 'xxy'"xxy""xxy""xxy""xxy""xxy", 'xyy'"xyy""xyy""xyy""xyy""xyy", 'laplace'"laplace""laplace""laplace""laplace""laplace"

示例(C)

read_image(&Image,"mreut");
derivate_gauss(Image,&Gauss,3.0,"x");
zero_crossing(Gauss,&ZeroCrossings);

可能的后继

zero_crossingzero_crossingZeroCrossingZeroCrossingZeroCrossingzero_crossing, dual_thresholddual_thresholdDualThresholdDualThresholdDualThresholddual_threshold

替代

laplacelaplaceLaplaceLaplaceLaplacelaplace, laplace_of_gausslaplace_of_gaussLaplaceOfGaussLaplaceOfGaussLaplaceOfGausslaplace_of_gauss, binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilterbinomial_filter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImagesmooth_image, isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusionisotropic_diffusion

另见

zero_crossingzero_crossingZeroCrossingZeroCrossingZeroCrossingzero_crossing, dual_thresholddual_thresholdDualThresholdDualThresholdDualThresholddual_threshold

模块

基础