BAB 4: Biarkan Citra yang Bicara: Klasifikasi Tak Terbimbing
#Studi kasus: "Lahan apa saja yang ada di sini?"
Anda menerima citra baru Citra_Lahan.tif dari area contoh. Kepala Seksi ingin peta tutupan lahan, tetapi belum ada daftar kelas yang pasti. "Coba lihat saja, citranya mengelompok jadi apa," katanya. Itu pekerjaan klasifikasi tak terbimbing: komputer mengelompokkan piksel yang mirip, lalu Anda yang memberi nama kelompoknya.
#Konsep: klasifikasi tak terbimbing dalam tiga kalimat
Klasifikasi mengubah citra yang berisi angka pantulan menjadi peta kelas, misalnya hutan atau sawah. Pada cara tak terbimbing, komputer mengelompokkan piksel menurut kemiripan angka bandnya tanpa diberi contoh, seperti menyortir kelereng berdasarkan warna tanpa tahu namanya. Sesudah itu Anda memberi nama tiap kelompok memakai pengetahuan lapangan.
Istilah baru bab ini:
- Klasifikasi: mengubah citra menjadi peta kelas.
- Ruang spektral: grafik dengan sumbu berupa pantulan band. Satu piksel = satu titik.
- Kluster: kelompok piksel yang angka bandnya mirip.
- K-means: cara mengelompokkan dengan pusat kluster yang digeser berulang kali.
- Area latih: lokasi yang kelas sebenarnya sudah Anda ketahui.

Lihat gambar di atas. Hutan (merah rendah, NIR tinggi) dan lahan terbuka (merah tinggi, NIR rendah) jauh terpisah. Kebun dan Sawah berdekatan dan sebagian tumpang tindih. Itulah yang membuat klasifikasi menarik: kelas yang mirip sulit dipisahkan.
K-means bekerja dalam tiga langkah yang diulang: letakkan pusat awal, tiap piksel ikut pusat terdekat, lalu pindahkan pusat ke rata-rata anggotanya. Berhenti bila pusat tidak bergeser lagi.

