scikit-image
41 строка · 1.1 Кб
1from numpy import unique
2from scipy.stats import entropy as scipy_entropy
3
4
5def shannon_entropy(image, base=2):
6"""Calculate the Shannon entropy of an image.
7
8The Shannon entropy is defined as S = -sum(pk * log(pk)),
9where pk are frequency/probability of pixels of value k.
10
11Parameters
12----------
13image : (M, N) ndarray
14Grayscale input image.
15base : float, optional
16The logarithmic base to use.
17
18Returns
19-------
20entropy : float
21
22Notes
23-----
24The returned value is measured in bits or shannon (Sh) for base=2, natural
25unit (nat) for base=np.e and hartley (Hart) for base=10.
26
27References
28----------
29.. [1] `https://en.wikipedia.org/wiki/Entropy_(information_theory) <https://en.wikipedia.org/wiki/Entropy_(information_theory)>`_
30.. [2] https://en.wiktionary.org/wiki/Shannon_entropy
31
32Examples
33--------
34>>> from skimage import data
35>>> from skimage.measure import shannon_entropy
36>>> shannon_entropy(data.camera())
377.231695011055706
38"""
39
40_, counts = unique(image, return_counts=True)
41return scipy_entropy(counts, base=base)
42