2010-01-18 12 views
5

मैं सी # में कुछ छवि प्रोसेसिंग कोड कर रहा हूं, लेकिन मैं कोड की तरह किसी पुस्तकालय या जीएनयू का उपयोग नहीं कर सकता।फोरियर फ़ंक्शंस के बिना UnsharpMask कोडिंग

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

+0

मुझे लगता है कि यह जानना दिलचस्प होगा कि आप इसका उपयोग करके भारी गतिशील गति पर विचार करने के लिए चार स्तर परिवर्तनों का उपयोग क्यों नहीं कर सकते हैं। –

+0

यह मूल रूप से यूनिट परीक्षण के लिए आता है। मैं विरासत कारणों के लिए अनशर्पमास्क को चारों ओर रख रहा हूं और इसका शायद ही कभी उपयोग किया जाता है। हालांकि, इस तरह के एक समारोह का समर्थन करने के लिए मुझे जटिल संख्या प्रारूप छवियों और एफएफटी कार्यक्षमता को संभालने के लिए एक बड़ी कक्षा बनाना था, परीक्षणों के साथ पूरा किया गया। इन एफएफटी का यूनिट परीक्षण वास्तविक दर्द है लेकिन अगर हम कभी भी UnsharpMask का उपयोग करते हैं तो कोई मुद्दा नहीं होगा। – Jono

+0

किसी और चीज के साथ एफएफटी को बदलने की बजाय, क्या गॉसियन ब्लर को किसी और चीज़ से बदलना संभव होगा और अभी भी अनशार्मास्क करें? – Jono

उत्तर

2

मैं अपने आवश्यकता के अनुसार एक समाधान पाया सुझाव है।

मैंने कई त्वरित और गंदे धुंधला एल्गोरिदम की कोशिश की और Box Blur और Stack Blur दोनों पर्याप्त होने के लिए पाया। स्टैक ब्लर में बॉक्स ब्लर के बाद एक क्लीनर ब्लर होता है और गाऊसियन कई बार तेज़ होता है। तो मैं गॉसियन के स्थान पर या तो एक का उपयोग कर सकता हूं।

तो अब मैं सभी एफएफटी कोड गड़बड़ी से छुटकारा पा सकता हूं और इसे और अधिक प्रबंधनीय के साथ बदल सकता हूं। यह समाधान हर किसी के लिए नहीं हो सकता है, लेकिन चूंकि UnsharpMask धुंधला होने पर आधारित है, मुझे नहीं लगता था कि यह विज्ञान का बहुत सटीक था।

जिस तरह से जिम्प के गॉसियन ब्लर एफएफटी से बचने लगते हैं।

+0

I ' जब मैं बड़ी संख्या में छवियों को स्वचालित रूप से अनछुए करने की आवश्यकता होती है तो धुंधलापन का तेज़ मोटा रूप प्राप्त करने के लिए अक्सर बॉक्स ब्लर को दो बार या तीन बार इस्तेमाल किया जाता है। – DarenW

+0

मुझे लगता है कि जीआईएमपी गॉसियन ब्लर के लिए आईआईआर सन्निकटन का उपयोग कर रहा है। – Royi

3

गॉसियन ब्लर का फूरियर रूपांतरण भाग गॉसियन कर्नेल के साथ दृढ़ संकल्प करने का एक प्रभावी तरीका है। आप उचित मानक विचलन और आकार के गॉसियन कर्नेल के साथ सीधा आगे रूपांतरण का उपयोग करके ऐसा कर सकते हैं (मानक विचलन के बारे में 5-6 गुना लगभग एक विषम आकार कर्नेल सही है)।

Convolution on Wikipedia देखें।

+0

अच्छा जवाब। आप ओ (एन * एन) एल्गोरिदम (प्रत्यक्ष संकल्प) के लिए ओ (एन एलएन एन) एल्गोरिदम का आदान-प्रदान कर रहे हैं - इसलिए सीधी संकल्प के साथ 2 डी छवियों को चिकनाई करना काफी धीमा होगा। अगर गति एक मुद्दा बन जाती है तो आप एफएफटी एल्गोरिदम को संख्यात्मक व्यंजनों से आसानी से कॉपी कर सकते हैं। – Paul

+0

मेरा मानना ​​है कि एनआर कोड वाणिज्यिक उपयोग के लिए स्वतंत्र नहीं है (हालांकि ओप निर्दिष्ट नहीं करता है कि मुझे लगता है कि जीएनयू कोड एक समस्या है तो एनआर लाइसेंस भी हो सकता है)। –

0

मेरा मानना ​​है कि यदि आप किसी भी पुस्तकालय या जीएनयू चीज़ का उपयोग नहीं कर सकते हैं, तो भी आप उनके कार्यान्वयन को देख सकते हैं और अपनी आवश्यकताओं के लिए समान कोड पुन: पेश करने का प्रयास कर सकते हैं?

ओपनसीवी फ़ंक्शन सूची। यहां फ़ंक्शन विवरण देखें और फिर शीर्षलेख फ़ाइलों में कार्यान्वयन विवरण देखें। http://opencv.willowgarage.com/documentation/genindex.html

इसके अलावा, अगर आप सी # आधारित कार्यान्वयन में रुचि रखते हैं मैं निम्नलिखित http://aforgenet.com/framework/

+0

ओपनसीवी काम कर सकता है। अफज एलजीपीएल है जिसका मैं उपयोग नहीं कर सकता। साथ ही, मैंने देखा कि द गिंप में गॉस ब्लर एफएफटी: का उपयोग नहीं कर रहा है http://git.gnome.org/browse/gimp/tree/plug-ins/common/blur-gauss.c – Jono

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