2013-11-25 58 views
2

我試圖獲得一個Mathematica例子的工作。這是Theo Gray's blog上的一個。在Mathematica 9.0中不起作用。我已在stackoverflow in mathematica 8.0上搜索答案。我使用heike給出的代碼。Mathematica中的照片馬賽克:2008年的一個例子在Mathematica中不起作用9

imagePool =Map[With[{i = Import[#]}, {i, [email protected][Flatten[ImageData[i], 1]]}] &,FileNames["/Users/xunyanan/Desktop/webwx_img/*.jpg"]]; 
closeMatch[c_] :=RandomChoice[Nearest[imagePool[[All, 2]] -> imagePool[[All, 1]], c, 20]] 
ImageAssemble[Map[closeMatch, ImageData[Import["/Users/xunyanan/Desktop/me.tif"]], {2}]] 

我認爲這幾乎成功運行 響應截圖: out content

當我點擊「顯示完整輸出」。我會得到的結果如下數學或9.0退出非正常 的截圖:

enter image description here

我用的Mathematica 9.0現在,已經不是experience.so任何人都可以提出一個版本代碼的工作爲Mathematica 9?我很感激,你可以給我一些建議。

謝謝你們編輯這個問題。 我的PC ENV:Mac OS X版本10.9和數學9.0

+0

@Cole謝謝,一個壞的錯誤 – xunyn

+0

@Cole你知道如何將這個問題發佈給這些人 – xunyn

+0

我不確定是誰以太,你可以做到堆棧溢出,除了@提及他們的名字 – Cole

回答

1

正如評論音符,你的問題是因爲你使用的imagePool圖像都不盡相同數量的渠道,而這擾亂Nearest功能。也許最簡單的方式來解決,這是:

imagePool = Map[With[{i = Import[#]}, {i, 
    [email protected][Flatten[ImageData[RemoveAlphaChannel[i]], 1]]}] &, 
    FileNames["*.png", "/tmp"]] 

即申請RemoveAlphaChannel當您導入圖像。將相同的預防措施應用於源圖像也是明智之舉。

現貨的區別:

之前(不含RemoveAlphaChannel):

before

後:

after

+0

需要做的是對目標圖像,以及... – agentp

+0

@喬治好主意。我對原始鏈接Q和A有很好的記憶 - 我的第一個StackExchange問​​題...:) – cormullion

+0

@cormullion謝謝你的回答,它可以工作 – xunyn