zoukankan      html  css  js  c++  java
  • 颜色矩原理及Python实现

    原理 

      颜色矩(color moments)是由Stricker 和Orengo所提出的一种非常简单而有效的颜色特征。这种方法的数学基础在于图像中任何的颜色分布均可以用它的矩来表示。此外,由于颜色分布信息主要集中在低阶矩中,因此仅采用颜色的一阶矩(mean)、二阶矩(variance)和三阶矩(skewness)就足以表达图像的颜色分布。与颜色直方图相比,该方法的另一个好处在于无需对特征进行向量化。因此,图像的颜色矩一共只需要9个分量(3个颜色分量,每个分量上3个低阶矩),与其他的颜色特征相比是非常简洁的。在实际应用中,为避免低次矩较弱的分辨能力,颜色矩常和其它特征结合使用,而且一般在使用其它特征前,起到过滤缩小范围(narrow down)的作用。

    注:

    图中, N 表示图片中的总的像素数,pij表示第i个颜色通道在第j个图像像素值,Ei表示第i个颜色通道上所有像素的均值,σi表示第i个颜色通道上所有像素的标准差,si表示第i个颜色通道上所有像素的斜度(skewness)的3次方根。

    Python 实现

    import cv2
    import numpy as np
    
    # Compute low order moments(1,2,3)
    def color_moments(filename):
        img = cv2.imread(filename)
        if img is None:
            return
        # Convert BGR to HSV colorspace
        hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
        # Split the channels - h,s,v
        h, s, v = cv2.split(hsv)
        # Initialize the color feature
        color_feature = []
        # N = h.shape[0] * h.shape[1]
        # The first central moment - average 
        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])
        # The second central moment - standard deviation
        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])
        # The third central moment - the third root of the 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

    参考资料

    1、颜色特征的提取(转) http://blog.sina.com.cn/s/blog_66f17a900100w1iy.html

    2、颜色矩 http://www.xuebuyuan.com/2199860.html

    3、M. Stricker and M. Orengo, Similarity of Color Images, in Proc. SPIE Storage and Retrieval for Image and Video Databases, 1995.

  • 相关阅读:
    grep 同时满足多个关键字、满足任意关键字和排除关键字
    随笔_生活感想
    oracle中to_number(),LPAD(),NVL()函数
    向数据库插入数据为null——忘记加@RequestBody
    自定义css样式覆盖Element-ui的样式
    ORA-00001: 违反唯一约束条件
    ORA-01400: 无法将 NULL 插入 ("JXKH"."SYS_MENU"."MENU_ID")
    'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
    Error: Cannot find module 'webpack-merge'
    ERROR:oracle.jdbc.driver.OracleDriver is deprecated.
  • 原文地址:https://www.cnblogs.com/klchang/p/6512310.html
Copyright © 2011-2022 走看看