Բովանդակություն:

Ազնվամորի Պի օբյեկտի հաշվարկ. 5 քայլ
Ազնվամորի Պի օբյեկտի հաշվարկ. 5 քայլ

Video: Ազնվամորի Պի օբյեկտի հաշվարկ. 5 քայլ

Video: Ազնվամորի Պի օբյեկտի հաշվարկ. 5 քայլ
Video: Քաղաքը աղբից չի մաքրվում 2024, Հուլիսի
Anonim
Ազնվամորի Պի օբյեկտների հաշվարկ
Ազնվամորի Պի օբյեկտների հաշվարկ

Համակարգչային տեսլականը, անկասկած, ֆանտաստիկ բան է: Օգտագործելով դա ՝ համակարգիչը ձեռք է բերում շրջակա միջավայրը «տեսնելու» և ավելի լավ զգալու ունակություն, ինչը թույլ է տալիս զարգացնել բարդ, օգտակար և հիանալի ծրագրեր: 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- ի շարժումը և օբյեկտների հաշվարկը

Մեծ եզրափակիչ. Համեմատեք օբյեկտի կենտրոնական կոորդինատները մուտքի և ելքի գծերի կոորդինատների հետ և կիրառեք նախկինում նկարագրված հաշվելու ալգորիթմը: Եվ կլինի շարժվող օբյեկտների հաշվարկ:

Վերջնական արդյունք Ինչպես ցույց է տրված այս գրառման սկզբում, ահա նախագիծը գործում է.

Խորհուրդ ենք տալիս: