Სარჩევი:

ჟოლო Pi ობიექტების დათვლა: 5 ნაბიჯი
ჟოლო Pi ობიექტების დათვლა: 5 ნაბიჯი

ვიდეო: ჟოლო Pi ობიექტების დათვლა: 5 ნაბიჯი

ვიდეო: ჟოლო Pi ობიექტების დათვლა: 5 ნაბიჯი
ვიდეო: ტიტანიკის საიდუმლო: როგორ ვერ შეამჩნიეს აისბერგი?! ყველაზე დეტალური ამბავი! 2024, ნოემბერი
Anonim
ჟოლო პი ობიექტების დათვლა
ჟოლო პი ობიექტების დათვლა

კომპიუტერული ხედვა, უდავოდ, არის ფანტასტიკური რამ! ამის გამოყენებით, კომპიუტერი იძენს შესაძლებლობას "დაინახოს" და უკეთ შეიგრძნოს გარემო, რაც იძლევა კომპლექსური, სასარგებლო და მაგარი პროგრამების განვითარების საშუალებას. პროგრამები, როგორიცაა სახის ამოცნობა და ამოცნობა, ობიექტების თვალყურის დევნება და ობიექტების გამოვლენა სულ უფრო მეტად გვხვდება ჩვენს ყოველდღიურ საქმიანობაში, კომპიუტერული ხედვის მიღწევების წყალობით.

იმის გათვალისწინებით, თუ რამდენად მოწინავე და ხელმისაწვდომია კომპიუტერული ხედვის ჩარჩოები და ინსტრუმენტები, ამ სტატიაში აღწერილი პროგრამა კარგად ჯდება: მარტივი ჟოლოს PI და უფასო და ღია კოდის კომპიუტერული ხედვის ჩარჩოს სახელწოდებით OpenCV მოძრაობის ობიექტების დასათვლელად, უფრო ზუსტად რამდენად ობიექტები შედიან და გამოდიან გარკვეული მონიტორინგის ზონაში.

ნაბიჯი 1: გაღრმავება: როგორ შეიძლება ობიექტის მოძრაობის გამოვლენა გამოსახულების ნაკადში?

გაღრმავება: როგორ შეიძლება ობიექტის მოძრაობის გამოვლენა გამოსახულების ნაკადში?
გაღრმავება: როგორ შეიძლება ობიექტის მოძრაობის გამოვლენა გამოსახულების ნაკადში?

ახლა დროა გაღრმავდეთ სურათის დამუშავების საკითხებში:

როგორ მივიღოთ ვებკამერის ნაკადიანი სურათები და დავადგინოთ, რომ რაღაც იქ გადავიდა

იგი შედგება ხუთი ნაბიჯისგან:

ნაბიჯი 1: მონიშნეთ ობიექტი მოძრაობაში

როგორც კლასიკურ ფიზიკაში განისაზღვრება, მითითება აუცილებელია იმის დასადგენად, რომ რაღაც მოძრაობს ან ის დგას. აქ, იმის დასადგენად, არის თუ არა რაღაც გადატანილი, ეს თითქმის იგივეა: ვებკამერის თითოეული ნაკადის გადაღებული ჩარჩო შეედრება საცნობარო ჩარჩოს. თუ რამე განსხვავებულია, რაღაც გადავიდა. მარტივია როგორც ჟღერს.

ეს საცნობარო ჩარჩო უნდა იყოს გადაღებული ყველაზე სრულყოფილ პირობებში (მაგალითად, არაფერი მოძრაობს). სურათის დამუშავების სამყაროში, ეს შედარება გადაღებულ ჩარჩოსა და საცნობარო ჩარჩოს შორის შედგება ტექნიკაში, რომელსაც ეწოდება ფონის გამოკლება. ფონის სუბტრაცია შედგება სიტყვასიტყვით გამოკლება პიქსელ-პიქსელ ფერთა ინფორმაციას გადაღებული ჩარჩოდან და საცნობარო ჩარჩოდან. ამრიგად, ამ მიღწევის შედეგად მიღებული სურათი ხაზს უსვამს / აჩვენებს უფრო დეტალურად მხოლოდ იმას, რაც განსხვავდება ამ ორ ჩარჩოს შორის (ან რა გადაადგილდა / მიიღო მოძრაობა) და ყველაფერი დანარჩენი შავი იქნება (ნაცრისფერზე ნულის მნიშვნელობის ფერი -მასშტაბური პიქსელი). მნიშვნელოვანია: ვებკამერის სურათის განათების პირობები და ხარისხი (გადაღებული სენსორების ხარისხის გამო) შეიძლება ოდნავ განსხვავდებოდეს ჩარჩოდან ჩარჩოში. ეს გულისხმობს, რომ "თანაბარი ნაწილები" საცნობარო ჩარჩოდან და სხვა ჩარჩოებიდან არ იქნება მთლად შავი ფონის გამოკლების შემდეგ. ამ ქცევის მიუხედავად, ამ პროექტში სურათის დამუშავების შემდგომ ნაბიჯებს სერიოზული შედეგები არ მოჰყვება.

