2011-06-07 2 views
15

में ऐसी छवि उत्पन्न करने के लिए मैं गणित में the following effect उत्पन्न करने के लिए एक छवि को संसाधित करने की सोच रहा हूं, इसकी शक्तिशाली छवि प्रसंस्करण क्षमताओं को देखते हुए। क्या कोई इस बारे में कुछ विचार दे सकता है कि यह कैसे करें?गणित

बहुत बहुत धन्यवाद।

+0

बेशक। आपको सिर्फ ऑफ-अक्ष गैर-पैराएक्सियल सन्निकेशन लेंस को रेट्रैसिंग के लिए थोड़ा प्रोग्राम बनाना है। साध्य? हाँ। उपयोगी? मुझे शक है। वहाँ बहुत सारे रे ट्रेसिंग सॉफ्टवेयर पैकेज हैं। –

+2

@belisarius वास्तव में आवश्यक है? मुझे लगता है कि यह प्रत्येक सेल में छवि के लिए गणना की ऑफसेट के साथ अच्छी तरह से अनुमानित किया जा सकता है। –

उत्तर

15

एक बनावट का उपयोग करके यहां एक संस्करण है। यह निश्चित रूप से वास्तविक लेंस के रूप में कार्य नहीं करता है, बस एक ओवरलैपिंग फैशन में छवि के भाग दोहराता है।

t = CurrentImage[]; 

(* square off the image to avoid distortion *) 
t = ImageCrop[t, {240,240}]; 

n = 20; 
Graphics[{Texture[t], 
    Table[ 
    Polygon[ 
     Table[h*{Sqrt[3]/2, 0} + (g - h)*{Sqrt[3]/4, 3/4} + {Sin[t], Cos[t]}, 
     {t, 0., 2*Pi - Pi/3, Pi/3} 
     ], 
     VertexTextureCoordinates -> Transpose[{ 
     Rescale[ 
      (1/4)*Sqrt[3]*(g - h) + (Sqrt[3]*h)/2., 
      {-n/2, n/2}, 
      {0, 1} 
      ] + {0, Sqrt[3]/2, Sqrt[3]/2, 0, -(Sqrt[3]/2), -(Sqrt[3]/2)}/(n/2), 
     Rescale[ 
      (3.*(g - h))/4, 
      {-n/2, n/2}, 
      {0, 1} 
      ] + {1, 1/2, -(1/2), -1, -(1/2), 1/2}/(n/2) 
     }] 
     ], 
     {h, -n, n, 2}, 
     {g, -n, n, 2} 
    ] 
    }, 
    PlotRange -> n/2 - 1 
] 

यहाँ standard image test (Lena) के लिए आवेदन किया उपरोक्त कोड

enter image description here

+0

ब्रेट, मुझे आशा है कि आपको मुझे एक उदाहरण जोड़ने में कोई फर्क नहीं पड़ता .... – Simon

+0

@ सिमॉन: निश्चित रूप से नहीं। –

+0

@ ब्रेट, +1 यह बहुत अच्छा लग रहा है। लेकिन मेरे पास केवल एमएमए 7.0 है, जिसमें 'VertexTextureCordordates' विकल्प नहीं है। इसे आजमा नहीं सकते क्या MMA7.0 में कोई कामकाज या समान चीज है? एक बार फिर धन्यवाद! –

8

"मैं यह अच्छी तरह से साथ एक प्रत्येक कोशिका में छवि के लिए ऑफसेट गणना अनुमान लगाया जा सकता है लगता है कि" है - Mr.Wizard

बिल्कुल! जैसा कि आप पुनर्निर्मित छवि से देख सकते हैं वहां कोई लेंस प्रभाव नहीं है और टाइल्स केवल विस्थापन हैं।

enter image description here

आपको क्या करना होगा एक Hexagonal_tessellation और कुछ चुने हुए केंद्रीय बिंदु से प्रत्येक षट्भुज के लिए विस्थापन की गणना करने के लिए एक सरल एल्गोरिथ्म है (वजन/2, ऊंचाई/2)।

+1

+1 अच्छा पुनर्निर्माण! हेक्सागोनल टेस्सेलेशन बिल्कुल ब्रेट ने अपने जवाब में किया था। बीटीडब्ल्यू - आपने पुनर्निर्मित छवि कैसे प्राप्त की? – Simon

+0

@ रॉस हां, आपने इसे कैसे पुनर्निर्माण किया? – acl

+2

@ सिमन @ एसीएल - गिंप + हाथ चयन। – Ross