2015-11-16 8 views
7

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

तरीकों मैं का इस्तेमाल किया है से कुछ हैं:

  1. ढूँढना फ़िल्टर्ड छवि की रूपरेखा। (एक साथ बंद होने वाली कोशिकाओं के साथ अच्छी तरह से काम नहीं करता है)
  2. गॉसियन धुंध और छवि पर स्थानीय अधिकतमता खोजें। (एक ही समस्या के रूप में)
  3. कैनी एज का पता लगाने (उत्पादन परिणाम गैर कोशिकाओं खंड का पता लगाने)

इस छवि को मैं कोशिकाओं की कुल संख्या की गणना करने की जरूरत का एक उदाहरण है।

enter image description here

मेरे वर्तमान गिनती एल्गोरिथ्म बेहतर काम करता है अगर कोशिकाओं को एक साथ बंद नहीं कर रहे हैं। इस तरह उदाहरण के लिए:

enter image description here

हालांकि, एल्गोरिथ्म अभी भी 3 कोशिकाओं है कि छवि के केंद्र में एक साथ स्टिक किया जाता है दो भागों में विभक्त करने के लिए असफल।

तो छवि में कम से कम झूठी नकारात्मक/सकारात्मक छवियों की कुल संख्या का पता लगाने के लिए मैं क्या कर सकता हूं?

+2

इस पेज पर एक नज़र डालें: http://stackoverflow.com/questions/5298884/finding-number-of-colored-shapes-from-picture-using -पीथन और http://codegolf.stackexchange.com/questions/40831/counting-grains-of-rice आप जो खोज रहे हैं उसके समान हो सकता है! –

+0

प्रत्येक सेल का आकार समान है? – Micka

+0

@ प्रत्येक छवि में सेल आकार का आकार समान है, लेकिन अलग-अलग ज़ूम स्तर के लिए अलग-अलग छवियां हैं, इसलिए एक छवि से सेल आकार को अन्य छवि पर लागू नहीं किया जा सकता है – Woody

उत्तर

2

आपका दृष्टिकोण लगभग ठीक है। हालांकि, इसे कुछ अतिरिक्त कदमों की आवश्यकता है। आपको Morphological Operations नामक कुछ चाहिए।

  1. अपनी छवि को अच्छी तरह से फ़िल्टर करें।
  2. रंग के आधार पर एक थ्रेसहोल्ड लागू करें या इसे ग्रे में परिवर्तित करें, फिर इसे थ्रेसहोल्ड करें। अनुलेख आपके द्वारा प्रदान किए गए उदाहरणों से, ऐसा लगता है कि आपका सेल रंग बहुत संतृप्त है। तो, आप इसे एचएसवी स्पेस में परिवर्तित कर सकते हैं और उसके बाद एस चैनल का उपयोग करके इसे थ्रेसहोल्ड कर सकते हैं (मुझे बताएं कि आपको यहां मदद की ज़रूरत है)।
  3. थ्रेसहोल्ड छवि पर Opening मॉर्फोलॉजिकल ऑपरेटरों को लागू करें। अनुलेख आप कुछ कर्नल आकार का प्रयास कर सकते हैं और सबसे अच्छा चुन सकते हैं।
  4. समोच्च लें और जो भी आप कर रहे थे वह करें।

उद्घाटन:

cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5), cv::Point(1, 1)); 
cv::morphologyEx(img, img, cv::MORPH_OPEN, element, cv::Point(-1, -1), 1); 
+0

मैं छवि पर ओपनिंग ऑपरेटरों को कैसे करूं ?? – Woody

+0

@woody कोड –

+0

के साथ संपादित किया गया मैंने आपके ओपनिंग ऑपरेटर की कोशिश की, और मैं MORPH_RECT को MORPH_ELLIPSE में बदलता हूं, पता लगाने से पहले बेहतर है! लेकिन अभी भी झूठे नकारात्मक हैं जहां सेल का पता नहीं चला है। कंप्यूटर दृष्टि में – Woody