ee.Kernel.add

  • Kernel.add combines two kernels by adding their weights pointwise after aligning their centers.

  • The resulting kernel has the same dimensions as the larger of the two input kernels.

  • The normalize parameter can be used to normalize the resulting kernel.

  • Kernels do not need to have the same dimensions to be added.

Adds two kernels (pointwise) after aligning their centers.

UsageReturns
Kernel.add(kernel2, normalize)Kernel
ArgumentTypeDetails
this: kernel1KernelThe first kernel.
kernel2KernelThe second kernel.
normalizeBoolean, default: falseNormalize the kernel.

Examples

Code Editor (JavaScript)

// Two kernels, they do not need to have the same dimensions.
var kernelA = ee.Kernel.chebyshev({radius: 3});
var kernelB = ee.Kernel.square({radius: 1, normalize: false, magnitude: 100});
print(kernelA, kernelB);

/**
 * Two kernel weights matrices
 *
 *   [3, 3, 3, 3, 3, 3, 3]
 *   [3, 2, 2, 2, 2, 2, 3]
 *   [3, 2, 1, 1, 1, 2, 3]       [100, 100, 100]
 * A [3, 2, 1, 0, 1, 2, 3]     B [100, 100, 100]
 *   [3, 2, 1, 1, 1, 2, 3]       [100, 100, 100]
 *   [3, 2, 2, 2, 2, 2, 3]
 *   [3, 3, 3, 3, 3, 3, 3]
 */

print('Pointwise addition of two kernels', kernelA.add(kernelB));

/**
 * [3, 3,   3,   3,   3, 3, 3]
 * [3, 2,   2,   2,   2, 2, 3]
 * [3, 2, 101, 101, 101, 2, 3]
 * [3, 2, 101, 100, 101, 2, 3]
 * [3, 2, 101, 101, 101, 2, 3]
 * [3, 2,   2,   2,   2, 2, 3]
 * [3, 3,   3,   3,   3, 3, 3]
 */

Python setup

See the Python Environment page for information on the Python API and using geemap for interactive development.

import ee
import geemap.core as geemap

Colab (Python)

from pprint import pprint

# Two kernels, they do not need to have the same dimensions.
kernel_a = ee.Kernel.chebyshev(**{'radius': ee.Number(3)})
kernel_b = ee.Kernel.square(**{
    'radius': 1,
    'normalize': False,
    'magnitude': 100
})
pprint(kernel_a.getInfo())
pprint(kernel_b.getInfo())

#  Two kernel weights matrices

#   [3, 3, 3, 3, 3, 3, 3]
#   [3, 2, 2, 2, 2, 2, 3]
#   [3, 2, 1, 1, 1, 2, 3]       [100, 100, 100]
# A [3, 2, 1, 0, 1, 2, 3]     B [100, 100, 100]
#   [3, 2, 1, 1, 1, 2, 3]       [100, 100, 100]
#   [3, 2, 2, 2, 2, 2, 3]
#   [3, 3, 3, 3, 3, 3, 3]

print('Pointwise addition of two kernels:')
pprint(kernel_a.add(kernel_b).getInfo())

#  [3, 3,   3,   3,   3, 3, 3]
#  [3, 2,   2,   2,   2, 2, 3]
#  [3, 2, 101, 101, 101, 2, 3]
#  [3, 2, 101, 100, 101, 2, 3]
#  [3, 2, 101, 101, 101, 2, 3]
#  [3, 2,   2,   2,   2, 2, 3]
#  [3, 3,   3,   3,   3, 3, 3]