Adakah yang bisa membantu saya memahami bagaimana sebenarnya segmentasi Pergeseran Berarti bekerja?
Berikut adalah matriks 8x8 yang baru saja saya buat
103 103 103 103 103 103 106 104
103 147 147 153 147 156 153 104
107 153 153 153 153 153 153 107
103 153 147 96 98 153 153 104
107 156 153 97 96 147 153 107
103 153 153 147 156 153 153 101
103 156 153 147 147 153 153 104
103 103 107 104 103 106 103 107
Dengan menggunakan matriks di atas, apakah mungkin untuk menjelaskan bagaimana segmentasi Pergeseran Rata-rata akan memisahkan 3 tingkat angka yang berbeda?
Jawaban:
Dasar-dasar pertama:
Segmentasi Mean Shift adalah teknik homogenisasi lokal yang sangat berguna untuk meredam perbedaan bayangan atau nada warna pada objek yang dilokalkan. Contoh lebih baik daripada banyak kata:
Tindakan: mengganti setiap piksel dengan rata-rata piksel dalam lingkungan range-r dan yang nilainya berada dalam jarak d.
Mean Shift biasanya membutuhkan 3 input:
Harap perhatikan bahwa algoritme tidak didefinisikan dengan baik di perbatasan, jadi penerapan yang berbeda akan memberi Anda hasil yang berbeda di sana.
Saya TIDAK akan membahas detail matematika berdarah di sini, karena tidak mungkin ditampilkan tanpa notasi matematika yang tepat, tidak tersedia di StackOverflow, dan juga karena dapat ditemukan dari sumber yang baik di tempat lain .
Mari kita lihat bagian tengah matriks Anda:
Dengan pilihan yang wajar untuk radius dan jarak, empat piksel pusat akan mendapatkan nilai 97 (mean) dan akan berbeda dari piksel yang berdekatan.
Mari kita hitung di Mathematica . Alih-alih menunjukkan angka sebenarnya, kami akan menampilkan kode warna, jadi lebih mudah untuk memahami apa yang terjadi:
Kode warna untuk matriks Anda adalah:
Kemudian kami mengambil Mean Shift yang masuk akal:
Dan kami mendapatkan:
Di mana semua elemen pusat sama (dengan 97, BTW).
Anda dapat mengulang beberapa kali dengan Mean Shift, mencoba mendapatkan pewarnaan yang lebih homogen. Setelah beberapa iterasi, Anda sampai pada konfigurasi non-isotropik yang stabil:
Saat ini, seharusnya sudah jelas bahwa Anda tidak dapat memilih berapa banyak "warna" yang Anda dapatkan setelah menerapkan Mean Shift. Jadi, mari kita tunjukkan bagaimana melakukannya, karena itu adalah bagian kedua dari pertanyaan Anda.
Apa yang Anda butuhkan untuk dapat mengatur jumlah cluster keluaran sebelumnya adalah sesuatu seperti pengelompokan Kmeans .
Ini berjalan seperti ini untuk matriks Anda:
Atau:
Yang sangat mirip dengan hasil kami sebelumnya, tetapi seperti yang Anda lihat, sekarang kami hanya memiliki tiga tingkat keluaran.
HTH!
sumber
Segmentasi Mean-Shift bekerja seperti ini:
Data gambar diubah menjadi ruang fitur
Dalam kasus Anda, yang Anda miliki hanyalah nilai intensitas, jadi ruang fitur hanya akan menjadi satu dimensi. (Anda dapat menghitung beberapa fitur tekstur, misalnya, dan kemudian ruang fitur Anda menjadi dua dimensi - dan Anda akan melakukan segmentasi berdasarkan intensitas dan tekstur)
Jendela pencarian didistribusikan melalui ruang fitur
Jumlah jendela, ukuran jendela, dan lokasi awal berubah-ubah untuk contoh ini - sesuatu yang dapat disesuaikan dengan baik tergantung pada aplikasi tertentu
Iterasi Mean-Shift:
1.) MEANs dari sampel data dalam setiap jendela dihitung
2.) Jendela SHIFT ke lokasi yang sama dengan rata-rata yang dihitung sebelumnya
Langkah 1.) dan 2.) diulangi sampai konvergensi, yaitu semua jendela telah diselesaikan di lokasi akhir
Jendela yang berakhir di lokasi yang sama digabungkan
Data tersebut dikelompokkan sesuai dengan traversal jendela
... misal semua data yang dilalui oleh windows yang berakhir di, katakanlah, lokasi “2”, akan membentuk cluster yang terkait dengan lokasi tersebut.
Jadi, segmentasi ini (secara kebetulan) akan menghasilkan tiga kelompok. Melihat grup-grup tersebut dalam format gambar asli mungkin terlihat seperti gambar terakhir dalam jawaban Belisarius . Memilih ukuran jendela dan lokasi awal yang berbeda mungkin menghasilkan hasil yang berbeda.
sumber