编程的艺术:用数字技术作画

开发 前端
给你一副真彩画,你的任务是要完成这个图像的另一个版本,让它看起来就像是用数字彩笔画上去的一样(孩子们经常这样玩)。随着开始画图,你有两个参数可以设定:P,调色板的最大尺寸(即使用不同颜色的最大数量),和N,使用的单元格的最大数量。你的算法不必非要使用所有的P颜色和N单元格,但它一定不能使用这之外的东西。输出的图像应该与输入的图像有相同的尺寸。

给你一副真彩画,你的任务是要完成这个图像的另一个版本,让它看起来就像是用数字彩笔画上去的一样(孩子们经常这样玩)。随着开始画图,你有两个参数可以设定:P,调色板的***尺寸(即使用不同颜色的***数量),和N,使用的单元格的***数量。你的算法不必非要使用所有的P颜色和N单元格,但它一定不能使用这之外的东西。输出的图像应该与输入的图像有相同的尺寸。

单元格被定义为具有相同颜色像素的连续区域。像素仅接近在一个角落不被认为是连续的。单元格可能有中空的现象。

简而言之,你只能通过N个平坦的阴影或固色区域以及P个不同的颜色来粗略估计输入的图像。

为了视觉化参数,这有一个很简单的例子(对于没有特别输入的图像时,炫耀下我牛逼的绘画技能嘿嘿)。下面这个图像的参数是P=6,N=11。

[[124099]]

这有几个能测试你算法的图像。

[[124100]] [[124101]]  [[124102]][[124103]] [[124104]] [[124105]] [[124106]] [[124107]] [[124108]] [[124109]] [[124110]] [[124111]]

请包含一些不同参数的一系列结果。如果你想展示大量的结果,你可以在imgur.com创建一个画廊,以保持回应图像尺寸的合理性。另外,把缩略图放到你的文章里,并且把他们连接到更大的图像上面,就像上面的图像那样,也是个不错的做好。此外,随意使用其他测试图像吧,如果你找到一些比较好的图像的话。

我认为,在大约N>=500,P~30的时候,输出将类似于真正的数字水彩模板了。

这是一个人气竞赛,所以投票越多的回应作品才会获胜。投票者可以通过这几方面来判断作品的优劣:

1.原始图像被估计的有多好

2.算法在不同种类的图像上能适用多好(绘画可能通常比照片更容易)

3.算法在非常严格的参数下效果有多好

4.单元格形状看起来是不是自然/平滑

我将使用以下Mathemaica脚本来验证结果:

  1. image = <pastedimagehere> // ImageData; 
  2. palette = Union[Join @@ image]; 
  3. Print["P = ", Length@palette]; 
  4. grid = GridGraph[Reverse@Most@Dimensions@image]; 
  5. image = Flatten[image /. Thread[palette -> Range@Length@palette]]; 
  6. Print["N = ",  
  7.  Length@ConnectedComponents[ 
  8.    Graph[Cases[EdgeList[grid],  
  9.      m_ <-> n_ /; image[[m]] == image[[n]]]]]] 

原文:Paint by Numbers
译文:http://www.php100.com/html/it/focus/2014/1209/8012.html
(翻译:PHP100_Alex) 

责任编辑:张伟 来源: PHP100
相关推荐

2022-09-09 15:45:25

人工智能工具艺术

2010-08-18 09:14:34

编程语言

2023-05-22 09:27:11

GMPGolang

2023-08-21 07:34:37

GolangGMP

2017-10-30 15:14:45

盘纤光纤光缆

2024-03-26 11:54:35

编程抽象代码

2017-08-29 11:26:00

人工智能

2017-08-30 20:10:56

人工智能艺术神经网络

2022-12-02 15:11:52

数据分析数据可视化

2024-04-11 07:40:55

Go并发编程

2024-05-06 07:53:09

Go并发编程

2024-02-28 07:59:25

2024-02-19 12:24:58

2012-07-30 09:58:53

2017-07-09 09:17:41

沟通技术项目

2016-12-13 09:00:13

大数据艺术技术

2011-04-14 10:44:41

戴尔技术论坛

2020-04-22 10:02:48

编程高德纳算法

2024-02-04 15:58:53

C++ 17编程代码
点赞
收藏

51CTO技术栈公众号