#Bagian A: QGIS
#Bagian A: Klasifikasi tak terbimbing di QGIS
#Catatan jujur tentang alat
QGIS punya alat GRASS di Processing, termasuk i.cluster (pengelompokan). Pada pengujian penulisan buku ini (QGIS 4.0.2, GRASS 8.4):
i.clusterberjalan dan menghasilkan berkas tanda spektral. Alat ini hanya menerima layer satu band per layer, jadi citra empat band harus dipisah dulu menjadi empat berkas, dan berkas tanda spektralnya harus berakhiran.txt.- Langkah berikutnya,
i.maxlik(menerapkan tanda spektral ke citra), gagal dengan pesan "Unable to open signature file". Penyebab pastinya belum diketahui. Kemungkinan pembungkus QGIS belum sesuai dengan cara GRASS 8.4 menyimpan tanda spektral. [kemungkinan] - Satu catatan penting:
processing.runpada kegagalan ini tidak melempar galat. Skrip tetap jalan seolah berhasil, padahal berkas keluaran tidak ada. Selalu periksa bahwa berkas hasil benar-benar ada.
Karena itu bab ini menulis k-means sendiri dengan NumPy. Isinya pendek, dan Anda jadi tahu persis apa yang terjadi.
#A1. Menyiapkan data dan melihat citranya
- Tambahkan
Citra_Lahan.tifdaripaket-i2danArea_Latih.gpkg. - Buka Properties ► Symbology. Pilih Multiband color. Isi Red band = 4 (NIR), Green band = 1 (R), Blue band = 2 (G). Ini komposit warna semu: tumbuhan lebat tampak merah muda sampai merah.
- Perhatikan poligon
Area_Latih. Ada 24 poligon, 6 untuk tiap kelas (Hutan, Kebun, Sawah, Lahan Terbuka), masing-masing 12 m x 12 m. Anggap itu hasil kunjungan lapangan.
Saat ini Area_Latih dipakai hanya untuk memberi nama kluster. Di bab 5 ia dipakai untuk melatih.
#A2. Menjalankan k-means
- Buka Plugins ► Python Console, klik Show Editor, dan buka
i2_04_tak_terbimbing.py. - Ubah dua jalur di bagian atas (
PAKET_I2danHASIL). Klik Run. - Skrip mengelompokkan seluruh 90.000 piksel dua kali: 6 kluster, lalu 10 kluster. Skrip mencetak tabel tiap kluster dan menyimpan
tak_terbimbing_k6.tifdantak_terbimbing_k10.tif.
Inti skrip, yaitu fungsi k-means:
def kmeans(x, k, ulang=30, seed=1):
rng = np.random.default_rng(seed)
pusat = x[rng.choice(len(x), k, replace=False)]
for _ in range(ulang):
jarak = ((x[:, None, :] - pusat[None, :, :]) ** 2).sum(axis=2)
label = jarak.argmin(axis=1)
baru = np.array([x[label == i].mean(axis=0) if np.any(label == i) else pusat[i] for i in range(k)])
if np.allclose(baru, pusat, atol=1e-3):
break
pusat = baru
return label, pusat#A3. Membaca tabel dan memberi nama
Hasil uji untuk 6 kluster (kolom terakhir: jumlah piksel area latih per kelas, urutan Hutan/Kebun/Sawah/Lahan Terbuka):
| Kluster | Piksel (persen) | R | G | B | NIR | Piksel latih H/Kb/Sw/LT | Nama |
|---|---|---|---|---|---|---|---|
| 2 | 14.051 (15,6%) | 44,8 | 86,0 | 41,0 | 153,4 | 335/6/0/0 | Hutan |
| 3 | 21.582 (24,0%) | 33,5 | 74,2 | 28,3 | 141,4 | 529/3/0/0 | Hutan |
| 4 | 43.309 (48,1%) | 60,7 | 104,1 | 48,1 | 119,3 | 0/855/864/0 | Sawah (?) |
| 5 | 3.131 (3,5%) | 146,3 | 128,3 | 113,6 | 109,4 | 0/0/0/308 | Lahan Terbuka |
| 6 | 5.920 (6,6%) | 126,6 | 116,5 | 95,6 | 92,0 | 0/0/0/486 | Lahan Terbuka |
| 1 | 2.007 (2,2%) | 110,1 | 108,7 | 82,7 | 79,3 | 0/0/0/70 | Lahan Terbuka |
Cara membacanya:
- Lihat kolom piksel latih. Kluster 2 dan 3 hampir seluruhnya berisi piksel latih Hutan, maka diberi nama Hutan. Kluster 5, 6, dan 1 berisi Lahan Terbuka.
- Lihat kluster 4: ia memuat 855 piksel latih Kebun dan 864 piksel latih Sawah, hampir sama banyak. Satu kluster tidak bisa jadi dua kelas. Skrip memberinya nama Sawah (suara terbanyak, selisih tipis), sehingga Kebun hilang dari peta. Nomor kluster boleh berbeda di komputer Anda, tetapi pola ini yang penting.
Hasil uji untuk 10 kluster:
| Kluster | Piksel (persen) | Piksel latih H/Kb/Sw/LT | Nama |
|---|---|---|---|
| 3 | 7.864 (8,7%) | 240/0/0/0 | Hutan |
| 6 | 14.670 (16,3%) | 372/0/0/0 | Hutan |
| 9 | 9.895 (11,0%) | 243/0/0/0 | Hutan |
| 2 | 10.658 (11,8%) | 1/351/14/0 | Kebun |
| 5 | 12.387 (13,8%) | 8/413/9/0 | Kebun |
| 10 | 10.580 (11,8%) | 0/57/366/0 | Sawah |
| 1 | 13.013 (14,5%) | 0/43/475/0 | Sawah |
| 7 | 3.037 (3,4%) | 0/0/0/297 | Lahan Terbuka |
| 8 | 5.685 (6,3%) | 0/0/0/453 | Lahan Terbuka |
| 4 | 2.211 (2,5%) | 0/0/0/114 | Lahan Terbuka |
Dengan kluster lebih banyak, Kebun dan Sawah mulai terpisah. Harga yang dibayar: pekerjaan memberi nama bertambah, dan Anda harus yakin tiap kluster memang satu jenis lahan.
- Tambahkan
tak_terbimbing_k6.tifke QGIS. Buka Properties ► Symbology ► Paletted/Unique values, klik Classify, lalu beri warna dan nama (1 Hutan, 2 Kebun, 3 Sawah, 4 Lahan Terbuka).
Seberapa benar kedua peta ini, dan mana yang lebih baik? Itu dijawab di bab 6 dengan angka.
#Bagian B: ArcGIS Pro
#Bagian B: ArcGIS Pro
Alat padanannya, menurut dokumentasi Esri, adalah Iso Cluster Unsupervised Classification (Spatial Analyst, kelompok Multivariate). Alat ini menggabungkan Iso Cluster dan Maximum Likelihood Classification, dan dapat menghasilkan raster kelas beserta berkas tanda spektral. [CEK]
- Siapkan citra empat band sebagai satu raster multiband. Alat ini memakai semua band bila masukannya multiband. [CEK]
- Buka alat Iso Cluster Unsupervised Classification. Isi jumlah kelas (misalnya 6), ukuran kelas minimum, dan interval sampel. [CEK]
- Jalankan, lalu beri nama kluster pada tabel atribut raster hasil. [CEK]
- Algoritmanya ISODATA, mirip tetapi tidak sama dengan k-means: jumlah kluster akhir bisa berbeda dari angka yang Anda minta. [CEK]
- Pro juga punya Classification Wizard dan alat pada ekstensi Image Analyst. Ketersediaan tergantung lisensi Anda. [CEK]
#Bagian C: ArcMap 10.8
#Bagian C: ArcMap 10.8
Alat Iso Cluster Unsupervised Classification ada di Spatial Analyst Tools ► Multivariate, bersama Iso Cluster, Create Signatures, dan Maximum Likelihood Classification (nama diperiksa pada dokumentasi Esri). [CEK]
- Gabungkan band menjadi satu raster dengan Composite Bands. [CEK]
- Jalankan Iso Cluster Unsupervised Classification. Isi jumlah kelas dan keluaran. [CEK]
- Beri nama kelas pada tabel atribut hasil. [CEK]
#Cek paham
- Apa perbedaan utama klasifikasi tak terbimbing dan terbimbing?
- Mengapa Kebun dan Sawah sulit dipisahkan pada citra ini?
- Apa yang terjadi bila Anda meminta 10 kluster, bukan 6?
Jawaban:
- Tak terbimbing: komputer mengelompokkan dulu, manusia memberi nama kemudian. Terbimbing: manusia memberi contoh kelas lebih dulu.
- Angka bandnya berdekatan dan saling tumpang tindih pada ruang spektral.
- Kluster lebih halus, Kebun dan Sawah mulai terpisah, tetapi nama harus diberikan pada lebih banyak kluster.
#Kesalahan umum
- Menganggap satu kluster pasti satu kelas. Cek dengan area latih. Kluster 4 di atas memuat dua kelas.
- Menganggap hasil berhasil karena skrip tidak galat. Periksa berkas keluarannya.
- Memilih jumlah kluster tanpa dasar. Mulai dari beberapa kali jumlah kelas yang dicari, lalu gabungkan.
- Memakai band dengan satuan berbeda tanpa menyamakan. K-means memakai jarak, jadi band dengan angka besar mendominasi. Di data ini semua band 0 sampai 255.
#Ringkasan dan latihan
Ringkasan: klasifikasi tak terbimbing mengelompokkan piksel menurut kemiripan band. Anda yang memberi nama kluster. Kelas yang mirip bisa menyatu. Menambah jumlah kluster membantu memisahkan, tetapi menambah pekerjaan memberi nama.
Latihan:
- Ubah
JUMLAH_KLUSTERmenjadi[4, 8]dan jalankan lagi. Berapa kluster yang memuat piksel latih dua kelas? - Ubah
seedpada fungsikmeansmenjadi 2. Apakah tabelnya sama persis? Mengapa?
#Tabel perbandingan: klasifikasi tak terbimbing
| Hal | QGIS | ArcGIS Pro | ArcMap 10.8 |
|---|---|---|---|
| Alat | tidak ada alat siap pakai yang lengkap pada uji ini; skrip NumPy (k-means) di buku | Iso Cluster Unsupervised Classification [CEK] | Iso Cluster Unsupervised Classification [CEK] |
| Algoritma | k-means | ISODATA | ISODATA |
| Keluaran | raster kelas | raster kelas + berkas tanda spektral [CEK] | raster kelas + berkas tanda spektral [CEK] |
| Syarat | tanpa ekstensi | Spatial Analyst [CEK] | Spatial Analyst [CEK] |