Isi kandungan:

Pengiraan Objek Raspberry Pi: 5 Langkah
Pengiraan Objek Raspberry Pi: 5 Langkah

Video: Pengiraan Objek Raspberry Pi: 5 Langkah

Video: Pengiraan Objek Raspberry Pi: 5 Langkah
Video: Linux on iPad. Raspberry Pi Zero 2W. More detailed video on my channel later. 2024, Julai
Anonim
Pengiraan Objek Raspberry Pi
Pengiraan Objek Raspberry Pi

Penglihatan komputer, pasti, adalah perkara yang hebat! Dengan menggunakan ini, komputer memperoleh keupayaan untuk "melihat" dan merasakan lingkungan sekitar dengan lebih baik, apa yang memungkinkan pengembangan aplikasi yang kompleks, berguna dan sejuk. Aplikasi seperti pengesanan dan pengecaman wajah, pengesanan objek dan pengesanan objek lebih banyak terdapat dalam aktiviti seharian kita, berkat kemajuan penglihatan komputer.

Memandangkan seberapa maju dan mudah diakses kerangka kerja dan alat penglihatan komputer, aplikasi yang dijelaskan dalam artikel ini sangat sesuai: menggunakan Raspberry PI sederhana dan kerangka penglihatan komputer sumber bebas dan bebas yang disebut OpenCV untuk mengira objek dalam pergerakan, lebih tepatnya berapa banyak objek masuk dan keluar dari zon dipantau tertentu.

Langkah 1: Menjadi Lebih Mendalam: Bagaimana Pergerakan Objek Dikesan dalam Aliran Gambar?

Semakin Mendalam: Bagaimana Pergerakan Objek Dikesan dalam Aliran Gambar?
Semakin Mendalam: Bagaimana Pergerakan Objek Dikesan dalam Aliran Gambar?

Kini tiba masanya untuk lebih mendalam dalam memproses gambar:

bagaimana untuk mendapatkan beberapa gambar aliran webcam dan mengesan bahawa sesuatu telah berpindah ke sana

Ia terdiri dalam lima langkah:

Langkah 1: Untuk menonjolkan objek dalam pergerakan

Seperti yang ditakrifkan dalam fizik klasik, rujukan diperlukan untuk menginformasikan bahawa ada sesuatu yang sedang bergerak atau jika ia masih bergerak. Di sini, untuk menentukan ada sesuatu yang bergerak, hampir sama: setiap bingkai strim aliran webcam tunggal akan dibandingkan dengan bingkai rujukan. Sekiranya sesuatu yang berbeza, sesuatu telah dipindahkan. Ia mudah kerana kedengarannya.

Rangka rujukan ini mesti diambil dalam keadaan yang paling sempurna (misalnya, tidak ada yang bergerak). Dalam dunia pemprosesan gambar, perbandingan antara bingkai yang diambil dan bingkai rujukan terdiri dalam teknik yang disebut pengurangan latar belakang. Pengurangan latar terdiri daripada maklumat warna piksel-ke-piksel secara literal dari bingkai yang diambil dan bingkai rujukan. Oleh itu, gambar yang dihasilkan dari proses ini akan menyerlahkan / menunjukkan dengan lebih terperinci hanya apa yang berbeza antara kedua bingkai ini (atau, apa yang telah bergerak / mendapat pergerakan) dan semua yang lain akan menjadi hitam dalam gambar (warna nilai sifar pada kelabu -piksel skala). Penting: keadaan pencahayaan dan kualiti gambar kamera web yang ditangkap (kerana kualiti sensor tangkapan) sedikit berbeza dari bingkai ke bingkai. Ini menyiratkan bahawa "bahagian yang sama" dari bingkai rujukan dan bingkai lain tidak akan menjadi hitam total setelah pengurangan latar belakang. Di sebalik tingkah laku ini, tidak ada akibat yang serius dalam langkah seterusnya memproses gambar dalam projek ini.

Untuk meminimumkan masa pemprosesan gambar, sebelum melakukan pengurangan latar, bingkai yang diambil dan bingkai rujukan ditukar menjadi gambar skala abu-abu. Tapi kenapa? Ini adalah masalah keberkesanan pengkomputeran: gambar yang menampilkan pelbagai warna (gambar warna) mempunyai tiga maklumat per piksel: komponen warna Merah, Biru dan Hijau (standard RGB lama tetapi emas). Jadi, secara matematis, setiap piksel dapat didefinisikan sebagai susunan tiga nilai, masing-masing mewakili komponen warna. Oleh itu, dengan memperluasnya ke keseluruhan gambar, gambar akhir sebenarnya akan menjadi gabungan tiga komponen gambar: komponen gambar Merah, Biru dan Hijau.

Untuk memprosesnya, banyak kerja diperlukan! Namun, dalam gambar berskala kelabu, setiap piksel hanya mempunyai satu maklumat warna. Oleh itu, pemprosesan gambar berwarna tiga kali lebih perlahan daripada pada cetakan gambar berskala kelabu (sekurang-kurangnya tiga kali, bergantung pada teknik apa yang terlibat). Dan ada banyak lagi: untuk beberapa tujuan (seperti projek ini), memproses semua warna tidak perlu atau penting sama sekali. Oleh itu, kami sampai pada kesimpulan: penggunaan gambar berskala kelabu sangat disarankan untuk tujuan pemprosesan gambar. Selepas pengurangan latar belakang, perlu menggunakan penapis Gaussian Blur.