სურათის დამუშავების დროის შესამცირებლად, ფონის სუბტრატირების გაკეთებამდე, გადაღებული ჩარჩო და საცნობარო ჩარჩო გარდაიქმნება ნაცრისფერი მასშტაბის გამოსახულებაზე. Მაგრამ რატომ? ეს არის გამოთვლითი ეფექტურობის საკითხი: სურათს, რომელიც წარმოადგენს მრავალ ფერს (ფერადი სურათი) აქვს სამი ინფორმაცია თითო პიქსელზე: წითელი, ლურჯი და მწვანე ფერის კომპონენტები (ძველი, მაგრამ ოქროს RGB სტანდარტი). ასე რომ, მათემატიკურად, თითოეული პიქსელი შეიძლება განისაზღვროს, როგორც სამი მნიშვნელობის მასივი, თითოეული წარმოადგენს ფერის კომპონენტს. ამრიგად, მისი გაფართოება მთელ სურათზე, საბოლოო სურათი იქნება რეალურად გამოსახულების სამი კომპონენტის ნაზავი: წითელი, ლურჯი და მწვანე გამოსახულების კომპონენტები.

მის დასამუშავებლად, ბევრი შრომაა საჭირო! თუმცა, ნაცრისფერი მასშტაბის სურათებში, თითოეულ პიქსელს აქვს მხოლოდ ერთი ფერის ინფორმაცია. ამრიგად, ფერადი სურათის დამუშავება სამჯერ უფრო ნელია, ვიდრე ნაცრისფერი მასშტაბის გამოსახულების შემთხვევაში (მინიმუმ სამჯერ, იმისდა მიხედვით, თუ რა ტექნიკასთან არის დაკავშირებული). და კიდევ უფრო მეტიც: ზოგიერთი მიზნისთვის (როგორც ეს პროექტი), ყველა ფერის დამუშავება არ არის აუცილებელი ან საერთოდ მნიშვნელოვანი. აქედან გამომდინარე, ჩვენ მივედით დასკვნამდე: ნაცრისფერი მასშტაბის სურათების გამოყენება რეკომენდირებულია სურათების დამუშავების მიზნით. ფონის სუბტრაციის შემდეგ აუცილებელია გაუსული დაბინდვის ფილტრის გამოყენება.

გაუსის დაბინდვის ფილტრი, რომელიც გამოიყენება ფონზე გამოკლებულ სურათზე, არბილებს მოძრავი აღმოჩენილი ობიექტის ყველა კონტურს. რა თქმა უნდა, ეს იქნება დამხმარე სურათის დამუშავების შემდგომ ნაბიჯებში.

ნაბიჯი 2: ბინარიზაცია

ბინარიზაცია
ბინარიზაცია

სურათის დამუშავების უმეტეს შემთხვევაში, ბინარიზაცია თითქმის სავალდებულო ნაბიჯია გამოსახულების ობიექტების / მახასიათებლების მონიშვნის შემდეგ. მიზეზი: ორობითი გამოსახულებით, პიქსელის თითოეულ ფერს შეუძლია მიიღოს მხოლოდ ორი მნიშვნელობა: 0x00 (შავი) ან 0xFF (თეთრი). ეს მნიშვნელოვნად უწყობს ხელს სურათის დამუშავებას, რათა მოითხოვოს კიდევ უფრო ნაკლები "გამომთვლელი ძალა", რათა შემდგომ ნაბიჯებში გამოიყენოს გამოსახულების დამუშავების ტექნიკა. ბინარიზაცია შეიძლება გაკეთდეს ნაცრისფერი მასშტაბის გამოსახულების თითოეული პიქსელის ფერის შედარება გარკვეულ ზღურბლთან. თუ პიქსელის ფერის მნიშვნელობა ზღურბლზე მეტია, ეს პიქსელის ფერი მიიღებს თეთრ მნიშვნელობას (0xFF), ხოლო თუ პიქსელის ფერის მნიშვნელობა ზღურბლზე დაბალია, ეს პიქსელის ფერი მიიღებს შავ მნიშვნელობას (0x00). სამწუხაროდ, ბარიერის ღირებულების არჩევანი არც ისე ადვილი გასაკეთებელია. ეს დამოკიდებულია გარემო ფაქტორებზე, როგორიცაა განათების პირობები. ბარიერის ღირებულების არასწორმა არჩევანმა შეიძლება გააფუჭოს ყველა ნაბიჯი შემდგომი. ამრიგად, მე მკაცრად გირჩევთ, ხელით შეცვალოთ პროექტში ბარიერი თქვენს საქმეზე, ნებისმიერი შემდგომი მოქმედების წინ. ამ ზღურბლის მნიშვნელობამ უნდა უზრუნველყოს მოძრავი ობიექტის ორობითი გამოსახულება. ჩემს შემთხვევაში, ბარიერის ადეკვატური არჩევანის შემდეგ, მიიღება ის, რასაც ხედავთ ფიგურაში 5.

სურათი 5 - ორობითი გამოსახულება

