- வார்ப்புரு உருவாக்கம்
- கடிதம் கண்டறிதல்
- எண் தட்டு கண்டறிதல்
- MATLAB ஐப் பயன்படுத்தி வாகன உரிமம் தட்டு எண் கண்டறிதல் அமைப்பின் வேலை
ANPR (தானியங்கி எண் தட்டு அங்கீகாரம்) அமைப்பு எவ்வாறு இயங்குகிறது என்று நீங்கள் எப்போதாவது யோசித்திருக்கிறீர்களா? இதன் பின்னணியில் உள்ள கருத்தை நான் உங்களுக்குச் சொல்கிறேன், ஏஎன்பிஆர் அமைப்பின் கேமரா வாகன உரிமத் தகட்டின் படத்தைப் பிடிக்கிறது, பின்னர் படத்தை ஆல்பா எண் மாற்றத்தை உரை வடிவமாக வழங்க பல எண்ணிக்கையிலான வழிமுறைகள் மூலம் படம் செயலாக்கப்படுகிறது. பெட்ரோல் பம்புகள், ஷாப்பிங் மால்கள், விமான நிலையங்கள், நெடுஞ்சாலைகள், டோல் பூத், ஹோட்டல், மருத்துவமனைகள், வாகன நிறுத்துமிடங்கள், பாதுகாப்பு மற்றும் இராணுவ சோதனைச் சாவடிகள் போன்ற பல இடங்களில் ANPR அமைப்பு பயன்படுத்தப்படுகிறது.
இந்த நம்பர் பிளேட் கண்டறிதலுக்கு பல பட செயலாக்க கருவிகள் உள்ளன, ஆனால் இங்கே இந்த டுடோரியலில் வாகன உரிம தட்டு எண்ணை உரை வடிவத்தில் பெற MATLAB பட செயலாக்கத்தைப் பயன்படுத்துவோம். நீங்கள் MATLAB அல்லது பட செயலாக்கத்தில் புதியவராக இருந்தால், எங்கள் முந்தைய MATLAB திட்டங்களைச் சரிபார்க்கவும்:
- MATLAB உடன் தொடங்குதல்: ஒரு விரைவான அறிமுகம்
- MATLAB ஐப் பயன்படுத்தி பட செயலாக்கத்துடன் தொடங்குதல்
முதலில், எண் தகடுகளைக் கண்டறிவதற்கு நாங்கள் பயன்படுத்தும் கருத்தைப் பற்றி சுருக்கமாகக் கூறுகிறேன். இந்த திட்டத்திற்கு மூன்று நிரல்கள் அல்லது '.m' கோப்புகள் உள்ளன.
- வார்ப்புரு உருவாக்கம் ( template_creation.m ) - இது எண்ணெழுத்துக்களின் சேமிக்கப்பட்ட படங்களை அழைக்கவும், பின்னர் அவற்றை MATLAB நினைவகத்தில் புதிய வார்ப்புருவாக சேமிக்கவும் பயன்படுகிறது.
- கடிதம் கண்டறிதல் ( Letter_detection.m ) - உள்ளீட்டுப் படத்திலிருந்து எழுத்துக்களைப் படித்து , அதனுடன் பொருந்தக்கூடிய எண்ணெழுத்துக்களைக் கண்டறியவும்.
- தட்டு கண்டறிதல் ( Plate_detection.m ) - படத்தை செயலாக்கவும், பின்னர் மேலே உள்ள இரண்டு மீ-கோப்புகளை அழைக்கவும் எண்ணைக் கண்டறியவும்.
இப்போது, இந்த எம்-கோப்புகளை எவ்வாறு குறியிடுவது மற்றும் குறியீட்டைத் தொடங்குவதற்கு முன் நீங்கள் என்ன செய்ய வேண்டும் என்பதைப் பற்றி அறிந்து கொள்வோம். இந்த டுடோரியலைப் பார்த்த பிறகு , இந்த திட்டத்தின் முடிவில் அனைத்து குறியீடு கோப்புகளையும் வேலை செய்யும் விளக்க வீடியோவையும் காணலாம்.
வார்ப்புரு உருவாக்கம்
கோப்புகளைச் சேமித்து சேமிக்க முதலில் திட்டத்திற்கான கோப்புறையை உருவாக்கவும் (எனது கோப்புறை பெயர் எண் தட்டு கண்டறிதல் ). அனைத்து எழுத்துக்கள் மற்றும் எண்களின் பைனரி படங்களை ' ஆல்பா' என பெயரிடப்பட்ட துணை கோப்புறையில் சேமித்துள்ளோம்.
இப்போது, கீழேயுள்ள படத்தில் காட்டப்பட்டுள்ளபடி, MATLAB இல் எடிட்டர் சாளரத்தைத் திறக்கவும்,

MATLAB இன் அடிப்படை சொற்களை நீங்கள் அறிந்திருக்கவில்லை என்றால், இணைக்கப்பட்ட டுடோரியலை சரிபார்க்க பரிந்துரைக்கிறேன்.
இப்போது, கீழேயுள்ள குறியீட்டை template_creation.m கோப்பில் நகலெடுத்து ஒட்டவும், கோப்பை திட்ட கோப்புறையில் சேமிக்கவும் ( எண் தட்டு கண்டறிதல் ). பட வார்ப்புரு கோப்புகள் உட்பட இந்த திட்டம் தொடர்பான அனைத்து கோப்புகளையும் இங்கிருந்து பதிவிறக்கம் செய்யலாம். மேலும் வீடியோ பார்க்கலாம் இந்த திட்டம் முடிவடையும் கட்டத்தை குறிக்கப்படுகிறது.
% எழுத்துக்கள் A = imread ('alpha / A.bmp'); B = imread ('alpha / B.bmp'); C = imread ('alpha / C.bmp'); D = imread ('alpha / D.bmp'); E = imread ('alpha / E.bmp'); F = imread ('alpha / F.bmp'); G = imread ('alpha / G.bmp'); H = imread ('alpha / H.bmp'); I = imread ('alpha / I.bmp'); J = imread ('alpha / J.bmp'); K = imread ('alpha / K.bmp'); L = imread ('alpha / L.bmp'); M = imread ('alpha / M.bmp'); N = imread ('alpha / N.bmp'); O = imread ('alpha / O.bmp'); P = imread ('alpha / P.bmp'); Q = imread ('alpha / Q.bmp'); R = imread ('alpha / R.bmp'); S = imread ('alpha / S.bmp'); T = imread ('alpha / T.bmp'); U = imread ('alpha / U.bmp'); V = imread ('alpha / V.bmp'); W = imread ('alpha / W.bmp'); X = imread ('alpha / X.bmp '); Y = imread ('alpha / Y.bmp'); Z = imread ('alpha / Z.bmp'); % இயற்கை எண்கள் ஒன்று = imread ('alpha / 1.bmp'); இரண்டு = imread ('alpha / 2.bmp'); three = imread ('alpha / 3.bmp'); நான்கு = imread ('alpha / 4.bmp'); ஐந்து = imread ('ஆல்பா / 5.bmp'); ஆறு = imread ('ஆல்பா / 6.bmp'); ஏழு = imread ('ஆல்பா / 7.bmp'); எட்டு = imread ('ஆல்பா / 8.bmp'); ஒன்பது = imread ('ஆல்பா / 9.bmp'); பூஜ்ஜியம் = imread ('ஆல்பா / 0.bmp'); % எழுத்துக்களுக்கான வரிசையை உருவாக்குதல் =; எண்களின் எண்ணுக்கு வரிசையை உருவாக்குதல் =; NewTemplates =; சேமி ('NewTemplates', 'NewTemplates') அனைத்தையும் அழிக்கவும்

