opencv中有没有计算图像四大纹理特征能量,熵,相关性,惯性矩的函数?

opencv中有没有计算图像四大纹理特征能量,熵,相关性,惯性矩的函数?,第1张

opencv有一个灰度共生矩阵能计算这些,但是那个类是在cxcore中定义的,实际使用也发现该函数存在问题(内存泄露,根据网上的改完,你实际使用还是发现跟matlab的精度差很多尤其是相关性2,经常计算不出来。21是这样,22不清楚)。

信息熵的意义:信源的信息熵H是从整个信息源的统计特性来考虑的。它是从评价意义上来表征信息源的总体特征的。对于某特定的信息源,其信息熵只有一个。不同的信息源因统计特性不同,其熵也不同。图像的信息熵的意义:它表征图像灰度分布的聚集特性,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。

熵是一种具有加和性的状态函数,体系的熵值越大则微观状态数Ω的越大,即混乱度越大!!
熵均大于等于零!

一个孤立系统的熵永远不会减少。它表明随着孤立系统由非平衡态趋于平衡态,其熵单调增大,当系统达到平衡态时,熵达到最大值。熵的变化和最大值确定了孤立系统过程进行的方向和限度,熵增加原理就是热力学第二定律。
熵:描述体系混乱度的状态函数叫做熵,用S表示。体系的状态一定,其微观状态数一定,如果用状态函数来表示混乱度的话,状态函数与与微观状态数Ω存在下列关系S=klnΩ,其中k=138×10-23J/K叫波尔兹曼常数。

idx = hspec == 0;%找出矩阵hspec中等于0的元素
hspec(idx) = eps; %令矩阵hspec中等于0的元素等于eps,eps是matlab中的一个常数,无限接近于0
例如:
>> x=0;
>> sin(x)/x
ans =
NaN
>> x=eps;
>> sin(x)/x
ans =
1

可以使用Python版的opencv 来实现。

现读取:

import cv2
import numpy as np
from matplotlib import pyplot as plt
image=cv2imread('/src/q5png')
HSV=cv2cvtColor(image,cv2COLOR_BGR2HSV)

计算熵

img = nparray(HSV)
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]  (mathlog(tmp[i]) / mathlog(20)))

保存:
HSV图形可以直接存储,特征可以存xml中~

cv2imwrite("具体路径",HSV)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/13340504.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-31
下一篇2025-08-31

发表评论

登录后才能评论

评论列表(0条)

    保存