一种绘画机器人的算法 - 有什么建议吗?

9

一个绘画机器人的算法 -

你好

我想编写一款软件,它可以分析图像,然后使用最少数量的不同颜色和透明度的贝塞尔路径对象,生成一个捕捉到原始图像中人眼所感知的图像。

与最近的Twitter超级压缩比赛不同(请参阅:stackoverflow.com/questions/891643/twitter-image-encoding-challenge),我的目标不是创建一个忠实于图像的复制品,而是复制人类观察图像的体验。

例如,如果原始图像在左上角显示一个红色气球,并且复制品在左上角有一个看起来像红色气球的东西,那么我就达到了目标,即使复制品中的气球位置、大小或颜色与原图并不完全相同。

当我说“由人类感知”,我的意思非常有限。我并不试图分析图像的含义,也不需要知道图像是什么,我只对人眼会注意到的关键视觉特征感兴趣,以至于这可以被一个没有能力概念化其实际观察对象的算法自动化处理。
为什么要选择人类感知而非照片的精确性呢?
这个软件将用于驱动一台绘画和绘图机器人,与人类艺术家合作(请参见: video.google.com/videosearch?q=mr%20squiggle)。
与其将人类制造的不完美照片看作是错误,该算法应尝试将已经存在于画布上的元素纳入最终图像中。
因此,相对亮度、色调、饱和度、大小和位置比与原始图像在摄影上完全相同更重要。保持特征的拓扑结构、颜色块、渐变、凸曲线和凹曲线的形状比这些特征的确切大小、形状和颜色更为重要。
还跟上我吗?
我的问题是我有点遭受“当你手里只有一把锤子,看什么都像钉子”的综合症。对我来说,使用类似于小波变换比较(参见:grail.cs.washington.edu/projects/query/)和Retriever使用的某些东西的遗传算法似乎是做这个的方法(参见:labs.systemone.at/retrievr/),以选择适合的解决方案。

但我认为这是答案的主要原因是,这些是我知道的技术,可能有更优雅的解决方案,使用我不了解的技术。

特别有趣的是考虑到人类视觉系统分析图像的方式,因此可能需要特别注意直线、角度、高对比度边界和大块相似颜色。

您有任何关于视觉、图像算法、遗传算法或类似项目的建议吗?

谢谢

Mat

提示:上面的一些拼写可能对您和您的拼写检查来说似乎是错误的。这只是国际拼写变体,可能与您所在国家的标准不同:例如,澳大利亚标准:colour vs 美国标准:color


为了新用户的利益,我想指出如果今天发布这个问题,它将不被允许存在。它非常广泛,要求一般性建议,并且没有明确的答案。它可能仍然存在于历史目的,因此不要将其用作好问题的模板。 - Kevin
5个回答

3

我无法直接回答你的问题,但是你应该真正关注艺术家/程序员(Lisp)哈罗德·科恩的绘画机器亚伦


像许多与技术合作的开创性艺术家一样,他在70年代就开始了这项工作,我想这使他名列历史。如果你能在某个地方见到他,他很愿意向其他程序员讲解这个过程。 - Dave Everitt

3

有一种模型可以作为算法实现,用于计算图像的显著性图,确定哪些部分会引起人类最大的注意。这个模型叫做itti koch模型。
你可以在这里找到一个入门论文,
更多资源和c++源代码在这里


关于MetaFilter的一个好处是,您可以分配多个正确答案,而在这里我只能选择一个。 - compound eye
(续)我本想给大家都打上绿色的勾,但这个答案给了我最有趣的探索方向,感谢大家。 - compound eye

1

这是一个相当大的任务。您可能会对图像矢量化感兴趣(不知道官方叫什么),它用于接收栅格化图像(例如您使用相机拍摄的图片)并输出一组贝塞尔线(我想)以近似输入的图像。由于良好的算法通常会输出非常高质量(即:复杂)的线条集,因此您还需要关注简化算法,这可以极大地帮助您。


谢谢,rcix, 我打算花大约三个月的时间来完成这个项目,以往经验表明可能会更长。 - compound eye

1

很不幸,我现在不在我的图书馆旁边,否则我可以推荐一些关于感知心理学的书籍。

首先,你必须考虑到人眼的生理特点,当我们观察一张图片或场景时,我们只能一次捕捉到非常小的部分,因为我们的眼睛会快速地扫视。我们的大脑将这些不同的部分拼接在一起,试图形成一个整体。

你可以从找到一个眼球在扫视时的路径算法开始。也许它会被对比度所吸引?

接下来,我们的眼睛会根据环境调整“曝光”。就像那些高动态范围图像一样,如果它们不是由整个场景的多个曝光组合而成,而是由许多小图像组合而成,每个图像都平衡自己,但与周围混合在一起形成高动态范围。

现在有一个研究发现,在猴子的大脑中,如果它的视野左上方有一条对角线,就会有一个单一的神经元被激活。类似的神经元可以在该猴子视野的不同区域中找到,用于垂直线和水平线。这个“对角线”决定了该神经元发射的频率。

人们可以推测,其他神经元可能会被发现并映射到其他特性,如红色或纹理等。

有一些人类可以做到的事情,我从未见过计算机程序能够做到。这就是所谓的“闭包”,人类能够填补关于他们所看到的某些不存在于图像中的信息。例如:

          *






*                    *

那是一个三角形吗?如果你事先知道它是三角形,那么你可能可以编写一个程序来连接这些点。但如果只是一些点呢?你怎么知道呢?除非我有一种非常聪明的方法来处理这个问题,否则我不会尝试这个。

关于人类感知还有许多其他事实,你可能能够利用它们。祝你好运,你选择了一项不简单的任务。


1
你给了我一个非常好的想法, 如果我能追踪艺术家在原始图像上的注视, 我就能确定图像中吸引人们注意力的关键区域, 例如人脸等,并使用这些来确定需要更加仔细地复制哪些部分的图像。我想我会保留三角形不变,三颗星星, 这表明了一种更好的陈述我的目标的方式,即再现一个保留了图像大部分体验特征的图像。我无法希望图解看到图像的经历, 我将让观众在三角形中找到这个图像。 - compound eye

0
我认为在完成这项巨大任务时有助于您的一件事情是人类参与。我的意思是数据。例如,您可以让许多人坐在那里盯着随机的点(就像之前的帖子中所示)并根据他们的判断将它们连接起来。您可以利用这些数据。

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