从一组图片中选取最亮/最多样化的图片的算法是什么?

5
我有100张从视频中提取的图片,用作相册缩略图。我的C#应用程序需要选择最“有趣”的图片,或者说是哪一张图片会吸引用户在看到缩略图后查看视频。
显然,有些图片比其他图片更令人兴奋;黑色边框不令人兴奋,纯白边框也不是。因此,我已经(任意地)想出了以下因素,可以使一张图片在一组中“脱颖而出”。
  • 应该具有高度的亮度,但不完全是白色。可能在从黑色到白色的比例上平均亮度为50%-75%。
  • 应该具有多样化的颜色。假设可以测量,那么颜色范围最广的图片应该在组中突出。
这些因素如何计算?还有其他改进措施可以选择最佳图片吗?

不是很相关,但亮度是唯一确定图片是否“有趣”的标准吗?实际上,兴趣不是与个人口味和/或图片的背景紧密相关吗? - Ricardo Ferreira
1
@Ricardo - 当然还有其他因素……但是当机器需要在没有用户数据的情况下进行选择时,上下文和个人口味就不能成为因素。 - Brandon
4个回答

4

您还希望缩略图能够代表视频内容。试试这个方法:创建N个候选缩略图(在视频中等距离分布),通过对候选缩略图进行平均处理,创建一个平均缩略图,然后选择与平均缩略图最接近的实际缩略图。


1
这是一个好主意,但对于包含视觉多样场景的视频可能会出现故障。 - Rex M
最佳候选人与平均值相差很远的视频可以通过其他方法轻松标记缩略图,例如手动或在视频中间进行标记。 - Fantius

4
请查看SIGGRAPH 2010的Video Tapestries论文。显然这对于你的项目来说是过度的,但请仔细查看之前的工作部分。希望能够给你一个关于如何决定有趣且具有代表性的材料的想法。

1

请查看此页面,将RGB转换为HSL(色相、饱和度、亮度):

http://130.113.54.154/~monger/hsl-rgb.html在此输入链接描述

我还没有尝试过这些方程式,但我相信它们会给出一个不错的估计,而不会太过于计算密集。如果这些方程式效果不好,那么有很多关于如何将RGB转换为HSL的信息。

一旦你完成了转换,亮度代表“亮度”。色相和饱和度共同代表“颜色”。色相是色调(这是绿色还是红色),而饱和度是色调的强度。

要确定图片的亮度,只需查看其亮度(L)值即可。

要确定颜色“范围”,作为第一次尝试,我会计算色相和饱和度的向量和。这应该会给你一个“远离白色”的距离。例如:

Color Strength = Sqrt(Hue^2 + Saturation^2)

找到颜色强度最小和最大的两个像素,然后将它们相减以获得颜色多样性的粗略测量。

您可能希望对每个图像进行子采样,换句话说,仅计算每个图像中少量像素的HSL。您需要尝试不同的样本计算方式。最好从中心和每个角落取一个8x8块,计算这些块的平均HSL,然后在计算中使用它们。

我实际上还没有尝试过任何这些方法,只是有一些关于颜色空间的基础知识,希望这能有所帮助。


1
使用您提出的方法,您可以收集每个像素的Hue和亮度统计信息,然后计算每个像素的平均值和标准差。更高的标准差表示更多的多样性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接