Saya ingin mengelompokkan gambar RGB untuk tutupan lahan menggunakan k means clustering sedemikian rupa sehingga berbagai daerah gambar ditandai oleh warna yang berbeda dan jika batas yang mungkin dibuat memisahkan daerah yang berbeda. Saya menginginkan sesuatu seperti:
dari ini :
Apakah mungkin untuk mencapai ini dengan pengelompokan K-means? Saya telah mencari di seluruh internet dan banyak tutorial melakukannya dengan k berarti pengelompokan tetapi hanya setelah mengkonversi gambar ke skala abu-abu. Saya ingin melakukannya dengan gambar RGB saja. Apakah ada sumber yang bisa membantu saya memulainya? Tolong sarankan sesuatu.
Jawaban:
Saya meretas solusi untuk ini dan menulis artikel blog beberapa waktu lalu pada topik yang sangat mirip, yang akan saya rangkum di sini. Script ini dimaksudkan untuk mengekstraksi sungai dari gambar NAIP 4-band menggunakan pendekatan segmentasi dan klasifikasi gambar.
Contoh ini mengelompokkan gambar menggunakan pengelompokan quickshift dalam ruang warna (x, y) dengan 4-band (merah, hijau, biru, NIR) daripada menggunakan pengelompokan K-means. Segmentasi gambar dilakukan menggunakan paket scikit-image . Rincian lebih lanjut tentang berbagai algoritma segmentasi gambar di scikit-image di sini . Demi kenyamanan, saya biasa
arcpy
melakukan banyak pekerjaan GIS, meskipun ini seharusnya cukup mudah untuk dipindahkan ke GDAL.sumber
Anda bisa melihat pengelompokan di scikit-belajar . Anda perlu membaca data menjadi array numpy (saya sarankan rasterio ) dan dari sana Anda dapat memanipulasi data sehingga setiap band adalah variabel untuk klasifikasi. Misalnya, dengan asumsi Anda memiliki tiga band membaca ke python sebagai
red
,green
, danblue
array numpy:Perhatikan bahwa pengelompokan KMeans tidak memperhitungkan konektivitas akun dalam dataset.
sumber
rasterio
;)rasterio
.