Apa teknik pemrosesan gambar yang ideal untuk pencocokan templat invarian bergeser / skala tertentu ini?

17

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:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Tentu saja, mereka juga dapat berada pada 'skala' yang berbeda, seperti yang dapat dilihat dari keluarga ini:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

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.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Dan tentu saja, sebagai grand final, ada kemungkinan berbeda dari skenario 'ekstrem' ini:

masukkan deskripsi gambar di sini

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).

Spacey
sumber
Apa maksudmu saat mengatakannya 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?
Dipan Mehta
@DipanMehta Maaf atas kebingungannya. Yang ingin saya lakukan adalah ini: Pertama, jangan memperhatikan warnanya, (itu hanya mengatakan mereka diplot), apa yang akan saya miliki hanyalah matriks angka, jadi skala abu-abu. Hal kedua, karena tidak ada warna, saya hanya peduli tentang 'pola' yang Anda lihat di sana dengan 4 ping yang Anda lihat berulang. Jadi detektor akan melihat varian dari templat gambar seperti yang ditunjukkan pada gambar di atas, dan berkata 'ya, pola ini ada'. Maaf atas kebingungan, beri tahu saya jika saya dapat mengklarifikasi hal lain. Terima kasih!
Spacey
Ok, jadi Anda jika saya mengerti dengan benar, mengingat bahwa ada baris pertama di atas, Anda ingin mengetahui apakah saldo juga di tempat yang sama. jika demikian, Anda akan menyimpulkan bahwa ada pola! Baik?
Dipan Mehta
@DipanMehta Ya pada dasarnya, dapat mendeteksi jika pola yang ditunjukkan di atas ada, cukup kuat untuk menangani invarian skala, dan cukup kuat untuk menangani shift invarian. Apakah itu masuk akal? Terima kasih,
Spacey
1
Yang saya dapatkan adalah apakah Anda memiliki akses ke sumber data dalam sistem aktual yang sedang Anda kerjakan. Jika Anda melakukannya, maka mungkin ada pendekatan yang lebih baik yang beroperasi pada data asli secara langsung, bukan format spektrogram menengah yang menjadi sasaran Anda.
Jason R

Jawaban:

6

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.

Csaya dimana saya{1,2,3,4}C1C1

maka jarak antar centroid sekarang dapat dihitung:

C1saya[x,y]={C1[x]-Csaya[x],C1[y]-Csaya[y]}

L.saya dimana saya{1,2,3,4}

Pada dasarnya Anda memiliki 8 parameter vecoter:

1.{C1[x],C1[y]}2..4C1saya[x,y]5..8L.saya

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

H0: Pola ping ada.
H1: Pola ping tidak ada

C1,saya[x]

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.

C1,saya[x]μ=20,σ=.1

C1,sayaH0P[C1,saya[x]|H0]

Sekarang, dari data uji

P[H0|C1,saya[x]=x1]C1[x]x1H0

Karenanya, Anda dapat menghitung

P[H0 |C1,saya[x]]=P[C1,saya[x]|H0]P[H0]P[C1,saya[x]]

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.

P[H0|semua parameter]>1/2

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.

Dipan Mehta
sumber
Terima kasih banyak! Saya harus mencerna ini dan kembali kepada Anda.
Spacey
3

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 .

Peter K.
sumber
Terima kasih, ya saya akan senang mendengar pendapat Anda tentang ini. Sementara itu saya akan memeriksa tautan Anda.
Spacey
Peter, apakah Anda punya waktu untuk memikirkan hal ini seperti yang Anda sebutkan? Saya akan tertarik mendengar pendapat Anda tentang masalah ini.
Spacey
Baru saja mulai bermain-main lagi (April adalah penghapusbukuan). Saya bisa salah: cara kertas Clarkson merumuskan masalahnya berbeda ... biarkan saya menggali lebih banyak.
Peter K.