இங்கே, மேலே உள்ள குறியீட்டில் ' imread () ' கட்டளையைப் பயன்படுத்தி படங்களை ஒரு மாறியில் சேமிக்கிறோம் . இந்த செயல்பாடு கோப்புறையிலிருந்து அல்லது கணினியின் எந்த இடத்திலிருந்தும் MATLAB க்கு படங்களை அழைக்க பயன்படுகிறது. மேலே உள்ள குறியீட்டிலிருந்து ஒரு எடுத்துக்காட்டு எடுத்துக்கொள்வோம்:
A = imread ('ஆல்பா / A.bmp');
A என்பது மாறி, மற்றும் ' ஆல்பா / A.bmp' இல் , 'ஆல்பா' என்பது கோப்புறை பெயர் மற்றும் ' A.bmp' என்பது கோப்பு பெயர்.
பின்னர் ' கடிதம் ' மற்றும் ' எண் ' ஆகியவற்றின் மேட்ரிக்ஸை உருவாக்கி, ' சேமி (கோப்பு பெயர், மாறிகள்)' கட்டளையைப் பயன்படுத்தி மாறி ' நியூ டெம்பிளேட்களில் ' சேமிக்கவும் .
% எழுத்துக்களுக்கான வரிசையை உருவாக்குதல் =; எண்களின் எண்ணுக்கு வரிசையை உருவாக்குதல் =; NewTemplates =; சேமி ('NewTemplates', 'NewTemplates') அனைத்தையும் அழிக்கவும்
இப்போது புதிய எடிட்டர் சாளரத்தில் Letter_detection.m ஐ குறியிடத் தொடங்குங்கள்.
கடிதம் கண்டறிதல்
இங்கே நாம் Letter_detection.m என்ற பெயரில் இரண்டாவது குறியீடு கோப்பை உருவாக்குகிறோம் . இப்போது, அந்தக் கோப்பில் கீழே உள்ள குறியீட்டை நகலெடுத்து ஒட்டவும் மற்றும் கோப்பு திட்டக் கோப்புறையில் Letter_detection என்ற பெயருடன் சேமிக்கவும். இந்த கோப்பை இங்கிருந்து பதிவிறக்கம் செய்யலாம், இந்த இணைக்கப்பட்ட ஜிப் கோப்புகளில் இந்த நம்பர் பிளேட் கண்டறிதல் திட்டம் தொடர்பான பிற கோப்புகளும் உள்ளன.
செயல்பாட்டு கடிதம் = ரீட்லெட்டர் (ஸ்னாப்) சுமை NewTemplates snap = imresize (snap,); rec =; n = 1 க்கு: நீளம் (NewTemplates) cor = corr2 (NewTemplates {1, n}, snap); rec =; end ind = find (rec == max (rec)); காட்சி (கண்டுபிடி (rec == அதிகபட்சம் (rec))); % எழுத்துக்கள் பட்டியல்கள். if ind == 1 - ind == 2 எழுத்து = 'A'; elseif ind == 3 - ind == 4 எழுத்து = 'B'; elseif ind == 5 letter = 'C' elseif ind == 6 - ind == 7 letter = 'D'; elseif ind == 8 எழுத்து = 'E'; elseif ind == 9 எழுத்து = 'F'; elseif ind == 10 எழுத்து = 'ஜி'; elseif ind == 11 எழுத்து = 'H'; elseif ind == 12 எழுத்து = 'நான்'; elseif ind == 13 எழுத்து = 'J'; elseif ind == 14 எழுத்து = 'K'; elseif ind == 15 எழுத்து = 'எல்'; elseif ind == 16 எழுத்து = 'எம்'; elseif ind == 17 எழுத்து = 'N'; elseif ind == 18 - ind == 19 எழுத்து = 'O'; elseif ind == 20 - ind == 21 எழுத்து = 'P'; elseif ind == 22 - ind == 23 எழுத்து = 'Q'; elseif ind == 24 - ind == 25 எழுத்து = 'R'; elseif ind == 26 எழுத்து = 'எஸ்'; elseif ind == 27 எழுத்து = 'T'; elseif ind == 28 எழுத்து = 'U'; elseif ind == 29 எழுத்து = 'வி'; elseif ind == 30 எழுத்து = 'W'; elseif ind == 31 எழுத்து = 'எக்ஸ்'; elseif ind == 32 கடிதம் = 'ஒய்'; elseif ind == 33 எழுத்து = 'Z'; % * - * - * - * - * % எண்கள் பட்டியல்கள். elseif ind == 34 எழுத்து = '1'; elseif ind == 35 எழுத்து = '2'; elseif ind == 36 எழுத்து = '3'; elseif ind == 37 - ind == 38 letter = '4'; elseif ind == 39 எழுத்து = '5'; elseif ind == 40 - ind == 41 - ind == 42 கடிதம் = '6'; elseif ind == 43 எழுத்து = '7'; elseif ind == 44 - ind == 45 letter = '8'; elseif ind == 46 - ind == 47 - ind == 48 எழுத்து = '9'; வேறு கடிதம் = '0'; இறுதி முடிவு

