Background Subtraction (Foreground Detection)
Posted by adi pamungkas
Deteksi obyek menggunakan metode background subtraction adalah salah satu aplikasi penting dalam pengolahan citra dan visi komputer. Dalam kasus ini, akan dijelaskan sistem deteksi obyek pada citra menggunakan metode pengurangan background. Langkah-langkah ini umumnya digunakan dalam berbagai aplikasi seperti pemantauan keamanan, pengawasan lalu lintas, dan deteksi gerakan.

Langkah Pertama: Membaca Citra
Langkah pertama dalam deteksi obyek menggunakan metode background subtraction adalah membaca citra background dan citra current frame. Kode MATLAB berikut ini mengilustrasikan langkah ini:
clc; clear; close all;
% Baca Gambar Latar Belakang
Background = imread('background.jpg');
% Baca Frame Saat Ini
CurrentFrame = imread('current frame.jpg');


Konversi ke Mode Warna HSV
Selanjutnya, kita konversi kedua citra ke mode warna HSV (Hue, Saturation, Value) menggunakan fungsi rgb2hsv. Hal ini membantu dalam perbandingan tingkat keabuan citra dan pengenalan perubahan.
% Konversi Citra ke Mode Warna HSV
[Background_hsv] = rgb2hsv(Background);
[CurrentFrame_hsv] = rgb2hsv(CurrentFrame);


Perbandingan Citra
Selanjutnya, kita melakukan perbandingan antara kedua citra dengan menggunakan operasi XOR bit. Hasil dari operasi ini adalah perbedaan antara dua citra tersebut.
% Operasi XOR antara Citra Latar Belakang dan Saat Ini
Out = bitxor(Background_hsv, CurrentFrame_hsv);
Konversi ke Citra Grayscale
Kita konversi citra hasil perbandingan ke citra grayscale untuk mempermudah analisis.
% Konversi Citra ke Grayscale
Out = rgb2gray(Out);
Deteksi Obyek
Selanjutnya, kita lakukan deteksi obyek dengan mengubah citra menjadi citra biner berdasarkan ambang tertentu.
% Konversi ke Citra Biner
BinaryImage = false(size(Out));
for i = 1:size(Out, 1)
for j = 1:size(Out, 2)
if Out(i, j) > 0
BinaryImage(i, j) = 1;
else
BinaryImage(i, j) = 0;
end
end
end
Penghapusan Noise
Agar hasil lebih bersih, kita dapat menghapus noise dengan menerapkan median filter.
% Terapkan Median Filter untuk Menghilangkan Noise
FilteredImage = medfilt2(BinaryImage, [5 5]);
Labelisasi Obyek
Langkah berikutnya adalah memberikan label kepada obyek yang terdeteksi dalam citra menggunakan fungsi bwlabel.
% Labelisasi Obyek dalam Citra
[L, num] = bwlabel(FilteredImage);
Pembersihan Obyek
Untuk menghilangkan obyek yang kecil, kita dapat melakukan pembersihan dengan menghapus obyek berdasarkan area.
% Pembersihan Obyek yang Berisik
for i = 1:num
dd = regionprops(L(i), 'Area');
if (dd.Area < 1000)
L(L == i) = 0;
end
end
L = logical(L);
Tampilan Hasil
Terakhir, kita dapat menampilkan hasil deteksi obyek.
% Tampilkan Hasil Pengenalan Obyek
imshow(L);
title('Obyek Terdeteksi (biner)');
Kode tersebut mengilustrasikan langkah-langkah dasar dalam pengenalan obyek pada latar belakang dengan menggunakan analisis citra. Kita dapat menyesuaikan ambang dan parameter lainnya sesuai dengan kebutuhan untuk mendapatkan hasil yang optimal. Deteksi obyek dengan metode background subtraction adalah aplikasi penting dalam banyak bidang, dan pemahaman mengenai dasar-dasarnya adalah langkah awal yang penting dalam pemrosesan citra.
Source code beserta data lengkap pemrograman MATLAB di atas dapat diperoleh melalui halaman berikut ini: Source Code
Posted on September 7, 2023, in Pengolahan Citra and tagged analisis citra, background subtraction, citra hsv, Deteksi Gerakan, Filter Citra, Labelisasi Obyek, Latar Belakang, pemrosesan citra, Pengenalan Obyek, Penghapusan Noise, pengolahan gambar, segmentasi citra, visi komputer. Bookmark the permalink. Leave a comment.




















































Leave a comment
Comments 0