Metode Otsu

Contoh pengambangan citra dengan algoritme Otsu
Citra asli

Dalam penglihatan komputer dan pengolahan citra digital, metode Otsu (Jepang: 大津の二値化法) dipakai untuk melakukan pengambangan (thresholding) citra otomatis.[1] Metode ini dinamai dari Nobuyuki Otsu (大津展之code: ja is deprecated , Ōtsu Nobuyuki).

Sederhananya, algoritme ini mengembalikan nilai ambang intensitas tunggal yang membagi piksel-piksel menjadi dua kelas, yaitu latar depan dan latar belakang. Nilai ambang ini ditentukan dengan meminimalkan ragam intensitas dalam kelas atau memaksimalkan ragam intensitas antarkelas.[2] Perluasan untuk pengambangan banyak tingkat telah dijelaskan dalam karya tulis asli[2] dan implementasi yang efisien telah diusulkan.[3][4]

Metode Otsu

Visualisasi metode Otsu

Algoritme ini secara menyeluruh mencari nilai ambang yang meminimalkan ragam dalam kelas yang didefinisikan sebagai jumlah berbobot ragam kedua kelas.

σ w 2 ( t ) = ω 0 ( t ) σ 0 2 ( t ) + ω 1 ( t ) σ 1 2 ( t ) {\displaystyle \sigma _{w}^{2}(t)=\omega _{0}(t)\sigma _{0}^{2}(t)+\omega _{1}(t)\sigma _{1}^{2}(t)}

Bobot ω 0 {\displaystyle \omega _{0}} dan ω 1 {\displaystyle \omega _{1}} adalah peluang kedua kelas dipisahkan oleh nilai ambang t {\displaystyle t} . Nilai σ 0 2 {\displaystyle \sigma _{0}^{2}} dan σ 1 2 {\displaystyle \sigma _{1}^{2}} adalah ragam kedua kelas.

Peluang kelas ω 0 , 1 ( t ) {\displaystyle \omega _{0,1}(t)} dihitung dari L {\displaystyle L} tempat dalam histogram.

ω 0 ( t ) = i = 0 t 1 p ( i ) ω 1 ( t ) = i = t L 1 p ( i ) {\displaystyle {\begin{aligned}\omega _{0}(t)&=\sum _{i=0}^{t-1}p(i)\\[4pt]\omega _{1}(t)&=\sum _{i=t}^{L-1}p(i)\end{aligned}}}

Untuk dua kelas, meminimalkan ragam dalam kelas sama dengan memaksimalkan ragam antarkelas:[2]

σ b 2 ( t ) = σ 2 σ w 2 ( t ) = ω 0 ( μ 0 μ T ) 2 + ω 1 ( μ 1 μ T ) 2 = ω 0 ( t ) ω 1 ( t ) [ μ 0 ( t ) μ 1 ( t ) ] 2 {\displaystyle {\begin{aligned}\sigma _{b}^{2}(t)&=\sigma ^{2}-\sigma _{w}^{2}(t)\\&=\omega _{0}(\mu _{0}-\mu _{T})^{2}+\omega _{1}(\mu _{1}-\mu _{T})^{2}\\&=\omega _{0}(t)\omega _{1}(t)\left[\mu _{0}(t)-\mu _{1}(t)\right]^{2}\end{aligned}}}

dengan ω {\displaystyle \omega } adalah peluang kelas dan μ {\displaystyle \mu } adalah rata-rata kelas. Hubungan nilai μ 0 ( t ) {\displaystyle \mu _{0}(t)} , μ 1 ( t ) {\displaystyle \mu _{1}(t)} , dan μ T {\displaystyle \mu _{T}} adalah sebagai berikut.

μ 0 ( t ) = i = 0 t 1 i p ( i ) ω 0 ( t ) μ 1 ( t ) = i = t L 1 i p ( i ) ω 1 ( t ) μ T = i = 0 L 1 i p ( i ) {\displaystyle {\begin{aligned}\mu _{0}(t)&={\frac {\sum _{i=0}^{t-1}ip(i)}{\omega _{0}(t)}}\\[4pt]\mu _{1}(t)&={\frac {\sum _{i=t}^{L-1}ip(i)}{\omega _{1}(t)}}\\\mu _{T}&=\sum _{i=0}^{L-1}ip(i)\end{aligned}}}

Hubungan berikut dapat dibuktikan dengan mudah.

ω 0 μ 0 + ω 1 μ 1 = μ T ω 0 + ω 1 = 1 {\displaystyle {\begin{aligned}\omega _{0}\mu _{0}+\omega _{1}\mu _{1}&=\mu _{T}\\\omega _{0}+\omega _{1}&=1\end{aligned}}}

Peluang dan rata-rata kelas dapat dihitung secara iteratif. Cara ini menghasilkan algoritme yang efektif.

Algoritme

  1. Hitung histogram dan peluang-peluang pada tiap tingkat intensitas.
  2. Hitung nilai awal ω i ( 0 ) {\displaystyle \omega _{i}(0)} dan μ i ( 0 ) . {\displaystyle \mu _{i}(0).}
  3. Hitung semua kemungkinan nilai ambang t = 1 , , {\displaystyle t=1,\ldots ,} intensitas maksimal.
    1. Perbarui ω i {\displaystyle \omega _{i}} dan μ i . {\displaystyle \mu _{i}.}
    2. Hitung σ b 2 ( t ) . {\displaystyle \sigma _{b}^{2}(t).}
  4. Nilai ambang yang diminta adalah yang menghasilkan σ b 2 ( t ) {\displaystyle \sigma _{b}^{2}(t)} maksimal.

Implementasi Octave atau MATLAB

cacahHistogram adalah histogram 256 elemen dari citra berderajat keabuan (8 bit). level adalah nilai ambang citra (double).

function ambang = otsu(cacahHistogram)
	total = sum(cacahHistogram); % banyak piksel dalam citra
	tingkat = size(cacahHistogram, 1);
	jumlahB = 0;
	wB = 0;
	maks = 0.0;
	jumlah1 = dot(0:(tingkat - 1), cacahHistogram);
	for (ii = 1:tingkat)
		wF = total - wB;
		if (wB > 0 && wF > 0)
			mF = (jumlah1 - jumlahB) / wF;
			val = wB * wF * ((jumlahB / wB) - mF) * ((jumlahB / wB) - mF);
			if (val >= maks)
				ambang = ii;
				maks = val;
			end;
		end;
		wB = wB + cacahHistogram(ii);
		jumlahB = jumlahB + (ii-1) * cacahHistogram(ii);
	end;
end;

Matlab memiliki fungsi graythresh() dan multithresh() dalam Image Processing Toolbox yang menggunakan metode Otsu dan metode multi-Otsu. Octave memiliki fungsi graythresh() dalam paket Image Processing yang secara bawaan menggunakan metode Otsu. Untuk menghitung dengan metode Otsu (khusus), Octave memiliki fungsi otsuthresh().

Kelemahan

Metode Otsu cukup baik jika histogram dianggap memiliki persebaran dua puncak serta memiliki lembah yang curam dan dalam di antara dua puncak. Namun, bila luas objek (latar depan) berukuran kecil dibandingkan luas latar belakang, histogram tidak lagi memiliki sifat dua puncak.[5] Jika ragam objek dan ragam latar belakang cukup besar dibanding selisih rata-rata atau jika citra sangat rusak akibat derau aditif, kecuraman lembah pada histogram menurun. Akibatnya, nilai ambang yang dihasilkan menyebabkan kesalahan segmentasi.

Hasil empiris menunjukkan bahwa kinerja pengambangan global yang dipakai untuk segmentasi citra (termasuk metode Otsu) dibatasi oleh ukuran objek yang kecil, selisih rata-rata antara latar depan dan belakang yang kecil, ragam latar depan dan latar belakang masing-masing yang besar, derau yang banyak, dan lain-lain.[6]

Pengembangan

Berbagai perluasan telah dikembangkan untuk mengatasi batasan-batasan metode Otsu. Salah satunya adalah metode Otsu dua dimensi yang bekerja lebih baik untuk citra berderau. Dalam cara ini, intensitas tiap piksel dibandingkan dengan rata-rata intensitas tetangganya untuk memperbaiki hasil segmentasi.[7]

Lihat pula

  • Pengambangan (pengolahan citra)
  • Pengambangan histogram seimbang

Referensi

  1. ^ M. Sezgin & B. Sankur (2004). "Survey over image thresholding techniques and quantitative performance evaluation". Journal of Electronic Imaging. 13 (1): 146–165. doi:10.1117/1.1631315. 
  2. ^ a b c Nobuyuki Otsu (1979). "A threshold selection method from gray-level histograms". IEEE Trans. Sys. Man. Cyber. 9 (1): 62–66. doi:10.1109/TSMC.1979.4310076. 
  3. ^ Liao, Ping-Sung (2001). "A fast algorithm for multilevel thresholding" (PDF). J. Inf. Sci. Eng. 17 (5): 713–727. Diarsipkan dari versi asli (PDF) tanggal 2019-06-24. Diakses tanggal 2020-10-06. 
  4. ^ Huang, Deng-Yuan (2009). "Optimal multi-level thresholding using a two-stage Otsu optimization approach". Pattern Recognition Letters. 30 (3): 275–284. doi:10.1016/j.patrec.2008.10.003. 
  5. ^ Kittler, Josef & Illingworth, John (1985). "On threshold selection using clustering criteria". IEEE Transactions on Systems, Man and Cybernetics. SMC-15 (5): 652–655. doi:10.1109/tsmc.1985.6313443. 
  6. ^ Lee, Sang Uk; Chung, Seok Yoon; Park, Rae Hong (1990). "A comparative performance study of several global thresholding techniques for segmentation". Computer Vision, Graphics, and Image Processing. 52 (2): 171–190. doi:10.1016/0734-189x(90)90053-x. 
  7. ^ Jianzhuang, Liu; Wenqing, Li; Yupeng, Tian (1991). "Automatic thresholding of gray-level pictures using two-dimension Otsu method". 1991 International Conference on Circuits and Systems (China): 325–327. doi:10.1109/CICCAS.1991.184351. 

Pranala luar

  • Implementasi metode Otsu sebagai pengaya GIMP dengan Script-Fu
  • (Inggris) Catatan kuliah tentang pengambangan – membahas metode Otsu
  • Pengaya ImageJ dengan metode Otsu
  • (Inggris) Penjelasan lengkap tentang metode Otsu dengan contoh dan implementasi dalam Java
  • Implementasi metode Otsu dalam ITK
  • (Inggris) Pengambangan Otsu dalam C# – implementasi dalam C# beserta penjelasan
  • Metode Otsu dengan MATLAB
  • Pengambangan Otsu dengan scikit-image dalam Python