- ضرورت سے پہلے کی چیزیں
- رسبیری پائ استعمال کرتے ہوئے لائسنس پلیٹ کی شناخت میں شامل اقدامات
- 1. لائسنس پلیٹ کا پتہ لگانا
- 2. کریکٹر کی تقسیم
- 3. کردار کی پہچان
- نمبر پلیٹ کی شناخت میں ناکام معاملات
- دیگر کامیاب مثالیں
سلامتی ہمیشہ ہی بنی نوع انسان کے لئے ایک بڑی پریشانی رہی ہے۔ ہمیں اپنے آپ کو محفوظ محسوس کرنے کے ل schools آج ہمارے پاس اسکولوں ، اسپتالوں اور ہر دوسری عوامی جگہ پر ویڈیو نگرانی کے کیمرے موجود ہیں۔ ایچ آئی ایس کے ایک سروے کے مطابق یہ اندازہ لگایا گیا ہے کہ سنہ 2014 میں لگ بھگ 245 ملین حفاظتی کیمرے نصب اور کام کر رہے تھے ، جو اس سیارے کے ہر 30 افراد کے لئے ایک سیکیورٹی کیمرہ رکھنے کی طرح ہے۔ خاص طور پر تصویری پروسیسنگ اور مشین لرننگ میں ٹکنالوجی میں ترقی کے ساتھ ، یہ ممکن ہے کہ ان کیمرے کو ویڈیو فیڈ سے معلومات پر عملدرآمد کرنے کی تربیت دے کر ہوشیار بنائیں۔
ان کیمروں سے حاصل کردہ ویڈیو فیڈ کو چہرے کی پہچان ، نمونہ تجزیہ ، جذبات تجزیہ اور بہت کچھ انجام دینے کے لئے استعمال کیا جاسکتا ہے جس کی مدد سے یہ واقعی FF7 فلم میں دکھائی گئی "خدا کی آنکھ" جیسی چیز کے قریب ہوجائے گی۔ در حقیقت ، ہیکویژن اور بہت ساری دیگر نگرانی کی کمپنیوں نے اپنی خصوصیات میں ان خصوصیات کا نفاذ شروع کردیا ہے۔ ہم نے پہلے نمبر پلیٹ کو پڑھنے کے لئے میٹابیلبی امیج پروسیسنگ کا استعمال کیا ، آج اس مضمون میں ہم راسبیری پائی اور اوپن سی وی کا استعمال کرتے ہوئے آٹوموبائل سے لائسنس پلیٹ نمبر کو پہچاننے اور پڑھنے کا طریقہ سیکھیں گے ۔ ہم گوگل کی جانب سے بے ترتیب گاڑیوں کی کچھ تصاویر استعمال کریں گے اور اوپن سی وی کونٹور ڈیٹیکشن کا استعمال کرتے ہوئے نمبر پلیٹ کو پہچاننے کے لئے ایک پروگرام لکھیں گے اور پھر ٹیسریکٹ او سی آر کا استعمال کرتے ہوئے پلیٹ سے نمبر پڑھیں گے۔ دلچسپ لگ رہا ہے ، ٹھیک ہے ، تو آئیے شروع کریں۔
ضرورت سے پہلے کی چیزیں
جیسا کہ پہلے بتایا گیا ہے کہ ہم چہروں کا پتہ لگانے اور پہچاننے کے لئے اوپن سی وی لائبریری کا استعمال کریں گے۔ لہذا اس ٹیوٹوریل کے ساتھ آگے بڑھنے سے پہلے راس بیری پائی پر اوپن سی وی لائبریری انسٹال کرنا یقینی بنائیں۔ نیز 2A اڈاپٹر کے ساتھ اپنے پائ کو پاور کریں اور آسانی سے ڈیبگنگ کے ل it اسے ڈسپلے مانیٹر سے مربوط کریں۔
یہ سبق اس بات کی وضاحت نہیں کرے گا کہ اوپن سی وی کس طرح کام کرتا ہے ، اگر آپ تصویری پروسیسنگ سیکھنے میں دلچسپی رکھتے ہیں تو پھر اس اوپن سی وی کی بنیادی باتیں اور تصویری پروسیسنگ کے اعلی ٹیوٹوریلز کو دیکھیں۔ آپ اوپن سی وی کا استعمال کرتے ہوئے اس امیج سیگمنٹ ایشن ٹیوٹوریل میں شکل ، بلاب کا پتہ لگانے وغیرہ کے بارے میں بھی جان سکتے ہیں۔ تصویر سے کار کی لائسنس پلیٹ کا پتہ لگانے کے ل We ہم اس کے ساتھ کچھ ایسا ہی کریں گے۔
رسبیری پائ استعمال کرتے ہوئے لائسنس پلیٹ کی شناخت میں شامل اقدامات
مختصر کے لئے لائسنس پلیٹ کی شناخت یا ایل پی آر ، میں تین بڑے اقدامات شامل ہیں۔ اقدامات مندرجہ ذیل ہیں
1. لائسنس پلیٹ کا پتہ لگانا: پہلا قدم کار سے لائسنس پلیٹ کا پتہ لگانا ہے۔ ہم نمبر پلیٹ ڈھونڈنے کے لئے آئتاکار چیزوں کا پتہ لگانے کے لئے اوپن سی وی میں سموچ آپشن کا استعمال کریں گے۔ درستگی کو بہتر بنایا جاسکتا ہے اگر ہم عدد نمبر ، پلیٹ کا صحیح حجم ، رنگ اور اندازہ لگائیں۔ عام طور پر کھوج الگورتھم کیمرے کی پوزیشن اور مخصوص ملک میں استعمال ہونے والی نمبر پلیٹ کی قسم کی بنیاد پر تربیت یافتہ ہوتا ہے۔ اگر امیج کے پاس کار بھی نہیں ہے تو یہ مشکل ہو جاتا ہے ، اس معاملے میں ہم کار اور اس کے بعد لائسنس پلیٹ کا پتہ لگانے کے لئے ایک اضافی اقدام کریں گے۔
2. کریکٹر کی تقسیم: ایک بار جب ہمیں لائسنس پلیٹ کا پتہ چل گیا تو ہمیں اسے نکال کر ایک نئی شبیہ کے طور پر محفوظ کرنا پڑے گا۔ ایک بار پھر اوپن سی وی کا استعمال کرتے ہوئے آسانی سے کیا جاسکتا ہے۔
Charac. کردار کی پہچان: اب ، جو نئی شبیہہ ہم نے پچھلے مرحلے میں حاصل کی ہیں ، اس میں کچھ حرف (نمبر / حروف) لکھے ہوئے ہونے کا یقین ہے۔ لہذا ، نمبر کا پتہ لگانے کے لئے ہم اس پر OCR (آپٹیکل کریکٹر ریکگنیشن) انجام دے سکتے ہیں۔ ہم نے پہلے ہی رسبری پائی کا استعمال کرتے ہوئے آپٹیکل کریکٹر ریکگنیشن (OCR) کی وضاحت کی ہے۔
1. لائسنس پلیٹ کا پتہ لگانا
اس رسبری پائی لائسنس پلیٹ ریڈر کا پہلا قدم لائسنس پلیٹ کا پتہ لگانا ہے۔ آئیے ایک کار کی نمونہ کی تصویر لیں اور اس کار میں لائسنس پلیٹ کا پتہ لگانے کے ساتھ شروع کریں۔ اس کے بعد ہم ایک ہی شبیہ کو کیریکٹر سیگٹمنٹ اور کریکٹر ریکگنیشن کے لئے بھی استعمال کریں گے۔ اگر آپ بغیر کسی وضاحت کے سیدھے کوڈ میں کودنا چاہتے ہیں تو آپ نیچے اس صفحے کے نیچے سکرول کرسکتے ہیں ، جہاں مکمل کوڈ فراہم کیا گیا ہے۔ اس ٹیوٹوریل کے لئے میں جو ٹیسٹ امیج استعمال کر رہا ہوں وہ نیچے دکھایا گیا ہے۔
مرحلہ 1: مطلوبہ سائز میں شبیہہ کا سائز تبدیل کریں اور پھر اس کو گرے اسکیل کریں ۔ اس کے لئے کوڈ ذیل میں دیا گیا ہے
img = cv2.resize (img، (620،480)) سرمئی = cv2.cvt رنگ
نیا سائز دینے سے ہم بڑی ریزولوشن امیجز کے ساتھ کسی بھی قسم کی پریشانی سے بچنے میں مدد کرتے ہیں ، اس بات کو یقینی بنائیں کہ سائز پلیٹ میں سائز تبدیل کرنے کے بعد بھی فریم میں باقی ہے۔ امیج پراسیسنگ کے تمام مراحل میں گرے اسکیلنگ عام ہے۔ اس سے مندرجہ ذیل دوسرے عمل کی رفتار تیز ہوجاتی ہے جب ہمیں کسی تصویری پروسیسنگ کے دوران رنگ کی تفصیلات سے نمٹنے کی ضرورت نہیں ہوتی ہے۔ جب یہ اقدام کیا جاتا ہے تو شبیہہ کی شکل میں کچھ اس طرح کی تبدیلی آجائے گی
مرحلہ 2: ہر شبیہ کی مفید اور بیکار معلومات ہوں گی ، اس معاملے میں ہمارے لئے صرف لائسنس پلیٹ ہی مفید معلومات ہے باقی ہمارے پروگرام کے لئے بے حد بیکار ہیں۔ اس بیکار معلومات کو شور کہتے ہیں۔ عام طور پر دو طرفہ فلٹر (دھندلاہٹ) کا استعمال شبیہہ سے ناپسندیدہ تفصیلات کو ختم کردے گا ۔ اسی کے لئے کوڈ ہے
گرے = cv2.bटका فلٹر (گرے ، 11 ، 17 ، 17)
نحو منزل مقصود_یومیج = cv2.bटका فلٹر ہے (ماخذ_تصویر ، پکسل کا قطر ، سگما کلر ، سگما اسپیس)۔ آپ پس منظر کی مزید معلومات کو دھندلا کرنے کے لئے سگما رنگ اور سگما اسپیس کو 17 سے اعلی اقدار تک بڑھا سکتے ہیں ، لیکن محتاط رہیں کہ کارآمد حصہ دھندلا نہ ہو۔ آؤٹ پٹ امیج کو نیچے دکھایا گیا ہے ، کیونکہ آپ دیکھ سکتے ہیں کہ اس تصویر میں پس منظر کی تفصیلات (درخت اور عمارت) دھندلا پن ہیں۔ اس طرح ہم بعد میں ان علاقوں پر توجہ دینے سے پروگرام سے بچ سکتے ہیں۔
مرحلہ 3: اگلا مرحلہ دلچسپ ہے جہاں ہم کنارے کا پتہ لگاتے ہیں ۔ اس کے کرنے کے بہت سارے طریقے ہیں ، سب سے آسان اور مقبول طریقہ یہ ہے کہ اوپن سی وی سے کینڈی کنارے کا طریقہ استعمال کریں ۔ ایسا کرنے کی لائن نیچے دکھائی گئی ہے
کنارے = cv2. کینی (گرے ، 30 ، 200) # پورج ایج کا پتہ لگانا
نحو منزل مقصود_حاصل = cv2.Canny (ذریعہ_ایمج ، دہلیز والیو 1 ، حد حد 2) ہوگا۔ تھریشولڈ ویلے 1 اور حد قیمت 2 کم سے کم اور زیادہ سے زیادہ حد اقدار ہیں۔ صرف ان کناروں کو دکھایا جائے گا جن کی کم از کم حد قیمت سے زیادہ اور زیادہ سے زیادہ حد سے کم قیمت ہے۔ نتیجے کی تصویر نیچے دکھائی گئی ہے
مرحلہ 4: اب ہم اپنی شبیہہ کی شکلیں ڈھونڈنا شروع کر سکتے ہیں ، ہم اپنے پہلے ٹیوٹوریل میں اوپن سی وی کا استعمال کرتے ہوئے شکل تلاش کرنے کے بارے میں پہلے ہی سیکھ چکے ہیں تاکہ ہم بھی اسی طرح آگے بڑھیں۔
nts = cv2.findContours (edged.copy ()، cv2.RETR_TREE، cv2.CHAIN_APPROX_SIMPLE) cns = imutils.grab_contours (سینٹ) سینٹ = ترتیب شدہ (سینٹ، کلید = cv2.contourArea، ریورس = ٹرچ) اسکرین سی این ٹی = کوئی نہیں
ایک بار جب کاؤنٹرز کا پتہ چلا تو ہم ان کو بڑے سے چھوٹے تک ترتیب دیتے ہیں اور صرف 10 نتائج پر غور کرتے ہیں جو دوسروں کو نظر انداز کرتے ہیں۔ ہماری شبیہہ میں کاؤنٹر کچھ بھی ہوسکتا ہے جس کی بند سطح ہوتی ہے لیکن حاصل کردہ تمام نتائج میں لائسنس پلیٹ نمبر بھی ہوگا کیونکہ یہ بھی بند سطح ہے۔
موصولہ نتائج کے درمیان لائسنس پلیٹ کی تصویر کو فلٹر کرنے کے ل we ، ہم اس کے باوجود تمام نتائج کو لوپ کریں گے اور چیک کریں گے کہ جس کے چار اطراف اور بند اعداد و شمار کے ساتھ مستطیل شکل سموچ ہے۔ چونکہ لائسنس پلیٹ یقینی طور پر ایک مستطیل چار رخا شخصیت ہوگی۔
# سینٹ میں ہمارے معاہدے کو ختم کرنا: # متوقع طور پر سموچ پیری = cv2.arcLength (c ، سچ) لگ بھگ = cv2.approxPolyDP (c، 0.018 * peri، true) # اگر ہمارے متوقع سموچ کے چار پوائنٹس ہیں ، تو # ہم یہ فرض کرسکتا ہے کہ اگر ہم نے اپنی اسکرین کو تلاش کرلیا ہے اگر لین (تقریبا) == 4: اسکرین سی این ٹی = تقریبا وقفہ
قیمت 0.018 ایک تجرباتی قیمت ہے۔ آپ اس کے آس پاس کھیل سکتے ہیں تاکہ چیک کریں کہ کون سا آپ کے لئے بہترین کام کرتا ہے۔ یا پھر کار کی تصاویر پر مبنی تربیت کے ل machine مشین لرننگ کا استعمال کرکے اسے اگلے درجے پر لے جا. اور پھر وہاں صحیح قدر استعمال کریں۔ ایک بار جب ہمیں صحیح کاؤنٹر مل گیا تو ہم اسے اسکرینکینٹ نامی متغیر میں محفوظ کرتے ہیں اور پھر اس کے ارد گرد ایک مستطیل خانہ کھینچتے ہیں تاکہ یہ یقینی بنائے کہ ہمیں لائسنس پلیٹ کا صحیح پتہ چلا ہے۔
مرحلہ 5: اب جب ہمیں معلوم ہے کہ نمبر پلیٹ کہاں ہے ، باقی معلومات ہمارے لئے بے کار ہیں۔ لہذا ہم پوری تصویر کو نقاب پوشی کے ساتھ آگے بڑھ سکتے ہیں سوائے اس جگہ کے جہاں نمبر پلیٹ ہے۔ ایسا کرنے کا کوڈ نیچے دکھایا گیا ہے
# نمبر پلیٹ کے علاوہ کسی اور حصہ اٹھاو ماسک = np.zeros (gray.shape، np.uint8) new_image = cv2.drawContours (ماسک ،، 0.255، -1،) new_image = cv2.bitwise_and (IMG، IMG، = ماسک ماسک)
نقاب پوش نئی تصویر نیچے کی طرح کچھ نظر آئے گی
2. کریکٹر کی تقسیم
راسبیری پیئ نمبر پلیٹ کی پہچان کا اگلا مرحلہ یہ ہے کہ لائسنس پلیٹ کو تصویر سے کٹوا کر ایک نئی شبیہہ کے طور پر محفوظ کرکے اس کو الگ کیا جائے۔ اس کے بعد ہم اس امیج کو اس میں موجود کردار کا پتہ لگانے کے لئے استعمال کرسکتے ہیں۔ مرکزی تصویر کی تشکیل کی گئی روئی (علاقہ برائے دلچسپی) کوڈ کوڈ نیچے دکھایا گیا ہے
# اب فصل (x، y) = np.where (ماسک == 255) (ٹاپیکس، ٹاپی) = (np.min (x)، np.min (y)) (نچلے حصے، نیچے) = (np.max (x) ، np.max (y)) کٹی ہوئی = بھوری
نتیجے کی تصویر نیچے دکھائی گئی ہے۔ عام طور پر شبیہ کو تراشنے میں شامل کیا جاتا ہے ، ہم اس کو گرے بھی کرسکتے ہیں اور اگر ضرورت ہو تو اسے کنارے بناسکتے ہیں۔ یہ اگلے مرحلے میں کردار کی پہچان کو بہتر بنانے کے لئے کیا گیا ہے۔ تاہم مجھے معلوم ہوا کہ یہ اصل شبیہہ کے ساتھ بھی ٹھیک کام کرتا ہے۔
3. کردار کی پہچان
اس راسبیری پیئ نمبر پلیٹ کی پہچان کا حتمی مرحلہ یہ ہے کہ طبقاتی تصویر سے نمبر پلیٹ کی معلومات درحقیقت پڑھیں ۔ ہم پائیٹسیریکٹ پیکیج کو امیج کے حروف کو پڑھنے کیلئے استعمال کریں گے ، جیسا کہ ہم نے پچھلے سبق میں کیا تھا۔ اس کے لئے کوڈ ذیل میں دیا گیا ہے
# نمبر پلیٹ کے متن کو پڑھیں = pytesseract.image_to_string (کرپڈ ، تشکیل = '- PSM 11') پرنٹ ("پتہ چلا نمبر یہ ہے:" ، متن)
ہم پہلے ہی وضاحت کرچکے ہیں کہ ٹیسریکٹ انجن کو کس طرح تشکیل دیں ، لہذا یہاں اگر ضرورت ہو تو ہم آزمائشی او سی آر کو تشکیل دے سکتے ہیں اگر ضرورت ہو تو بہتر نتائج حاصل کریں۔ پتہ چلا کردار پھر کنسول پر چھاپتا ہے۔ مرتب کرتے وقت نتیجہ نیچے دکھایا جاتا ہے
جیسا کہ آپ دیکھ سکتے ہیں کہ اصل تصویر میں اس پر "HR 25 BR9044" نمبر موجود تھا اور ہمارے پروگرام کو پتہ چلا ہے کہ اس نے اسکرین پر ایک ہی قدر پرنٹ کی ہے۔
نمبر پلیٹ کی شناخت میں ناکام معاملات
اس راسبیری پی لائسنس پلیٹ کی پہچان کی مکمل پروجیکٹ فائل کو یہاں سے ڈاؤن لوڈ کیا جاسکتا ہے ، اس میں پروگرام اور ٹیسٹ کی تصاویر ہیں جو ہم اپنے پروگرام کو چیک کرنے کے لئے استعمال کرتے تھے۔ یہ کہے بغیر ، یہ یاد رکھنا ہے کہ اس طریقہ کار سے حاصل ہونے والے نتائج درست نہیں ہوں گے ۔ درستگی کا انحصار تصویر کی وضاحت ، واقفیت ، روشنی کی نمائش وغیرہ پر ہے ۔ بہتر نتائج حاصل کرنے کے ل you آپ اس کے ساتھ ساتھ مشین لرننگ الگورتھم کو نافذ کرنے کی کوشش کر سکتے ہیں۔
آئیڈیا حاصل کرنے کے ل let's ، آئیے ایک اور مثال دیکھیں جس میں کار براہ راست کیمرہ کا سامنا نہیں کر رہی ہے۔
جیسا کہ آپ دیکھ سکتے ہیں ، ہمارا پروگرام لائسنس پلیٹ کا صحیح طریقے سے پتہ لگانے اور اس کو کاٹنے میں کامیاب تھا۔ لیکن ٹیسریکٹ لائبریری حروف کو صحیح طریقے سے پہچاننے میں ناکام رہی ہے۔ اصل "TS 08 UE 3396" کے بجائے OCR نے اسے تسلیم کیا ہے کہ "1508 تم 3396" ہے۔ اس طرح کی دشواریوں کو یا تو بہتر اورینٹیشن امیجوں کا استعمال کرکے یا ٹیسریکٹ انجن کو تشکیل دے کر حل کیا جاسکتا ہے ۔
ایک اور بدترین صورت حال یہ ہے کہ جہاں سموچ لائسنس پلیٹ کا صحیح طور پر پتہ لگانے میں ناکام رہتا ہے۔ نیچے دی گئی تصویر میں پس منظر کی بہت زیادہ معلومات اور خراب روشنی ہے جو پروگرام نمبر سے لائسنس پلیٹ کی شناخت کرنے میں بھی ناکام رہا ہے۔ اس صورت میں ہمیں دوبارہ مشین لرننگ پر چلانا ہے یا تصویر کے معیار کو بہتر بنانا ہے۔
دیگر کامیاب مثالیں
شبیہہ کے معیار اور واقفیت کے زیادہ تر اوقات درست ہیں ، پروگرام لائسنس پلیٹ کی نشاندہی کرنے اور اس میں سے نمبر پڑھنے کے قابل تھا۔ ذیل میں سنیپ شاٹس حاصل کیے گئے کامیاب نتائج میں سے کچھ دکھاتے ہیں۔ ایک بار پھر تمام ٹیسٹ کی تصاویر اور یہاں استعمال شدہ کوڈ یہاں فراہم کردہ زپ فائل میں دستیاب ہوں گے۔
امید ہے کہ آپ نے راس بیری پائ کا استعمال کرتے ہوئے خودکار نمبر پلیٹ کی پہچان کو سمجھا ہوگا اور خود ہی کچھ عمدہ بنانے میں خوشی محسوس کریں گے۔ آپ کے خیال میں اوپن سی وی اور ٹیسسرکٹ کے ساتھ اور کیا کیا جاسکتا ہے ؟ ، مجھے تبصرہ سیکشن میں اپنے خیالات سے آگاہ کریں۔ اگر آپ کو اس مضمون کے بارے میں کوئی سوالات ہیں ، تو براہ کرم ان کو نیچے تبصرہ سیکشن میں چھوڑیں یا دیگر تکنیکی سوالات کے لئے فورم کا استعمال کریں۔