Background Subtraction (Foreground Detection)


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.

Background Subtraction Method (R. A. Setyawan, A. Basuki and C. Y. Wey, “Machine Vision-Based Urban Farming Growth Monitoring System,” 2020 10th Electrical Power, Electronics, Communications, Controls and Informatics Seminar (EECCIS), Malang, Indonesia, 2020, pp. 183-187, doi: 10.1109/EECCIS49483.2020.9263449.)

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);
Hasil operasi XOR

Konversi ke Citra Grayscale

Kita konversi citra hasil perbandingan ke citra grayscale untuk mempermudah analisis.

% Konversi Citra ke Grayscale
Out = rgb2gray(Out);
Hasil konversi citra HSV menjadi citra grayscale

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
Citra biner hasil deteksi obyek

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]);
Citra biner hasil filtering

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);
Citra biner hasil pembersihan obyek

Tampilan Hasil

Terakhir, kita dapat menampilkan hasil deteksi obyek.

% Tampilkan Hasil Pengenalan Obyek
imshow(L);
title('Obyek Terdeteksi (biner)');
Hasil deteksi obyek

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 , , , , , , , , , , , , . Bookmark the permalink. Leave a comment.

Leave a comment