Skin Filter Dengan Matlab
Dalam pengolahan citra digital, adakalanya kita butuh mereduksi warna kulit manusia, sehingga bisa lebih menyederhanakan dan mengefisienkan proses komputasi. untuk itu digunakanlah algoritma skin detection untuk menjustifikasi apakah suatu piksel merupakan representasi warna kulit atau bukan. Adapun kriteria warna kulit, yaitu sebagai berikut:
1. (red > 95) and (green > 40) and (blue > 20)
2. dan (max(red,green,blue) – min(red,green,blue)) > 5
3. dan (|red – green| > 15)
4. dan (red > green) and (red > blue)
Dalam kesempatan kali ini, mari kita coba implementasikan algoritma di atas untuk melakukan reduksi piksel warna kulit. Tool yang digunakan di sini adalah Matlab, dan berikut adalah m-file untuk fungsi skin_filter :
function [ output_image ] = skin_filter( im )
%skin filter function
% yang termasuk kategori warna kulit yaitu:
% (red > 95) and (green > 40) and (blue > 20)
% dan (nilaimaxRGB – nilaiminRGB > 5)
% dan (|red – green| > 15)
% dan (red > green) and (red > blue)
ukuran = size(im);
baris = ukuran(1);
kolom = ukuran(2);
for i = 1:baris
for j = 1: kolom
red = im(i,j,1);
green = im(i,j,2);
blue = im(i,j,3);
maxrgb = max([red green blue]);
minrgb = min([red green blue]);
kriteria1 = (red > 95) && (green > 40) && (blue > 20);
kriteria2 = (maxrgb - minrgb) > 5;
kriteria3 = abs(red-green) > 15;
kriteria4 = (red > green) && (red>blue);
warna_kulit = kriteria1 && kriteria2 && kriteria3 && kriteria4;
if warna_kulit
im(i,j,:) =0;
end
end
end
output_image = im;
end
Untuk menggunakan fungsi ini, simpan file skin_filter.m di c:\ dan kemudian silahkan ikuti langkah berikut:
% pindahkan directory kerja ke c:\
>> cd c:
% baca file image, misal nama filenya: c:\gambar_manusia.jpg
>> gambar = imread('c:\gambar_manusia.jpg');
% Coba Tampilkan gambar sebelum diproses
>> imshow(gambar)
% Proses gambar dengan skin_filter
>> hasil = skin_filter(gambar);
% Tampilkan hasil proses
>> imshow(hasil)
Gimana? Berhasil? Mudah2an artikel ini bermanfaat.
Salam.
….

