Mündəricat:

Raspberry Pi obyektlərinin sayılması: 5 addım
Raspberry Pi obyektlərinin sayılması: 5 addım

Video: Raspberry Pi obyektlərinin sayılması: 5 addım

Video: Raspberry Pi obyektlərinin sayılması: 5 addım
Video: Lanbon L8-HS - wi-fi выключатель на три линии с сенсорным экраном для Tuya Smart и Home Assistant 2024, Iyul
Anonim
Raspberry Pi Obyekt Sayılması
Raspberry Pi Obyekt Sayılması

Kompüter görmə qabiliyyəti, şübhəsiz ki, fantastik bir şeydir! Bunu istifadə edərək, bir kompüter, ətrafdakıları daha yaxşı görmək və hiss etmək qabiliyyətini qazanır, bu da kompleks, faydalı və sərin tətbiqlərin inkişafına imkan verir. Kompüter görmə inkişafları sayəsində üz tanıma və tanıma, obyekt izləmə və obyekt aşkarlama kimi tətbiqlər gündəlik fəaliyyətlərimizdə getdikcə daha çox mövcuddur.

Kompüter görmə çərçivələri və vasitələrinin nə qədər inkişaf etmiş və əlçatan olduğunu nəzərə alsaq, bu yazıda təsvir olunan tətbiq yaxşı uyğun gəlir: hərəkətdə olan obyektləri saymaq üçün sadə bir Raspberry PI və OpenCV adlı pulsuz və açıq mənbəli bir kompüter görmə çərçivəsindən istifadə etməklə, daha doğrusu nə qədər obyektlər müəyyən bir nəzarət zonasına girir və çıxır.

Addım 1: Dərinləşmək: Bir görüntü axınında cisimlərin hərəkəti necə aşkar edilə bilər?

Dərinləşmək: Bir görüntü axınında cisimlərin hərəkəti necə aşkar edilə bilər?
Dərinləşmək: Bir görüntü axınında cisimlərin hərəkəti necə aşkar edilə bilər?

İndi görüntü işləmə mövzusunda daha dərindən öyrənməyin vaxtı gəldi:

bəzi web kamerası axın şəkillərini necə əldə etmək və oraya bir şeyin köçdüyünü aşkar etmək

Beş addımdan ibarətdir:

Addım 1: Hərəkətdə olan obyekti vurğulamaq

Klassik fizikada müəyyən edildiyi kimi, bir şeyin hərəkət etdiyini və ya yerində dayandığını anlamaq üçün bir istinad lazımdır. Burada bir şeyin hərəkət etdiyini müəyyən etmək, demək olar ki, eynidir: hər bir veb kamerası axını çəkilən çərçivə bir istinad çərçivəsi ilə müqayisə ediləcəkdir. Fərqli bir şey varsa, bir şey köçürüldü. Göründüyü kimi sadədir.

Bu istinad çərçivəsi ən mükəmməl şəraitdə çəkilməlidir (məsələn, heç bir şey hərəkət etmir). Şəkil işləmə dünyasında, çəkilmiş bir çərçivə ilə istinad çərçivəsi arasındakı bu müqayisə, fon çıxma adlanan bir texnikadan ibarətdir. Arxa plana çıxma, çəkilmiş çərçivədən və istinad çərçivəsindən pikseldən-pikselə qədər rəngli məlumatları hərfi şəkildə çıxarmaqdan ibarətdir. Beləliklə, bu prosesdən əldə edilən görüntü, yalnız bu iki çərçivə arasındakı fərqi (və ya hərəkət edən / hərəkət edənləri) daha ətraflı şəkildə göstərəcək / göstərəcək və hər şey görüntüdə qara olacaq (bozdakı sıfır dəyərinin rəngi) -ölçülü piksel). Vacibdir: işıqlandırma kondisionerləri və çəkilən veb kamera görüntüsünün keyfiyyəti (çəkmə sensorlarının keyfiyyəti səbəbindən) çərçivədən çərçivəyə qədər cüzi dəyişə bilər. İstinad çərçivəsindən və digər çərçivələrdən "bərabər hissələrin" fon çıxarıldıqdan sonra tamamilə qara olmayacağını nəzərdə tutur. Bu davranışa baxmayaraq, bu layihədə sonrakı addımlarda görüntü işlənməsində heç bir ciddi nəticə yoxdur.