இங்கே, மேலே உள்ள குறியீட்டில் நாம் கடிதம் என்ற செயல்பாட்டை உருவாக்கியுள்ளோம், இது ' ஆல்பா ' வகுப்பிலிருந்து உள்ளீட்டு படத்தின் எண்ணெழுத்து வெளியீட்டை ' ரீட்லெட்டர் ()' கட்டளையைப் பயன்படுத்தி தருகிறது . கட்டளை சுமை 'NewTemplates ஐப் பயன்படுத்தி சேமித்த வார்ப்புருக்களை ஏற்றவும் .
அதன்பிறகு , உள்ளீட்டு படத்தை மறுஅளவித்துள்ளோம், எனவே 'imresize (கோப்பு பெயர், அளவு)' கட்டளையைப் பயன்படுத்தி வார்ப்புருவின் படங்களுடன் ஒப்பிடலாம் . பின்னர் ஐந்து வளைய ஒவ்வொரு படத்தை டெம்ப்ளேட் சிறந்த போட்டியில் பெற ஒத்திசைவுகள் பயன்படுத்தப்படும் உள்ளீட்டுக் படத்தை உள்ளது.
கீழேயுள்ள குறியீட்டில் காட்டப்பட்டுள்ளபடி, உள்ளீட்டு படத்திலிருந்து எழுத்துக்கள் வார்ப்புருவுடன் ஒவ்வொரு எண்ணெழுத்து வார்ப்புருவுக்கும் தொடர்பு மதிப்பை பதிவு செய்ய ஒரு மேட்ரிக்ஸ் ' ரெக் ' உருவாக்கப்பட்டது
cor = corr2 (NewTemplates {1, n}, snap);
பின்னர் 'கண்டறிய ()' கட்டளை குறியீட்டு கண்டுபிடிக்க பயன்படுத்தப்படும் உயர்ந்த பொருந்தியது பாத்திரம் இடத்துடன் பொருந்துகிறது. அந்த குறியீட்டின் படி, 'if-else' அறிக்கையைப் பயன்படுத்தி தொடர்புடைய எழுத்து அச்சிடப்படுகிறது.
இப்போது, இதை முடித்த பிறகு, பிரதான நிரலுக்கான குறியீட்டைத் தொடங்க புதிய எடிட்டர் சாளரத்தைத் திறக்கவும்.
எண் தட்டு கண்டறிதல்
Plate_detection.m என பெயரிடப்பட்ட மூன்றாவது மற்றும் இறுதி குறியீடு கோப்பு இங்கே உள்ளது, இந்த கோப்பில் கீழே உள்ள குறியீட்டை நகலெடுத்து ஒட்டவும் மற்றும் திட்ட கோப்புறையில் சேமிக்கவும். விரைவான தொடக்கத்திற்கு நீங்கள் படக் வார்ப்புருக்கள் கொண்ட அனைத்து குறியீடு கோப்புகளையும் இங்கிருந்து பதிவிறக்கம் செய்யலாம்.
அனைத்தையும் மூடு; அனைத்தையும் அழி; im = imread ('எண் தட்டு படங்கள் / image1.png'); imgray = rgb2gray (im); imbin = imbinarize (imgray); im = விளிம்பில் (imgray, 'prewitt'); எண் தட்டு Iprops = regionprops (im, 'BoundingBox', 'Area', 'Image') இருப்பிடத்தைக் கண்டுபிடிப்பது படிகளுக்கு கீழே ; area = Iprops.Area; count = numel (Iprops); maxa = பரப்பளவு; boundingBox = Iprops.BoundingBox; i = 1 க்கு: மாக்ஸா என எண்ணுங்கள்

