Segmentasi Citra (2): Threshold, Region, dan Motion
Panduan belajar dari slide 1–35 (adaptasi Yu Hen Hu). Setiap bagian berisi: ide, penjelasan langkah, contoh/gambar, dan sudut pandang kritis (kapan metodenya gagal). Gambar dibuat dengan Python (matplotlib) dari data sintetis, jadi ini ilustrasi mirip slide, bukan gambar asli slide.
0. Peta belajar
Segmentasi = memecah citra menjadi wilayah bermakna (objek vs latar). Pertanyaan utama: "piksel ini milik wilayah mana?" Tiga jawaban di slide ini:
| Metode | Pakai apa? | Pertanyaan yang dijawab |
|---|---|---|
| Threshold | Nilai keabuan satu piksel | Apakah piksel ini terang/gelap relatif terhadap T? |
| Region-based | Kemiripan dengan tetangga | Apakah piksel ini "serupa" dengan wilayah di sekitarnya? |
| Motion-based | Perubahan antar frame video | Apakah piksel ini berubah/bergerak? |
Urutan saran: 1 → 2 → 3 → 4 → 5 → 6 (threshold, bagian tersulit, siapkan waktu terbanyak) → 7 → 8 → 9 → kerjakan latihan (11) tanpa mengintip jawaban.
1. Gambaran besar (slide 2, 22, 31)
Slide diulang tiga kali dengan satu poin ditebalkan: itu penanda bab. Slide 2 = bab threshold, slide 22 = bab region, slide 31 = bab motion. Edge-based (mencari batas) dibahas di materi sebelumnya.
Kritis: tidak ada metode "terbaik" universal. Pemilihan metode bergantung pada kondisi citra: kontras bagus + pencahayaan rata → threshold; objek punya tekstur/intensitas halus dan ingin batas rapat → region; ada video dengan kamera diam → motion.
2. Threshold dasar (slide 3–6)
2.1 Ide
Ubah citra abu-abu menjadi biner: piksel dengan intensitas z > T jadi "objek" (putih), sisanya "latar" (hitam). Kunci: histogram. Jika objek terang di atas latar gelap, histogram punya dua puncak (bimodal) dan lembah di antaranya; T diletakkan di lembah. Dengan 3 kelas (misalnya langit, gunung, salju) dipakai dua threshold T₁ dan T₂ (slide 3 dan 18).
2.2 Mengapa threshold gagal? Noise (slide 4)
Tanpa noise, histogram berupa dua garis tajam. Dengan noise sedang, jadi dua "gunung" yang masih terpisah. Dengan noise berat, dua gunung melebar lalu menyatu, lembah hilang, sehingga T tidak bisa ditentukan.
2.3 Pencahayaan tidak merata (slide 5)
Citra = pantulan objek × pencahayaan. Jika cahaya makin terang ke kanan, piksel latar di sisi terang bisa lebih terang daripada objek di sisi gelap. Histogram jadi berantakan, dan satu T global tidak cukup. Solusinya: threshold lokal (bagian 6.4).
2.4 Contoh sukses: sidik jari (slide 6)
Kontras tinggi dan latar rata menghasilkan histogram bimodal bersih, sehingga threshold sederhana sudah cukup.
Kritis: threshold hanya melihat intensitas, bukan posisi. Dua piksel terpisah jauh dengan nilai sama selalu dianggap satu kelas. Hasilnya sering berisi bintik (noise) dan perlu pembersihan morfologi atau smoothing.
3. Threshold sebagai uji hipotesis & Bayes (slide 7–8)
3.1 Istilah (slide 7)
| Simbol | Arti |
|---|---|
| H0 (null) | Piksel bukan bagian wilayah (latar) |
| H1 (alternatif) | Piksel bagian wilayah (objek) |
| p₁(z), p₂(z) | Likelihood: peluang melihat intensitas z jika piksel latar / objek |
| P₁, P₂ | Prior: proporsi piksel latar / objek di citra (P₁+P₂=1) |
3.2 Tiga aturan keputusan
- Maximum likelihood: pilih objek jika
p(z|H1) > p(z|H0). Mengabaikan prior. - Bayesian: pilih objek jika
P₂·p₂(z) > P₁·p₁(z). Memperhitungkan prior. - Sufficient statistic: aturan di atas biasanya setara dengan
z > T, jadi tinggal mencari satu angka T.
T adalah titik perpotongan kurva P₁p₁(z) dan P₂p₂(z): di kiri T kurva latar menang, di kanan T kurva objek menang.
3.3 Kasus Gaussian (slide 8)
(Judul slide "Uni-model" maksudnya unimodal: tiap kelas satu puncak Gaussian.) Dengan p_i(z)=1/(√(2π)σ_i)·exp(−(z−μ_i)²/2σ_i²), menyamakan P₁p₁(T)=P₂p₂(T) lalu mengambil log menghasilkan persamaan kuadrat AT²+BT+C=0 (A, B, C ada di slide). Jika σ₁=σ₂=σ:
Intuisi: suku pertama = titik tengah dua rata-rata. Suku kedua = koreksi akibat prior. Jika P₁=P₂, ln(1)=0 sehingga T tepat di tengah. Jika satu kelas jauh lebih banyak, T bergeser mendekati kelas yang lebih jarang, sehingga kelas dominan "mendapat wilayah lebih luas" (karena lebih mungkin benar).
Contoh angka: μ₁=80, μ₂=170, σ=25. Prior sama: T=125. Prior P₁=0,95, P₂=0,05: ln(0,05/0,95)=−2,944; σ²/(μ₁−μ₂)=625/(−90)=−6,944; koreksi=+20,4 → T≈145. T naik ke arah kelas objek (yang jarang), sehingga lebih banyak piksel dianggap latar.
Kritis: metode ini butuh asumsi Gaussian dan parameter (μ, σ, P) yang di praktik tidak diketahui. Di sinilah k-means dan Otsu berguna: keduanya memperkirakan pemisahan langsung dari data tanpa mengasumsikan bentuk distribusi.
4. k-means clustering (slide 9–11)
4.1 Masalah (slide 9)
Diberi K data x_k. Cari c pusat cluster w(i) supaya jumlah (rata-rata) jarak kuadrat tiap data ke pusat clusternya sekecil mungkin: D = (1/K) ΣΣ I(x_k,i)·d(x_k,w(i)). I(x_k,i) adalah fungsi indikator: 1 jika x_k masuk cluster i, selain itu 0.
4.2 Algoritma (slide 10): ulangi dua langkah
- Inisialisasi pusat w(i) (acak atau tebakan).
- (A) Assign (E-step): setiap data ke pusat terdekat.
- (B) Hitung distorsi D.
- (C) Update (M-step): pusat baru = rata-rata anggota cluster.
- (D) Cek konvergen: berhenti jika D hampir tidak berubah (
1−D(iter−1)/D(iter) < ε).
4.3 Contoh numerik (slide 11), hitung sendiri
Data x = {−1,−2,0,2,3,4}; pusat awal W={2,1; 2,3}.
- Assign: {−1,−2,0,2} → 2,1 ; {3,4} → 2,3.
- Update: w₁=(−1−2+0+2)/4=−0,25 ; w₂=(3+4)/2=3,5.
- Assign ulang dengan (−0,25; 3,5): angka 2 lebih dekat ke 3,5 (jarak 1,5) daripada ke −0,25 (2,25). Jadi {−1,−2,0} dan {2,3,4}.
- Update: w₁=−1 ; w₂=3. Assign tidak berubah, konvergen.
4.4 Hubungan dengan threshold
Jika x adalah intensitas piksel dan c=2, k-means menghasilkan dua pusat; T = titik tengah kedua pusat. Itu threshold otomatis.
Kritis: (1) hasil bergantung pada inisialisasi, bisa terjebak di minimum lokal; (2) jumlah cluster harus ditentukan; (3) k-means menganggap cluster kira-kira bulat dan berukuran mirip; (4) tiap iterasi D tidak pernah naik, tapi tidak ada jaminan global optimum.
5. Otsu: threshold optimal (slide 12–14)
5.1 Ide
Coba semua kemungkinan T (0…255). Untuk tiap T hitung seberapa "terpisah" kedua kelas. Pilih T yang memisahkan paling baik. Hanya butuh histogram.
5.2 Langkah (slide 12)
- Normalisasi histogram:
p_i = n_i / (M·N), jumlah semua p_i = 1. - Untuk threshold k: kelas 1 = {0…k}, kelas 2 = {k+1…L−1}. Peluang kelas:
P₁(k)=Σp_i(i≤k),P₂(k)=1−P₁(k). - Rata-rata kelas:
m₁(k)=(1/P₁)Σ i·p_i,m₂(k)serupa. Rata-rata globalm_G=Σ i·p_i. - Between-class variance (slide 13): σ²_B(k) = P₁(k)[m₁(k) − m_G]² + P₂(k)[m₂(k) − m_G]²
- Pilih k* yang membuat σ²_B terbesar.
Koreksi penting: slide 13 menulis min, yang salah. Otsu memaksimalkan σ²_B. Alasan: total variansi tetap = within-class + between-class, jadi memaksimalkan between sama dengan meminimalkan within (kelas serapat mungkin, antar kelas sejauh mungkin). Slide juga menulis "hitung sampai ketemu minimum": praktiknya hitung semua k lalu ambil nilai terbesar.
5.3 Smoothing sebelum Otsu (slide 15)
Pada noise berat, Otsu langsung menghasilkan hasil berbintik. Setelah di-blur, noise mengecil, dua puncak muncul kembali, dan Otsu bekerja baik.
Kritis: Otsu memberi hasil buruk jika (a) ukuran dua kelas sangat tidak seimbang (slide 16), (b) pencahayaan tidak rata, (c) noise berat tanpa smoothing, (d) histogram tidak bimodal. Smoothing juga mengaburkan tepi objek kecil: ada trade-off.
6. Memperbaiki threshold (slide 15–21)
| Masalah | Solusi | Cara kerja |
|---|---|---|
| Noise berat (slide 15) | Smoothing dahulu | Blur merata-ratakan noise, lembah histogram muncul |
| Objek sangat kecil, prior tidak seimbang (slide 16–17) | Gunakan edge | Hitung gradien/Laplacian, ambil hanya piksel dengan tepi kuat, lalu buat histogram dari piksel itu saja: komposisi objek/latar jadi seimbang, Otsu pun berhasil |
| Lebih dari 2 kelas (slide 18) | Multi-threshold | Otsu diperluas: cari T₁, T₂ yang memaksimalkan between-class variance 3 kelas |
| Pencahayaan tidak rata (slide 19–21) | Threshold lokal | Bagi citra jadi blok (tiap blok punya T sendiri) atau pakai sliding window |
6.4 Threshold lokal (slide 19–21)
- Blok (slide 19–20): citra dibagi grid (mis. 2×3). Histogram tiap blok dianalisis sendiri. Blok yang histogramnya tidak bimodal (misalnya hanya latar) perlu penanganan khusus, misalnya memakai T dari blok tetangga.
- Sliding window / moving average (slide 21): untuk tiap piksel, T = rata-rata (atau rata-rata + konstanta) intensitas jendela di sekitarnya. Pada contoh tulisan tangan dengan bayangan, Otsu global gagal (sisi gelap hilang) sedangkan moving average berhasil karena T mengikuti kecerahan lokal. Lihat gambar bagian 2.3.
Kritis: ukuran jendela harus lebih besar dari lebar goresan/objek, tetapi cukup kecil untuk mengikuti perubahan cahaya. Terlalu kecil → area rata jadi bintik; terlalu besar → mirip threshold global.
7. Region-based segmentation (slide 22–30)
7.1 Definisi formal (slide 24)
Segmentasi citra R = pemecahan menjadi sub-region R₁…R_n dengan: (1) gabungan semua R_i = R (tidak ada piksel tertinggal); (2) R_i ∩ R_j = ∅ (tidak tumpang tindih); (3) tiap R_i terhubung; (4) predikat P(R_i)=TRUE (semua piksel memenuhi sifat, misalnya selisih intensitas kecil) dan P(R_i ∪ R_j)=FALSE untuk tetangga berbeda. Catatan: slide menulis P(R_i ∩ R_j); yang benar secara standar adalah gabungan (∪), sebab dua wilayah berbeda jika gabungannya melanggar predikat.
7.2 Region growing (slide 23)
- Pilih seed (titik awal).
- Periksa tetangga; jika memenuhi predikat (mis. |I−I_seed| < ambang) tambahkan.
- Ulangi sampai tidak ada tetangga yang memenuhi.
7.3 Splitting & merging (slide 23–24)
- Mulai dari seluruh citra. Jika P salah, bagi menjadi 4 kuadran (quad-tree, pohon di slide 24).
- Ulangi pada tiap kuadran sampai P benar atau terlalu kecil.
- Merge: gabungkan tetangga yang gabungannya memenuhi P.
Kritis: region growing sangat bergantung pada pilihan seed dan ambang; perubahan kecil bisa meluas ke seluruh citra ("bocor" lewat tepi lemah). Split-merge menghasilkan batas berbentuk blok kotak karena struktur quad-tree.
7.4 Watershed (slide 25–30)
Bayangkan citra (biasanya citra gradien) sebagai pegunungan 3D: intensitas = ketinggian. Lembah = minimum lokal. Lubangi tiap minimum lokal lalu banjiri pelan-pelan.
| Komponen (slide 27) | Arti |
|---|---|
| Seed | Minimum lokal (dasar lembah) |
| Metode tumbuh | Dilasi morfologi tiap tahap banjir |
| Predikat | Gradien serupa (ketinggian air sama) |
| Batas sub-region | Dam: dibangun saat air dari dua cekungan bertemu (slide 28); garis dam = garis segmentasi |
| Mencegah over-segmentation | Gunakan marker |
Pada gambar, air naik dari dua cekungan. Saat muka air melewati punggung di antaranya, dua kolam akan menyatu; di titik itu dibangun dam (garis merah).
Over-segmentation dan marker (slide 30)
Noise dan variasi kecil menciptakan banyak minimum lokal palsu; tiap minimum menjadi satu wilayah, sehingga citra pecah menjadi ratusan potongan (slide 30 atas). Solusi: marker. Internal marker = titik/wilayah yang pasti objek; external marker = garis latar. Banjir hanya dimulai dari marker, sehingga hasilnya jauh lebih bersih (slide 30 bawah).
Kritis: watershed bagus untuk memisahkan objek yang bersentuhan (sel menempel), tetapi tanpa marker hampir selalu over-segmentation. Pemilihan marker sendiri butuh pengetahuan tambahan (manual atau hasil threshold/morfologi).
8. Motion-based segmentation (slide 31–34)
8.1 Ide dan asumsi (slide 32)
Objek bergerak dianggap menarik, latar diam kurang menarik. Asumsi: semua frame diambil dari kamera yang sama dan diam (satu "shot"). Jika kamera bergerak, seluruh latar ikut berubah dan metode ini gagal. Slide menyebut metode domain spasial vs frekuensi; di sini hanya domain spasial (ADI).
8.2 Difference image dan ADI (slide 33–34)
Difference image: d(x,y)=1 jika |f(t_i)−f(t_j)| > T, selain itu 0. ADI mengakumulasi hitungan ini terhadap frame referensi R(x,y):
P_k = P_{k−1} + 1 jika R − f_k > T
N_k = N_{k−1} + 1 jika R − f_k < −T
| ADI | Artinya |
|---|---|
| Absolute | Semua perubahan; jejak lengkap (posisi awal + lintasan) |
| Positive | Jika objek lebih terang dari latar: wilayah awal objek di frame referensi (berhenti bertambah begitu objek benar-benar bergeser) |
| Negative | Posisi baru yang dilalui objek, hingga posisi terakhir |
Nilai piksel di ADI = berapa frame piksel itu berbeda dari referensi. Bagian yang lebih terang berarti perubahan lebih lama. Arah gerak bisa dibaca dari gradasi, dan kecepatan dari panjang jejak.
Kritis: (1) butuh referensi yang bersih (tanpa objek bergerak); (2) perubahan cahaya, bayangan, atau getar kamera dianggap gerak; (3) perlu pilih T: terlalu kecil → noise terdeteksi, terlalu besar → objek pucat terlewat; (4) interpretasi positif/negatif memakai asumsi objek lebih terang dari latar (dibalik jika objek lebih gelap).
9. Tabel perbandingan
| Metode | Ide inti | Kelebihan | Kelemahan | Penyelamat |
|---|---|---|---|---|
| Threshold global | Satu T dari histogram | Cepat, sederhana | Gagal saat noise/cahaya tak rata | Smoothing, edge, lokal |
| Otsu | Maks. between-class variance | Otomatis, tanpa parameter | Prior tak seimbang, tidak bimodal | Edge-based histogram |
| k-means | Minimalkan jarak ke pusat | Umum, mudah | Sensitif inisialisasi, k harus ditentukan | Banyak percobaan awal |
| Region growing | Tumbuh dari seed | Wilayah terhubung, batas jelas | Sensitif seed & ambang | Pilih seed hati-hati |
| Split & merge | Bagi lalu gabung | Tidak butuh seed | Batas berblok | Merge setelah split |
| Watershed | Banjir dari minimum, dam | Kontur tertutup, objek bersentuhan terpisah | Over-segmentation | Marker |
| ADI | Akumulasi selisih frame | Sederhana, beri arah dan kecepatan | Kamera harus diam, sensitif cahaya | Referensi bersih, pilih T |
10. Catatan kritis: yang perlu diwaspadai di slide
- Slide 13: "min σ²_B" seharusnya max.
- Slide 8: "Uni-model" = unimodal. Rumus T mengandaikan σ sama untuk rumus sederhana.
- Slide 7: arti H0/H1 dan penamaan prior bisa membingungkan: P₁ milik H0 (latar), P₂ milik H1 (objek). Sebut dengan konsisten.
- Slide 9–10: notasi tidak konsisten (M vs c untuk jumlah cluster; penjumlahan sampai N vs K). Dua-duanya merujuk ke jumlah cluster (c) dan jumlah data (K).
- Slide 12: indeks intensitas kadang dari i=1…L, kadang 0…L−1. Pakai 0…L−1 (L=256).
- Slide 24: P(R_i ∩ R_j) sebaiknya P(R_i ∪ R_j).
- Slide 34: ADI positif/negatif bergantung pada apakah objek lebih terang dari latar.
- Judul akhir "Terimakasih" (bahasa Indonesia) hanyalah penutup, tidak ada materi.
11. Latihan soal (klik untuk melihat jawaban)
1. Mengapa histogram bimodal mudah di-threshold, dan apa yang terjadi jika noise besar?
Ada lembah jelas sebagai tempat T. Noise melebarkan puncak hingga menyatu, lembah hilang, T ambigu. Solusi: smoothing.
2. μ₁=50, μ₂=150, σ=20, P₁=P₂. Berapa T? Jika P₂=0,2 & P₁=0,8?
Prior sama: T=100. Kedua: ln(0,2/0,8)=−1,386; σ²/(μ₁−μ₂)=400/(−100)=−4; koreksi=+5,55 → T≈105,5. Bergeser mendekati kelas jarang (kelas 2).
3. Jalankan k-means pada x={1,2,9,10,11}, w awal={1,2}.
Assign: 1 dekat w₁=1 ; 2 dekat w₂=2 (jarak 0), sehingga {1} dan {2,9,10,11}. Update: w₁=1 ; w₂=(2+9+10+11)/4=8. Assign ulang: 2 dekat ke 1 (1) lebih dibanding ke 8 (6): {1,2}→w₁ ; {9,10,11}→w₂. Update: w₁=1,5 ; w₂=10. Konvergen. Threshold ≈ (1,5+10)/2=5,75.
4. Apakah Otsu meminimalkan atau memaksimalkan σ²_B? Mengapa?
Memaksimalkan. Total variansi tetap = within + between, jadi between besar ⇔ within kecil ⇔ kelas padat dan terpisah.
5. Tentukan metode: (a) foto dokumen dengan bayangan, (b) sel-sel menempel, (c) CCTV lorong.
(a) Threshold lokal (moving average). (b) Watershed + marker. (c) Motion/ADI dengan referensi lorong kosong; kamera tetap.
6. Mengapa watershed menghasilkan over-segmentation, dan apa solusinya?
Setiap minimum lokal (termasuk akibat noise) menjadi cekungan sendiri. Solusi: marker internal/eksternal agar banjir hanya dimulai dari tempat yang diinginkan; bisa juga smoothing awal.
7. Sebuah objek terang bergerak. Mana ADI yang menunjukkan posisi awal, mana posisi akhir?
Positive ADI → posisi awal (di frame referensi). Negative ADI → posisi baru dan akhir. Absolute ADI → gabungan keduanya.
12. Contekan rumus
k-means: w(i) = (1/N_i) Σ anggota x_k ; berhenti jika 1−D(iter−1)/D(iter) < ε
Otsu: P₁=Σ_{i≤k}p_i ; m_G=Σ i·p_i ; σ²_B=P₁(m₁−m_G)²+P₂(m₂−m_G)² → ambil MAKS
ADI: A_k=A_{k−1}+1 jika |R−f_k|>T ; P: R−f_k>T ; N: R−f_k<−T
Selamat belajar! Jika ada bagian yang masih membingungkan, tanyakan ke saya dengan menyebut nomor slide atau bagiannya.