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:

MetodePakai apa?Pertanyaan yang dijawab
ThresholdNilai keabuan satu pikselApakah piksel ini terang/gelap relatif terhadap T?
Region-basedKemiripan dengan tetanggaApakah piksel ini "serupa" dengan wilayah di sekitarnya?
Motion-basedPerubahan antar frame videoApakah 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).

Histogram bimodal dan trimodal
Histogram bimodal dan trimodal

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.

Efek noise: histogram melebar dan menyatu
Efek noise: histogram melebar dan menyatu

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

Pencahayaan tidak merata menggagalkan threshold global
Pencahayaan tidak merata menggagalkan threshold global

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)

SimbolArti
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

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 σ₁=σ₂=σ:

T = (μ₁+μ₂)/2 + σ²/(μ₁−μ₂) · ln(P₂/P₁)

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

Posisi T berubah saat prior berubah
Posisi T berubah saat prior berubah

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

  1. Inisialisasi pusat w(i) (acak atau tebakan).
  2. (A) Assign (E-step): setiap data ke pusat terdekat.
  3. (B) Hitung distorsi D.
  4. (C) Update (M-step): pusat baru = rata-rata anggota cluster.
  5. (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}.

  1. Assign: {−1,−2,0,2} → 2,1 ; {3,4} → 2,3.
  2. Update: w₁=(−1−2+0+2)/4=−0,25 ; w₂=(3+4)/2=3,5.
  3. 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}.
  4. Update: w₁=−1 ; w₂=3. Assign tidak berubah, konvergen.
Contoh numerik k-means slide 11
Contoh numerik k-means slide 11

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)

  1. Normalisasi histogram: p_i = n_i / (M·N), jumlah semua p_i = 1.
  2. 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).
  3. Rata-rata kelas: m₁(k)=(1/P₁)Σ i·p_i, m₂(k) serupa. Rata-rata global m_G=Σ i·p_i.
  4. Between-class variance (slide 13):
    σ²_B(k) = P₁(k)[m₁(k) − m_G]² + P₂(k)[m₂(k) − m_G]²
  5. 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.

Otsu tanpa dan dengan smoothing
Otsu tanpa dan dengan smoothing

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)

MasalahSolusiCara kerja
Noise berat (slide 15)Smoothing dahuluBlur merata-ratakan noise, lembah histogram muncul
Objek sangat kecil, prior tidak seimbang (slide 16–17)Gunakan edgeHitung 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-thresholdOtsu diperluas: cari T₁, T₂ yang memaksimalkan between-class variance 3 kelas
Pencahayaan tidak rata (slide 19–21)Threshold lokalBagi citra jadi blok (tiap blok punya T sendiri) atau pakai sliding window

6.4 Threshold lokal (slide 19–21)

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)

  1. Pilih seed (titik awal).
  2. Periksa tetangga; jika memenuhi predikat (mis. |I−I_seed| < ambang) tambahkan.
  3. Ulangi sampai tidak ada tetangga yang memenuhi.

7.3 Splitting & merging (slide 23–24)

  1. Mulai dari seluruh citra. Jika P salah, bagi menjadi 4 kuadran (quad-tree, pohon di slide 24).
  2. Ulangi pada tiap kuadran sampai P benar atau terlalu kecil.
  3. Merge: gabungkan tetangga yang gabungannya memenuhi P.
Region growing dan split quad-tree
Region growing dan split quad-tree

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
SeedMinimum lokal (dasar lembah)
Metode tumbuhDilasi morfologi tiap tahap banjir
PredikatGradien serupa (ketinggian air sama)
Batas sub-regionDam: dibangun saat air dari dua cekungan bertemu (slide 28); garis dam = garis segmentasi
Mencegah over-segmentationGunakan marker
Analogi 1D watershed: banjir, lalu dam
Analogi 1D watershed: banjir, lalu dam

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

A_k = A_{k−1} + 1 jika |R − f_k| > T
P_k = P_{k−1} + 1 jika R − f_k > T
N_k = N_{k−1} + 1 jika R − f_k < −T
ADIArtinya
AbsoluteSemua perubahan; jejak lengkap (posisi awal + lintasan)
PositiveJika objek lebih terang dari latar: wilayah awal objek di frame referensi (berhenti bertambah begitu objek benar-benar bergeser)
NegativePosisi baru yang dilalui objek, hingga posisi terakhir
ADI persegi bergerak ke tenggara
ADI persegi bergerak ke tenggara

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

MetodeIde intiKelebihanKelemahanPenyelamat
Threshold globalSatu T dari histogramCepat, sederhanaGagal saat noise/cahaya tak rataSmoothing, edge, lokal
OtsuMaks. between-class varianceOtomatis, tanpa parameterPrior tak seimbang, tidak bimodalEdge-based histogram
k-meansMinimalkan jarak ke pusatUmum, mudahSensitif inisialisasi, k harus ditentukanBanyak percobaan awal
Region growingTumbuh dari seedWilayah terhubung, batas jelasSensitif seed & ambangPilih seed hati-hati
Split & mergeBagi lalu gabungTidak butuh seedBatas berblokMerge setelah split
WatershedBanjir dari minimum, damKontur tertutup, objek bersentuhan terpisahOver-segmentationMarker
ADIAkumulasi selisih frameSederhana, beri arah dan kecepatanKamera harus diam, sensitif cahayaReferensi bersih, pilih T

10. Catatan kritis: yang perlu diwaspadai di slide

  1. Slide 13: "min σ²_B" seharusnya max.
  2. Slide 8: "Uni-model" = unimodal. Rumus T mengandaikan σ sama untuk rumus sederhana.
  3. Slide 7: arti H0/H1 dan penamaan prior bisa membingungkan: P₁ milik H0 (latar), P₂ milik H1 (objek). Sebut dengan konsisten.
  4. 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).
  5. Slide 12: indeks intensitas kadang dari i=1…L, kadang 0…L−1. Pakai 0…L−1 (L=256).
  6. Slide 24: P(R_i ∩ R_j) sebaiknya P(R_i ∪ R_j).
  7. Slide 34: ADI positif/negatif bergantung pada apakah objek lebih terang dari latar.
  8. 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

Bayes (σ sama): T = (μ₁+μ₂)/2 + σ²/(μ₁−μ₂)·ln(P₂/P₁)
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.