Deteksi Wajah Secara Realtime Menggunakan Matlab Deteksi Wajah Secara Realtime Menggunakan Matlab

Deteksi Wajah Secara Realtime Menggunakan Matlab

Deteksi Wajah Secara Realtime Menggunakan Matlab – Assalamualaikum teman teman, selamat datang di blog yang sederhana ini, Salam luar biasa. Baiklah diartikel kali ini saya akan membagikan sebuah program mendeteksi wajah menggunakan Matlab secara real time melalui kamera lapto atau webcam.

Program ini bekerja secara real time dengan kamera, dimana akan mendeteksi wajah kita. Staip program mendeteksi wajah, maka akan di beri kotak di wajah, seperti kamera smartphone pada umumnya.

PENTING : Untuk menjalankan program ini, pastikan teman teman sudah menginstal addons support untuk kamera di aplikasi Matlab anda.

Deteksi Wajah Secara Realtime Webcam

Deteksi wajah secara realtime adalah teknik yang digunakan untuk mengenali dan melacak wajah manusia dalam video atau gambar secara langsung. Teknik ini telah banyak digunakan dalam berbagai aplikasi seperti keamanan, pengenalan wajah, dan pengolahan citra.

Dalam artikel ini, kita akan membahas bagaimana menggunakan Matlab untuk melakukan deteksi wajah secara realtime. Matlab adalah bahasa pemrograman yang kuat dan populer yang sering digunakan untuk pengolahan citra dan pengenalan pola.

Baiklah berikut ini listing programmnya.

