QZQ的小世界!

  • 首页
你好!
这里是QZQ的博客站!
  1. 首页
  2. 未分类
  3. 正文

Python 判断图片有无内容——图像熵计算

2025年4月4日 49点热度 0人点赞 0条评论

图像熵的计算公式和应用场景_图像熵有何实践应用-CSDN博客

简介

图像熵(image entropy)是图像“繁忙”程度的估计值。

图像熵表示为图像灰度级集合的比特平均数,单位比特/像素,也描述了图像信源的平均信息量。对于离散形式的二维图像,其信息熵的计算公式为:

Untitled.png

对于上式,其中,pi 为每一灰度级出现的概率。

熵指的是体系的混乱的程度,对焦良好的图像的熵大于没有清晰对焦的图像,因此可以用熵作为一种对焦评价标准。熵越大,图像越清晰。另外,对于没有内容的图像,图像熵也会很低,因此可以作为判断图像是否内容为空的依据。

代码

经过我的修改,cv2有时候不支持中文路径,很麻烦,所以改成用pillow了

# encoding=utf-8

import math
import numpy as np
from PIL import Image


def image_entropy(img_path):
    """
    图片熵如果小于2的话基本是没啥内容的图片了,可以扔了
    :param img_path: 图像的路径
    :return: 图片熵的值
    """
    tmp = [0 for _ in range(256)]
    k = 0
    res = 0
    image = Image.open(img_path)
    image = image.convert('L')  # 图像熵的计算只能使用灰度图像
    image = image.resize((100, 100))  # 将图片缩放以加快计算速度,实测产出的值差距不大
    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)))
    return res


if __name__ == '__main__':
    p = r'C:\Users\QZQ\Project\resource-keeper\test\21_1.jpg'
    print(image_entropy(p))

[文章导入自 http://qzq-go.notion.site/c39faaa1ba4b46429e8b55f8c2a8b02a 访问原文获取高清图片]

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: IT技术 Python Python实战
最后更新:2025年4月3日

QZQ

一只涉猎广泛的技术爱好者,绝赞养猫中~

点赞
< 上一篇
下一篇 >

归档

  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月

分类

  • 技术
  • 未分类

COPYRIGHT © 2024 QZQ的小世界!. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang