2012-08-29 6 views
5

मेरा प्रश्न सरल है। यह बहुत आसान हो सकता है। लेकिन मेरी परियोजनाओं में से एक पर काम करते समय बात यह है कि मैंने बाइनरी छवि को फैलाने के लिए निम्नलिखित पंक्तियों का उपयोग किया।6x6 संरचना तत्व के साथ 3x3 संरचना तत्व के साथ दो morphological Dilation प्रदर्शन कर रहा है?

cv::dilate(c_Proj, c_Proj, Mat(), Point(), 2); 
कौन सा मूल रूप से एक 3x3 आयताकार संरचना तत्व के साथ द्विआधारी छवि विस्फारित है

। अंतिम तर्क से आप मैं इस आपरेशन है, जो के बराबर है की 2 पुनरावृत्तियों प्रदर्शन कर रहा हूँ देख सकते हैं: इसके बजाय दो पुनरावृत्तियों प्रदर्शन के , अगर मैं एक 6x6 संरचना का उपयोग करते हुए केवल एक ही यात्रा करते हैं:

cv::dilate(c_Proj, c_Proj, Mat(), Point(), 1); 
cv::dilate(c_Proj, c_Proj, Mat(), Point(), 1); 

मेरा प्रश्न यह है तत्व, यह सटीकता और प्रदर्शन के मामले में उपर्युक्त कोड के बराबर है? क्या यह तेज़ है क्योंकि छवि केवल एक बार फिर से होती है?

उत्तर

6

फैलाव दो घुमाव के संचालन के साथ व्यक्त किया जा सकता: एक 3x3 गिरी का एक घुमाव के

"YourImage" convolve ("DilationKernel" convolve "DilationKernel") 

:

("YourImage" convolve "DilationKernel") convolve "DilationKernel" 
क्योंकि घुमाव के गुणों का

, इस आपरेशन के लिए बराबर है स्वयं के साथ 5x5 मैट्रिक्स का परिणाम होगा, इसलिए आपकी 6x6 धारणा गलत है।

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

दृढ़ संकल्प का समानांतर एक और कहानी है, और मेरे पास इसके बारे में अधिक व्यावहारिक जानकारी नहीं है। इसलिए मुझे नहीं पता कि समानांतर कार्यान्वयन का उपयोग करते हुए इस अनुभवजन्य तथ्यों को अभी भी रखा गया है।

+0

गलती को इंगित करने के लिए धन्यवाद। मैं अभी भी प्रदर्शन तुलना की तलाश में हूं। मुझे लगता है कि मुझे दोनों परिचालनों की तुलना करने के लिए अपनी खुद की विधि तैयार करनी पड़ सकती है – masad

0

आपको खुद को प्रदर्शन को मापना होगा, लेकिन यह तार्किक लगता है कि 6x6 तत्व के साथ एक फैलाव तेजी से होना चाहिए। Wikipedia sais कि बाइनरी फैलाव सहयोगी है। इसका मतलब यह है कि यदि एक ऐसे आयत के साथ फैला हुआ 3x3 आयताकार 6x6 आयताकार देता है तो वास्तव में 3x3 द्वारा दो dilations 6x6 द्वारा एक फैलाव के बराबर होते हैं। एक ही कर्नेल के साथ

+2

"यह तार्किक प्रतीत क्यों होता है"? एक निष्पक्ष कार्यान्वयन को प्रत्येक पिक्सेल, या 2 * 3 * 3 पिक्सेल के लिए 6 * 6 पड़ोसियों को देखना होगा। 6 * 6> 2 * 3 * 3 – Niki

+0

@nikie, आप सही हैं। हालांकि आयताकार संरचना तत्वों के लिए इसे उपसर्ग रकम के साथ अनुकूलित किया जा सकता है। मैं छवि morphology में इस्तेमाल एल्गोरिदम से बहुत परिचित नहीं हूँ। –

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