在OpenCV里实现计算图像信息熵

OpenCV 专栏收录该内容
232 篇文章 359 订阅 ¥99.00 ¥19.90

在对图像进行编码处理过程中,很自然就会出现一个问题:表示一幅图像的灰度级到底需要多少比特?也就是说不丢失信息的情况下是否存在一个最小数据来说明已经足够充分地描述这幅图像。信息熵可以衡量变量的不确定性,变量的不确定性越大,熵也就越大。因此信息论里提供了计算信息熵的公式:

在图像里,由于是采用二进制表示,所以是基于2为底的对数,可以采用下面的代码来计算这个公式的值,这值就是表示变长编码时,平均码长的位数。

例子代码如下:

#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import numpy as np
import cv2
from matplotlib import pyplot as plt

#计算信息熵
def entropy(labels, base=None):
    value,counts = np.unique(labels, return_counts=True)
    norm_counts = counts / counts.sum()
    print(norm_counts)
    base = e if base is None else base
    return -(norm_counts * np.log(norm_counts)
  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值