மேலே உள்ள குறியீட்டில் பயன்படுத்தப்படும் அடிப்படை கட்டளைகள் கீழே குறிப்பிடப்பட்டுள்ளன:
imread () - இலக்கு கோப்புறையிலிருந்து MATLAB இல் படத்தைத் திறக்க இந்த கட்டளை பயன்படுத்தப்படுகிறது.
rgb2gray () - இந்த கட்டளை RGB படத்தை கிரேஸ்கேல் வடிவமாக மாற்ற பயன்படுகிறது.
imbinarize () - இந்த கட்டளை 2-D கிரேஸ்கேல் படத்தை பைனரைஸ் செய்ய பயன்படுகிறது அல்லது வெறுமனே படத்தை கருப்பு மற்றும் வெள்ளை வடிவமாக மாற்றுகிறது என்று சொல்லலாம்.
விளிம்பில் () - ராபர்ட்ஸ், சோபல், பிரீவிட் மற்றும் பலவற்றைப் போன்ற பல்வேறு முறைகளைப் பயன்படுத்துவதன் மூலம் படத்தில் உள்ள விளிம்புகளைக் கண்டறிய இந்த கட்டளை பயன்படுத்தப்படுகிறது.
regionprops () - பட கட்டத்தின் பண்புகளை அளவிட இந்த கட்டளை பயன்படுத்தப்படுகிறது.
numel () - இந்த கட்டளை வரிசை உறுப்புகளின் எண்ணிக்கையை கணக்கிட பயன்படுகிறது.
imcrop () - உள்ளிடப்பட்ட அளவில் படத்தை செதுக்க இந்த கட்டளை பயன்படுத்தப்படுகிறது.
bwareaopen () - பைனரி படத்திலிருந்து சிறிய பொருட்களை அகற்ற இந்த கட்டளை பயன்படுத்தப்படுகிறது.
குறியீட்டில் மேலே உள்ள கட்டளைகளைப் பயன்படுத்துவதன் மூலம், உள்ளீட்டு படத்தை அழைத்து அதை கிரேஸ்கேலாக மாற்றுகிறோம். பின்னர் கிரேஸ்கேல் பைனரி படமாக மாற்றப்படுகிறது, மேலும் பைனரி படங்களின் விளிம்பு ப்ரீவிட் முறையால் கண்டறியப்படுகிறது .
முழு உள்ளீட்டு படத்திலும் எண் தட்டின் இருப்பிடத்தைக் கண்டறிய கீழேயுள்ள குறியீடு பயன்படுத்தப்படுகிறது, Iprops = regionprops (im, 'BoundingBox', 'Area', 'Image'); area = Iprops.Area; count = numel (Iprops); maxa = பரப்பளவு; boundingBox = Iprops.BoundingBox; i = 1 க்கு: மாக்ஸா என எண்ணுங்கள்
அதற்குப் பிறகு நம்பர் பிளேட்டை செதுக்கி , பைனரி படத்திலிருந்து சிறிய பொருள்களை முறையே 'imcrop ()' மற்றும் 'bwareaopen ()' கட்டளையைப் பயன்படுத்தி அகற்றவும் .
பின்னர், அந்த செதுக்கப்பட்ட உரிமத் தகடு படத்தை செயலாக்கவும், கண்டறியப்பட்ட எண்ணை படம் மற்றும் உரை வடிவத்தில் (கட்டளை சாளரத்தில்) காண்பிக்கவும் கீழே உள்ள குறியீடு பயன்படுத்தப்படுகிறது.
Iprops = regionprops (im, 'BoundingBox', 'Area', 'Image'); count = numel (Iprops); noPlate =; i = 1 க்கு: ow = length (Iprops (i).குறிப்பு (1,:)); oh = நீளம் (Iprops (i).படம் (:, 1%); ow <(h / 2) & oh> (h / 3) letter = Letter_detection (Iprops (i).படம்); noPlate = இறுதி முடிவு
MATLAB ஐப் பயன்படுத்தி வாகன உரிமம் தட்டு எண் கண்டறிதல் அமைப்பின் வேலை
இல் template_creation.m கோப்பு நாங்கள் 'என்ற பெயரில் ஒரு அடைவு அல்லது கோப்பில் எண்ணெழுத்துக்கள் அனைத்து பைனரி படங்களை காப்பாற்ற குறியீடு வடிவமைக்க வேண்டும் NewTemplates '. கீழே உள்ளதைப் போல அந்த அடைவு Letter_detection.m இல் அழைக்கப்படுகிறது

பின்னர் Plate_detection.m குறியீடு கோப்பில் Letter_detection.m குறியீடு கோப்பு கீழே உள்ள படத்தில் காட்டப்பட்டுள்ளபடி படத்தை செயலாக்கும்போது அழைக்கப்படுகிறது,

இப்போது, .m கோப்பை இயக்க 'RUN' பொத்தானைக் கிளிக் செய்க

MATLAB பதிலளிக்க சில வினாடிகள் ஆகலாம், கீழே காட்டப்பட்டுள்ளபடி கீழ் இடது மூலையில் பிஸியான செய்தியைக் காண்பிக்கும் வரை காத்திருங்கள்,

நிரல் தொடங்கும்போது நீங்கள் நம்பர் பிளேட் பட பாப்அப் மற்றும் கட்டளை சாளரத்தில் எண்ணைப் பெறுவீர்கள். எனது படத்திற்கான வெளியீடு கீழே கொடுக்கப்பட்டுள்ள படத்தைப் போல இருக்கும்;

வாகன உரிமம் எண் தட்டு கண்டறிதல் அமைப்பின் முழுமையான வேலை கீழே உள்ள வீடியோவில் நிரூபிக்கப்பட்டுள்ளது, மேலும் பட வார்ப்புருக்கள் கொண்ட அனைத்து குறியீடு கோப்புகளையும் இங்கிருந்து பதிவிறக்கம் செய்யலாம்.
மேலும், அனைத்து MATLAB திட்டங்களையும் இங்கே பாருங்கள்.
