开发者资讯

 首页 > 开发者资讯 > 编程开发 > 编程的艺术:用数字技术作画

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

分享到:
【字体:
导读:
          给你一副真彩画,你的任务是要完成这个图像的另一个版本,让它看起来就像是用数字彩笔画上去的一样(孩子们经常这样玩)。随着开始画图,你有两个参数可以设定:P,调色板的最大尺寸(即使用不同颜色的最大数量),和N,使用的单元格的最大数量。你的算法不必非要使用所有的P


本文由PHP100中文网编译,转载请看文末的转载要求,谢谢合作!

       给你一副真彩画,你的任务是要完成这个图像的另一个版本,让它看起来就像是用数字彩笔画上去的一样(孩子们经常这样玩)。随着开始画图,你有两个参数可以设定:P,调色板的最大尺寸(即使用不同颜色的最大数量),和N,使用的单元格的最大数量。你的算法不必非要使用所有的P颜色和N单元格,但它一定不能使用这之外的东西。输出的图像应该与输入的图像有相同的尺寸。
 
       单元格被定义为具有相同颜色像素的连续区域。像素仅接近在一个角落不被认为是连续的。单元格可能有中空的现象。
 
       简而言之,你只能通过N个平坦的阴影或固色区域以及P个不同的颜色来粗略估计输入的图像。
 
       为了视觉化参数,这有一个很简单的例子(对于没有特别输入的图像时,炫耀下我牛逼的绘画技能嘿嘿)。下面这个图像的参数是P=6,N=11。
 

enter image description here

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

  Great Wave Coral Reef  RainbowStarry Night River Brown Bear Waterfall Mandrill Crab Nebula American Gothic Mona Lisa Scream  

 
       请包含一些不同参数的一系列结果。如果你想展示大量的结果,你可以在imgur.com创建一个画廊,以保持回应图像尺寸的合理性。另外,把缩略图放到你的文章里,并且把他们连接到更大的图像上面,就像上面的图像那样,也是个不错的做好。此外,随意使用其他测试图像吧,如果你找到一些比较好的图像的话。
 
       我认为,在大约N>=500,P~30的时候,输出将类似于真正的数字水彩模板了。
 
       这是一个人气竞赛,所以投票越多的回应作品才会获胜。投票者可以通过这几方面来判断作品的优劣:
 
1.原始图像被估计的有多好
 
2.算法在不同种类的图像上能适用多好(绘画可能通常比照片更容易)
 
3.算法在非常严格的参数下效果有多好
 
4.单元格形状看起来是不是自然/平滑
 
       我将使用以下Mathemaica脚本来验证结果:
 
image =  // ImageData;

palette = Union[Join @@ image];

Print["P = ", Length@palette];

grid = GridGraph[Reverse@Most@Dimensions@image];

image = Flatten[image /. Thread[palette -> Range@Length@palette]];

Print["N = ", 

 Length@ConnectedComponents[

   Graph[Cases[EdgeList[grid], 

     m_ <-> n_ /; image[[m]] == image[[n]]]]]]

       PHP100为您推荐与编程艺术有关的优秀文章:《优秀的程序员就像艺术家》,以及编程能用来做的更有意思的领域:《一个虚拟出来的编程空间》、《用HTML和CSS创建3D世界》、《HTML5技术秀:你的3D立体旋转名字》,希望编程能为你带来更多乐趣,编程原本就是另一种意义上的设计,编程理论上是万能的,这也是我当初钟爱编程的原因,其次,它能让我们做些自己想做的事,让生活更加简单、方便。这也是科技和艺术结合的魅力。
 
原文:Paint by Numbers
译文:http://www.php100.com/html/it/focus/2014/1209/8012.html
(翻译:PHP100_Alex)
分享到:
29 个 PHP 的 Excel 处理类
下面的 PHP Excel 处理类中,包含 Excel 读写、导入导出等相关的类,列表如下:   PHP Excel Reader classes   1. Read Excel Spreadsheets using COM   Umesh Rai (India)   2. Read Excel Binary .XLS Files in Pure PHP   Ruslan V. Uss (Russian Federation)   3. Read...
PHP100教你在命令行下执行PHP和MySQL
       本文由PHP100中文网编译,转载请看文末的转载要求,谢谢合作!              在这里,我为大家快速介绍如何在Windows下通过命令行运行php和MySQL。有的时候我们要在命令行而不是浏览器中运行较大的文件,所以我们需要学习通过命令执行php脚本,同样的,对于那些无法在phpmyadmin UI界面中添加的...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……