ნაბიჯი 3: გაფართოება

აქამდე შესაძლებელი იყო მოძრავი ობიექტების გამოვლენა, მონიშნვა და ბინარიზაცია, რაც იწვევს მოძრავი ობიექტის საკმაოდ მკაფიო გამოსახულებას (= ობიექტის საკმაოდ მკაფიო გამოსახულება გამოსახულების დამუშავების მიზნით). ობიექტის დათვლისთვის მზადება თითქმის დასრულებულია. "თითქმის" აქ ნიშნავს, რომ გადაადგილებამდე უნდა მოხდეს მცირედი კორექტირება. ამ მომენტში, არსებობს რეალური შანსი იმისა, რომ არსებობდეს „ხვრელები“ობიექტებში (პიქსელების შავი მასები თეთრად მონიშნულ ობიექტში). ეს ხვრელები შეიძლება იყოს ნებისმიერი, განათების განსაკუთრებული პირობებიდან დაწყებული ობიექტის ფორმის გარკვეულ ნაწილებამდე. მას შემდეგ, რაც ხვრელებს შეუძლიათ "წარმოქმნან" ყალბი საგნები რეალურ ობიექტებში (დამოკიდებულია იმაზე, თუ რამდენად დიდია და სად მდებარეობს), სურათზე ხვრელების არსებობის შედეგები შეიძლება კატასტროფული იყოს ობიექტების დათვლისთვის. ამ ხვრელების აღმოსაფხვრელად გამოიყენება გამოსახულების დამუშავების ტექნიკა, სახელწოდებით Dilate. გამოიყენეთ ეს და ხვრელები გაქრება.

ნაბიჯი 4: კონტურების ძებნა (და მისი ცენტროიდები)

კონტურების ძებნა (და მისი ცენტროიდები)
კონტურების ძებნა (და მისი ცენტროიდები)

ამ ეტაპზე, ჩვენ გვაქვს მონიშნული ობიექტები, არანაირი ხვრელი შიგნით და მზად ვართ შემდგომისთვის: კონტურების (და მისი ცენტროიდების) ძიება. OpenCV– ში არის რესურსები ავტომატური კონტურების გამოსავლენად, მაგრამ გამოვლენილი კონტურები გონივრულად უნდა იყოს შერჩეული (მხოლოდ რეალური ობიექტის ან ობიექტების არჩევისთვის). ასე რომ, კონტურების გამოვლენის კრიტერიუმი არის ობიექტის ფართობი, რომელიც იზომება პიქსელებში². თუ კონტურს აქვს უფრო მეტი ფართობი ვიდრე ლიმიტი (კონფიგურირებულია პროგრამულ უზრუნველყოფაში), ამიტომ ის უნდა ჩაითვალოს დასათვლელად ნამდვილ ობიექტად. ამ ტერიტორიის ლიმიტის/კრიტერიუმების არჩევანი ძალიან მნიშვნელოვანია და ცუდი არჩევანი აქ ნიშნავს არასწორ დათვლას. თქვენ უნდა სცადოთ ზოგიერთი ტერიტორიის ღირებულების ლიმიტების ღირებულებები და შეამოწმოთ რა უფრო შეესაბამება თქვენს გამოყენებას. არ ინერვიულოთ, ეს ლიმიტი არც ისე რთულია იპოვოთ / მორგებული. სურათის ყველა ობიექტის არჩევის შემდეგ, შემდეგი ნაბიჯი არის მასზე ოთხკუთხედის დახატვა (ეს ხელახლა უნდა შეიცავდეს მთელ აღმოჩენილ ობიექტს მის შიგნით). და ამ ოთხკუთხედის ცენტრი არის…. ობიექტი ცენტროიდი! თქვენ ალბათ ფიქრობთ "რა არის დიდი საქმე ამ ცენტროიდთან?", არა? აქ არის თქვენი პასუხი: არ აქვს მნიშვნელობა რამდენად დიდია ან როგორია ობიექტის ფორმა, მისი მოძრაობა იგივეა, რაც ცენტროიდზე. სხვა სიტყვებით რომ ვთქვათ: ეს მარტივი წერტილი, რომელსაც ცენტროიდი ეწოდება, წარმოადგენს ობიექტის მთელ მოძრაობას. ეს ახლა ხდის დათვლას ძალიან მარტივს, არა? იხილეთ სურათი ქვემოთ (სურათი 6), სადაც ობიექტის ცენტროიდი წარმოდგენილია შავი წერტილის სახით.

ნაბიჯი 5: ცენტორიდის მოძრაობა და ობიექტების დათვლა

გრანდიოზული ფინალი: შეადარეთ ობიექტის ცენტროიდული კოორდინატები შესასვლელთან და გასასვლელებთან და გამოიყენეთ აღწერილი ალგორითმი, რომელიც აღწერილია ადრე. და იქნება მოძრავი ობიექტების დათვლა!

საბოლოო შედეგი როგორც ნაჩვენებია ამ პოსტის დასაწყისში, აქ არის პროექტი მოქმედებაში:

გირჩევთ: