如何解决RGB 像素的熵
如何在 Python 中正确地获取单个 RGB 像素的熵,或如下图所示。
试过这个:
def entropy(*X):
return np.sum(-p * np.log2(p) if p > 0 else 0 for p in
(np.mean(functools.reduce(np.logical_and,(predictions == c for predictions,c in zip(X,classes))))
for classes in itertools.product(*[set(x) for x in X])))
print('Entropy:',entropy(np.array([255,2,2]),np.array([255,1]),0]),1,0])))
print('Entropy:',2])))
print('Entropy:',entropy(np.array([0,255,100,200])))
结果:
Entropy: 1.584962500721156
Entropy: 0.9182958340544896
Entropy: 0.9182958340544896
Entropy: 0.9182958340544896
Entropy: 1.584962500721156
但是红色和绿色像素的熵相同,似乎无法区分,并且看起来与下表不同。我做错了什么以及如何正确地做到这一点?
解决方法
如果有帮助,试试这个
def entropy(labels,base=None):
value,counts = np.unique(labels,return_counts=True)
norm_counts = counts / counts.sum()
print(norm_counts)
e = 2.718281828
base = e if base is None else base
return -(norm_counts * np.log(norm_counts)/np.log(base)).sum()
f = np.array([[[[255,10,2],[255,1],0],1,2,0]]]])
h = entropy(f,2)
print('h=',h)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。