Şəkil işləmə müddətini minimuma endirmək üçün arxa plana çıxmadan əvvəl çəkilmiş çərçivə və istinad çərçivəsi boz rəngli görüntüyə çevrilir. Bəs niyə? Bu hesablama səmərəliliyi məsələsidir: birdən çox rəng təqdim edən bir görüntü (rəngli şəkil) piksel başına üç məlumat verir: Qırmızı, Mavi və Yaşıl rəng komponentləri (köhnə, lakin qızıl RGB standartı). Beləliklə, riyazi olaraq, hər piksel bir rəng komponentini təmsil edən üç dəyərli bir sıra olaraq təyin edilə bilər. Buna görə də, bütün görüntüyə qədər uzadaraq, son görüntü əslində üç görüntü komponentinin qarışığı olacaq: Qırmızı, Mavi və Yaşıl görüntü komponentləri.

Bunu emal etmək üçün çox iş görmək lazımdır! Ancaq boz ölçülü görüntülərdə hər pikselin yalnız bir rəng məlumatı var. Beləliklə, bir rəngli görüntünün işlənməsi boz ölçülü görüntü qutusundan üç qat daha yavaşdır (hansı texnikanın tətbiq olunduğundan asılı olaraq ən azı üç dəfə). Və daha çox şey var: bəzi məqsədlər üçün (bu layihə kimi), bütün rəngləri işlətmək heç də vacib və ya vacib deyil. Buna görə də belə bir nəticəyə gəldik: boz rəngli şəkillərdən istifadə, şəkil işləmə məqsədi ilə çox tövsiyə olunur. Arxa fonda çıxarıldıqdan sonra, Gaussian Blur filtrini tətbiq etmək lazımdır.

Arxa plana çıxarılan şəkil üzərində tətbiq olunan Gauss Bulanıklığı filtri, hərəkətli aşkar olunan obyektin bütün konturlarını hamarlaşdırır. Əlbəttə ki, görüntü işlənməsinin növbəti addımlarında köməkçi olacaq.

Addım 2: Binarizasiya

Binarizasiya
Binarizasiya

Bir çox görüntü işləmə halında, bir görüntüdə obyektləri / xarakteristikaları vurğuladıqdan sonra binarizasiya demək olar ki, məcburi bir addımdır. Səbəb: ikili görüntüdə hər piksel rəngi yalnız iki dəyər qəbul edə bilər: 0x00 (qara) və ya 0xFF (ağ). Növbəti addımlarda görüntü işləmə texnikasını tətbiq etmək üçün daha az "hesablama gücü" tələb etmək üçün görüntü işlənməsinə çox kömək edir. Binarizasiya, boz ölçülü görüntünün hər bir piksel rəngini müəyyən bir eşiklə müqayisə edərək edilə bilər. Piksel rənginin dəyəri eşikdən böyük olarsa, bu piksel rəngi ağ dəyər (0xFF), piksel rənginin dəyəri isə eşikdən aşağı olarsa, bu piksel rəngi qara dəyər (0x00) qəbul edər. Təəssüf ki, eşik dəyərinin seçimini etmək o qədər də asan deyil. İşıqlandırma şərtləri kimi ətraf mühit faktorlarından asılıdır. Səhv bir eşik dəyərinin seçilməsi bütün addımları daha da poza bilər. Buna görə hər hansı bir hərəkət etməzdən əvvəl işiniz üçün bir layihə həddini əl ilə tənzimləməyinizi şiddətlə tövsiyə edirəm. Bu eşik dəyəri, hərəkət edən obyektin ikili görüntüdə görünməsini təmin etməlidir. Mənim vəziyyətimdə, bir eşikin adekvat seçimindən sonra, şəkil 5 -də gördüklərinizlə nəticələnir.

Şəkil 5 - ikili görüntü

