在skimage
的_denoise.py
模块中,我发现了以下代码:
def estimate_sigma(image, average_sigmas=False, multichannel=False):
# some more code here
sigmas = [estimate_sigma(image[..., c], multichannel=False)...
return _sigma_est_dwt(detail_coeffs, distribution='Gaussian')
在estimate_sigma
里面有一个estimate_sigma
?这是怎么回事?为什么?进口是
import scipy.stats
import numpy as np
from math import ceil
from .. import img_as_float
from ..restoration._denoise_cy import _denoise_bilateral, _denoise_tv_bregman
from .._shared.utils import skimage_deprecation, warn
import pywt
import skimage.color as color
import numbers
似乎没有任何新的功能。你知道吗
请注意,^{} 的递归调用位于if子句中:
案例A)如果我们用
multichannel=False
调用estimate_sigma
,函数将不会进入If子句,因此不会调用自身并返回到其主体的末尾。你知道吗案例B)如果我们用
multichannel=True
调用estimate_sigma
,条件将成功,因此estimate_sigma
将调用自身。从上面的源代码片段可以看出,当estimate_sigma
调用自身时,它将multichannel
传递为False
。这意味着在递归调用期间将发生“case A”。这一次程序将不会进入上面的if
块,递归将结束,结束函数的执行并返回。基本的想法是:如果我们有多个通道,让我们把它们分成单独的通道,并对每个通道进行sigma估计
相关问题 更多 >
编程相关推荐