2011-06-03 14 views
6

में विफल रहता है मैं openCV में कर रहा हूँ सोबेल बढ़त का पता लगाने निम्नलिखित मानकों के साथ प्रयोग:openCV बनाम GIMP, बढ़त का पता लगाने openCV

cv.Sobel(mat, edgemat, 1, 1) 
# mat -> source image 
# edgemat -> taget output image 
# 1 -> xorder (int) – Order of the derivative x 
# 1 -> yorder (int) – Order of the derivative y 
# apertureSize (int) – Size of the extended Sobel kernel -> its by default set to 3 

मैं भी GIMP का उपयोग कर छवि पर सोबेल बढ़त का पता लगाने में किया था।

स्रोत छवि है: Source image openCV द्वारा उत्पादन openCV output है GIMP द्वारा उत्पादन GIMP output

है क्यों openCV और GIMP से आउटपुट के बीच इस तरह के एक बड़ा अंतर। जीआईएमपी द्वारा आउटपुट की गुणवत्ता हल्के सालों से ओपनसीवी को पार करती है।

+0

ओपनसीवी को वास्तविक समय कंप्यूटर दृष्टि के रूप में वर्णित किया गया है। ओपनसीवी का रनटाइम जीआईएमपी की तुलना कैसे करता है? –

उत्तर

9

सरल उत्तर: आप इसे गलत कर रहे हैं। the documentation देखें - आप क्या कर रहे हैं d^2/(dx dy) छवि का व्युत्पन्न - इसका अर्थ है "क्षैतिज किनारों को लंबवत रूप से कैसे बदलता है" (या, समकक्ष, "ऊर्ध्वाधर किनारों को क्षैतिज रूप से कैसे बदलता है"), जिसका अर्थ है, लंबवत या क्षैतिज किनारे आप शून्य के आउटपुट की अपेक्षा करते हैं (क्योंकि यह लंबवत दिशा में नहीं बदलता है)। तो, आप अपनी ओपनसीवी लाइन के साथ क्या कर रहे हैं बिल्कुल बढ़त नहीं है। आप शायद 1, 0 के साथ पैरामीटर और 0, 1 के साथ सोबेल की तरह कुछ चाहते हैं, फिर उन परिणामों को स्क्वायर करें और उन्हें जोड़ें, फिर परिणाम की वर्ग रूट लें। इसके परिणामस्वरूप जीआईएमपी क्या कर रहा है।

+1

इसे इंगित करने के लिए धन्यवाद। :) – Xolve