Python关于图像熵的计算

这是自己最近一个项目所用到的。苦于网上只有C++版本。所以自己动手改写了下。

首先先在这里简单介绍下图像熵。图像熵即一幅图像的信息熵。信息熵简单来说就是把信息进行了量化。通过熵的大小表示信息的混乱程度。一般情况下,图像中包涵的信息量多,熵值越大。

网上更多的是基于C++和opencv做的信息熵计算。参考这篇文章。我用python进行了改写。

import cv2
import numpy as np
tmp = []
for i in range(256):
    tmp.append(0)
val = 0
k = 0
res = 0
image = cv2.imread('C:/Users/shaw/Desktop/new/result/stand/squat_0.5_5_1.png',0)
img = np.array(image)
for i in range(len(img)):
    for j in range(len(img[i])):
        val = img[i][j]
        tmp[val] = float(tmp[val] + 1)
        k =  float(k + 1)
for i in range(len(tmp)):
    tmp[i] = float(tmp[i] / k)
for i in range(len(tmp)):
    if(tmp[i] == 0):
        res = res
    else:
        res = float(res - tmp[i] * (math.log(tmp[i]) / math.log(2.0)))
print res

输出结果即为图像的信息熵

其中要注意的是读取图像一定要是灰度图。


评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值