編程的藝術:用數(shù)字技術作畫
給你一副真彩畫,你的任務是要完成這個圖像的另一個版本,讓它看起來就像是用數(shù)字彩筆畫上去的一樣(孩子們經(jīng)常這樣玩)。隨著開始畫圖,你有兩個參數(shù)可以設定:P,調色板的***尺寸(即使用不同顏色的***數(shù)量),和N,使用的單元格的***數(shù)量。你的算法不必非要使用所有的P顏色和N單元格,但它一定不能使用這之外的東西。輸出的圖像應該與輸入的圖像有相同的尺寸。
單元格被定義為具有相同顏色像素的連續(xù)區(qū)域。像素僅接近在一個角落不被認為是連續(xù)的。單元格可能有中空的現(xiàn)象。
簡而言之,你只能通過N個平坦的陰影或固色區(qū)域以及P個不同的顏色來粗略估計輸入的圖像。
為了視覺化參數(shù),這有一個很簡單的例子(對于沒有特別輸入的圖像時,炫耀下我牛逼的繪畫技能嘿嘿)。下面這個圖像的參數(shù)是P=6,N=11。
這有幾個能測試你算法的圖像。
請包含一些不同參數(shù)的一系列結果。如果你想展示大量的結果,你可以在imgur.com創(chuàng)建一個畫廊,以保持回應圖像尺寸的合理性。另外,把縮略圖放到你的文章里,并且把他們連接到更大的圖像上面,就像上面的圖像那樣,也是個不錯的做好。此外,隨意使用其他測試圖像吧,如果你找到一些比較好的圖像的話。
我認為,在大約N>=500,P~30的時候,輸出將類似于真正的數(shù)字水彩模板了。
這是一個人氣競賽,所以投票越多的回應作品才會獲勝。投票者可以通過這幾方面來判斷作品的優(yōu)劣:
1.原始圖像被估計的有多好
2.算法在不同種類的圖像上能適用多好(繪畫可能通常比照片更容易)
3.算法在非常嚴格的參數(shù)下效果有多好
4.單元格形狀看起來是不是自然/平滑
我將使用以下Mathemaica腳本來驗證結果:
- image = <pastedimagehere> // 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]]]]]]
原文:Paint by Numbers
譯文:http://www.php100.com/html/it/focus/2014/1209/8012.html
(翻譯:PHP100_Alex)