Penapis Gaussian Blur yang diterapkan di atas gambar yang dikurangkan di latar belakang melicinkan semua kontur objek yang dikesan bergerak. Yang pasti, ini akan membantu dalam proses pemprosesan gambar seterusnya.

Langkah 2: Binarizasi

Binariisasi
Binariisasi

Dalam kebanyakan kes pemprosesan gambar, binarization hampir merupakan langkah wajib setelah menonjolkan objek / watak dalam gambar. Sebab: dalam gambar binari, setiap warna piksel hanya boleh mengandaikan dua nilai: 0x00 (hitam) atau 0xFF (putih). Ini banyak membantu pemprosesan gambar untuk memerlukan "daya pengkomputeran" yang lebih sedikit untuk menerapkan teknik pemprosesan gambar pada langkah seterusnya. Binariisasi dapat dilakukan membandingkan setiap warna piksel gambar skala kelabu dengan ambang tertentu. Sekiranya nilai warna piksel lebih besar daripada ambang, warna piksel ini akan menganggap nilai putih (0xFF), dan jika nilai warna piksel lebih rendah dari ambang, warna piksel ini akan menganggap nilai hitam (0x00). Sayangnya, pilihan nilai ambang tidak begitu mudah dibuat. Ia bergantung pada faktor persekitaran, seperti keadaan pencahayaan. Pilihan nilai ambang yang salah boleh merosakkan semua langkah lebih jauh. Oleh itu, saya sangat mengesyorkan anda menyesuaikan ambang secara manual dalam projek untuk kes anda sebelum tindakan selanjutnya. Nilai ambang ini mesti memastikan bahawa objek bergerak ditunjukkan dalam gambar binari. Dalam kes saya, setelah pilihan yang mencukupi, menghasilkan apa yang anda lihat pada gambar 5.

Gambar 5 - gambar binari

Langkah 3: Lumurkan

Sehingga sekarang, mungkin untuk mengesan objek bergerak, menonjolkannya dan menerapkan binarization, yang menghasilkan gambar objek bergerak yang cukup jelas (= gambar objek yang cukup jelas untuk tujuan pemprosesan gambar). Persiapan untuk mengira objek HANYA dilakukan. "JAUH" di sini bermaksud bahawa ada beberapa penyesuaian yang baik untuk dibuat sebelum meneruskannya. Pada ketika ini, ada kemungkinan nyata adanya "lubang" pada objek (jisim piksel hitam ke objek yang diserlahkan putih). Lubang ini boleh menjadi apa saja, dari keadaan pencahayaan tertentu hingga beberapa bahagian bentuk objek. Setelah lubang dapat "menghasilkan" objek palsu di dalam objek nyata (bergantung pada seberapa besar dan di mana ia berada), akibat dari kehadiran lubang dalam gambar boleh menjadi bencana terhadap penghitungan objek. Cara untuk menghilangkan lubang ini adalah dengan menggunakan Teknik memproses gambar yang disebut Dilate. Gunakan ini dan lubang hilang.

Langkah 4: Pencarian Kontur (dan Centroidnya)

Pencarian Kontur (dan Centroidnya)
Pencarian Kontur (dan Centroidnya)

Pada ketika ini, kita mempunyai objek yang diserlahkan, tidak ada lubang di dalamnya dan siap untuk apa yang seterusnya: pencarian kontur (dan pusatnya). Terdapat sumber dalam OpenCV untuk mengesan kontur secara automatik, tetapi jumlah yang dikesan mesti dipilih dengan bijak (untuk memilih objek atau objek sebenar sahaja). Jadi, kriteria untuk mengesan kontur adalah luas objek, diukur dalam piksel². Sekiranya kontur mempunyai luas yang lebih tinggi daripada batas (dikonfigurasi dalam perisian), maka ia mesti dianggap sebagai objek sebenar untuk dihitung. Pilihan had / kriteria kawasan ini sangat penting, dan pilihan yang buruk di sini bermaksud pengiraan yang salah. Anda mesti mencuba beberapa nilai had nilai kawasan dan periksa apa yang lebih sesuai dengan penggunaan anda. Jangan bimbang, had ini tidak boleh dicari / disesuaikan. Setelah semua objek dalam gambar diambil, langkah selanjutnya adalah menggambar sebuah segi tiga di atasnya (segiempat ini mesti mengandungi keseluruhan objek yang terdeteksi di dalamnya). Dan pusat segi empat tepat ini adalah…. objek sentroid! Anda mungkin berfikir "Apa masalahnya dengan centroid ini?", Bukan? Inilah jawapan anda: tidak kira seberapa besar atau seberapa besar bentuk objek, pergerakannya sama dengan sentroid. Dengan kata lain: titik sederhana yang disebut centroid ini mewakili semua pergerakan objek. Ia membuat pengiraan sangat sederhana sekarang, bukan? Lihat gambar di bawah (gambar 6), di mana pusat objek ditunjukkan sebagai titik hitam.

Langkah 5: Pergerakan Centorid dan Pengiraan Objek

Final finale: bandingkan koordinat sentroid objek dengan koordinat garis pintu masuk dan keluar dan gunakan algorythm penghitungan yang dijelaskan sebelumnya. Dan akan ada pengiraan objek bergerak!

Hasil akhir Seperti yang ditunjukkan pada awal catatan ini, berikut adalah projek yang sedang dijalankan:

Disyorkan: