Мазмұны:

Raspberry Pi объектілерін санау: 5 қадам
Raspberry Pi объектілерін санау: 5 қадам

Бейне: Raspberry Pi объектілерін санау: 5 қадам

Бейне: Raspberry Pi объектілерін санау: 5 қадам
Бейне: Raspberry Pi Explained in 100 Seconds 2024, Шілде
Anonim
Raspberry Pi объектілерін санау
Raspberry Pi объектілерін санау

Компьютерлік көру - бұл керемет нәрсе! Осыны қолдана отырып, компьютер қоршаған ортаны жақсы көруге және сезуге мүмкіндік алады, бұл күрделі, пайдалы және керемет қосымшаларды жасауға мүмкіндік береді. Бетті анықтау және тану, объектілерді бақылау және объектілерді анықтау сияқты қосымшалар біздің күнделікті әрекеттерімізде компьютерлік көру жетістіктерінің арқасында жиі кездеседі.

Компьютерлік көру жүйелері мен құралдарының қаншалықты жетілдірілген және қол жетімді екенін ескере отырып, осы мақалада сипатталған қосымша жақсы сәйкес келеді: объектілерді қозғалыста санау үшін қарапайым Raspberry PI мен OpenCV деп аталатын ақысыз және ақысыз компьютерлік көру жүйесін қолданады. объектілер белгілі бір бақыланатын аймаққа кіреді және шығады.

1 -қадам: Тереңдеу: кескін ағынында объектілердің қозғалысын қалай анықтауға болады?

Тереңдеу: Кескін ағынында объектілердің қозғалысын қалай анықтауға болады?
Тереңдеу: Кескін ағынында объектілердің қозғалысын қалай анықтауға болады?

Енді кескіндерді өңдеуге тереңірек енетін уақыт келді:

Веб -камерадан ағынды суреттерді қалай алуға және сол жерге бірдеңе көшкенін анықтау

Ол бес қадамнан тұрады:

1 -қадам: Қозғалыстағы объектіні ерекшелеу

Классикалық физикада анықталғандай, бір нәрсенің қозғалатынын немесе ол бір орында тұрғанын анықтау үшін сілтеме қажет. Мұнда бірдеңе қозғалғанын анықтау үшін бәрі бірдей: веб -камера ағынының түсірілген әрбір кадры анықтамалық кадрмен салыстырылады. Егер бірдеңе басқаша болса, онда бір нәрсе қозғалды. Бұл естілгендей қарапайым.

Бұл анықтамалық кадр ең жақсы жағдайда түсірілуі керек (мысалы, ештеңе қозғалмайды). Кескінді өңдеу әлемінде түсірілген кадр мен эталондық фреймді салыстыру фондық азайту деп аталатын техникадан тұрады. Фондық аудару түсірілген кадр мен анықтамалық жақтаудағы пиксельден пиксельге дейінгі түрлі-түсті ақпараттан тұрады. Осылайша, бұл процестің нәтижесінде алынған кескін тек осы екі кадрдың арасындағы айырмашылықты (немесе қозғалатын / қозғалысты) ғана көрсетеді, ал қалғандары суретте қара болады (сұрдағы нөлдік мәннің түсі) -масштабты пиксель). Маңызды: веб -камера түсіретін суреттердің жарықтандырғыштары мен сапасы (сенсорлардың сапасына байланысты) кадрдан кадрға дейін аздап өзгеруі мүмкін. Бұл фондық және басқа кадрлардың «тең бөліктері» фонды алып тастағаннан кейін толық қара болмайтынын білдіреді. Бұл мінез -құлыққа қарамастан, бұл жобада кескінді өңдеудің келесі қадамдарында ешқандай ауыр зардаптар болмайды.

Кескінді өңдеу уақытын азайту үшін фондық қосынды жасамас бұрын түсірілген кадр мен анықтамалық кадр сұр масштабты кескінге түрлендіріледі. Бірақ неге? Бұл есептеу тиімділігі мәселесі: бірнеше түстерді ұсынатын суретте (түрлі -түсті сурет) пиксельде үш ақпарат бар: Қызыл, Көк және Жасыл түсті компоненттер (ескі, бірақ алтын RGB стандарты). Сонымен, математикалық түрде әрбір пиксель үш мәнді массив ретінде анықталуы мүмкін, олардың әрқайсысы түс компонентін білдіреді. Осылайша, оны бүкіл кескінге дейін кеңейте отырып, түпкілікті кескін үш кескін компонентінің қосындысы болады: қызыл, көк және жасыл сурет компоненттері.

Оны өңдеу үшін көп жұмыс қажет! Алайда, сұр масштабты суреттерде әр пиксельде бір ғана түсті ақпарат болады. Сонымен, түрлі-түсті кескінді өңдеу сұр масштабты суретке қарағанда үш есе баяу жүреді (қандай техниканың қолданылатынына байланысты кемінде үш есе). Және тағы басқалар: кейбір мақсаттар үшін (мысалы, бұл жоба) барлық түстерді өңдеу қажет емес немесе маңызды емес. Сондықтан біз қорытындыға келдік: суретті өңдеу үшін сұр масштабты суреттерді қолдану өте ұсынылады. Фондық қосындыдан кейін Гаусс бұлыңғырлық сүзгісін қолдану қажет.

Гаусс бұлыңғырлық сүзгісі фондық түсірілген кескінге қолданылғанда қозғалатын объектінің барлық контурын тегістейді. Әрине, бұл суретті өңдеудің келесі қадамдарында көмекші болады.

