我看过几张图片,其中 一般来说 用许多较小的图像制作一张脸。

例如,假设他们将 100 个图像平铺在 10x10 网格中,并且以某种方式改变较小图像的色调/饱和度/颜色,这样当您看到 大局观, ,您会看到另一幅图像。

问题归结为——假设你有一个图像。您会对该图像应用哪种算法,以便该图像的平均 RGB 值是您定义的值?

有帮助吗?

解决方案

  1. 计算每个图块的色调/饱和度/值(使用 HSV,因为这里较小的差异对人眼来说比 RGB 空间更“自然”)
  2. 现在为大图片的每个 n*n 块计算相同的值
  3. 查找具有最接近 HSV 值的图块(最小值 sqrt((h1-h2)^2 - (s1-s2)^2 - (v1-v2)^))并将缩小到 n*n 的图块标记到结果中。

要找到图块的 HSV,应该足以将所有 RGB 值相加,然后将它们除以像素数,并将最终的 RGB 三元组转换为 HSV。但为了节省,我建议您尝试这两个版本。

哪篇维基百科文章 用于 RGB <-> HSV 转换。

为了完善算法,您可以将每个图块分成 m 个m 并计算每个网格元素的平均 HSV。然后,当你寻找匹配时,像往常一样将大图像分为几部分,同时计算 mm HSV 值。选择与这些 m*m 中大多数最匹配的图块。这使得算法能够选择与大图片具有相同结构的图块。

为了获得额外的触感,尝试创建一个 十亿像素图像.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top