% Create the face detector object.
faceDetector = vision.CascadeObjectDetector();
% Create the point tracker object.
pointTracker = vision.PointTracker('MaxBidirectionalError', 2);
% Create the webcam object.
cam = webcam();
% Capture one frame to get its size.
videoFrame = snapshot(cam);
frameSize = size(videoFrame);
% Create the video player object.
videoPlayer = vision.VideoPlayer('Position', [100 100 [frameSize(2), frameSize(1)]+30]);
runLoop = true;
numPts = 0;
frameCount = 0;
while runLoop && frameCount < 400
% Get the next frame.
videoFrame = snapshot(cam);
videoFrameGray = rgb2gray(videoFrame);
frameCount = frameCount + 1;
if numPts < 10
% Detection mode.
bbox = faceDetector.step(videoFrameGray);
if ~isempty(bbox)
% Find corner points inside the detected region.
points = detectMinEigenFeatures(videoFrameGray, 'ROI', bbox(1, :));
% Re-initialize the point tracker.
xyPoints = points.Location;
numPts = size(xyPoints,1);
release(pointTracker);
initialize(pointTracker, xyPoints, videoFrameGray);
% Save a copy of the points.
oldPoints = xyPoints;
% Convert the rectangle represented as [x, y, w, h] into an
% M-by-2 matrix of [x,y] coordinates of the four corners. This
% is needed to be able to transform the bounding box to display
% the orientation of the face.
bboxPoints = bbox2points(bbox(1, :));
% Convert the box corners into the [x1 y1 x2 y2 x3 y3 x4 y4]
% format required by insertShape.
bboxPolygon = reshape(bboxPoints', 1, []);
% Display a bounding box around the detected face.
videoFrame = insertShape(videoFrame, 'Polygon', bboxPolygon, 'LineWidth', 3);
% Display detected corners.
videoFrame = insertMarker(videoFrame, xyPoints, '+', 'Color', 'white');
end
else
% Tracking mode.
[xyPoints, isFound] = step(pointTracker, videoFrameGray);
visiblePoints = xyPoints(isFound, :);
oldInliers = oldPoints(isFound, :);
numPts = size(visiblePoints, 1);
if numPts >= 10
% Estimate the geometric transformation between the old points
% and the new points.
[xform, oldInliers, visiblePoints] = estimateGeometricTransform(...
oldInliers, visiblePoints, 'similarity', 'MaxDistance', 4);
% Apply the transformation to the bounding box.
bboxPoints = transformPointsForward(xform, bboxPoints);
% Convert the box corners into the [x1 y1 x2 y2 x3 y3 x4 y4]
% format required by insertShape.
bboxPolygon = reshape(bboxPoints', 1, []);
% Display a bounding box around the face being tracked.
videoFrame = insertShape(videoFrame, 'Polygon', bboxPolygon, 'LineWidth', 3);
% Display tracked points.
videoFrame = insertMarker(videoFrame, visiblePoints, '+', 'Color', 'white');
% Reset the points.
oldPoints = visiblePoints;
setPoints(pointTracker, oldPoints);
end
end
% Display the annotated video frame using the video player object.
step(videoPlayer, videoFrame);
% Check whether the video player window has been closed.
runLoop = isOpen(videoPlayer);
end
% Clean up.
clear cam;
release(videoPlayer);
release(pointTracker);
release(faceDetector);

Adapun hasil outputnya seperti gambar dibawah ini, maaf ya fotonya jelek, soalnya saya belum mandi.

Coding Deteksi Wajah Menggunakan Matlab

Selain program sebelumnya, kita juga bisa melakukan deteski wajah dengan cara mengimpor file video rekaman yang ada menampilkan wajah.

Baca Juga :   Deteksi Warna RGB Menggunakan Matlab Secara Realtime

Langkah-langkah Deteksi Wajah Menggunakan Matlab

Berikut adalah langkah-langkah untuk melakukan deteksi wajah secara realtime menggunakan Matlab:

1. Persiapan

Siapkan video atau gambar yang akan dijadikan bahwan untuk mendeteksi wajah

2. Menggunakan Library Computer Vision Toolbox

Setelah Matlab terinstal, Anda perlu mengaktifkan Computer Vision Toolbox. Buka Matlab dan pilih “Add-Ons” di menu utama. Cari “Computer Vision Toolbox” dan instal jika belum terpasang.

Anda dapat menggunakan algoritma deteksi wajah yang sudah ada, seperti Cascade Object Detector atau algoritma deteksi wajah berbasis deep learning seperti YOLO (You Only Look Once) atau SSD (Single Shot MultiBox Detector).

3. Mengimpor Gambar/Video

Langkah selanjutnya adalah mengimpor gambar yang akan digunakan untuk deteksi wajah. Anda dapat menggunakan gambar yang sudah ada atau mengambil gambar baru menggunakan webcam Anda. Untuk mengimpor gambar, gunakan fungsi “imread” dalam Matlab.

4. Deteksi Wajah

Sekarang, kita akan menggunakan fungsi “vision.CascadeObjectDetector” dari Computer Vision Toolbox untuk mendeteksi wajah dalam gambar. Fungsi ini menggunakan algoritma deteksi wajah yang telah terlatih sebelumnya.

5. Menampilkan Hasil

Terakhir, kita akan menampilkan hasil deteksi wajah secara realtime. Gunakan fungsi “insertObjectAnnotation” untuk menandai wajah yang terdeteksi dalam gambar. Anda juga dapat menggunakan fungsi “imshow” untuk menampilkan gambar dengan wajah yang ditandai.

6. Contoh Coding Deteksi wajah di Matlab

Berikut adalah contoh menggunakan Cascade Object Detector (Viola-Jones) yang disediakan oleh MATLAB:

% Membuat objek detektor wajah
faceDetector = vision.CascadeObjectDetector();

% Membuat objek untuk menampilkan video
videoFileReader = vision.VideoFileReader('NamaFileVideo.mp4');
videoPlayer = vision.VideoPlayer;

while ~isDone(videoFileReader)
    % Membaca frame dari video
    videoFrame = step(videoFileReader);
    
    % Mendeteksi wajah pada frame
    bbox = step(faceDetector, videoFrame);
    
    % Menggambar kotak di sekitar wajah yang terdeteksi
    videoFrame = insertShape(videoFrame, 'Rectangle', bbox);
    
    % Menampilkan frame yang telah diproses
    step(videoPlayer, videoFrame);
end

% Melepaskan objek
release(videoFileReader);
release(videoPlayer);

Jangan lupa untuk mengganti 'NamaFileVideo.mp4' dengan nama dan path file video yang telah kalian siapkan. Perlu dicatat bahwa ini adalah contoh sederhana dan Anda mungkin perlu menyesuaikan parameter detektor wajah atau melakukan praproses tambahan tergantung pada situasi spesifik.

Baca Juga :   Metode Bisection adalah: Kelebihan, Kekurangan dan Contoh Program

Selain menggunakan Cascade Object Detector, Anda juga dapat menggunakan pendekatan berbasis deep learning seperti YOLO atau SSD. Untuk menggunakan detektor berbasis deep learning, Anda mungkin perlu menginstal MATLAB Deep Learning Toolbox dan memuat model deteksi yang sesuai.

% Contoh menggunakan model YOLOv2
yoloNet = load('yolov2ResNet50VehicleExample.mat'); % Ganti dengan path model yang sesuai
detector = yoloNet.detector;

videoFileReader = vision.VideoFileReader('NamaFileVideo.mp4');
videoPlayer = vision.VideoPlayer;

while ~isDone(videoFileReader)
    videoFrame = step(videoFileReader);
    
    [bboxes, scores, labels] = detect(detector, videoFrame);
    
    % Tampilkan hasil deteksi
    videoFrame = insertObjectAnnotation(videoFrame, 'rectangle', bboxes, cellstr(labels));
    
    step(videoPlayer, videoFrame);
end

release(videoFileReader);
release(videoPlayer);

Demikianlah artikel kita kali ini, jangan lupa kasih saran memalui kolom komentar, dan jangan lupa share dan berlangganan artikel di blog ini.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *