Bagaimana saya bisa mendeteksi papan nama segi empat dari gambar yang diambil menggunakan ponsel? Bagaimana saya bisa mendeteksi bentuk seperti persegi panjang? rounded rectangle (sudut bulat bukan sudut bentuk)?
Saya menggunakan opencv.wrapper tetapi saya baru mengenalnya.
Terima kasih.
Berikut ini contohnya: alt teks http://www.freeimagehosting.net/uploads/b03442fd36.png
alt teks http://www.freeimagehosting.net/uploads/e6b36040e8.png
Karena kebisingan dan banyak garis di sana, saya tidak dapat menentukan garis batas papan nama. Kadang-kadang saya dapat menemukan batas garis setelah mengubah hough. Saya terjebak .... dalam skenario semacam ini ...
Ini adalah 2 gambar mentah yang diambil dari kamera ponsel
alt teks http://www.freeimagehosting.net/uploads/6dbd613edf.jpg alt teks http://www.freeimagehosting.net/uploads/720da20080.jpg
Saya butuh saran untuk melihat bagaimana saya bisa memproses gambar untuk mengeluarkan papan nama?
Terima kasih banyak
Jawaban:
Kedua gambar Anda mengandung banyak garis yang tidak ada hubungannya dengan tanda yang Anda cari. Dan beberapa garis itu lebih panjang / memiliki kontras lebih tinggi daripada garis yang sebenarnya Anda inginkan, jadi saya pikir mendeteksi garis tepi (misalnya menggunakan transformasi hough atau dengan menjumlahkan kontras secara horizontal / vertikal) tidak akan berfungsi.
Tetapi: Tanda yang Anda cari memiliki karakteristik lain yang seharusnya lebih mudah dideteksi:
Jadi, Anda mencari area terhubung yang besar dengan kontras rendah. Saya telah meretas algoritma pembuktian konsep di Mathematica. (Saya bukan ahli OpenCV, tapi saya akan menyebutkan fungsi OpenCV masing-masing ketika saya mengenal mereka.)
Pertama, saya menggunakan filter turunan gaussian untuk mendeteksi besarnya gradien pada setiap piksel. Filter turunan gaussian memiliki bukaan lebar (11x11 piksel dalam kasus ini), sehingga sangat tidak sensitif terhadap noise. Saya kemudian menormalkan gambar gradien berarti = 1, jadi saya bisa menggunakan ambang yang sama untuk kedua sampel.
Implementasi OpenCV: Anda dapat menggunakan
sepFilter2D
untuk pemfilteran yang sebenarnya, tetapi tampaknya, Anda harus menghitung sendiri nilai-nilai kernel filter .Hasilnya terlihat seperti ini:
Pada gambar ini, latar belakang tanda gelap dan batas tanda cerah. Jadi saya bisa melakukan binarize pada gambar ini dan mencari komponen yang terhubung secara gelap.
Implementasi OpenCV: Ambang batas harus langsung, tetapi saya pikir OpenCV tidak mengandung analisis komponen yang terhubung - Anda dapat menggunakan mengisi banjir atau cvBlobsLib untuk itu.
Sekarang, temukan gumpalan terbesar di dekat bagian tengah gambar dan temukan cembung cembung (Saya hanya menggunakan gumpalan terbesar yang tidak terhubung ke latar belakang, tetapi itu mungkin tidak cukup untuk setiap gambar).
Hasil:
sumber
Pendekatan lain yang dapat Anda ambil yang lebih kuat untuk suara dalam situasi ini adalah untuk menghasilkan kurva tingkat abu-abu rata-rata gambar sepanjang sumbu x dan sepanjang sumbu y. Artinya, hitung tingkat abu-abu rata-rata untuk setiap baris / kolom dalam gambar.
Jika, misalnya, papan nama (atau tepiannya) lebih ringan dari sekelilingnya (yang merupakan kasus untuk semua contoh yang diperlihatkan dalam pertanyaan), Anda akan memiliki dua puncak pada kurva sumbu x Anda (untuk kiri dan kanan dan tepi) ) dan dua puncak pada kurva sumbu y Anda (untuk batas atas dan bawah). Dengan menggunakan teknik deteksi batas untuk sinyal 1 dimensi (mungkin filter high-pass), Anda dapat menyimpulkan koordinat sudut papan nama.
Saya telah melihat pendekatan ini digunakan untuk mendeteksi plat nomor dan juga untuk pengenalan wajah (hidung cenderung menjadi bagian wajah yang lebih cerah, sehingga menghasilkan puncak pada kurva x-axis dan y-axis).
sumber
Ini mungkin ide yang agak terbalik, tetapi mungkin layak untuk dicoba. Alih-alih mencoba mendeteksi persegi panjang dan memikirkan teks seperti noise , mungkin Anda bisa memperlakukan teks seperti informasi dan menggunakannya untuk mendeteksi persegi panjang dengan lebih mudah.
Inilah garis besar gagasan:
Penjelasan dan keuntungannya:
sumber