Jika output dari Gábor-filter Anda dapat diandalkan dan variasi dalam data-gambar Anda tidak terlalu tinggi sehingga hasilnya terlihat sangat berbeda, maka Anda dapat menggunakan pendekatan berikut (bagian dari itu yang sudah disebutkan):
Binari gambar kedua Anda dengan algoritma ambang otomatis apa pun. Kisaran ambang batas yang akan berfungsi besar seperti yang akan Anda lihat.
Gunakan algoritma pelabelan komponen untuk memberi label pada setiap wilayah piksel yang terhubung dengan nilai unik.
Hitung untuk setiap komponen gambar Anda properti yang menggambarkan, seberapa dekat objek Anda dengan lingkaran yang diisi. Untuk ini, Anda dapat menggunakan misalnya kekompakan . Saya menggunakan di bawah fraksi piksel dalam radius disk yang setara . Jari-jari ini adalah jari-jari disk dengan area yang sama dengan objek Anda.
- Area hanya menghitung jumlah piksel objek Anda
- Menghitung jari-jari lingkaran mengingat luasnya juga harus dapat dikelola
- Untuk piksel di dalam jari-jari ini, Anda memerlukan pusat dari setiap objek gambar, tetapi ini hanya rata-rata dari semua posisi objek-piksel. Jika Anda seorang fisikawan maka Anda tahu pusat massa beberapa titik massa. Ini setara.
- Sekarang Anda menghitung untuk setiap piksel dari setiap objek jarak dari pusatnya dan memeriksa apakah lebih kecil dari jari-jari lingkaran. Membagi dua angka dan Anda mendapatkan sebagian kecil dari piksel dalam dan luar.
- Ambil objek dengan fraksi tertinggi. Catatan: objek dengan hanya satu piksel akan mendapatkan nilai 1. Jadi, Anda harus menetapkan ambang batas ukuran dan hanya mengambil objek yang lebih besar, misalnya 10 piksel.
Untuk melihat, bahwa binarisasi otomatis harus berfungsi, berikut adalah hasil untuk ambang yang sangat rendah dan sangat tinggi:
Perbarui Pelabelan Komponen
Pilihan pelabelan komponen tidak penting untuk aplikasi Anda. Saya sarankan, jika Anda harus menerapkannya sendiri, untuk menggunakan metode yang sangat sederhana. Versi satu lulus dari situs Wikipedia sangat mudah. Pada dasarnya Anda beralih melalui gambar biner Anda dan ketika Anda bertemu piksel yang putih dan belum diberi label Anda menggunakan label baru untuk objek ini dan mulai dengan piksel ini.
Proses pelabelan objek ini dengan label pada dasarnya mirip dengan mengisi banjir. Ini ada di situs Wikipedia, langkah 1-4 di dalam algoritma. Anda mulai dengan piksel berlabel ini dan meletakkan semua tetangganya di tumpukan (mereka menggunakan vektor ). Untuk piksel pada tumpukan Anda memeriksa apakah itu latar depan dan belum diberi label. Jika Anda harus memberi label, Anda meletakkan lagi semua tetangganya di tumpukan. Lakukan ini sampai tumpukan Anda kosong.
Kemudian Anda melanjutkan pemindaian melalui gambar. Tidak seperti deskripsi di situs Wiki, Anda tidak perlu menghapus piksel dari gambar asli Anda, Anda hanya melewatkan ketika Anda memiliki nilai yang berbeda dari 0 pada gambar-label Anda.