关于图像处理:绘图和绘画机器人的算法 – 任何提示?

An algorithm for a drawing and painting robot - any tips?

绘画机器人的算法-

你好

我想写一个软件,分析一个图像,然后产生一个图像,捕捉人眼在原始图像中的感知,使用最小的贝塞尔路径对象的颜色和不透明度的变化。

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

例如,如果原始图像在左上角显示一个红色气球,而复制品的左上角有一个红色气球,那么即使复制品中的气球位置不完全相同,大小或颜色也不完全相同,我也会达到我的目标。

当我说"被人感知"时,我的意思是这是一个非常有限的意义。我不想分析图像的含义,我不需要知道图像是什么,我只对人眼会注意到的关键视觉特征感兴趣,在某种程度上,这可以通过一种算法自动实现,这种算法没有能力概念化它实际观察到的内容。

为什么人类对摄影精度的感知有如此不寻常的标准?

这个软件将用于驱动一个绘图和绘画机器人,它将与人类艺术家合作(参见:video.google.com/videosearch?Q=mr%20蠕动)。

该算法不应将不完美的人所做的标记视为必然的错误,而应设法将画布上已有的标记合并到最终图像中。

因此,相对亮度、色调、饱和度、大小和位置比照片上与原始图像完全相同要重要得多。保持特征的拓扑结构、颜色块、梯度、凹凸曲线将更为重要,这些特征的准确尺寸、形状和颜色将更为重要。

还有我吗?

我的问题是我有点患上了"当你有锤子的时候,一切看起来都像钉子"综合症。在我看来,这样做的方法是使用一种遗传算法,它类似于retrivr(请参见:labs.systemone.at/retrivr/)使用的小波变换比较(请参见:grail.cs.washington.edu/projects/query/)来选择合适的解决方案。

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

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

你对我应该在视觉、图像算法、遗传算法或类似项目上读到的东西有什么建议吗?

谢谢你

席子

上面的一些拼写对你和你的拼写检查可能是错误的。这只是国际拼写差异,可能不同于贵国的标准:例如澳大利亚标准:颜色与美国标准:颜色


有一个模型可以作为计算图像显著性映射的算法来实现,它决定了图像的哪些部分最容易受到人类的关注。

这个模型叫做ITTI-Koch模型你可以在这里找到一份起始文件这里有更多的资源和C++源代码


我不能直接回答你的问题,但你真的应该看看艺术家/程序员(Lisp)Harold Cohen的绘画机器Aaron。


不幸的是,我不在我的图书馆旁边,或者我可以重读一些关于知觉心理学的书。

你必须考虑的第一件事是人眼的生理学,当我们检查一个图像或场景时,我们一次只能捕捉很小的片段,因为我们的眼睛快速地四处飞驰。我们的思想把不同的部分结合在一起,试图形成一个整体。

你可以从寻找眼球在周围移动时的轨迹算法开始。也许它是被对比所吸引?

接下来是我们的眼睛根据上下文调整"曝光"。这就像那些高动态范围的图像,如果它们不是由一个场景的多次曝光组合在一起,而是由许多小图像组合在一起,每个小图像各自平衡,但融入到周围环境中,形成一个高动态范围。

现在在猴子的大脑中有一个发现,如果在它的视野左上角有一条对角线,单个神经元就会发光。在猴子视野的不同区域,垂直线和水平线也有类似的神经元。"对角线"决定了神经元发射的频率。

有人可能会推测,其他神经元可能被发现并映射到其他特征上,如红色、纹理性和其他东西。

人类可以做的事情我从来没有见过计算机程序能做。这就是所谓的"封闭",即一个人能够填写关于他们所看到的东西的信息,而这些信息实际上并不存在于图像中。一个例子:

1
2
3
4
5
6
7
8
          *






*                    *

那是三角形吗?如果你知道这是事先的,那么你可以做一个程序来连接这些点。但如果只是点呢?你怎么知道?我不会尝试这个,除非我有一些真正聪明的方法来处理那个。

关于人类的感知,还有许多其他的事实你可能会用到。祝你好运,你没有选择一个简单的任务。


这是一项艰巨的任务。你可能会对图像矢量化感兴趣(不知道它的官方名称是什么),它用于拍摄光栅化的图像(例如你用相机拍摄的照片),并输出一组贝塞尔曲线(我认为)来近似你输入的图像。由于好的算法通常会输出非常高质量(读:复杂)的行集,所以您也会对简化算法感兴趣,因为简化算法可以极大地帮助您。


我认为能帮助你完成这项艰巨任务的一件事就是人的参与。我指的是数据。就像你可以让很多人坐在那里盯着随机的点(就像上一篇文章中的点),然后按照他们正确的方式连接它们。你可以利用这些数据。