6

में काम नहीं करता है मैं एक गणित उदाहरण काम करने की कोशिश कर रहा हूं। यह Theo Gray's blog पर एक है।मैथमैटिका में फोटो मोज़ेक: 2008 से एक उदाहरण गणित 8

मुझे लगता है कि उस कोड (मई 2008) को लिखने के बाद से मैथमैटिका बदलनी चाहिए, क्योंकि मैं लगभग सबकुछ बदलने के बावजूद इसे कुछ भी उचित नहीं कर पा रहा हूं। क्या मैं आयात के बजाय ImageData का उपयोग करता हूं? क्या कोई इस कोड का एक संस्करण सुझा सकता है जो गणित 8 के लिए काम करता है? थोड़ा

f = FileNames["*.jpg", {"c:\\test\\pool\\Pool"}]; 
m = Import["c:\\test\\pool\\Pool\\MendeleevIcon.tif"]; 
imagePool = 
    Map[ 
    With[{i = Import[#]}, 
    {i, Mean[Flatten[[email protected], 1]]}] &, f]; 
closeMatch[c_] := 
    RandomChoice[Take[SortBy[imagePool, Norm[c - #[[2]]] &], 20]][[1]]; 
Grid[Map[closeMatch, [email protected], {2}], Spacings -> {0, 0}] 

enter image description here

उत्तर

5

निम्नलिखित काम करता है (धन्यवाद टिप्पणी में Reverse[] बात की ओर इशारा करने के लिए @yoda को)

imagePool = Map[With[{i = Import[#]}, {i, [email protected][Flatten[ImageData[i], 1]]}] &, 
    FileNames["Pool/*.jpg"]]; 

closeMatch[c_] := RandomChoice[ 
    Nearest[imagePool[[All, 2]] -> imagePool[[All, 1]], c, 20]] 

ImageAssemble[Map[closeMatch, ImageData[Import["mendeleevIcon.tif"]], {2}]] 

mosaic

संपादित

कारण यह है कि मूल कोड संस्करण 8 में काम करना बंद कर कि मेथेमेटिका के संस्करण 6 तक, Import["file.jpg"] एक Graphics[Raster[]] वस्तु वापसी होगी है। छवि डेटा को निकालने के लिए आप बस Import["file.jpg"][[1,1]] कर सकते हैं। हालांकि, संस्करण 8 में (और मुझे संस्करण 7 पर शक है) रास्टर छवियों को डिफ़ॉल्ट रूप से Image के रूप में आयात किया जाता है जिसका अर्थ है कि आयातित फ़ाइलों से छवि डेटा निकालने के लिए आपको ImageData की आवश्यकता है। Import["file.jpg","Graphics"] का उपयोग करके आप Graphics[Raster[]] के रूप में रास्टर छवियों को अभी भी आयात कर सकते हैं, इसलिए मूल कोड अभी भी काम करना चाहिए यदि आप Import कथन अनुकूलित करते हैं, लेकिन Image ऑब्जेक्ट्स का उपयोग करने का लाभ यह है कि आप ImageAssemble (साथ ही अन्य छवि की पूरी श्रृंखला) का उपयोग कर सकते हैं प्रसंस्करण उपकरण जो गणित 8 के साथ आता है)।

+1

मैन, वह दक्षिणी गोलार्द्ध ... हमेशा – abcd

+0

@yoda के आसपास चीजों को फिसल रहा है @ क्या यह उल्टा है? मैं उस छवि में कुछ भी समझ नहीं सकता! –

+0

@yoda अगर यह उल्टा है तो 'रिवर्स [] ' –

7

हो सकता है कि और अधिक सुव्यवस्थित:

imagePool = 
Map[With[{i = Import[#]}, {i, Mean[Flatten[N[i[[1, 1]]], 1]]}] &, 
    FileNames["Pool/*.jpg"]]; 
closeMatch[c_] := 
    RandomChoice[Take[SortBy[imagePool, Norm[c - #[[2]]] &], 20]][[1]]; 
Grid[Reverse[ 
    Map[closeMatch, Import["MendeleevIcon.tif"][[1, 1]], {2}]], 
    Spacings -> {0, 0}] 
+0

धन्यवाद, अच्छा लगता है – cormullion

+1

अच्छा जवाब। +1 –

संबंधित मुद्दे