Multi-Level Thresholding


Multi-level thresholding merupakan metode segmentasi citra yang menggunakan dua atau lebih nilai threshold. Persamaan yang digunakan untuk mengkonversi nilai piksel citra grayscale menjadi biner pada metode multi-level thresholding adalah:

di mana
f(x,y) adalah citra grayscale
g(x,y) adalah citra biner
T1 adalah nilai threshold bawah
T2 adalah nilai threshold atas

Ilustrasi perubahan nilai piksel pada proses multi-level thresholding ditunjukkan pada gambar di bawah ini

Berikut ini merupakan contoh aplikasi pengolahan citra digital beserta pemrograman MATLAB untuk melakukan segmentasi warna kulit menggunakan metode multi-level thresholding.

Langkah-langkahnya adalah sebagai berikut:

1. Membaca citra RGB asli

clc; clear; close all; warning off all;

%read the image
I = imread('selena gomez.jpg');
figure; imshow(I);

2. Mengkonversi ruang warna citra yang semula berada pada ruang warna RGB menjadi YCbCr

out = uint8(zeros(size(I,1), size(I,2), size(I,3)));

%R,G,B components of the input image
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);

%Inverse of the Avg values of the R,G,B
mR = 1/(mean(R));
mG = 1/(mean(G));
mB = 1/(mean(B));

%Smallest Avg Value (MAX because we are dealing with the inverses)
maxRGB = max(mR, mG, mB);

%Calculate the scaling factors
mR = mR/maxRGB;
mG = mG/maxRGB;
mB = mB/maxRGB;

%Scale the values
out(:,:,1) = R*mR;
out(:,:,2) = G*mG;
out(:,:,3) = B*mB;

%Convert the image from RGB to YCbCr
img_ycbcr = rgb2ycbcr(out);
figure, imshow(img_ycbcr);

3. Mengekstrak masing-masing komponen Y, Cb, dan Cr

Y = img_ycbcr(:,:,1);
Cb = img_ycbcr(:,:,2);
Cr = img_ycbcr(:,:,3);

figure, imshow(Y);
figure, imshow(Cb);
figure, imshow(Cr);

Komponen Y

Komponen Cb

Komponen Cr

4. Melakukan multi-level thresholding pada komponen Cb dan Cr

Pada komponen Cb dilakukan thresholding dengan nilai T1 = 77 dan T2 = 127. Sedangkan pada komponen Cr dilakukan thresholding dengan nilai T1 = 133 dan T2 = 193

% Detect Skin
[r,c,v] = find(Cb>=77 && Cb<=127 && Cr>=133 && Cr<=193);
numind = size(r,1);

bin = zeros(size(I,1), size(I,2));

% Mark Skin Pixels
for i = 1:numind
    bin(r(i),c(i)) = 1;
end

figure, imshow(bin);

5. Melakukan operasi morfologi berupa filling holes untuk mengisi region objek yang kosong

bin = imfill(bin,'holes');
figure, imshow(bin);

6. Melakukan operasi morfologi berupa area opening untuk menghilangkan noise (region yang bukan objek)

bin = bwareaopen(bin,1000);
figure; imshow(bin);

7. Memvisualisasikan hasil segmentasi kulit pada citra RGB

R(~bin) = 0;
G(~bin) = 0;
B(~bin) = 0;
out = cat(3,R,G,B);
figure; imshow(out);

8. Memvisualisasikan hasil segmentasi kulit dalam bentuk bounding box

s = regionprops(bin,'BoundingBox');
bbox = cat(1, s.BoundingBox);

RGB = insertShape(I, 'rectangle', bbox, 'LineWidth', 5);
figure, imshow(RGB);

Hasil pengolahan citra di atas menunjukkan bahwa metode yang diterapkan mampu untuk melakukan deteksi warna kulit dengan baik. Hasil deteksi ini dapat dikembangkan lebih lanjut dalam tahapan computer vision.

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

Penerapan metode multi thresholding untuk mendeteksi warna kulit dapat dilihat pada video tutorial berikut ini:

Posted on July 26, 2017, in Pengenalan Pola, Pengolahan Citra and tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 7 Comments.

  1. Mas untuk multilevel thresholding ini kenapa menggunakan ruang warna YCbCr ya?

  2. Mas Adi
    Mau nanya mengenai SOM
    Bagaimana cara menampilkan pelabelan pada SOM secara otomatis yang berfungsi untuk membedakan suatu gambar normal dan tidak normal
    Terima kasih

  3. Minta sarannya segmentasi dan ekstraksi ciri yang dekat untuk membedakan pas photo yg layak/bukan pas photo menggunakan apa ya?
    Kasusnya pas photo tidak layak upload seperti pas photo yang difoto ulang, pas photo tidak simetris, ataupun background pemandangan.

  4. nilai T1 = 77 dan T2 = 127. Sedangkan pada komponen Cr dilakukan thresholding dengan nilai T1 = 133 dan T2 = 193 cara dapetin itunya bagaimana mas?

  5. Algoritma adalah serangkaian langkah atau aturan terstruktur yang dirancang untuk menyelesaikan suatu masalah atau mencapai suatu tujuan dalam komputasi dan pemrograman. Algoritma menjadi dasar dalam pengembangan perangkat lunak, membantu komputer memproses data dengan efisien dan efektif. Keberhasilan suatu program komputer seringkali tergantung pada desain dan implementasi algoritmanya.

Leave a comment