C# 从组中拾取最亮/最多样化图像的算法?

C# 从组中拾取最亮/最多样化图像的算法?,c#,algorithm,image-processing,C#,Algorithm,Image Processing,我从视频中提取了100幅图像,用作图库中的缩略图。我的C应用程序需要选择哪一个最有趣,或者哪一个会吸引用户在看到缩略图后观看视频 显然,有些人比其他人更激动人心;黑框不刺激,纯白框也不刺激。到目前为止,我武断地提出了以下因素,来说明是什么让一张图片在一个群体中脱颖而出 应具有高亮度,但不能完全为白色。在从黑到白的范围内,平均亮度可能为50%-75%。 应该有一套不同的颜色。假设这是可以测量的,那么颜色范围最广的图像应该在组中脱颖而出。 如何计算这些因素?是否有任何其他改进可以选择组中最好的图像?

我从视频中提取了100幅图像,用作图库中的缩略图。我的C应用程序需要选择哪一个最有趣,或者哪一个会吸引用户在看到缩略图后观看视频

显然,有些人比其他人更激动人心;黑框不刺激,纯白框也不刺激。到目前为止,我武断地提出了以下因素,来说明是什么让一张图片在一个群体中脱颖而出

应具有高亮度,但不能完全为白色。在从黑到白的范围内,平均亮度可能为50%-75%。 应该有一套不同的颜色。假设这是可以测量的,那么颜色范围最广的图像应该在组中脱颖而出。
如何计算这些因素?是否有任何其他改进可以选择组中最好的图像?

您还希望缩略图能够代表视频。尝试以下操作:在视频中均匀地创建N个候选缩略图,通过平均候选缩略图来创建一个平均缩略图,然后选择最接近平均值的实际缩略图。

查看SIGGRAPH 2010中的纸张。很明显,这对您的项目来说是完全过分的,但是请查看前面的工作部分。希望能让您了解如何决定哪些材质有趣且具有代表性。

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

查看此页面,将RGB转换为HSLHue、饱和度、亮度:

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

完成此操作后,亮度表示亮度。色调和饱和度一起代表颜色。色调是指色调是绿色还是红色,而饱和度是指色调的强度

要确定图片的亮度,只需查看其亮度L值

为了确定颜色范围,作为第一次尝试,我会做一些类似于计算色调和饱和度的向量和的事情。这会让你远离白色。比如:

Color Strength = Sqrt(Hue^2 + Saturation^2)
找到具有最小和最大颜色强度的两个像素,然后减去它们以获得颜色多样性的粗略度量

您可能希望对每个图像进行子采样,换句话说,只计算每个图像中少量像素的HSL。你必须仔细考虑要计算的样本。最好从中心和每个角取8x8块,计算这些块的平均HSL,然后在计算中使用它们


实际上,我没有尝试过这些方法,只是在颜色空间中添加了一些补救性背景,所以希望这会有所帮助。

实际上没有关系,但亮度是确定图片是否有趣的唯一标准吗?事实上,兴趣不是与个人品味和/或图片背景密切相关吗?@Ricardo-当然还有其他因素。。。但当机器必须在没有用户数据的情况下进行挑选时,上下文和个人品味不能成为因素。这是一个好主意,但对于包含视觉多样性场景的视频可能会出现故障。最佳候选视频不是特别接近平均值的视频可以通过其他方法轻松标记为缩略图,比如用手或者视频中间。