Python图片颜色特征提取——HSV中心距法(附代码及注释)
2021-04-25 22:26
标签:turn col oat nts 组成 abs spl img python实现 首先让我们先了解一下颜色矩是什么,以下是颜色矩的定义及数学表达,看着唬人但其实并不难。 颜色矩是一种简单有效的颜色特征表示方法,有一阶矩(也就是均值,mean)、二阶矩(也就是标准差, variance)和三阶矩(斜度,skewness)等,由于颜色信息主要分布于低阶矩中,所以用一阶矩,二阶矩和三阶矩足以表达图像的颜色分布,颜色矩已证明可有效地表示图像中的颜色分布。 其中,Pij 表示彩色图像第j个像素的第i个颜色分量,N表示图像中的像素个数。 HSV 中心距法是基于HSV空间的,因此需要将RGB空间转换为HSV空间。 Python图片颜色特征提取——HSV中心距法(附代码及注释) 标签:turn col oat nts 组成 abs spl img python实现 原文地址:https://www.cnblogs.com/bridge0904/p/13255917.html颜色矩是个啥?
Python实现(附代码及详细注释)
def color_moments(filename):
img = cv2.imread(filename) # 读一张彩色图片
if img is None:
return
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # RGB空间转换为HSV空间
h, s, v = cv2.split(hsv)
color_feature = [] # 初始化颜色特征
# 一阶矩(均值 mean)
h_mean = np.mean(h) # np.sum(h)/float(N)
s_mean = np.mean(s) # np.sum(s)/float(N)
v_mean = np.mean(v) # np.sum(v)/float(N)
color_feature.extend([h_mean, s_mean, v_mean]) # 一阶矩放入特征数组
# 二阶矩 (标准差 std)
h_std = np.std(h) # np.sqrt(np.mean(abs(h - h.mean())**2))
s_std = np.std(s) # np.sqrt(np.mean(abs(s - s.mean())**2))
v_std = np.std(v) # np.sqrt(np.mean(abs(v - v.mean())**2))
color_feature.extend([h_std, s_std, v_std]) # 二阶矩放入特征数组
# 三阶矩 (斜度 skewness)
h_skewness = np.mean(abs(h - h.mean()) ** 3)
s_skewness = np.mean(abs(s - s.mean()) ** 3)
v_skewness = np.mean(abs(v - v.mean()) ** 3)
h_thirdMoment = h_skewness ** (1. / 3)
s_thirdMoment = s_skewness ** (1. / 3)
v_thirdMoment = v_skewness ** (1. / 3)
color_feature.extend([h_thirdMoment, s_thirdMoment, v_thirdMoment]) # 三阶矩放入特征数组
return color_feature
文章标题:Python图片颜色特征提取——HSV中心距法(附代码及注释)
文章链接:http://soscw.com/index.php/essay/79538.html