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 algoritma matlab pengolahan citra, cara melakukan thresholding pada citra grayscale, cara membuat thresholding citra digital, cara mengkonversi citra grayscale, citra biner, citra grayscale, citra RGB, citra ycbcr, dasar-dasar pengolahan citra digital, definisi citra, definisi multi thresholding, definisi thresholding, definisi thresholding citra, digital image processing, image processing, koding matlab sederhana pengolahan citra, multi level thresholding, multi level thresholding adalah, multi thresholding, multi thresholding adalah, Pengolahan Citra Digital, ruang warna citra rgb, ruang warna citra ycbcr, segmentasi citra, segmentasi warna kulit, thresholding adalah, thresholding citra, thresholding citra digital. Bookmark the permalink. 6 Comments.
Mas untuk multilevel thresholding ini kenapa menggunakan ruang warna YCbCr ya?
multilevel thresholding dapat diaplikasikan ke dalam berbagai ruang warna citra seperti RGB, HSI, HSV, YCbCr, L*a*b, ntsc, yiq, dll
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
semoga ke depan terdapat materi untuk menampilkan pelabelan pada SOM secara otomatis yang berfungsi untuk membedakan suatu gambar normal dan tidak normal
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.
nilai T1 = 77 dan T2 = 127. Sedangkan pada komponen Cr dilakukan thresholding dengan nilai T1 = 133 dan T2 = 193 cara dapetin itunya bagaimana mas?