转载及引用标明出处
#edge is a guided map.
import numpy as np
import math
import cv2
import scipy.signal
from scipy.interpolate import interpn
from itertools import chain
def fastbilateralFilter(data, edge, sigmaSpatial, sigmaRange, samplingSpatial, sampingRange):
Data1 = list(chain.from_iterable(data))
inputHeight, inputWidth = data.shape
edgeMin = np.min(edge)
edgeMax = np.max(edge)
edgeDelta = edgeMax -edgeMin
"""
parameters
"""
derivedSigmaSpatial = sigmaSpatial / samplingSpatial
derivedSigmaRange = sigmaRange / sampingRange
paddingXY = np.floor(2*derivedSigmaSpatial) + 1
paddingZ = np.floor(2*derivedSigmaRange) + 1
"""
allocate 3D grid
"""
downsampledWidth = int(np.floor((inputWidth - 1) / samplingSpatial) + 1 + 2 * paddingXY)
downsampledHeight = int(np.floor((inputHeight - 1) / samplingSpatial) + 1 + 2 * paddingXY)
downsampledDepth = int(np.floor(edgeDelta / sampingRange) + 1<