本文最后更新于 2024-10-29,文章内容可能已经过时。

提取计算特征来表示图像吸引力是图像美学质量评估任务的关键步骤,提取特征的好坏会直接影响后续决策算法的性能。传统方法的研究主要通过人类直觉、心理学等获得灵感来设计美学特征。

Peters等研究者分析了人类视觉系统,并推导出视觉美学的6个基本维度:颜色、形式、空间组织、运动、深度、人体。Ke Yan等人提出影响图像吸引力的3个重要因素:简洁、逼真和基本的摄影技术。Li Congcong等人提出颜色、构图、意义、纹理和形状是影响图像美学质量的重要因素。

Luo Yiwen等人强调了图像的主题对图像美学质量的重要性。此外,Sagnik Dhar等人提出用高级语义属性来描述图像吸引力。

基于这些对图像美学质量评估标准的分析,研究者们提出了多种算法来提取与这些标准相关的图像特征。接下来将会详细分析这些能表征图像吸引力的特征和属性,这些特征主要分为3组:底层美学特征、摄影美学特征、通用与专用图像特征。

底层美学特征

所谓底层美学特征,主要是指图像的颜色、亮度等统计特征。

颜色与色调

颜色是从图像中获得的最直接的信息,创造更具吸引力的色彩构成是专业摄影师的重要能力,通常会在HSL或者HSV颜色空间中进行评估。

粗略提取图像颜色特征的一个方法是计算图像中像素颜色的平均值,从艺术角度来说,平均值或多或少可以反映图像的色调。此外,还可以基于图像中的所有像素生成直方图以表示图像的全局颜色组成,或者基于预分割区域内的像素生成直方图来表示局部颜色组成。

出色的摄影作品通常色调都非常简洁、和谐,这样可以突出主体,而业余人士拍摄的照片可能看起来混乱。对此,研究人员提出了颜色和谐性等特征。

摄影中色调常遵循单一色调、互补色调、相邻色调等原理。图2.4展示了互补色调作品及其色相直方图。基于此,我们可以提取前景和背景HSV色相直方图中的平均色相值和方差来判断色调,并使用KL散度等指标来判断前景和背景的直方图分布相似度。

通过Python代码我们可以简单绘制一张图片的色相直方图


import cv2 as cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取图像
image = cv2.imread('./images/sun.png')

# 检查图像是否正确加载
if image is None:
    raise ValueError("Could not load image, please check the path.")


# 将图片从BGR转换到RGB(因为OpenCV默认使用BGR)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 将RGB图像转换到HSV颜色空间
image_hsv = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2HSV)

# 提取H(色相)通道
h_channel = image_hsv[:,:,0]

# 计算直方图
histogram = cv2.calcHist([h_channel], [0], None, [180], [0, 180])
histogram_normalized = histogram.ravel() / histogram.sum()

# 绘制归一化直方图
plt.figure()
plt.title('Normalized Hue Histogram')
plt.xlabel('Hue')
plt.ylabel('Frequency (Normalized)')
plt.xlim([0, 180])
plt.plot(histogram_normalized)
plt.show()

从直方图中可以看出考向红色的分布较多。

亮度与对比度

摄影器材的自动曝光程序会依据18度灰进行曝光,当物体颜色接近黑色,相机会增加曝光,反之会减少曝光,但是该原则并非对所有场景都适用。例如,雪景中自动曝光会导致人物欠曝光,逆光场景下自动曝光则容易产生过曝光现象。选择适合的光线条件和控制曝光是专业摄影师的基本技术,专业摄影师也会充分利用光线对比度来强调主体,如图2.5所示。

最简单的情况下,我们可以使用平均亮度和亮度对比度来作为特征。Ke Yan等人则提出了全局边缘分布、对比度和亮度指标来表示图像,然后基于这些特征训练贝叶斯分类器。Tong等人通过将全局低级特征(模糊性、对比度、显著性)结合起来对摄影作品和普通照片进行分类。

注:18度灰又被称为中阶灰,来自科学家对自然界的平均反射率的统计结果。

仍以刚刚的图片为例,我们可以利用sobel算子获取图像的边缘,再求分布信息

def calculate_global_features(image_path):
    # 读取图片
    image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
    
    if image is None:
        print("Image not found.")
        return
    
    # 全局边缘分布
    sobelx = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=3)
    sobely = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=3)
    edge_magnitude = np.sqrt(sobelx**2 + sobely**2)
    edge_distribution = np.histogram(edge_magnitude, bins=256, range=(0, 256))[0]
    
    # 对比度
    
    
    # 亮度
    
    
    return edge_distribution

# 使用函数
image_path = './images/sun.png'  # 替换为你的图片路径
edge_distribution 

= calculate_global_features(image_path) print("Edge Distribution:", edge_distribution)

摄影美学特征

摄影美学特征主要是专属于摄影领域的特征,包括空间构图特征、前景与背景特征等。

构图

除了颜色和光线会影响图像吸引力,主体的位置及其空间相互关系在图像美学质量中也起着重要作用。专业摄影师有着丰富的构图知识和技术。若保持主体的完整形状,只是改变其空间位置,图像美学质量也会有很大变化。很多构图特征都是受摄影规则启发的,如黄金分割法则、视觉平衡等,其中最广泛使用的是三分法构图。

图2.6展示的是一张符合三分法构图的图,图中白线均匀地将图像横分或纵分为3份,中间矩形的4个角则是交点。满足三分法构图的图中最重要的主体会接近白线或者4个交点,所以我们可以用主体偏离位置来作为构图特征。

不过并非所有的照片都是遵循于一个固定的构图模式,摄影需要创造。

主体

专业摄影师会通过各种技术,如大光圈制造浅景深来突出图像中的主体,因为图像中的各个部分对整个图像美学的贡献也不相同。图像的主体区域更能吸引观赏者的注意力,因此其对图像吸引力的影响比背景区域更大。图2.7中的主体是“玫瑰”,它决定了整个图像的美感,而背景几乎对美学没有贡献,故被虚化。

基于此,我们可以计算与前景、背景相关的特征。

第1个是主体区域的色彩丰富度,可以基于色调图计数特征来计算主体区域的色彩丰富程度。

第2个是背景简洁度,简单的背景可以使观赏者的注意力集中于主体区域,背景是否简单可以用背景区域的颜色分布、边缘特征来衡量。

第3个是主体区域的空间位置,主体区域的空间位置对图像的构图有很大影响,因为它会影响图像的视觉平衡和三分法构图。

通用与专用图像特征

最后要说的就是通用与专用图像特征,通用图像特征不直接与摄影美学有关,而专用图像特征只适用于特定图像。

有研究者曾使用了多个通用图像特征,包括尺度不变特征变换(Scale-invariant Feature Transform,SIFT)、视觉词袋模型(Bag-of-Visual-Words,BOV)等,计算一系列特征后组成特征向量,然后使用SVM等分类器进行分类。研究表明对于某些风景照,局部二值模式(Local Binary Pattern,LBP)特征和方向梯度直方图(Histogram of Oriented Gradient,HOG)特征比较有效。另外,其他的图像质量评估指标如清晰度、噪声等也可以被用来评估美学质量。

而对于某些特定类型的照片,如商业人脸照片,就可以使用人脸专有的人脸表情、姿态等特征。

总的来说,影响一张图像美学体验的因素非常多,此处我们只介绍了其中最通用的一些,不同类型图像有最适合它的特征,需要针对性分析才能获得比较好的结果。

小提示:由于传统的特征提取方法受限于专家知识和特征的表达能力,甚至有一些摄影知识难以用数学来描述,当前更好的做法是基于深度学习技术从数据集中自动学习美学相关特征,请看2.3节的介绍。