Masalah yang awalnya saya diskusikan di sini telah berevolusi, dan mungkin menjadi sedikit lebih sederhana ketika saya mempelajarinya lebih lanjut dan mendapatkan informasi baru.
Intinya, saya ingin dapat mendeteksi pola yang ditunjukkan di sini, menggunakan teknik pemrosesan visi / gambar komputer. Seperti yang Anda lihat, pola ideal terdiri dari empat 'ping'. Pengenalan objek harus:
- Shift Invariant
- Secara horizontal, gambar akan berbentuk siklus. (Yaitu, Dorong ke kanan, keluar di kiri, dan sebaliknya).
- (Untungnya) Secara vertikal, ini bukan siklus. (yaitu, Dorong ke atas atau bawah dan itu akan berhenti).
- Scale Invariant (Ping dapat bervariasi dalam 'ketebalan' seperti yang Anda lihat.)
Saya bisa terus dan terus tentang itu tetapi saya telah melampirkan gambar yang mencakup apa yang saya maksud, silakan lihat di bawah:
Tentu saja, mereka juga dapat berada pada 'skala' yang berbeda, seperti yang dapat dilihat dari keluarga ini:
Dan akhirnya, inilah beberapa skenario 'realistis' dari apa yang mungkin saya terima, di mana akan ada suara, baris mungkin 'memudar' saat Anda pergi ke bawah, dan tentu saja, gambar akan memiliki banyak garis palsu, artefak , dll.
Dan tentu saja, sebagai grand final, ada kemungkinan berbeda dari skenario 'ekstrem' ini:
Jadi sekali lagi, saya ingin meminta panduan tentang teknik visi komputer-mesin apa yang harus saya gunakan di sini untuk mendeteksi dengan baik terjadinya pola saya, di mana saya harus bergeser dan mengubah skala invarian seperti yang Anda lihat, dan juga bisa mendapatkan hasil yang layak untuk skenario realistis. (Kabar baiknya adalah bahwa saya TIDAK membutuhkannya untuk berubah secara invarian). Satu-satunya ide yang saya dapat temukan sejauh ini adalah korelasi 2-D.
Saya harus menambahkan, bahwa pada kenyataannya, saya TIDAK memiliki gambar berwarna - Saya hanya akan mendapatkan angka martix, jadi saya kira kita berbicara tentang 'skala abu-abu'.
Terima kasih sebelumnya!
PS Untuk apa nilainya saya mungkin akan menggunakan open C V.
EDIT # 1:
Berdasarkan komentar, saya telah menambahkan detail yang Anda minta di sini:
Untuk karakteristik mendefinisikan data, kita dapat mengasumsikan yang berikut:
Panjang horizontal setiap ping dapat bervariasi, tetapi saya tahu batas atas dan bawahnya. YA untuk apa pun dalam batas ini, TIDAK untuk apa pun di luar. (Contoh, saya tahu panjang ping bisa di mana saja antara 1 dan 3 detik, misalnya).
Semua ping harus 'terlihat' untuk YA, namun, baris terakhir bisa hilang, dan masih ingin mengatakan 'YA'. Kalau tidak, TIDAK.
Panjang vertikal, ('ketebalan') setiap ping dapat bervariasi, tetapi sekali lagi, juga tahu batas atas dan bawah. (Mirip dengan apa yang Anda lihat pada gambar-gambar itu). YA untuk apa pun dalam batas itu. TIDAK untuk apa pun di luar.
Tinggi antara setiap ping harus selalu sama untuk YA. Jika tidak, maka TIDAK. (Contoh, Anda dapat melihat bagaimana semua ping memiliki ketinggian yang relatif sama satu sama lain, ~ 110 pada sumbu vertikal). Jadi 110 +/- 5 bisa menjadi YA, yang lainnya harus TIDAK.
Saya pikir itu tentang hal itu - tetapi biarkan saya tahu apa lagi yang bisa saya tambahkan ... (Juga, semua yang ditampilkan di sini harus mendaftar sebagai YA, btw).
detect this pattern shown here
? Apakah Anda hanya tertarik untuk mengisolasi garis merah / kuning atau apakah Anda benar-benar ingin ekspresi yang menghitung hubungan antara garis-garis tersebut. Hanya menemukan garis yang hanya bisa memerlukan ambang atau segmentasi. Apa yang sebenarnya kamu inginkan?Jawaban:
Secara umum ada dua pendekatan utama untuk memecahkan masalah ini:
Sebuah. pencocokan templat atau
b. cocok dengan model parameter.
Secara pribadi, mengingat kesederhanaan model, saya lebih suka pendekatan kedua untuk masalah ini.
Langkah 1: Identifikasi gumpalan ping
Sebagai langkah pertama, ekstrak "Boxes" - dasarnya kotak kuning / biru. Metode paling sederhana di sini bisa dengan hanya ambang batas gambar. Sepertinya tidak ada banyak variasi di latar belakang kecuali bahwa ketika kebisingan meningkat itu cenderung sangat mirip dengan ping. Oleh karena itu, ambang batas dapat global di seluruh gambar - dan saya pikir Anda akan bisa mendapatkan ambang batas yang layak yang akan berfungsi di seluruh gambar. Ambang batas, bagaimanapun, harus pintar sehingga Anda dapat menggunakan sesuatu seperti metode Otsu. Lihat ini dan ini untuk referensi lebih lanjut.
Perbaikan blok
Salah satu hal baik yang dapat Anda lakukan untuk menghapus titik palsu yang terlihat mirip dengan ping foreground di mana beberapa piksel di dalam ping juga berwarna biru. Anda perlu di sini operasi morfologis yang disebut "Pembukaan". Ini salah satu referensi dari HIPR . Jenis operasi ini membutuhkan bentuk yang cerdas yang membantu menjaga bentuk yang serupa dan menghilangkan yang lain. Dalam kasus Anda, Anda dapat memilih garis horizontal. Pada akhir ini, Anda memiliki piksel latar belakang dan latar depan yang memisahkan ping secara rapi tanpa saling menyentuh.
Langkah 2: Tandai / Daftarkan blok
Sekarang Anda telah mendapatkan gumpalan terbersih yang mungkin, waktu untuk menandai mereka sebagai 1,2,3,4 atau A, B, C, D dll. Ini biasanya dicapai dengan apa yang disebut beberapa algoritma sederhana. Jalankan melalui setiap piksel dan jika itu menyentuh dengan wilayah yang ditandai, dan juga latar depan maka tetapkan ke segmen yang lain buat yang baru. Jika Anda menemukan lebih dari 4 segmen penting, Anda harus memilih yang paling relevan. Terapkan beberapa heuristik di sini daripada algoritma teoretis.
Langkah 3: Pemodelan parameter
Sekarang, setelah kami mendapatkan 4 kandidat teratas dari 4 ping yang sesuai, Anda dapat mengidentifikasi kotak pembatas - pada dasarnya sudut kiri dan kanan bawah (atau piksel paling kiri dan kanan, serta baris atas dan bawah gumpalan) . Temukan kotak pembatas, Anda dapat didenda centroid dari setiap kotak ping.
maka jarak antar centroid sekarang dapat dihitung:
Pada dasarnya Anda memiliki 8 parameter vecoter:
Langkah 4: Klasifikasi
Pada langkah terakhir, sekarang kita perlu memiliki klasifikasi apakah ada pola ping ya atau tidak.
Untuk sesuatu seperti ini, Anda dapat memiliki kerangka kerja pengklasifikasi Bayesian yang bagus.
Ada dua Hipotesis yang Anda miliki
Pertama-tama Anda mempelajari banyak gambar di mana Anda tahu itu milik gambar. Sekarang, Anda dapat memplot berbagai histogram atau menerapkan beberapa metode metode estimasi kepadatan. Baca Klasifikasi Pola oleh Duda Hart.
Sekarang, dari data uji
Karenanya, Anda dapat menghitung
Anda perlu menggabungkan ekspresi ini untuk ekspresi vektor dan perlu mengisi banyak upaya untuk menempatkan estimasi parameter yang akan dilakukan. Tetapi saya meninggalkan Anda dengan pendekatan dasar di sini.
Silakan lakukan matematika Anda sendiri, ini akan panjang, tetapi harus masih cukup intuitif.
EDIT
Karena Anda sudah menentukan kriteria spesifik 110 +/- 5 piksel, langkah terakhir bisa lebih sederhana. Anda mungkin tidak perlu menghitung semua probabilitas ini jika kriteria klasifikasi Anda diperbaiki.
sumber
Masalah ini menurut saya seperti deteksi interval + masalah estimasi pengulangan pulsa. Aku akan perlu mengembangkan jawaban ini dari waktu ke waktu, tetapi semacam algoritma yang bekerja dengan baik dalam bahwa masalah yang kemungkinan maksimum pada kisi .
sumber