Membuat Pendeteksi Wajah pasti sering kan atau sering kita sebut Image Proccessing on face picture kita akan bahas terlebih dahulu tentang metode yang digunakan
Apa yang dimaksud thresholding??
Thresholding merupakan salah satu cara untuk membedakan/mengelompokkan citra di mana prosesnya didasarkan pada perbedaan derajat keabuan citra atau grayscale.
Tujuan membedakan/mengelompokkan (segmentasi) citra adalah untuk memisahkan antara objek dengan background. Metode segmentasi citra dapat dikembangkan lebih lanjut agar diperoleh hasil segmentasi yang lebih baik lagi. atau mendeteksi objek melalui gambar. hasil akan seperti contoh dibawah ini
Hal yang perlu diperhatikan Dalam proses ini dibutuhkan suatu nilai batas yang disebut dengan nilai Threshold.
note :
Nilai intensitas citra yang lebih dari atau sama dengan nilai threshold akan diubah menjadi 1 (berwarna putih) sedangkan nilai intensitas citra yang kurang dari nilai threshold akan diubah menjadi 0 (berwana hitam). Sehingga citra keluaran dari hasil thresholding adalah berupa citra biner.
Silahkan open program matlat pilih buka new M.file
Perintah MATLAB yang digunakan untuk melakukan thresholding pada image proceccing di atas ialah:
clc; clear; close all; warning off all; %read the image I = imread('satomi.jpg'); figure; imshow(I); %gambar 1 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(mean(R))); mG = 1/(mean(mean(G))); mB = 1/(mean(mean(B))); %Smallest Avg Value (MAX because we are dealing with the inverses) maxRGB = max(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); %gambar 2 Y = img_ycbcr(:,:,1); Cb = img_ycbcr(:,:,2); Cr = img_ycbcr(:,:,3); figure, imshow(Y); %gambar 3 figure, imshow(Cb); %gambar 4 figure, imshow(Cr); %gambar 5 %Detect Skin [r,c,v] = find(Cb>=77 & Cb<=128 & Cr>=133 & Cr<=193); numind = size(r,1); bin = false(size(I,1), size(I,2)); %Mark Skin Pixels for i=1:numind bin(r(i),c(i)) = 1; end figure, imshow(bin); %gambar 6 % filling holes untuk mengisi objek yang berlubang bin = imfill(bin,'holes'); figure, imshow(bin); %gambar 7 bin = bwareaopen(bin,500); figure; imshow(bin); %gambar 8 R(~bin) = 0; G(~bin) = 0; B(~bin) = 0; out = cat(3,R,G,B); figure; imshow(out); %gambar 9 s = regionprops(bin,'BoundingBox'); bbox = cat(1, s.BoundingBox); RGB = insertShape(I, 'rectangle', bbox, 'LineWidth', 5); figure, imshow(RGB); %gambar 10
Silahkan download file satomi.jpg atau rubah dengan file gambar sesuai keinginan
Penjelasan :
%Detect Skin [r,c,v] = find(Cb>=77 & Cb<=128 & Cr>=133 & Cr<=193); numind = size(r,1);
Dalam nilai batas threshold bisa dirubah sesuai nilai data pixel yang kamu batasi
bisa dipantau pada bagian workspace pada program Matlab untuk berasan tiap gambar yang diproses
satomi.jpg |
Tutorial lengkap pada video dibawah
0 Comments