2009-04-25 8 views
5

मैं फ़ोटोशॉप में लिक्विफा फ़िल्टर की तरह कुछ बनाने की कोशिश कर रहा हूं। मैं छवि विकृति कोड के माध्यम से पढ़ रहा हूं लेकिन मैं यह जानने के लिए संघर्ष कर रहा हूं कि समान प्रभाव क्या बनाएंगे। गिंप में iWarp फ़िल्टर मुझे मिल सकता है कि निकटतम संदर्भ था लेकिन इसके लिए कोड बिल्कुल टिप्पणी नहीं की गई है।फ़िल्टर फ़िल्टर/iwarp

मैं भी ImageMagick जैसी जगहों पर देखा है लेकिन वे इस क्षेत्र

किसी भी संकेत दिए गए या एल्गोरिदम का वर्णन कुछ भी नहीं है बहुत सराहना की जाएगी।

उत्तर

0

क्षमा करें मुझे यह ध्वनि थोड़ा सा सरल बनाते हैं, मुझे यकीन नहीं है कि आप gfx प्रोग्रामिंग के बारे में कितना जानते हैं या यहां तक ​​कि आप कौन सी तकनीकों का उपयोग कर रहे हैं (मैं इसे स्वयं एचएलएसएल के साथ करूँगा)।

जिस तरह से मैं इस समस्या से संपर्क करूंगा वह एक बनावट उत्पन्न करना है जिसमें आर/जी चैनलों में एक्स/वाई निर्देशांक के ऑफसेट शामिल हैं। फिर एक पिक्सेल के उत्पादन में रंग होगा:
बनावट inputImage
बनावट distortionMap
रंग (एक्स, वाई) = inputImage (x + distortionMap (एक्स, वाई) आर, y + distortionMap (एक्स, वाई) .g)
(, सच यह बिल्कुल सही नहीं है बताने के लिए रंगों का उपयोग के रूप में ऑफसेट सीधे मतलब है कि आप केवल सकारात्मक वैक्टर प्रतिनिधित्व कर सकते हैं, यह काफी सरल 0.5 घटाना है, ताकि आप नकारात्मक वैक्टर का प्रतिनिधित्व कर सकते हैं) है

अब केवल समस्या यह बनी हुई है कि इस विरूपण मानचित्र को कैसे उत्पन्न किया जाए, जो एक अलग प्रश्न है (किसी भी छवि को किसी प्रकार का विरूपण उत्पन्न होगा, जाहिर है, उचित तरल प्रभाव पर काम करना काफी जटिल है और मैं इसे किसी दिन छोड़ दूंगा अधिक योग्यता प्राप्त की)।

0

मुझे लगता है कि द्रव एक ग्रिड को बदलकर काम करता है।
कल्पना करें कि प्रत्येक पिक्सेल को ग्रिड पर इसके स्थान से परिभाषित किया गया है।
अब जब उपयोगकर्ता किसी स्थान पर क्लिक करता है और माउस को ले जाता है तो वह ग्रिड स्थान बदल रहा है।
नया ग्रिड फिर से उपयोगकर्ता के 2 डी दृश्य सक्षम स्थान में पेश किया गया है।

0

जावास्क्रिप्ट के साथ तरल फ़िल्टर को कार्यान्वित करने के तरीके के बारे में this tutorial देखें। मूल रूप से, ट्यूटोरियल में, प्रभाव को पिक्सेल कार्टेशियन निर्देशांक (x, y) को ध्रुवीय निर्देशांक (r, α) में परिवर्तित कर दिया जाता है और फिर r पर Math.sqrt लागू किया जाता है।