Bagaimana cara menghapus latar belakang tertentu dari gambar?


11

jeruk

Ini adalah gambar yang diperoleh setelah pemfilteran Gabor ... Apakah ada cara untuk menghilangkan garis di dalam gambar kecuali cacat bulat putih cerah.

Sudah coba orientasi gabor filter lain lanjutkan hasil berikut:

masukkan deskripsi gambar di sini

Setelah ambang: Yang cukup ok tapi tidak bagus

masukkan deskripsi gambar di sini

Setelah pemfilteran Median:

masukkan deskripsi gambar di sini

Terima kasih sebelumnya


2
Pekerjaan bagus dengan filter median. Anda baik-baik saja di jalan Anda.
Rethunk

Ini sepertinya skenario yang baik untuk menerapkan filter difusi. Juga, cobalah bertanya di: <br/> dsp.stackexchange.com/ <br> photo.stackexchange.com/ <br>
Danny Varod

Apakah Anda menerapkan filter median setelah ambang batas? Jika demikian, cobalah tanpa ambang batas.
Danny Varod

Ya saya mencobanya setelah ambang dan saya mendapat hasil yang hampir sama ketika saya melakukannya sebelumnya
vini

Jawaban:


12

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

  1. Binari gambar kedua Anda dengan algoritma ambang otomatis apa pun. Kisaran ambang batas yang akan berfungsi besar seperti yang akan Anda lihat.

  2. Gunakan algoritma pelabelan komponen untuk memberi label pada setiap wilayah piksel yang terhubung dengan nilai unik.

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

    1. Area hanya menghitung jumlah piksel objek Anda
    2. Menghitung jari-jari lingkaran mengingat luasnya juga harus dapat dikelola
    3. 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.
    4. 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.
  4. 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:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

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.


Algoritma pelabelan compnent apa yang Anda rujuk di sini?
vini

1
@vini, saya memperbarui posting saya. Phonon, terima kasih. Kami menggunakan banyak langkah morfologis dan terutama kekompakan sangat berguna beberapa waktu lalu.

yup, bagus sekali :)
vini

6

Beberapa ide:

  1. Saring pinggiran berdasarkan kepadatan kekuatan tepi. Dengan menggunakan perkiraan kernel lingkaran, temukan kekuatan tepi rata-rata (atau ukuran lain). Lewati semua tepi pada atau di atas nilai ambang batas, atur menjadi hitam tepi di bawah ambang batas.
  2. Gunakan operasi "tutup" morfologis (dilatasi diikuti oleh erosi) untuk membersihkan gambar, kemudian gunakan algoritma pelabelan wilayah (alias komponen yang terhubung, gumpalan) untuk menemukan semua gumpalan. Memfilter data gumpalan sesuai dengan ukuran, rasio sumbu utama ke minor, dll.
  3. Coba Gaussian blur, temukan ambang binarisasi untuk menyegmentasi cahaya dari gelap, lalu saring gumpalan seperti dijelaskan pada langkah 2 di atas. (Untuk perkiraan cepat dari blur Gaussian, peras kelopak mata Anda sebagian besar tertutup dan juling pada gambar.)
  4. Coba beberapa filter di Photoshop atau GIMP.

EDIT: setelah langkah penyaringan median Anda, Anda sebagian besar jalan ke sana. Kerja bagus! Item 2 yang saya sarankan di atas (tutup, kemudian pelabelan wilayah) adalah salah satu teknik untuk membawa Anda sepanjang jalan.


yup akan mencoba yang akan membuat Anda tahu apa yang terjadi
vini

1

Anda dapat mencoba kontur aktif. Meskipun mungkin lambat, ia dapat menangani kasus rumit seperti ini.

Atau Anda dapat menggunakan beberapa pengetahuan sebelumnya untuk memproses gambar ini. Misalnya, Anda tahu bahwa gumpalan itu 'besar' dan 'terhubung'. Jadi, ketika Anda menghitung jumlah setiap wilayah yang terhubung, Anda dapat menemukannya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.