今天大致看完了論文,思路仍然不是很清晰.
論文介紹了通過生長曲線的方法來實(shí)現(xiàn)用許多不規(guī)則的區(qū)塊鑲嵌成整個圖案.新穎之處大概在于,不同于以往實(shí)現(xiàn)藝術(shù)鑲嵌是采用小區(qū)塊填充整個區(qū)域的方法,這里的方法是在區(qū)域內(nèi)通過一定數(shù)量的粒子的運(yùn)動來生成其軌跡的曲線,這些曲線最終將圖案割裂成一個個不規(guī)則的細(xì)小區(qū)塊.
So,主要問題就是:
- 對于一幅圖案,如何確定粒子系統(tǒng)的初始分布;
- 確定粒子如何運(yùn)動(又分為粒子并行運(yùn)動和順序運(yùn)動);
- 粒子停止運(yùn)動的條件;
- 對最終分好的區(qū)塊進(jìn)行著色.
確定粒子系統(tǒng)的初始分布
既然粒子要運(yùn)動,當(dāng)然要首先要確定粒子運(yùn)動的起始位置,即確定粒子系統(tǒng)的初始分布.顯然,粒子系統(tǒng)不應(yīng)該是在原圖像大小的區(qū)域內(nèi)均勻分布,粒子系統(tǒng)初始分布直接影響了最終分塊的效果.
粒子如何運(yùn)動
接下來要確定粒子受什么樣的力運(yùn)動.我的第一直覺是粒子必然是根據(jù)一個由圖像所確定的方向場下運(yùn)動.既然要確定圖像內(nèi)容,以前學(xué)過的一些邊緣檢測的算法一下子浮出腦海,然而論文里好像是根據(jù)一個叫edge tangent flow的方法來確定的向量場,這里的具體細(xì)節(jié)還沒搞懂.<<代碼本色>>其中的一個FlowfieldImage的示例程序,是根據(jù)一副灰度圖像的亮度值來產(chǎn)生方向場,然后通過鼠標(biāo)點(diǎn)擊的方式產(chǎn)生粒子,在方向場下運(yùn)動,我稍微改動了一下代碼,首先顯示粒子運(yùn)動的軌跡,然后又改為在整個區(qū)域內(nèi)均勻分布粒子運(yùn)動.果然效果和論文里的效果簡直風(fēng)馬牛不相及.失敗.
粒子停止運(yùn)動的條件
根據(jù)論文,應(yīng)該是當(dāng)粒子運(yùn)動的軌跡長度達(dá)到一定閾值時,粒子停止運(yùn)動.當(dāng)所有粒子停止運(yùn)動時,劃分區(qū)塊的過程結(jié)束.
對分好的區(qū)塊分別進(jìn)行著色
大致思路是將封閉區(qū)塊的重心(打算就是將封閉區(qū)塊的定點(diǎn)坐標(biāo)相加然后除以定點(diǎn)數(shù))的色彩賦給整個區(qū)塊.