关于纹理特征描述之灰度差分统计特征(平均值 对比度 熵等)计算 python代码实现

这篇博客介绍了如何利用Python计算图像的纹理特征,如灰度直方图的统计矩来得到均值、方差、三阶矩,以及计算一致性测度和熵。通过这段代码,可以对图像进行分析,获取其纹理信息,用于图像处理或计算机视觉任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述纹理最简单的方法之一就是利用图像或区域的灰度直方图的统计矩。令 z是一个表示灰度的随机变量并令 p(zi ),i=0,1,2,… ,L-1是对应的归一化直方图,其 中L是不同灰度级的数量。z相对于平均值的n阶矩是:
在这里插入图片描述
m 是z的均值 (即 图像或区域的平均灰度 ):
在这里插入图片描述基于直方图的其他一些有用的纹理测度包括一致性测度,它定义为:
在这里插入图片描述
在这里插入图片描述

以下是python代码:

# -*- coding: utf-8 -*-
"""
Created on Thu Jan  7 15:07:36 2021

@author: Chen
"""

import cv2 as cv
import numpy as np

img = cv.imread('',cv.IMREAD_UNCHANGED)

#print(img)

pi=[]   
std=[]   
std3=[]    
con = []  
ent = []
hist,bins = np.histogram(img.flatten(),256,[0,256])#计算灰度直方图
cdf = hist.cumsum()
cdf_normalized = hist / cdf.max()#归一化
#计算均值
for i in range(256):
    p = cdf_normalized[i]*i
    pi.append(p)
mean = sum((pi))
#计算方差(二阶矩)
for i in range(256):
    s = (i-mean)**2*cdf_normalized[i]
    std.append(s)
standard = sum(std)
#计算三阶矩
for i in range(256):
    s3 = (i-mean)**3*cdf_normalized[i]
    std3.append(s3)
standard3 = sum(std3)
#计算一致性
for i in range(256):
    c = cdf_normalized[i]**2
    con.append(c)
consistency = sum(con)
#计算熵
for i in range(256):
    e = -(cdf_normalized[i]*np.log2(cdf_normalized[i]+0.00001))
    ent.append(e)
entropy = sum(ent)
print(mean)
print(standard)
print(standard3)
print(consistency)
print(entropy)
#print(cdf.max())
#print(np.apply_over_axes(np.sum, img, [0,1])/cdf.max())
#print(sum(cdf_normalized))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值