2 -қадам: бинаризация

Бинаризация
Бинаризация

Кескінді өңдеудің көп жағдайда, бинаризация - бұл суреттегі объектілерді / сипаттамаларды ерекшелегеннен кейінгі міндетті қадам. Себеп: екілік суретте әр пиксель түсі тек екі мәнді қабылдай алады: 0x00 (қара) немесе 0xFF (ақ). Бұл келесі қадамдарда кескінді өңдеу әдістерін қолдану үшін одан да аз «есептеу қуатын» қажет ету үшін кескінді өңдеуге көп көмектеседі. Бинаризацияны сұр масштабты суреттің әрбір пиксель түсін белгілі бір шекті мәнмен салыстыруға болады. Егер пиксель түсінің мәні шекті мәннен үлкен болса, бұл пиксель түсі ақ мәнді (0xFF), ал егер пиксель түсінің мәні шекті мәннен төмен болса, бұл пиксель түсі қара мәнді (0x00) қабылдайды. Өкінішке орай, шекті мәнді таңдау оңай емес. Бұл қоршаған орта факторларына, мысалы жарықтандыру жағдайларына байланысты. Шекті мәнді қате таңдау барлық қадамдарды бұзуы мүмкін. Сонымен, мен сізге кез келген әрекетті жасамас бұрын, сіздің ісіңіздің шекті мәнін қолмен реттеуге кеңес беремін. Бұл шекті мән қозғалатын объектінің екілік кескінде көрінуін қамтамасыз етуі керек. Менің жағдайда, табалдырықты дұрыс таңдағаннан кейін, 5 -суретте көрсетілген нәтижеге әкеледі.

5 -сурет - екілік кескін

3 -қадам: кеңейтіңіз

Осы уақытқа дейін қозғалатын объектілерді анықтауға, оларды ерекшелеуге және бинаризациялауды қолдануға болатын еді, нәтижесінде жылжымалы объектінің айқын бейнесі пайда болады (= кескінді өңдеу үшін объектінің өте айқын суреті). Нысандарды санауға дайындық ШЫҒАРЫЛМАЙ жасалды. Мұндағы «БАРЛЫҚ» қозғалысты бастамас бұрын кейбір жақсы түзетулер бар екенін білдіреді. Бұл кезде объектілерде «тесіктердің» болуының нақты мүмкіндігі бар (ақ түспен белгіленген объектіге пикселдердің қара массасы). Бұл саңылаулар жарықтандырудың белгілі бір жағдайынан объект пішінінің кейбір бөлігіне дейін болуы мүмкін. Тесіктер нақты объектілердің ішінде жалған заттарды «шығаратын» болса (олардың үлкендігіне және қайда орналасқанына байланысты), суреттегі тесіктердің болуы объектілерді санау үшін апатты болуы мүмкін. Бұл тесіктерді жоюдың тәсілі - суретті өңдеу техникасы Dilate деп аталады. Мұны қолданыңыз, саңылаулар кетеді.

4 -қадам: Контурларды (және оның центроидтерін) іздеу

Контурларды іздеу (және оның центроидтері)
Контурларды іздеу (және оның центроидтері)

Бұл кезде бізде бөлектелген нысандар бар, оның ішінде тесік жоқ және келесіге дайын: контурларды (және оның центроидтерін) іздеу. OpenCV -де автоматты түрде контурларды анықтауға арналған ресурстар бар, бірақ анықталған санауыштарды дұрыс таңдау керек (тек нақты объектіні немесе объектілерді таңдау үшін). Осылайша, контурды анықтау критерийі пиксельмен өлшенетін объектінің ауданы болып табылады. Егер контурдың шегі жоғары болса (бағдарламалық жасақтамада конфигурацияланған), сондықтан оны санауға болатын нақты объект ретінде қарастыру қажет. Бұл аймақтың шегін/критерийлерін таңдау өте маңызды, ал мұнда дұрыс емес таңдау қате есептеулерді білдіреді. Сіз кейбір аймақтық шектердің мәндерін сынап көруіңіз керек және сіздің пайдалануыңызға не сәйкес келетінін тексеруіңіз керек. Уайымдамаңыз, бұл шектеуді табу / реттеу мүмкін емес. Кескіндегі барлық объектілер таңдалғаннан кейін, келесі қадам - оған бұрылыс салу (бұл ретте оның ішінде анықталған объектінің барлығы болуы керек). Ал бұл төртбұрыштың центрі…. объект центрод! Мүмкін сіз «бұл центроидпен не маңызды?» Деп ойлайтын шығарсыз? Міне, сіздің жауабыңыз: заттың пішіні қаншалықты үлкен немесе қандай екені маңызды емес, оның қозғалысы центродпен бірдей. Басқаша айтқанда: центроид деп аталатын бұл қарапайым нүкте объектінің барлық қозғалысын білдіреді. Бұл енді санауды өте қарапайым етеді, солай емес пе? Төмендегі суретті қараңыз (6 -сурет), онда объектінің центрі қара нүкте түрінде берілген.

5 -қадам: Центорид қозғалысы және объектілерді санау

Үлкен финал: объектінің центроид координаттарын кіру және шығу сызықтарының координаттарымен салыстырыңыз және бұрын сипатталған санау алгоритмін қолданыңыз. Және қозғалатын объектілерді санау болады!

Түпкілікті нәтиже Бұл жазбаның басында көрсетілгендей, міне, бұл жоба:

Ұсынылған: