पथ अनुरेखण में एक टेंट फिल्टर का उपयोग क्यों करें?


12

C पथ अनुरेखक की 99 पंक्तियाँ Smallpt प्रत्येक पिक्सेल के लिए एक 2x2 सबपिक्सल ग्रिड प्रदान करती है जिसे वह प्रस्तुत करना चाहता है और फिर उन्हें संयोजित करने के लिए एक तम्बू फ़िल्टर करता है।

यहां कोड को समझाने के लिए एक दिलचस्प प्रस्तुति है , और इसमें टेंट फिल्टर का उल्लेख है, लेकिन यह नहीं समझाता है कि यह क्यों है।

क्या कोई समझा सकता है कि एक बॉक्स ब्लर के ऊपर इस मामले में टेंट फिल्टर बेहतर क्यों होगा (नमूनों का औसत)?

क्या यह टेंट फिल्टर से बेहतर कुछ के साथ जाने के लिए उच्च गुणवत्ता वाला होगा, जैसे कि बाइबिक हर्माइट इंटरपोलेशन?

जवाबों:


13

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

तम्बू फिल्टर (त्रिकोण फिल्टर) निश्चित रूप से बॉक्स फिल्टर की तुलना में अधिक बारीकी से sinc फिल्टर के केंद्रीय शिखर जैसा दिखता है:

sinc, त्रिकोण, और बॉक्स फिल्टर

एक बाइबिक फिल्टर (जैसे मिशेल-नेत्रावली) अपने पहले दो नकारात्मक लोब सहित, साइन के आकार को और भी अधिक सटीक रूप से पकड़ सकता है।

फ़िल्टर चयन की वास्तविकता "अनुमानित सिनकी और साथ ही संभव है" की तुलना में थोड़ी अधिक सूक्ष्म है, क्योंकि विभिन्न प्रकार की कलाकृतियां हैं जो "गैर-आदर्श" एंटीएलियासिंग फिल्टर, जैसे अलियासिंग, ओवरब्लिंग और रिंगिंग द्वारा उत्पन्न की जा सकती हैं। साथ ही, अलग-अलग फ़िल्टर कमोबेश महंगे हो सकते हैं। तो यह एक दूसरे के खिलाफ और प्रदर्शन के खिलाफ विभिन्न कलाकृतियों को व्यापार करने की कोशिश करने का खेल है। विभिन्न दृश्य / चित्र एक विकल्प या किसी अन्य का पक्ष ले सकते हैं, और यह आंशिक रूप से एक सौंदर्य निर्णय भी है।

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

संयोग से, smallpt वास्तव में एक 2x2 सबपिक्सल ग्रिड का उपयोग करता है और प्रत्येक सबपिक्सल पर एक टेंट फिल्टर रखता है , फिर एक साथ चार उपपिक्सल के परिणामों को औसत करता है। तो कुल मिलाकर प्रभाव, उत्सुकता से, चार टेंटों का योग है, जो एक सपाट के साथ पिरामिड जैसा दिखता है:

सबपिक्सल टेंट फ़िल्टर

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


मैं धन्यवाद कहने में मदद नहीं कर सकता! स्वाभाविक रूप से, मैं पहली बार इसे 4 समता के साथ स्तरीकृत नमूने के रूप में समझता हूं। और मैं "स्ट्रैट" की संख्या को अनुकूलन योग्य बनाता हूं, जैसे 9, 16 ... अब, मुझे पता है कि यह "ट्रैपेज़ॉइड" फ़िल्टर है (अन्य रेंडरर्स में इतना आम नहीं)। और जब तक मेरे "स्ट्रैट" की संख्या अनंत हो जाती है, फिल्टर एक बॉक्स फिल्टर बन जाता है, जहां मैं लिली को चित्रित कर रहा हूं ... दिलचस्प!
शाम

3

मैंने बिलिनियर प्रक्षेप के बारे में विकिपीडिया के लेखों को देखा। टेंट फिल्टर बिलिनियर इंटरपोलेशन का एक प्रकार है। एक बिलिनियर प्रक्षेप 2 आयामों पर प्रक्षेप करता है। यह पहले एक आयाम पर और फिर दूसरे पर रैखिक रूप से प्रक्षेप करता है।

यहाँ छवि विवरण दर्ज करें

जब आप इस तस्वीर को देखते हैं, तो यह पहले स्तंभ पर करता है और फिर उदाहरण के लिए पंक्ति।

यह रंगों के औसत से बेहतर क्यों हो सकता है, इसका कारण यह है कि जब कोई एक बिंदु एक दूसरे से केंद्र के करीब हो जाता है, तो यह अंतिम रंग में अधिक योगदान देता है। रंगों के औसत के साथ, सभी बिंदु समान रूप से योगदान देते हैं, तब भी जब एक बिंदु दूसरे बिंदु से केंद्र के करीब होता है।

यदि सभी 4 बिंदु केंद्र से समान दूरी पर निश्चित स्थिति पर हैं, तो आपको सभी बिंदुओं पर बिल्कुल 25% योगदान मिलता है, यही औसत है।

इसका मतलब यह है कि जब आप एंटी एलियासिंग को केवल 4 गुना अधिक रिज़ॉल्यूशन पर रेंडर करके लागू करते हैं, और फिर इसे सैंपलिंग करते हैं। 2 तरीकों के बीच आउटपुट समान होना चाहिए, जहां तक ​​मैं इसे समझता हूं।

तो, आपको किस फ़िल्टर का उपयोग करना चाहिए? खैर, यह निर्भर करता है कि आप क्या चाहते हैं और आपकी स्थिति क्या है। यदि आप अपने नमूनों के लिए यादृच्छिक उप पिक्सेल स्थानों को चुनते हैं, तो बिलिनियर इंटरपोलेशन का उपयोग करना बेहतर हो सकता है। यदि सभी बिंदु तय हो गए हैं और आप सिर्फ एक उच्च रिज़ॉल्यूशन पर प्रस्तुत करते हैं, तो औसत उपयोगी हो सकता है। अंत में यह सब सिर्फ कुछ उप पिक्सेल चीजें हैं जो आम तौर पर आप या मुश्किल से नोटिस नहीं करते हैं, इसलिए यदि एए कुछ प्रकार है, तो यह काफी अच्छा है। लेकिन यह सिर्फ मेरी राय है और शायद 3 डी एनीमेशन के औसत दर्शक या ऐसा कुछ है।

एक बाइक्यूबिक प्रक्षेप आपको एक चिकना रूप देता है। bicubic: यहाँ छवि विवरण दर्ज करें

द्विरेखीय: यहाँ छवि विवरण दर्ज करें

कौनसा अच्छा है? खैर, यह इस बात पर निर्भर करता है कि आपको क्या पसंद है, और मुझे नहीं लगता कि इसमें कोई बड़ा अंतर होगा।

मेरे स्रोत: https://en.wikipedia.org/wiki/Reconstruction_filter#Image_processing

https://en.wikipedia.org/wiki/Bilinear_interpolation

https://en.wikipedia.org/wiki/Bicubic_interpolation

(चित्र विकिपीडिया से हैं और सार्वजनिक डोमेन हैं)

मुझे आशा है कि यह मदद करता है, मैं सिर्फ यह कहना चाहता हूं कि मैं इस पर एक पेशेवर नहीं हूं, मैं सिर्फ किसी को कंप्यूटर ग्राफिक्स सामान पसंद करता हूं। यह हो सकता है कि मैंने कुछ गलतियाँ की हों। यदि ऐसा है, तो बस यह कहो और मैं इसे बदल देता हूं!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.