anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionanisotropic_diffusion各向异性扩散(算子)

名称

anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionanisotropic_diffusion — 对图像进行各向异性扩散。

签名

anisotropic_diffusion(Image : ImageAniso : Mode, Contrast, Theta, Iterations : )

Herror anisotropic_diffusion(const Hobject Image, Hobject* ImageAniso, const char* Mode, double Contrast, double Theta, const Hlong Iterations)

Herror T_anisotropic_diffusion(const Hobject Image, Hobject* ImageAniso, const Htuple Mode, const Htuple Contrast, const Htuple Theta, const Htuple Iterations)

void AnisotropicDiffusion(const HObject& Image, HObject* ImageAniso, const HTuple& Mode, const HTuple& Contrast, const HTuple& Theta, const HTuple& Iterations)

HImage HImage::AnisotropicDiffusion(const HString& Mode, double Contrast, double Theta, Hlong Iterations) const

HImage HImage::AnisotropicDiffusion(const char* Mode, double Contrast, double Theta, Hlong Iterations) const

HImage HImage::AnisotropicDiffusion(const wchar_t* Mode, double Contrast, double Theta, Hlong Iterations) const   ( Windows only)

static void HOperatorSet.AnisotropicDiffusion(HObject image, out HObject imageAniso, HTuple mode, HTuple contrast, HTuple theta, HTuple iterations)

HImage HImage.AnisotropicDiffusion(string mode, double contrast, double theta, int iterations)

def anisotropic_diffusion(image: HObject, mode: str, contrast: float, theta: float, iterations: int) -> HObject

描述

算子 anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusionanisotropic_diffusion 根据 Perona 和 Malik 的模型对输入图像 ImageImageImageImageimageimage 执行各向异性扩散。该函数也被称为非线性各向同性扩散。将图像视为灰度值函数 u,该算法是对偏微分方程的离散化处理: 其中初始值 由时间 ImageImageImageImageimageimage 定义。该方程以时间步长 ThetaThetaThetaThetathetatheta 迭代 IterationsIterationsIterationsIterationsiterationsiterations 次,使得输出图像 ImageAnisoImageAnisoImageAnisoImageAnisoimageAnisoimage_aniso 包含时间 处的灰度值函数。

各向异性扩散的目标是在消除图像中恒定区域的噪声的同时,保留图像中的边缘特征。通过对相邻像素灰度值差异的大小设置阈值 ContrastContrastContrastContrastcontrastcontrast 来区分边缘与恒定区域。ContrastContrastContrastContrastcontrastcontrast 被称为对比度参数,用字母 c 表示。

可变扩散系数g可选取遵循不同单调递减函数的形式,其取值范围在 01 之间,该系数决定了扩散过程对边缘的响应特性。通过参数 ModeModeModeModemodemode 可选择以下函数: 通过将 ModeModeModeModemodemode 设置为 'parabolic'"parabolic""parabolic""parabolic""parabolic""parabolic" 来选择函数 ,可确保其关联的微分方程为抛物型,从而使该问题存在适定性理论,且该函数对任意步长 ThetaThetaThetaThetathetatheta 均保持稳定。然而在此情况下,即使在高度大于 c 的边界处,仍会存在轻微扩散现象。 Perona 和 Malik 在出版物中采用的 ModeModeModeModemodemode 选择 'perona-malik'"perona-malik""perona-malik""perona-malik""perona-malik""perona-malik" 虽不具备 的理论特性,但在实践中已证明其稳定性足够可靠,因而被广泛应用。该理论上的不稳定性会导致强边缘出现轻微锐化现象。 由 Weickert 提出的函数 (常数C=3.31488)通过将 ModeModeModeModemodemode 设为 'weickert'"weickert""weickert""weickert""weickert""weickert" 即可启用,该函数在边缘锐化方面是对 的改进。平滑与锐化之间的过渡在 x = c^2 处发生得非常突然。

有关平滑滤波器概念的说明,请参阅 滤波器 / 平滑 一章的引言。

注意

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

执行信息

参数

ImageImageImageImageimageimage (输入对象)  (multichannel-)image(-array) objectHImageHObjectHImageHobject (byte / uint2 / real)

输入图像。

ImageAnisoImageAnisoImageAnisoImageAnisoimageAnisoimage_aniso (输出对象)  image(-array) objectHImageHObjectHImageHobject * (byte / uint2 / real)

输出图像。

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

扩散系数作为边缘振幅的函数。

默认值: 'weickert' "weickert" "weickert" "weickert" "weickert" "weickert"

值列表: 'parabolic'"parabolic""parabolic""parabolic""parabolic""parabolic", 'perona-malik'"perona-malik""perona-malik""perona-malik""perona-malik""perona-malik", 'weickert'"weickert""weickert""weickert""weickert""weickert"

ContrastContrastContrastContrastcontrastcontrast (输入控制)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

对比参数。

默认值: 5.0

建议值: 2.0, 5.0, 10.0, 20.0, 50.0, 100.0

限制: Contrast > 0

ThetaThetaThetaThetathetatheta (输入控制)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

时间步长。

默认值: 1.0

建议值: 0.5, 1.0, 3.0

限制: Theta > 0

IterationsIterationsIterationsIterationsiterationsiterations (输入控制)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

迭代次数。

默认值: 10

建议值: 1, 3, 10, 100, 500

限制: Iterations >= 1

替代

bilateral_filterbilateral_filterBilateralFilterBilateralFilterBilateralFilterbilateral_filter, guided_filterguided_filterGuidedFilterGuidedFilterGuidedFilterguided_filter

参考文献

J. Weickert; “'Anisotropic Diffusion in Image Processing'; PhD Thesis; Fachbereich Mathematik, Universität Kaiserslautern; 1996.
P. Perona, J. Malik; “Scale-space and edge detection using anisotropic diffusion”; Transactions on Pattern Analysis and Machine Intelligence 12(7), pp. 629-639; IEEE; 1990.
G. Aubert, P. Kornprobst; “Mathematical Problems in Image Processing”; Applied Mathematical Sciences 147; Springer, New York; 2002.

模块

基础