मैं काम कर रहा हूँ रूपांतरण।परिपत्र Hough एक परितारिका पहचान एल्गोरिथ्म है कि पहचान और सत्यापन के लिए अद्वितीय कोड में छवियों के <a href="http://i.imgur.com/XFLuf.jpg" rel="nofollow">these</a> तरह प्रक्रियाओं पर सुधार
छानने के बाद, समझदारी से thresholding, तो छवि में किनारों खोजने, अगले कदम स्पष्ट रूप से शिष्य और आईरिस के हलकों फिट करने के लिए है। मैंने सर्कुलर हफ़ ट्रांसफॉर्म का उपयोग करने के लिए तकनीक की चारों ओर देखा है। मेरे कार्यान्वयन के लिए कोड यहाँ है। क्रिप्टिक वेरिएबल नामों के बारे में खेद है।
print "Populating Accumulator..."
# Loop over image rows
for x in range(w):
# Loop over image columns
for y in range(h):
# Only process black pixels
if inp[x,y] == 0:
# px,py = 0 means pupil, otherwise pupil center
if px == 0:
ra = r_min
rb = r_max
else:
rr = sqrt((px-x)*(px-x)+(py-y)*(py-y))
ra = int(rr-3)
rb = int(rr+3)
# a is the width of the image, b is the height
for _a in range(a):
for _b in range(b):
for _r in range(rb-ra):
s1 = x - (_a + a_min)
s2 = y - (_b + b_min)
r1 = _r + ra
if (s1 * s1 + s2 * s2 == r1 * r1):
new = acc[_a][_b][_r]
if new >= maxVotes:
maxVotes = new
print "Done"
# Average all circles with the most votes
for _a in range(a):
for _b in range(b):
for _r in range(r):
if acc[_a][_b][_r] >= maxVotes-1:
total_a += _a + a_min
total_b += _b + b_min
total_r += _r + r_min
amount += 1
top_a = total_a/amount
top_b = total_b/amount
top_r = total_r/amount
print top_a,top_b,top_r
यह अजगर में लिखा और इमेज प्रोसेसिंग करने के लिए पायथन इमेजिंग पुस्तकालय का उपयोग करता है। जैसा कि आप देख सकते हैं, यह मंडलियों को खोजने का एक बहुत ही बेवकूफ बल विधि है। यह काम करता है, लेकिन कई मिनट लगते हैं। बुनियादी विचार है कि जहां भी ब्लैक पिक्सेल (थ्रेसहोल्डिंग और एज-डिटेक्शन से) होता है, तब तक रैंक से आरएमएक्स तक मंडलियों को आकर्षित करना होता है, छवि पर स्थान पर कितनी बार "वोट" होता है। जो भी एक्स, वाई, और आर सबसे अधिक वोट है ब्याज का चक्र है। मैंने इस तथ्य का उपयोग करने की कोशिश की कि आईआरआईएस और छात्र के पास आर लूप की कुछ जटिलता को कम करने के लिए एक ही केंद्र (चर आरए और आरबी) के बारे में है, लेकिन छात्र का पता लगाना इतना लंबा लगता है कि इससे कोई फर्क नहीं पड़ता।
अब, जाहिर है कि मेरा कार्यान्वयन बहुत ही मूर्ख है। यह एक त्रि-आयामी पैरामीटर स्पेस (एक्स, वाई, और आर) का उपयोग करता है, जो दुर्भाग्य से इसे स्वीकार्य से धीमा गति से चलाता है। मैं किस प्रकार के सुधार कर सकता हूं? क्या इसे दो-आयामी पैरामीटर स्पेस में कम करने का कोई तरीका है? क्या पिक्सल तक पहुंचने और सेट करने का एक और अधिक प्रभावी तरीका है जिसे मैं नहीं जानता हूं?
एक तरफ ध्यान दें पर, वहाँ इस एल्गोरिथ्म है कि मैं के बारे में पता नहीं कर रहा हूँ के समग्र क्रम में सुधार के लिए किसी अन्य तकनीकों कर रहे हैं? जैसे कि छात्र या आईरिस के अधिकतम त्रिज्या का अनुमान लगाने के तरीके?
नोट: मैं भी इस बात के लिए OpenCV का उपयोग करने की कोशिश की है, लेकिन मैं नहीं धुन पर्याप्त मापदंडों लगातार सही हो सकती है।
मुझे पता हो, तो किसी भी अन्य जानकारी है कि आप की जरूरत हैं।
नोट: एक बार फिर मैं अपने खुद के कोड का गलत मतलब निकाला। यह तकनीकी रूप से 5-आयामी है, लेकिन 3-आयामी एक्स, वाई, आर लूप केवल काले पिक्सेल पर चल रहा है।
मुझे पता है कि आर लूप को हटाकर या सरलीकृत करके, समस्या काफी कम हो जाती है। समस्या यह है कि मुझे नहीं पता कि लूप को सरल कैसे बनाया जाए। मैंने अपने केंद्र को छात्र के केंद्र के करीब होने के बावजूद आईरिस के पता लगाने को सरल बनाने का प्रयास किया, लेकिन यह मुझे छात्र खोजने में मदद नहीं करता है। यदि छात्र की सीमाओं और स्थान का अनुमान लगाने का कोई तरीका था (जैसा कि आपने कहा था), इससे कुछ समस्या हल हो जाएगी, लेकिन स्थान, स्थिति और आकार इतना भिन्न हो सकता है कि मुझे नहीं पता कि मैं कैसे करूं उस। –
संभवतः कैमरे के प्रकार और लेंस के प्रकार से आकार पर सीमाएं हैं? यदि छात्र केवल 3-4 पिक्सल है तो आप शायद इसे नहीं ढूंढ पाएंगे और यह छवि ऊंचाई के आधे से अधिक नहीं हो सकता है –