在OpenCV里实现计算图像信息熵
2023-09-14 09:10:32 时间
在对图像进行编码处理过程中,很自然就会出现一个问题:表示一幅图像的灰度级到底需要多少比特?也就是说不丢失信息的情况下是否存在一个最小数据来说明已经足够充分地描述这幅图像。信息熵可以衡量变量的不确定性,变量的不确定性越大,熵也就越大。因此信息论里提供了计算信息熵的公式:
在图像里,由于是采用二进制表示,所以是基于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)
相关文章
- OpenCV、EmguCV和OpenCvSharp指针访问图像像素值耗时测评(附源码)
- VS2019+OpenCV安装与配置教程
- OpenCV-Python (Sobel算子)[通俗易懂]
- OpenCV中出现“Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000005C8ECFFA80 处。”的异常[通俗易懂]
- QT配置opencv_qt调用opencv
- OpenCV-Python学习(13)—— OpenCV 多边形填充与绘制(cv.fillPoly、cv.polylines)
- OpenCV-Python实战(4) —— OpenCV 五角星各点在坐标系上面的坐标计算(以重心为原点)
- opencv(4.5.3)-python(十六)--边缘检测
- 【图像配准】使用OpenCV进行多图配准拼接
- OpenCV这么简单为啥不学——1.5、解决putText中文乱码问题
- opencv(4.5.3)-python(二十四)--直方图均衡化
- OpenCv4.4.0+Qt5.12.2+OpenCv-Contrib-4.4.0
- OpenCV + python 实现人脸检测(基于照片和视频进行检测)详解大数据