Thresholding


Apakah yang dimaksud dengan thresholding??

Thresholding merupakan salah satu metode segmentasi citra di mana prosesnya didasarkan pada perbedaan derajat keabuan citra.

Dalam proses ini dibutuhkan suatu nilai batas yang disebut nilai threshold.

Nilai intensitas citra yang lebih dari atau sama dengan nilai threshold akan diubah menjadi putih (1) sedangkan nilai intensitas citra yang kurang dari nilai threshold akan diubah menjadi hitam (0).

Sehingga keluaran dari hasil thresholding adalah berupa citra biner.

Contoh segmentasi citra menggunakan metode thresholding ditunjukkan pada gambar berikut ini:

 

Source code nya adalah sebagai berikut:

clear all
close all
clc

baby = imread('baby.jpg');
baby_gray = rgb2gray(baby);
baby_bw = im2bw(baby_gray,240/255);
baby_bw2 = imcomplement(baby_bw);
baby_bw3 = imfill(baby_bw2,'holes');
baby_bw3(end,:) = 1;
baby_bw3 = imfill(baby_bw3,'holes');
baby_bw3(end,:) = 0;
baby_bw4 = imerode(baby_bw3,strel('disk',1));

red_baby = baby(:,:,1);
green_baby = baby(:,:,2);
blue_baby = baby(:,:,3);

cloud = imread('cloud3.jpg');
red_cloud = cloud(:,:,1);
green_cloud = cloud(:,:,2);
blue_cloud = cloud(:,:,3);

red_cloud(baby_bw4) = red_baby(baby_bw4);
green_cloud(baby_bw4) = green_baby(baby_bw4);
blue_cloud(baby_bw4) = blue_baby(baby_bw4);

rgb = cat(3,red_cloud,green_cloud,blue_cloud);

imwrite(baby_bw4,'bw4.jpg')

figure, imshow(baby);
figure, imshow(baby_bw4);
figure, imshow(cloud);
figure, imshow(rgb);

%% Cropping Citra Bayi
red_baby(~baby_bw4) = 0;
green_baby(~baby_bw4) = 0;
blue_baby(~baby_bw4) = 0;
baby_RGB = cat(3,red_baby,green_baby,blue_baby);
[row,col] = find(baby_bw4==1);
bw = imcrop(baby_bw4,[min(col) min(row) max(col)-min(col) max(row)-min(row)]);
RGB = imcrop(baby_RGB,[min(col) min(row) max(col)-min(col) max(row)-min(row)]);
RGB2 = imcrop(baby,[min(col) min(row) max(col)-min(col) max(row)-min(row)]);

[B,L] = bwboundaries(bw,'noholes');
figure,imshow(RGB)
hold on
for k = 1:length(B)
    boundary = B{k};
    plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 2)
end
hold off

figure,imshow(RGB2)
hold on
for k = 1:length(B)
    boundary = B{k};
    plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 2)
end
hold off

Tujuan segmentasi citra di atas adalah untuk memisahkan antara objek dengan background. Metode segmentasi citra dapat dikembangkan lebih lanjut agar diperoleh hasil segmentasi yang lebih baik lagi.

File source code lengkap beserta citra untuk thresholding pada materi di atas dapat diperoleh melalui halaman berikut ini: Source Code

Save

  1. Mas, minta pencerahannya. Saya mau buat penelitian penentuan treshold dengan menggunakan JST yang fitur inputnya berasal dari analisa tekstur orde 2 (GLCM). Kira-kira langkah-langkah saya ini sudah benar belum :
    1. Ekstrasi fitur
    2. training jst
    3. nah .. dibagian sini mas yang bingung, cara menghitung treshold dari jst gimana ya?
    mohon bantuannya

    • ada berbagai jenis nilai threshold, jika yang dimaksud adalah nilai threshold citra pada proses segmentasi maka langkah-langkah penelitian tersebut belum benar
      langkah-langkah yang benar yaitu:
      1. Akuisisi citra
      2. Perbaikan kualitas citra
      3. Segmentasi citra (bisa menggunakan metode thresholding dengan terlebih dahulu menentukan nilai threshold dg analisis histogram bimodal atau dengan metode otsu)
      4. Ekstraksi ciri (tekstur glcm)
      5. Identifikasi/ klasifikasi citra (jst)

  2. Begini mas, penelitian saya untuk kasus alpha matting, dimana saya ingin menentukan treshold sebagai nilai alpha menggunakan JST, apakah nilai treshold itu harus kita tentukan terlebih dahulu? beberapa penelitian sudah menggunakan Otsu (Global Treshold) … dan menghasilkan nilai trehold. Hipotesa awal saya dengan JST bisa menentukan treshold … apakah masih salah kira0kira hipotesa saya tadi? Kira-kira dengan JST bisa tidak menentukan treshold?
    Tolongdibalas mas ya …

  3. mas adi, saya mau tanya,,,, saya kan mau mencari atau membedakan bagian objek dan background dari citra kulit wajah.. dicari menggunakan nilai Treshold. dikatakan bahwa :
    jika P<=T maka pixelnya adalah objek.
    else
    pixel adl background.

    cara cari nilai tengah treshold nya gmna ya mas source code nya?
    trus source code untuk kondisi diatas bagaimana?
    mohon bantuan nya mas adi.

  4. pada koding di atas baris ke-7
    terdapat perintah baby_bw = im2bw(baby_gray,240/255);
    artinya nilai piksel baby_gray yang kurang dari 240 akan diubah menjadi 0 (hitam)
    Sedangkan nilai piksel baby_gray yang lebih dari atau sama dengan 240 akan diubah menjadi 1 (putih)
    Tetapi pada kasus ini objek yang diinginkan adalah yang bernilai 0 (hitam). Oleh karena itu, pada baris ke-8 digunakan perintah baby_bw2 = imcomplement(baby_bw);
    Sehingga objek yang diinginkan akan bernilai 1 (putih), sedangkan background akan bernilai 0 (hitam)

  5. Cahya Aris Prasetyawan

    mas mau tanya. rumus manual mat2gray bagaimana ya?

    • persamaan yg digunakan adalah persamaan interpolasi linear
      (y-ymin)/(ymax-ymin)=(x-xmin)/(xmax-xmin)

      di mana y adalah nilai/angka yg menyusun matriks awal, sedangkan x merupakan nilai intensitas piksel citra hasil keluaran

      pada koding tsb, nilai intensitas piksel citra grayscale keluaran memiliki kelas double (dalam range 0 s.d 1) sehingga nilai xmin yg digunakan pada persamaan di atas adalah 0 dan xmax adalah 1

  6. maaf mas saya masih awam matlab, mau tanya , klo image yg kita olah adalah citra dari CT ..algoritmanya gimana ya..yg di ataskan gambar berwarna..klo CT kan ngak..thanks

  7. assalamuallaikum mas,

    saya sudah coba menggunakan program di atas dan berhasil untuk thresholding angka pada uang kertas, tapi background di dilam angka nol masih terbawa.

    solusinya gimana ya mas?
    trimakasih banyak mas adi atas petunjuk dan bimbingannya.

  8. Maaf mas, Saya belum paham.
    jadi citra yang telah di segmentasi kembali di segmentasi ulang atau bagaimana mas?

    bw = imcrop(baby_bw4,[min(col) min(row) max(col)-min(col) max(row)-min(row)]);
    RGB = imcrop(baby_RGB,[min(col) min(row) max(col)-min(col) max(row)-min(row)]);
    RGB2 = imcrop(baby,[min(col) min(row) max(col)-min(col) max(row)-min(row)]);

    [B,L] = bwboundaries(bw,’noholes’);
    figure,imshow(RGB)
    hold on
    for k = 1:length(B)
    boundary = B{k};
    plot(boundary(:,2), boundary(:,1), ‘g’, ‘LineWidth’, 2)
    end
    hold off

    setelah code ini apakah perlu dibuat lagi mas?

    Trimakasih banyak mas adi

  9. Assalamualikum, mas mau tanya, Untuk perhitungan matematika dari Tresholding Otsu masnya punya ndak? pecontohan dengan matrix 5×5 . dari grayscale. jika kita ingin menjadikannya ke binner (binerisasi)

    minta tolong untuk dijawab ka mas, Terimakasih.

  10. Arief Rahman Hakim

    Mas saya mau tanya.. Cara untuk mencari nilai thresholding untuk image telur itu langkah”nya apa ya? Agar gambar telur bisa terlihat bulat sempurna tanpa ada bayangan sehingga saya bs mencari nilai pixel telurnya?

  11. Mas,bagaimana caranya membedakan identifikasi salah dan identifikasi benar pada aplikasi pengenalan pola di matlab ya tanpa cara manual?

  12. mas,tau bagaimana caranya menampilkan citra beserta nama file dari citra tersebut di matlab?

  13. terima kasih mas..

  14. Mas Adi, kalo citra yg ingin disegmentasi berupa citra grayscale, bagaimana mas? Karena dicontoh tsb citranya RGB. Thx

    • Pada koding tsb citra RGB diubah menjadi citra grayscale kemudian dari citra grayscale diubah menjadi citra biner
      Jika ingin mengubah citra grayscale menjadi citra biner saja, maka koding RGB menjadi grayscale tidak perlu dilakukan

  15. maaf mohon maaf mau bertanya, mungkin ini melenceng dari bahasan artikel diatas. tapi apakah bisa mas matlab di aplikasikan ke dalam Android? dan jika bisa gmn ya mas? mohon pencerahan mas hehe

  16. mas, saya mau nanya. saya sedang meneliti citra kanker payudara, (berbentuk grayscale) dan nantinya akan dipakai metode GLCM untuk mengesktrasksi nilai statistiknya. yang mau saya tanyakan segmentasi apa yang bisa saya lakukan pada citra tsb ? dosen saya menginginkan bagian yang putih pada citra yang diambil.

  17. thresholding yang digunakan langsung ke citra nya yaa mas? citra yang saya pakai ialah citra mammogram, dosen saya menyarankan mengambil ke payudaranya saja. sehingga bagian yang hitam dihilangkan.
    segmentasi apa saja yang dapat dilakukan mas? sayangnya ga bisa mengupload gambar di comment ini. ini source gambar nya mas http://peipa.essex.ac.uk/pix/mias/ barangkali mas bisa coba lihat mas. terimakasih

  18. Baik mas, trimakasih atas masukkan ny.
    Saya coba pahami dulu.
    Oh yaa kmrn pas mas meneliti menggunakan tool matlab yaa sbg pemrogramanny?
    Kalau mas bersedia boleh saya minta referensi tambahan dari mas adi sebagai bahan atau supplement saya dalam menyelesaikan tugas akhir saya .
    Jika berkenan saya meninggalkan e-mail saya : irfan.maulana1808@gmail.com
    Sebelum ny terimakasih byk mas. Blog nya sangat bermanfaat bagi saya..

  19. mas saya mau nanya lagi,
    kan citra yang saya gunakan ialah citra grayscale (berformat .pgm)
    ektsraksi ciri yang saya gunakan ialah metode GLCM.
    nanti jika dilakukan seperti yang mas katakan dikomentar pertama
    “””
    ada berbagai jenis nilai threshold, jika yang dimaksud adalah nilai threshold citra pada proses segmentasi maka langkah-langkah penelitian tersebut belum benar
    langkah-langkah yang benar yaitu:
    1. Akuisisi citra
    2. Perbaikan kualitas citra
    3. Segmentasi citra (bisa menggunakan metode thresholding dengan terlebih dahulu menentukan nilai threshold dg analisis histogram bimodal atau dengan metode otsu)
    4. Ekstraksi ciri (tekstur glcm)
    5. Identifikasi/ klasifikasi citra (jst)
    ””

    pada tahapan ke 3 segmentasi menggunakan thresholding (yakni mengkonversi citra ke dalam bentuk hitam putih alias biner 0 dan 1).

    nanti pada tahap selanjutnya (4) pas ekstraksi ciri (GLCM) bagaimana langkahny mas? kan GLCM untuk citra grayscale ? Sedangkan citra kita udah berubah ke bentuk biner (hitam putih)
    mohon pencerahannya mas..

    • Benar sekali irfan, pertanyaan yang bagus
      Hasil segmentasi citra dg metode thresholding adalah berupa citra biner
      Citra biner tsb kemudian digunakan sebagai masking utk melakukan cropping pada citra grayscale asli, sehingga citra keluaran dalam proses tsb adalah citra grayscale di mana objek tetap merepresentasikan nilai intensitas piksel grayscale sedangkan background bernilai nol
      semoga irfan semakin paham dan mengerti

    • Mas irfan boleh saya minta kontak yg bisa di hubungIn. Terimakasih sebelumnya

  20. apakah diblog ini ada tutorial untuk proses (masking) itu mas adi?
    atau adakah mas adi bisa memberi saya referensi terhadap proses segmentasi tsb.
    terimakasih.

  21. kenapa pada program di atas, untuk merubah citra RGB ke biner harus melalui grayscale dulu ??? apa kelebihan nya?
    padahal kan bisa dari RGB langsung ke biner soalnya kan citra RGB sudah dilakukan imread sehingga sudah otomatis komputer memproses ke grayscale tanpa harus memanggil fungsi grayscale. kira kira pemikiran ini benar atau gak ya ??
    terima kasih

  22. kenapa eror di sini ya??

    Error in Untitled (line 24)
    red_cloud(baby_bw4) = red_baby(baby_bw4);

  23. assalamualaikum mas, saya sedang mengerjakan tugas akhir dengan judul prediksi ukuran badan untuk online shop, dan saya ingin menggunakan matlab untuk pemrosesan gambar. pertanyaan saya :
    1. apakah bisa mengambil gambar melalui web (online shop yg saya buat) lalu gambar tersebut diolah di matlab lalu outputnya dikembalikan ke web tersebut secara realtime?
    2. apakah ada langkah-langkah yang baik yang bisa saya gunakan untuk mengolah citra hasil tangkap ambar dari web?

    terima kasih

  24. Mas kalo mau buat pengolahan citra… untuk menentukan jarak pixel dari titik a ke titik b itu seperti apa dan source code untuk membuat garisnya bisa secara otomatis tidak

  25. Assalamualaikum
    mas, saya ingin mengolah citra satelit untuk klasifikasi bagian awannya. Segmentasi yang saya pake metode threshoding, tapi hasilnya bagian yg intensitasnya sama seperti awan ikut kesegmentasi. Mohon sarannya mas metode segmentasi yg cocok untuk citra satelit apa ya?
    terimakasih

    • waalaikumsalam neneng
      bisa dicoba mengimplementasikan segmentasi warna dengan mengkonversi ruang warna citra yg semula rgb menjadi hsv atau ycbcr

  26. assalamualaikum mas adi untuk baris ke 6 itu maksudnya gimna yah ??
    apakah citra RGB diubah menjadi citra grayscale maksudnya ??

  27. assalamualaikum, mas ada materi kontur dan representasinya? bisa di jelaskan legkap dengan souce code nya? terimakasih sebelumnya

  28. assalamualaikum, mas ada materi tentang single threshold dan multiple threshold gak ya??
    mohon penjelasan beserta contohnya secara jelas.
    terima kasih.

  29. assalamualaikum wr.wb
    mas, saya mau minta pencerahan. saya sedang mengerjakan penilitian untuk skripsi. judul skripsi saya pemilihan kualitas buah tomat dengan metode principal component analysis dan euclidean distance. di principal component analysis ini untuk mereduksi data, dan di euclidean distancenya untuk klasifikasi kelas cacat atau tidak.nah disni permasalahannya saya bingung dengan memisahkan objek dengan background. klo dengan thershold apakah bisa? lalu saya masih bingung juga untuk klasifikasi menentukan nilai cacat dan tidak cacat pda data training yg nantinya untuk parameter di data uji trus langkahnya bagaimana ya mas.
    terima kasih mas

    • waalaikumsalam
      bisa dicoba diimplementasikan terlebih dahulu metode thresholding untuk proses segmentasi
      proses identifikasi bisa dilakukan dengan melakukan pelatihan terhadap masing2 kelas citra

  30. Siti Nur Rahmawati

    assalamu’alaikum
    mas ada ga cara thresholding menggunakan algortma otsu?
    terima kasih

  31. Siti Nur Rahmawati

    oke makasih mas

  32. Mas saya masih baru mulai nyusun TA nih… Apa sih mah perbedaan teknik thresholding dengan global thresholding…..saya pengen tau perhitungan manualnya juga mas

  33. assalamu’alaikum
    mas saya sedang menyusun TA dengan judul ‘idenfikasi buah apel berlapis lilin bedasarkan fitur warna’ kira kira segmentasi thresholding bisa tidak digunakan untuk untuk mensegmentasi citra rgb sebelum di lakukan tahapan ekstrasi ciiri.

  34. Assalamualaikum mas.
    Saya sedang menyusun TA, saya ingin bertanya apakah bisa mengganti warna baju pada gambar menggunakan deteksi warna?

    Terimakasih mas adi…

  35. Assalamualaikum mas.
    saya ingin bertanya apakah bisa mengganti warna baju pada gambar menggunakan deteksi warna?

    Terimakasih mas adi…

  36. assalamualaikum mas mau nanya perhitungan manual untuk croping, segmentasi, prepossecing , resizegmna ya mas. mksih byk mas

  37. Bunga Septia Lestari

    Mas, minta pencerahannya. Saya mau buat penelitian tentang implementasi citra medis untuk mendeteksi kelainan paru-paru menggunakan Hidden Markov model. Kira-kira langkah-langkah saya ini sudah benar belum :
    1. Grayscale
    2. Threshold
    3. Filter median
    4. Ekstraksi Ciri
    5. Identifikasi menggunakan HMM
    Nah disini saya masih binggung mas apakah tahapan saya ini sudah benar, dan saya juga masih binggung dengan ekstraksi ciri yabg tepat untuk memdeteksi kelainan paru-paru nya mas
    mohon bantuannya mas

  38. Selamat siang, jika saya ingin menentukan awan comulunimbus dari hasil pengolahan citra satelit NOAA, langkah apa saja yang harus saya lakukan dari awal smpai akhir, terima kasih dan mohon bantuannya mas

  39. Assalamualaikum mas, kalo untuk menemukan fitur margin kiri pada citra tulisan tangan, segmentasi yang digunakan apa mas ? image processing sebelumnya udah dilakukan grayscale, sm treshold (ngubah nilai jd 0 dn 1), makasih mas mohon bantuannya

  40. assalamualikum ka saya mau bertanya apakah citra setelah di segmentasi metode otsu citranya bisa ke rgb ulang ka tapi sdh terpisah antara objek dan latarnya ???? bgaiamana pemanggilan dan codingnya di matlab. trmksh sblmnya

    mohon di jawab ka.

  41. maaf mas mau tanya untuk penentuan nilai threshold diatas, menggunakan persamaan yang mana ya?

  42. assalamualikum mas mau nanya tentang evaluasi di citra ,untuk menigkatkan hasil evaluasi di segmentasi citra apa aja ya mas faktor pendukungnya? saya mendapatkan hasil evaluasi acc tinggi 95%+ tetapi yang rendah f1 score ama precesion hanya 81%, saya menggunakan model unet mas? mungkin ada saran untuk menaiki hasil evaluasinya dengan mengubah beberapa langkah atau model loss atau apalah yang bisa menaikan evalausinya mas? dataset saya usg jantung mas

  43. “carilah citra RGB dengan format jpg dengan dimensi maksimum 256×256, kemudian lakukan percobaan SEGMENTASI warna citra, minimal dibagi menjadi 4 segmen berdasarkan kecerahan” bisa saya minta penjelasan maksud soal ini ?

  44. Nafisah Azizah

    selamat siang, mas kalau untuk menampilkan nilai tresholding 1010101 seperti bagaimana ya ? soalnya saya sudah membuat programnya tapi blm ada hasil itu, karna hasilnya penting buat analisa tugas akhir saya untuk sebuah perbandingan. trimakasi

  45. Firman Telaumbanua

    Makasih mas, ini sangat membantu

  46. Firman Telaumbanua

    mas, saya mau bertanya cara menggunakan metode thresholding secra manual bagaimana mas? maksudnya itu secara matematisnya mas. saya masih bingung soalnya dan saya cari cari belum ada yang bahas tentang teori metode thresholding mulai dari contoh matematisnya dan lain lain.

    • Metode thresholding secara manual artinya adalah memvariasikan nilai threshold dengan cara trial and error
      Indikatornya adalah hasil segmentasi, dicari nilai threshold yang mampu memisahkan objek dan background dengan baik

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: