2011-12-21 21 views
19

के माध्यम से मजबूत हाथ का पता लगाने में मैं वर्तमान में मजबूत हाथ पहचान के लिए एक प्रणाली पर काम कर रहा हूं।कंप्यूटर विजन

पहला कदम है हाथ की तस्वीर (एचएसवी रंग अंतरिक्ष में) हाथ के साथ त्वचा के रंग को निर्धारित करने के लिए एक छोटे आयताकार में रखा गया हाथ। मैं फिर सभी गैर-त्वचा पिक्सेल को काले और सभी त्वचा पिक्सेल सफेद पर सेट करने के लिए एक थ्रेसहोल्डिंग फ़िल्टर लागू करता हूं।

अभी तक यह काफी अच्छा काम करता है, लेकिन मैं यह पूछना चाहता था कि इसे हल करने का कोई बेहतर तरीका है या नहीं? उदाहरण के लिए, मुझे कोकेशियान लोगों के लिए ठोस रंग रिक्त स्थान का उल्लेख करने वाले कुछ पेपर मिले, लेकिन एशियाई/अफ्रीकी/कोकेशियान रंग-टोन के लिए तुलना में कोई भी नहीं।

वैसे, मैं पाइथन बाइंडिंग के माध्यम से ओपनसीवी के साथ काम कर रहा हूं।

उत्तर

22

क्या आपने गैरी ब्रैडस्की द्वारा कैंपिफ्ट पेपर पर एक नज़र डाली है? आप इसे here

से डाउनलोड कर सकते हैं मैंने हाथों के ट्रैकिंग के लिए त्वचा क्षेत्रों का पता लगाने के लिए एक साल पहले त्वचा का पता लगाने एल्गोरिदम का उपयोग किया था और यह मजबूत है। यह इस बात पर निर्भर करता है कि आप इसका उपयोग कैसे करते हैं।

ट्रैकिंग के लिए रंग का उपयोग करने वाली पहली समस्या यह है कि जब लोग अलग-अलग त्वचा के स्वर होते हैं, तो यह विविधता को प्रकाश देने के लिए मजबूत नहीं है। हालांकि इसे पेपर में उल्लिखित हल किया जा सकता है:

  1. छवि को एचएसवी रंग स्थान में कनवर्ट करें।
  2. वी चैनल को फेंक दें और एच और एस चैनल पर विचार करें और इसलिए प्रकाश विविधताओं के लिए छूट।
  3. उनकी अस्थिरता के कारण कम संतृप्ति वाले थ्रेसहोल्ड पिक्सल।
  4. चयनित त्वचा क्षेत्र को 2 डी हिस्टोग्राम में बिन करें। (ओपनसीवी का calcHist फ़ंक्शन) यह हिस्टोग्राम अब त्वचा के लिए एक मॉडल के रूप में कार्य करता है।
  5. "बैकप्रोजेक्शन" की गणना करें (यानी calcBackProject का उपयोग करके "संभाव्यता" की गणना करने के लिए हिस्टोग्राम का उपयोग करें कि आपकी छवि में प्रत्येक पिक्सेल में त्वचा टोन का रंग होता है)। त्वचा क्षेत्रों में उच्च मूल्य होंगे।
  6. आप या तो meanShift का उपयोग बैकप्रोजेक्ट द्वारा उत्पन्न 2 डी "संभाव्यता" मानचित्र के मोड को देखने के लिए या उच्च "संभाव्यता" के ब्लब्स का पता लगाने के लिए कर सकते हैं।

एचएसवी में वी चैनल को फेंकना और केवल एच और एस चैनलों पर विचार करना वास्तव में पर्याप्त है (आश्चर्यजनक रूप से) विभिन्न त्वचा टोन का पता लगाने और विभिन्न प्रकाश विविधताओं के तहत। एक प्लस पक्ष यह है कि इसकी गणना तेजी से है।

ये चरण और संबंधित कोड मूल OpenCV book में पाया जा सकता है।

एक साइड नोट के रूप में, मैंने पहले गॉसियन मिक्स्चर मॉडल (जीएमएम) भी इस्तेमाल किया है। यदि आप केवल रंग पर विचार कर रहे हैं तो मैं कहूंगा कि हिस्टोग्राम या जीएमएम का उपयोग करने से ज्यादा अंतर नहीं होता है। वास्तव में हिस्टोग्राम बेहतर प्रदर्शन करेगा (यदि आपका जीएमएम प्रकाश विविधता आदि के लिए खाते में नहीं बनाया गया है)। जीएमएम अच्छा है अगर आपका नमूना वैक्टर अधिक परिष्कृत होते हैं (यानी आप अन्य विशेषताओं पर विचार करते हैं) लेकिन स्पीड-वार हिस्टोग्राम बहुत तेज है क्योंकि हिस्टोग्राम का उपयोग करके संभाव्यता मानचित्र की गणना करना अनिवार्य रूप से एक टेबल लुकअप है जबकि जीएमएम को मैट्रिक्स गणना करने की आवश्यकता है (वेक्टर के साथ वेक्टर के लिए> बहु-आयाम गाऊशियन वितरण के सूत्र में 1) जो वास्तविक समय अनुप्रयोगों के लिए समय लेने वाला हो सकता है।

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

त्वचा पहचान के लिए हिस्टोग्राम का उपयोग करने के तरीके पर नमूना स्रोत कोड के लिए, आप ओपनसीवी के पृष्ठ here पर एक नज़र डाल सकते हैं। लेकिन ध्यान दें कि उस वेबपृष्ठ पर इसका उल्लेख किया गया है कि वे केवल ह्यू चैनल का उपयोग करते हैं और दोनों का उपयोग करते हुए ह्यू और संतृप्ति बेहतर परिणाम देगा।