Addım 3: Dilate edin

İndiyə qədər, hərəkət edən obyektləri aşkar etmək, onları vurgulamaq və binarizasiya tətbiq etmək mümkün idi ki, bu da hərəkətli bir obyektin olduqca aydın bir görüntüsü ilə nəticələnir (= görüntü işləmə məqsədləri üçün obyektin olduqca aydın görüntüsü). Əşyaların sayılmasına hazırlıq HƏMMƏN tamamlandı. Buradakı "ƏLDƏN", hərəkət etməzdən əvvəl bəzi gözəl tənzimləmələrin olması deməkdir. Bu nöqtədə, obyektlərdə "çuxurların" olması ehtimalı var (ağ rəngli obyektə qara piksel kütləsi). Bu çuxurlar, xüsusi işıqlandırma şəraitindən obyektin formasının bir hissəsinə qədər hər şey ola bilər. Deliklər həqiqi cisimlərin içərisində saxta cisimlər "istehsal edə" bildikdən sonra (nə qədər böyük və harada yerləşməsindən asılı olaraq), görüntüdə deşiklərin olması obyektlərin sayılması üçün fəlakətli ola bilər. Bu delikləri aradan qaldırmağın bir yolu Dilate adlı bir görüntü işləmə texnikasından istifadə etməkdir. Bunu istifadə edin və deliklər yox olur.

Addım 4: Konturların axtarışı (və onun mərkəz mərkəzləri)

Konturların axtarışı (və onun mərkəz mərkəzləri)
Konturların axtarışı (və onun mərkəz mərkəzləri)

Bu nöqtədə, vurgulanmış obyektlər var, içərisində heç bir çuxur yoxdur və sonrakı işlərə hazırdır: konturların axtarışı (və onun mərkəz mərkəzləri). Avtomatik konturları aşkar etmək üçün OpenCV -də mənbələr var, lakin aşkarlanan saylar ağıllı şəkildə seçilməlidir (yalnız real obyekti və ya obyektləri seçmək üçün). Beləliklə, konturları aşkar etmək meyarları obyektin piksel² ilə ölçülən sahəsidir. Bir kontur bir hədddən daha yüksək bir sahəyə malikdirsə (proqram təminatında konfiqurasiya olunmuşdur), buna görə də sayılmalı olan real obyekt kimi qəbul edilməlidir. Bu sahə limitinin/meyarlarının seçimi çox vacibdir və burada pis seçim yanlış saymalar deməkdir. Bəzi sahə dəyərləri məhdudiyyət dəyərlərini sınamalı və istifadənizə daha uyğun olanı yoxlamalısınız. Narahat olmayın, bu həddi tapmaq / tənzimləmək sahardır. Şəkildəki bütün cisimlər seçildikdən sonra, növbəti addım onun üzərinə bir büzüşmə çəkməkdir (bu qarışıqlıq içərisində aşkar edilmiş bütün bir obyekti ehtiva etməlidir). Və bu düzbucağın mərkəzi… obyekt mərkəzi! Bəlkə "bu mərkəzlə nə işin var?" Deyə düşünürsən, elə deyilmi? Cavabınız budur: cismin nə qədər böyük və ya formalı olmasının əhəmiyyəti yoxdur, onun hərəkəti santroidlə eynidir. Başqa sözlə: centroid adlanan bu sadə nöqtə, obyektin bütün hərəkətini təmsil edir. İndi saymağı çox asanlaşdırır, elə deyilmi? Aşağıdakı şəklə baxın (şəkil 6), burada cismin mərkəz hissəsi qara nöqtə kimi təmsil olunur.

Addım 5: Centorid -in Hərəkəti və Obyektlərin Sayılması

Böyük final: obyektin mərkəz koordinatlarını giriş və çıxış xətlərinin koordinatları ilə müqayisə edin və əvvəllər təsvir edilən sayma alqoritmini tətbiq edin. Və hərəkət edən obyektlərin sayılması olacaq!

Yekun nəticə Bu yazının əvvəlində göstərildiyi kimi, işdə olan layihə budur:

Tövsiyə: