图片色调识别

  • 色调定义
  • 色调提取方法
  • 中位切分法
  • RGB与色调


色调定义

(1)	暖色调
	温暖与热烈是暖色的基调。当人们见到红、橙、黄、红紫等暖色调后,
	比较容易联想到太阳、火焰、热血等事物,会有温暖、欢乐、刺激等感觉。
	按照给人温暖感觉的强度有高到低排序: 橙色>红色>粉色>黄色>红紫色>黄绿色
	例如暖色调的颜色占比达到40%以上,那么定义该图片的颜色为暖色调。
(2)	中性色调
	没有冷暖性质的区别。比如灰、黑、棕属于中性色彩,
	例如中性色调的颜色占比达到40%以上,那么定义该图片的颜色为中性色调。
(3)	冷色调
	冷色则以寒冷、清爽为基调。当人们见到蓝、紫、绿等冷色之后,
	比较想象到太空、冰雪、海洋等事物,使人有寒冷、清凉、肃穆的感觉。
	按照给人寒冷感觉的程度由高到底进行排序: 蓝色>蓝紫>蓝绿>紫>绿。
	例如冷色调的颜色占比达到40%以上,那么定义该图片的颜色为冷色调。
(4)	色调繁杂(这个未实现)
	若提取的主题色占比均衡(7个主题色的占比均为10%~20%之间),
	并没有出现占比特别大的颜色,则可该图像色调繁杂。

色调提取方法

中位切分法

中位切分法通常是在图像处理中降低图像位元深度的算法,可用来将高位的图转换位低位的图,如将24bit的图转换为8bit的图。我们也可以用来提取图片的主题色,其原理是是将图像每个像素颜色看作是以R、G、B为坐标轴的一个三维空间中的点,由于三个颜色的取值范围为0~255,所以图像中的颜色都分布在这个颜色立方体内,如下图所示。
各个端点的RGB值为:

颜色

黑色

白色

红色

绿色

RGB

[0,0,0]

[255,255,255]

[255,0,0]

[0,255,0]

颜色

蓝色

黄色

品红色

青色

RGB

[0,0,255]

[255,255,0]

[255,0,255]

[0,255,255]

android Palette 判断图片深色还是浅色 判断图片颜色_图像处理


android Palette 判断图片深色还是浅色 判断图片颜色_中位数_02


之后将RGB中最长的一边从颜色统计的中位数一切为二,使得到的两个长方体所包含的像素数量相同,重复这个过程直到切出长方体数量等于主题色数量为止,最后取每个长方体的中点即可。

在实际使用中如果只是按照中点进行切割,会出现有些长方体的体积很大但是像素数量很少的情况。解决的办法是在切割前对长方体进行优先级排序,排序的系数为体积 * 像素数。这样就可以基本解决此类问题了。

RGB与色调

  1. 主题色提取
    通过中位切分法对图片的主题色进行提取,目前设置提取颜色数量为7个,即划分7个颜色空间,选择颜色空间的中位数作为颜色空间的主题色。
  2. 图片色调判断
    对7个颜色空间的像素数进行计算,根据暖、中、冷色调的颜色比重作为分类的依据。例如暖色调的颜色占比达到50%以上,那么定义该图片的颜色为暖色调。初步粗略的通过颜色空间来划分色域。
  3. android Palette 判断图片深色还是浅色 判断图片颜色_图像处理_03


引用文献:
[1] 李征.论色彩的心理效应[J].石家庄职业技术学院学报,2004(03):45-48.
[2] 李振福.(2007).船员心理与船舶舱室色彩设计研究.船舶工程,29(3):34-39.