अधिक परिष्कृत दृष्टिकोण के लिए, आप मार्गरेट फ्लेक और डेविड फोर्सिथ द्वारा "नग्न लोगों का पता लगाने" पर काम देख सकते हैं। यह त्वचा क्षेत्रों का पता लगाने के पहले काम में से एक था जो रंग और बनावट दोनों पर विचार करता है। विवरण here पाया जा सकता है।

कंप्यूटर दृष्टि से संबंधित स्रोत कोड के लिए एक महान संसाधन और मैं मैज प्रसंस्करण, जिसमें दृश्य ट्रैकिंग के लिए कोड शामिल होता है, here पाया जा सकता है। और नहीं, यह ओपनसीवी नहीं है।

उम्मीद है कि इससे मदद मिलती है।

+2

आपके विस्तृत उत्तर के लिए धन्यवाद। मुझे नहीं पता कि मैं विधि को बिल्कुल कार्यान्वित करूँगा लेकिन इसकी एक बड़ी मदद है क्योंकि यह वी चैनल को अनदेखा करने जैसे कुछ विवरणों को भी समझाता है - जो वर्तमान में कर रहा है लेकिन वास्तव में बिना समझ के क्यों – Nicolas

+1

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

+0

नग्न लोगों का पता लगाने के लिए लिंक अपडेट करना - http://mfleck.cs.illinois.edu/naked.html – saurabheights

5

Here अनुकूली गाऊशियन मिश्रण मॉडल त्वचा का पता लगाने पर एक पेपर है जो आपको दिलचस्प लगेगा।

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

अंत में, Google Scholar त्वचा का पता लगाने में कला की स्थिति की तलाश में एक बड़ी मदद हो सकती है। इस समय विज्ञापन में व्यावहारिक रूप से शोध किया गया है साथ ही साथ उद्योग में भी उपयोग किया जाता है (उदाहरण के लिए, Google छवियां और फेसबुक अपलोड चित्र नीतियां)।

+0

मैंने चेहरे की पहचान करने के विचार के बारे में भी सोचा प्रथम। दुर्भाग्य से, मैं भरोसेमंद नहीं मान सकता कि एक चेहरा मौजूद है। – Nicolas

4

आपके लिए केवल रंग के आधार पर त्वचा टोन ढूंढना मुश्किल होगा।
सबसे पहले, यह स्वचालित सफेद संतुलन एल्गोरिदम पर दृढ़ता से निर्भर करता है। उदाहरण के लिए, इस छवि में, कोई भी व्यक्ति देख सकता है कि रंग त्वचा टोन है। लेकिन कंप्यूटर के लिए यह नीला हो जाएगा। enter image description here

दूसरा, डिजिटल कैमरे में सही रंग अंशांकन एक कठिन बात है, और यह आपके उद्देश्यों के लिए शायद ही कभी सटीक सटीक होगा।
आप समझने के लिए www.DPReview.com देख सकते हैं, मेरा क्या मतलब है।

निष्कर्ष में, मुझे सच में विश्वास है कि रंग स्वयं ही इनपुट हो सकता है, लेकिन यह पर्याप्त नहीं है।

+0

यह मानता है कि आप सफेद संतुलन को नियंत्रित नहीं कर सकते हैं। कई कैमरों पर, इसे मैन्युअल रूप से नियंत्रित किया जा सकता है। इसके अलावा, अगर चेहरे का पता लगाने के माध्यम से त्वचा टोन का आकलन किया जाता है जो मनमाने ढंग से सफेद संतुलन स्थितियों में भी काम करेगा। – mevatron

+0

ओपी ने केवल एचएसवी रंग चैनलों से हाथ का पता लगाने के बारे में पूछा। साथ ही, मैं ऐसी कई स्थितियों की कल्पना कर सकता हूं जिनमें छवि में चेहरे नहीं हैं। –

5

मैंने 2 साल पहले इसी तरह कुछ काम किया है। प्रारंभिकरण के लिए इनपुट के रूप में त्वचा रंग पिक्सल का उपयोग करके आप Particle Filter (Condensation) के साथ प्रयास कर सकते हैं। यह काफी मजबूत और तेज है। जिस तरीके से मैंने इसे अपनी परियोजना के लिए लागू किया है, वह इस link पर है। आपके पास प्रस्तुति (स्लाइड) और सर्वेक्षण दोनों हैं। यदि आप हाथ से रंग के वास्तविक रंग के साथ हाथ से निकाले गए हैं, तो आप ट्रैक करने जा रहे हैं, आपको काले लोगों के साथ कोई समस्या नहीं होनी चाहिए।

कण फ़िल्टर के लिए मुझे लगता है कि आप कुछ कोड कार्यान्वयन नमूने पा सकते हैं। सौभाग्य।क्योंकि

0

खैर त्वचा मॉडलिंग के साथ मेरा अनुभव, बुरा कर रहे हैं: 1) बिजली भिन्न हो सकते हैं - त्वचा विभाजन मजबूत नहीं है 2) यह आपके चेहरे भी प्रतीक होगा (के रूप में अन्य त्वचा की तरह वस्तुओं)

मैं हायर प्रशिक्षण जैसी मशीन लर्निंग तकनीकों का उपयोग करेगा, जो मेरी राय में, मॉडलिंग और कुछ बाधाओं को ठीक करने के लिए कहीं अधिक बेहतर दृष्टिकोण (जैसे त्वचा का पता लगाना + थ्रेसहोल्डिंग ...)

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