Բովանդակություն:
- Քայլ 1. Ավելի խորանալ. Ինչպե՞ս կարող է օբյեկտի շարժը հայտնաբերվել պատկերի հոսքում:
- Քայլ 2: Բինարիզացիա
- Քայլ 3: Ընդլայնել
- Քայլ 4. Եզրագծերի որոնում (և դրա ցենտրոիդներ)
- Քայլ 5. Centorid- ի շարժումը և օբյեկտների հաշվարկը
Video: Ազնվամորի Պի օբյեկտի հաշվարկ. 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Համակարգչային տեսլականը, անկասկած, ֆանտաստիկ բան է: Օգտագործելով դա ՝ համակարգիչը ձեռք է բերում շրջակա միջավայրը «տեսնելու» և ավելի լավ զգալու ունակություն, ինչը թույլ է տալիս զարգացնել բարդ, օգտակար և հիանալի ծրագրեր: Faceրագրեր, ինչպիսիք են դեմքի հայտնաբերումը և ճանաչումը, օբյեկտներին հետևելը և օբյեկտների հայտնաբերումը, ավելի ու ավելի հաճախ են հանդիպում մեր ամենօրյա գործունեության մեջ ՝ շնորհիվ համակարգչային տեսողության առաջընթացի:
Հաշվի առնելով, թե որքան առաջադեմ և մատչելի են համակարգչային տեսողության շրջանակներն ու գործիքները, այս հոդվածում նկարագրված ծրագիրը լավ տեղավորվում է. Օգտագործելով պարզ Raspberry PI և անվճար և բաց կոդով համակարգչային տեսողության շրջանակ, որը կոչվում է OpenCV ՝ շարժվող առարկաները հաշվելու համար, ավելի ճշգրիտ ՝ որքան: օբյեկտները մտնում և դուրս են գալիս որոշակի վերահսկվող գոտուց:
Քայլ 1. Ավելի խորանալ. Ինչպե՞ս կարող է օբյեկտի շարժը հայտնաբերվել պատկերի հոսքում:
Այժմ ժամանակն է խորանալ պատկերի մշակման գործում
ինչպես ստանալ տեսախցիկի հոսքի պատկերներ և հայտնաբերել, որ ինչ -որ բան այնտեղ է տեղափոխվել:
Այն բաղկացած է հինգ քայլից
Քայլ 1: Շարժման մեջ առարկան ընդգծելու համար
Ինչպես սահմանված է դասական ֆիզիկայում, հղում կատարելը անհրաժեշտ է եզրակացնելու համար, որ ինչ -որ բան շարժվում է կամ կանգնած է: Այստեղ որոշելու համար, թե ինչ -որ բան տեղափոխվել է, դա գրեթե նույնն է. Յուրաքանչյուր տեսախցիկի հոսք, որը գրավում է շրջանակը, համեմատվելու է հղման շրջանակի հետ: Եթե ինչ -որ բան այլ է, ինչ -որ բան տեղափոխվել է: Պարզ է, ինչպես հնչում է:
Այս հղման շրջանակը պետք է գրվի ամենակատարյալ պայմաններում (օրինակ ՝ շարժվող ոչինչ): Պատկերի մշակման աշխարհում գրավված շրջանակի և հղման շրջանակի այս համեմատությունը բաղկացած է մի տեխնիկայից, որը կոչվում է ֆոնային հանում: Ֆոնային ենթատեքստը բաղկացած է բառացիորեն հանել պիքսելից պիքսել գույնի տեղեկատվությունը գրավված շրջանակից և տեղեկատու շրջանակից: Այսպիսով, այս հաջողության արդյունքում ստացված պատկերը կարևորի / կցուցադրի ավելի մանրամասն միայն այն, ինչ տարբերվում է այս երկու շրջանակների միջև (կամ, ինչը տեղափոխել / շարժել է) և մնացած ամեն ինչ պատկերով կլինի սև (մոխրագույնի վրա զրոյական արժեքի գույնը) -մասշտաբային պիքսել): Կարևոր է. Տեսախցիկի պատկերի լուսավորման պայմանները և որակը (գրավման տվիչների որակի պատճառով) կարող են փոքր -ինչ տարբերվել շրջանակից շրջանակ: Այն ենթադրում է, որ հղման շրջանակից և մեկ այլ շրջանակներից «հավասար մասերը» ֆոնի հանումից հետո ամբողջովին սև չեն լինի: Չնայած այս վարքագծին, այս նախագծում պատկերի մշակման հաջորդ քայլերում լուրջ հետևանքներ չկան:
Պատկերի մշակման ժամանակը նվազագույնի հասցնելու համար, նախքան ֆոնային ենթատիրություն անելը, գրավված շրջանակը և հղման շրջանակը փոխակերպվում են մոխրագույն մասշտաբի պատկերի: Բայց ինչու? Դա հաշվողական արդյունավետության խնդիր է. Պատկերը, որը ներկայացնում է բազմաթիվ գույներ (գունային պատկեր), ունի երեք տեղեկատվություն մեկ պիքսելում `կարմիր, կապույտ և կանաչ գույնի բաղադրիչներ (հին, բայց ոսկեգույն RGB ստանդարտ): Այսպիսով, մաթեմատիկորեն, յուրաքանչյուր պիքսել կարող է սահմանվել որպես եռարժեք զանգված, որոնցից յուրաքանչյուրը ներկայացնում է գունային բաղադրիչ: Հետևաբար, այն տարածելով ամբողջ պատկերի վրա, վերջնական պատկերը իրականում կլինի պատկերի երեք բաղադրիչների խառնուրդ ՝ կարմիր, կապույտ և կանաչ պատկերի բաղադրիչներ:
Այն մշակելու համար մեծ աշխատանք է պահանջվում: Այնուամենայնիվ, մոխրագույն մասշտաբի պատկերներում յուրաքանչյուր պիքսել ունի միայն մեկ գույնի տեղեկատվություն: Այսպիսով, գունավոր պատկերի մշակումը երեք անգամ ավելի դանդաղ է, քան մոխրագույն մասշտաբի պատկերի դեպքում (առնվազն երեք անգամ `կախված տեխնիկայի կիրառությունից): Եվ ավելին. Որոշ նպատակների համար (ինչպես այս նախագիծը), մշակեք բոլոր գույները բոլորովին անհրաժեշտ կամ կարևոր չեն: Հետևաբար, մենք եկանք այն եզրակացության. Մոխրագույն մասշտաբով պատկերների օգտագործումը խիստ խորհուրդ է տրվում պատկերի մշակման նպատակով: Ֆոնային հանումից հետո անհրաժեշտ է կիրառել Gaussian Blur զտիչը:
Gaussian Blur զտիչը, որը կիրառվում է ֆոնին հանված պատկերի վրա, հարթեցնում է շարժվող հայտնաբերված օբյեկտի բոլոր ուրվագծերը: Իհարկե, դա օգնական կլինի պատկերի մշակման հաջորդ քայլերում:
Քայլ 2: Բինարիզացիա
Պատկերի մշակման շատ դեպքերում բինարացումը գրեթե պարտադիր քայլ է պատկերի լուսավոր օբյեկտներից / բնութագրերից հետո: Պատճառ. Երկուական պատկերում յուրաքանչյուր պիքսելային գույն կարող է ընդունել միայն երկու արժեք ՝ 0x00 (սև) կամ 0xFF (սպիտակ): Սա մեծապես օգնում է պատկերի մշակմանը, որպեսզի հաջորդ քայլերում էլ ավելի քիչ «հաշվողական ուժ» պահանջվի `պատկերի մշակման տեխնիկան կիրառելու համար: Բինարիզացիան կարող է իրականացվել `համեմատելով գորշ մասշտաբի պատկերի յուրաքանչյուր պիքսելային գույնը որոշակի շեմի հետ: Եթե պիքսել գույնի արժեքը գերազանցում է շեմը, այս պիքսել գույնը կստանա սպիտակ արժեք (0xFF), և եթե պիքսել գույնի արժեքը շեմից ցածր է, ապա այդ պիքսել գույնը կստանա սև արժեք (0x00): Unավոք, շեմի արժեքի ընտրությունը այնքան էլ հեշտ չէ կատարել: Դա կախված է շրջակա միջավայրի գործոններից, ինչպիսիք են լուսավորության պայմանները: Շեմային արժեքի սխալ ընտրությունը կարող է փչացնել հետագա բոլոր քայլերը: Այսպիսով, ես խստորեն խորհուրդ եմ տալիս ձեռքով հարմարեցնել նախագծի շեմը ձեր գործի համար ՝ հետագա գործողություններից առաջ: Այս շեմի արժեքը պետք է ապահովի, որ շարժվող օբյեկտը ցուցադրվի երկուական պատկերով: Իմ դեպքում, շեմի համարժեք ընտրությունից հետո, ստացվում է այն, ինչ տեսնում եք նկար 5 -ում:
Նկար 5 - երկուական պատկեր
Քայլ 3: Ընդլայնել
Մինչ այժմ հնարավոր էր հայտնաբերել շարժվող առարկաներ, ընդգծել դրանք և կիրառել երկակիացում, ինչը հանգեցնում է շարժվող օբյեկտի բավականին հստակ պատկերի (= օբյեկտի բավականին հստակ պատկերի պատկերի մշակման նպատակով): Օբյեկտների հաշվման նախապատրաստումը Գրեթե ավարտված է: «Գրեթե» այստեղ նշանակում է, որ առաջ շարժվելուց պետք է կատարել մի քանի ճշգրիտ ճշգրտում: Այս պահին օբյեկտներում «անցքերի» առկայության իրական հնարավորություններ կան (պիքսելների սև զանգվածները սպիտակ ընդգծված օբյեկտի մեջ): Այս անցքերը կարող են լինել ամեն ինչ ՝ սկսած լուսավորության որոշակի պայմաններից մինչև օբյեկտի ձևի մի մաս: Երբ անցքերը կարող են «արտադրել» կեղծ օբյեկտներ իրական օբյեկտների ներսում (կախված նրանից, թե որքան մեծ են և որտեղ են դրանք գտնվում), պատկերի վրա անցքերի առկայության հետևանքները կարող են աղետալի լինել օբյեկտների հաշվարկի համար: Այս անցքերը վերացնելու միջոց է պատկերի մշակման տեխնիկայի օգտագործումը, որը կոչվում է Dilate: Օգտագործեք սա, և անցքերն անհետանում են:
Քայլ 4. Եզրագծերի որոնում (և դրա ցենտրոիդներ)
Այս պահին մենք ունենք ընդգծված օբյեկտներ, դրա ներսում անցքեր չկան և պատրաստ ենք հաջորդին `ուրվագծերի (և դրա կենտրոնախույզների) որոնմանը: OpenCV- ում կան ինքնաբերաբար ուրվագծերը հայտնաբերելու ռեսուրսներ, սակայն հայտնաբերված գծերը պետք է խելամտորեն ընտրվեն (միայն իրական օբյեկտը կամ առարկաները ընտրելու համար): Այսպիսով, ուրվագծերը հայտնաբերելու չափանիշը օբյեկտի տարածքն է ՝ չափված պիքսելներով²: Եթե ուրվագիծն ունի ավելի մեծ տարածք, քան սահմանը (կազմաձևված է ծրագրաշարում), ուստի այն պետք է դիտվի որպես հաշվառման իրական օբյեկտ: Այս տարածքի սահմանաչափի/չափանիշների ընտրությունը շատ կարևոր է, և այստեղ վատ ընտրությունը նշանակում է սխալ հաշվարկներ: Դուք պետք է փորձեք տարածքի արժեքի սահմանափակումների որոշ արժեքներ և ստուգեք, թե որն է ավելի հարմար ձեր օգտագործման համար: Մի անհանգստացեք, այս սահմանը այնքան էլ դժվար չէ գտնել / հարմարեցնել: Պատկերի բոլոր օբյեկտներն ընտրվելուց հետո հաջորդ քայլը դրա վրա գծել կրկնապատկելն է (այն պետք է պարունակի հայտնաբերված ամբողջ օբյեկտ դրա ներսում): Եվ այս ուղղանկյան կենտրոնն է… օբյեկտը centroid! Դուք գուցե մտածում եք «Ո՞րն է այս կենտրոնախաղի հետ մեծ խնդիրը»: Ահա ձեր պատասխանը. Անկախ նրանից, թե որքան մեծ է կամ ինչպես է օբյեկտի ձևը, նրա շարժումը նույնն է, ինչ կենտրոնականը: Այլ կերպ ասած. Կենտրոնական կոչվող այս պարզ կետը ներկայացնում է օբյեկտի ամբողջ շարժումը: Հիմա դա հաշվելը շատ պարզ է դարձնում, այնպես չէ՞: Տես ստորև բերված պատկերը (նկար 6), որտեղ օբյեկտի կենտրոնախցիկը ներկայացված է որպես սև կետ:
Քայլ 5. Centorid- ի շարժումը և օբյեկտների հաշվարկը
Մեծ եզրափակիչ. Համեմատեք օբյեկտի կենտրոնական կոորդինատները մուտքի և ելքի գծերի կոորդինատների հետ և կիրառեք նախկինում նկարագրված հաշվելու ալգորիթմը: Եվ կլինի շարժվող օբյեկտների հաշվարկ:
Վերջնական արդյունք Ինչպես ցույց է տրված այս գրառման սկզբում, ահա նախագիծը գործում է.
Խորհուրդ ենք տալիս:
Խոնավության, ճնշման և ջերմաստիճանի հաշվարկ ՝ օգտագործելով BME280 և ֆոտոնային միջերես. 6 քայլ
Խոնավության, ճնշման և ջերմաստիճանի հաշվարկ ՝ օգտագործելով BME280 և Photon Interfacing. Մենք հանդիպում ենք տարբեր նախագծերի, որոնք պահանջում են ջերմաստիճանի, ճնշման և խոնավության մոնիտորինգ: Այսպիսով, մենք գիտակցում ենք, որ այս պարամետրերն իրականում կենսական դեր են խաղում տարբեր մթնոլորտային պայմաններում համակարգի աշխատանքի արդյունավետության գնահատման մեջ
Ազնվամորի Պի օբյեկտի հայտնաբերում. 7 քայլ
Raspberry Pi օբյեկտի հայտնաբերում. Այս ուղեցույցը տալիս է քայլ առ քայլ հրահանգներ, թե ինչպես ստեղծել Raspberry Pi- ի վրա TensorFlow’s Object Detection API- ն: Հետևելով այս ուղեցույցի քայլերին ՝ դուք կկարողանաք օգտագործել ձեր Raspberry Pi- ն ՝ կենդանի տեսանյութերի միջոցով օբյեկտների հայտնաբերում իրականացնելու P
Էժան հաշվարկ. Arduino TTL սերիայով ՝ 3 քայլ
Էժան հաշվարկ. Arduino TTL սերիայով. UNO- ի նման լիարժեք arduinos- ի արժեքի մեծ մասը USB ինտերֆեյսի արժեքն է (նկատի ունեցեք, ճիշտ է, երբ սա գրված էր, բայց դա այլևս իրական չէ, USB- ն այժմ էժան է: Կարող եք դեռ ուզում եմ TTL սերիալ գնալ այլ պատճառներով): Ազատվեք դրանից
Հաշվողական քվանտային մեխանիկայի հաշվարկ. 4 քայլ
Հաշվարկային քվանտային մեխանիկայի հաշվարկ. Քիմիայի և ֆիզիկայի հաշվարկային հաշվարկները կարող են շատ հետաքրքիր հատկություններ բացահայտել որոշ նմուշների վրա (հատկապես, եթե դրանք ենթակա են փոփոխման ՝ տվյալ սկզբնական միացության ավելի լավ արդյունավետության համար): ընթացակարգերում, բացի դ
Ֆեյսբուքի երկրպագուների հաշվարկ. 5 քայլ (նկարներով)
Facebook- ի երկրպագուների հաշվարկ. Թարմացում `26.09.2019 - Timeամանակը թռչում է և տեխնոլոգիան փոխվում է: Այս նախագիծը ստեղծելուց ի վեր, Facebook- ը փոխել է իր API- ները և APP- ի կարգավորումները: Այսպիսով, Facebook APP ստեղծելու քայլն ավարտվել է: Այսօր ես այլևս մուտք կամ հնարավորություն չունեմ հետևելու այս քայլին: