Segmentasi Citra dengan Metode Thresholding


Thresholding merupakan salah satu metode segmentasi citra yang memisahkan antara objek dengan background dalam suatu citra berdasarkan pada perbedaan tingkat kecerahannya atau gelap terang nya. Region citra yang cenderung gelap akan dibuat semakin gelap (hitam sempurna dengan nilai intensitas sebesar 0), sedangkan region citra yang cenderung terang akan dibuat semakin terang (putih sempurna dengan nilai intensitas sebesar 1). Oleh karena itu, keluaran dari proses segmentasi dengan metode thresholding adalah berupa citra biner dengan nilai intensitas piksel sebesar 0 atau 1. Setelah citra sudah tersegmentasi atau sudah berhasil dipisahkan objeknya dengan background, maka citra biner yang diperoleh dapat dijadikan sebagai masking utuk melakukan proses cropping sehingga diperoleh tampilan citra asli tanpa background atau dengan background yang dapat diubah-ubah.

Berikut ini merupakan contoh pemrograman matlab mengenai aplikasi dari metode thresholding untuk melakukan segmentasi terhadap citra digital. Setelah objek berhasil disegmentasi, proses selanjutnya adalah mengganti-ganti background citra rgb asli

Langkah pemrogramannya adalah sebagai berikut:
1. Membaca dan menampilkan citra asli

clc; clear; close all;

% Object
Img = imread('the mario bros.jpg');
figure, imshow(Img);

Sehingga diperoleh tampilan

2. Mengkonversi ruang warna citra RGB menjadi Grayscale

Gray = rgb2gray(Img);
figure, imshow(Img);

Citra grayscale yang dihasilkan adalah

3. Melakukan segmentasi citra menggunakan metode thresholding

bw = im2bw(Gray,.99);
figure, imshow(bw);

Hasil segmentasi yang diperoleh adalah

4. Melakukan operasi komplemen agar objek yang bernilai 1 (berwarna putih), sedangkan background yang bernilai 0 (berwarna hitam)

bw = imcomplement(bw);
figure, imshow(bw);

Hasil operasi komplemen

5. Melakukan operasi morfologi untuk menyempurnakan bentuk objek pada citra biner hasil segmentasi. Operasi morfologi yang dilakukan adalah berupa filling holes, area opening, dan erosi.

bw = imfill(bw,'holes');
bw = bwareaopen(bw,100);
str = strel('disk',5);
bw = imerode(bw,str);
figure, imshow(bw);

Hasil operasi morfologi yang diperoleh adalah

6. Membaca dan menampilkan citra yang akan digunakan sebagai background

% Background
Img2 = imread('background 1.jpg');
figure, imshow(Img2);

Tampilan citra background adalah

7. Mengimplementasikan citra biner hasil segmentasi untuk mengubah background citra asli

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);

R2 = Img2(:,:,1);
G2 = Img2(:,:,2);
B2 = Img2(:,:,3);

R2(bw) = R(bw);
G2(bw) = G(bw);
B2(bw) = B(bw);

RGB = cat(3,R2,G2,B2);
figure, imshow(RGB);

Hasil implementasi yang diperoleh adalah

Beberapa tampilan contoh implementasi penggantian background terhadap citra asli di antaranya adalah sebagai berikut:

File source code lengkap beserta citra pada pemrograman matlab di atas dapat diperoleh melalui halaman berikut ini: Source Code

Penerapan metode thresholding untuk deteksi citra bisa dilihat pada video tutorial berikut ini:

Posted on April 8, 2017, in Pengolahan Citra and tagged , , , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 29 Comments.

  1. Septyadi Agung N

    Mas minta tolong, ada reverensi untuk ekstraksi ciri tekstur dengan nilai GLCM gk? Sama ekstraksi ciri warna dari RGB ke nilai Hue, Saturation, Value. Saya lgi proses pembuatan program skripsi mas, judulnya Indentifikasi kesegaran ikan nila untuk pengolahan citranya pakek itu, mohon bantuannya, terima kasih

  2. Mas minta tolong, ada reverensi untuk ekstraksi suatu objek dari suatu bacground yang menggunakan layar hijau kah?
    mohon bantuannya, terima kasih.

  3. mas, minta tolong dong coding untuk merubah Background dari merah/putih menjadi Background hitam tetapi warna gambar/citra tetap seperti aslinya. trims mas adi atas bantuannya

  4. Kalo misalnya cuma mau diubah backgroundnya jadi warna merah misalnya. Itu gimana ya mas ? Jadi ga perlu ada gambar ke-2. Thx

  5. mas, kalau segmentasi menggunakan triclass tresholding itu bagaimana ya? pernah tau gak mas? mohon bantuannya ya mas, saya masih baru di matlab soalnya. trimakasih sebelumnya

  6. Mas saya mau tanya mengenai adaptive thresholding, apakah sama atau tidak dengan thresholding yang dijelaskan diatas? Kalo beda, pembedanya apa mas? Mohon pencerahannya terima kasih..

  7. gimana cara mengubah background yang banyak warna menjadi 1 warna. contohnya cover film ? terima kasih..

  8. Bermanfaat, coba kunjungi https://rootorial.com jika ingin belajar pemrograman android dan python

  9. windadwiwulanjari

    Assalamualaikum mas Adi, minta tolong mas cara merubah gambar .jpg ke biner tp cara manual tanpa pakai Matlab, caranya gimana ya?takut nanti ditanyain waktu sidang skripsi. Terimakasih

  10. windadwiwulanjari

    maksudnya merubah gambar .jpg ke biner tanpa menggunakan software mas, jadi pyuurr manual mas, apa bisa?

  11. windadwiwulanjari

    saya tanya lewat WA ya mas, boleh?

  12. Bg mau nanya nih… Global thresholding dan thresholding itu bedanya apa bg??? Apa ada contoh dr global thresholding bg???

  13. Terimakasih bg, jurnal jurnal tentang global thresholding ada bg??? TA saya segmentasi citra dengan metode global thresholding dan filtering bg….

  14. Andi Sadam Anan

    bang saya kok eror di proses akhir ya, gambar sama backgroundnya belum bisa nyatu

  15. Saya kok eror di proses akhir yagan padahal sudah ketik manual di editor

    • Source code di atas tidak bisa dijalankan jika hanya dicopypaste saja
      Source code lengkap bisa diperoleh melalui tokopedia sehingga bisa langsung dirunning dan dikembangkan

  16. Bang seandainya jika nilai threholdnya ditentukan sendiri, itu disebut metode threshold apa?

  1. Pingback: Tutorial Menggunakan MATLAB Online, Ga Perlu DOWNLOAD!! - DZTECHNO

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: