Background Subtraction (Foreground Detection)
Background Subtraction, yang juga dikenal sebagai Foreground Detection, adalah salah satu teknik pada bidang pengolahan citra dan computer vision yang bertujuan untuk mendeteksi/mengambil foreground dari background untuk diproses lebih lanjut (seperti pada proses object recognition dll). Umumnya foreground yang diinginkan adalah berupa objek manusia, mobil, teks, dll. Background subtraction merupakan metode yang umumnya digunakan untuk mendeteksi objek bergerak pada video dari kamera statis (stationary camera). Proses deteksi objek bergerak dengan metode background subtraction didasarkan pada perbedaan antara background referensi dengan frame. Contoh citra background referensi dan citra current frame ditunjukkan pada gambar di bawah ini:
Berikut ini merupakan contoh aplikasi pemrograman matlab mengenai background subtraction (foreground detection) melalui transformasi ruang warna RGB menjadi HSV.
File source code lengkap beserta citra mengenai background subtraction (foreground detection) dapat diperoleh melalui halaman berikut ini: Source Code
Sedangkan tampilan source code nya adalah:
clc; clear; close all; %Read Background Image Background = imread('background.jpg'); %Read Current Frame CurrentFrame = imread('current frame.jpg'); % Display Background and Foreground subplot(2,2,1);imshow(Background);title('Background'); subplot(2,2,2);imshow(CurrentFrame);title('Current Frame'); %Convert RGB 2 HSV Color conversion [Background_hsv] = round(rgb2hsv(Background)); [CurrentFrame_hsv] = round(rgb2hsv(CurrentFrame)); Out = bitxor(Background_hsv,CurrentFrame_hsv); %Convert RGB 2 GRAY Out=rgb2gray(Out); %Read Rows and Columns of the Image [rows, columns] = size(Out); %Convert to Binary Image BinaryImage = false(rows,columns); for i=1:rows for j=1:columns if Out(i,j) >0 BinaryImage(i,j)=1; else BinaryImage(i,j)=0; end end end %Apply Median filter to remove Noise FilteredImage = medfilt2(BinaryImage,[5 5]); %Boundary Label the Filtered Image [L, num] = bwlabel(FilteredImage); STATS = regionprops(L,'all'); cc = []; removed = 0; %Remove the noisy regions for i = 1:num dd = STATS(i).Area; if (dd < 1000) L(L==i)=0; removed = removed + 1; num = num-1; end end L = logical(L); [row,col] = find(L==1); h_bw = imcrop(CurrentFrame,[min(col) min(row) max(col)-min(col) max(row)-min(row)]); [a,b] = size(L); mask = false(a,b); mask(min(row):max(row),min(col):max(col)) = 1; mask = bwperim(mask,8); mask = imdilate(mask,strel('square',5)); R = CurrentFrame(:,:,1); G = CurrentFrame(:,:,2); B = CurrentFrame(:,:,3); R(mask) = 255; G(mask) = 0; B(mask) = 0; RGB = cat(3,R,G,B); %Display Result subplot(2,2,3);imshow(L);title('Detected Foreground (binary)'); subplot(2,2,4);imshow(RGB);title('Detected Foreground (RGB)');
Posted on October 12, 2015, in Pengenalan Pola, Pengolahan Citra, Pengolahan Video and tagged aplikasi pengolahan citra digital menggunakan matlab, background subtraction, cara membuat aplikasi pengolahan citra digital matlab, cara membuat background subtraction menggunakan matlab, cara membuat video processing matlab, coding matlab pengolahan citra digital, coding matlab pengolahan video, contoh aplikasi matlab pengolahan video, contoh aplikasi matlab sederhana, contoh aplikasi pengolahan citra digital menggunakan matlab, contoh background subtraction menggunakan matlab, contoh video processing menggunakan matlab, deteksi foreground, foreground detection, foreground detection menggunakan matlab, frame extraction, hsv colorspace, image processing, source code matlab pengolahan citra digital, substraksi background, video processing matlab. Bookmark the permalink. 44 Comments.
yo. salam kenal gan. sebagai sesama penulis bidang matlab.
mau tanya gan, itu kan foreground detectionnya kalo liat dari langkahnya, harus ada foto background tanpa foreground. kira2 ada gak metode yg bisa deteksi foreground kalo gak ada foto backgroundnya dulu.
Salam kenal juga mas deki satria
Ada mas, saya ada source code nya, kalau tertarik, bisa saya kirimkan via email
Langkah pertamanya scanning seluruh frame video, kemudian dicari frame rata-ratanya, sehingga diperoleh citra background. Setelah itu dilakukan foreground detection
saya tertarik mas sama yang video, bila berkenan mohon bantuan juga mas terkait tugas akhir saya. Namun menggunakan metode running gaussian average, apakah bisa berdiskusi mengenai ini mas ? terima kasih banyak
email : emush1994@gmail.com
permisi gan, saya boleh minta sc programnnya gak? kalo boleh bisa kirim ke email saya ya ahmad.imam22@gmail.com
makasih gan 🙂
the file has been sent
Hallo kak, saya boleh minta source codenya nga?
dan mau tanya, ini di koding di matlab apa compileir lainnya kak?
kalau boleh, mohon dikirim ke ciptaantuhanyme@gmail.com
Punten kang, itu code diatas line 50 : if (dd < 1000)
maksudnya apa ya ? soalnya eror disitu, dan baru liat struktur seperti itu 😀
terima kasih mas atas masukannya, sdh saya revisi
sama sama, mas maaf bisa cek email masnya ? saya tanya sesuatu mas lewat email
oke mas
Maaf mas saya lupa, email saya : emush1994@gmail.com
Saya sudah email 2 kali mas 😀
Oke mas
maaf mas, boleh tanya2 seputar pengolahan citra digital menggunakan matlab gak? klu boleh, ini email saya khairilfitryadi@gmail.com. terimakasih sebelumnya
oke mas
alhamdulillah,,,, sangat bermanfaat sekali 😀
terima kasih, bisa konsultasi masalah citra kan mas??? 🙂
Alhamdulillah,
Insha Allah sebisa saya, saya bantu mas
assalammualaikum mas… terimakasih webnya sangat membantu sekali.
Melihat comment diatas, mas membahas tentang video, saya tertarik di pengolahan video tersebut. Kalau mas tidak berkeberatan, boleh tidak saya minta source code nya? tolong kirim ke email hendrapriyanamirantika99@gmail.com
Sebelumnya, saya mengucapkan terimakasih, dan di tunggu postingan bermanfaat selanjutnya mas…
Wassalammualaikum….
Waalaikumsalam Wr. Wb.
Sama-sama mas, semoga bermanfaat
File background extraction bisa diunduh melalui alamat http://www.mathworks.com/matlabcentral/fileexchange/41033-background-frame-extraction
terimakasih mas, sudah saya buka dan membantu saya banget, sejalan sama tugas akhir saya… sekali lagi terimakasih ya mas…
sama sama mas
semoga sukses tugas akhirnya
Maaf mas, apa boleh tanya-tanya mengenai video processing menggunakan matlab? kebetulan skripsi saya membahas video processing menggunakan matlab terutama dalam bidang object tracking/detection dan estimating velocities, akan sangat membantu jika kita bisa berdiskusi mengenai hal tsb. email saya novia.angelita@yahoo.com
Terima kasih sebelumnya
maaf mas, boleh minta referensi tentang background subtraction-nya? saya perlu untuk pembahasan skripsi saya.
kalo mas berkenan memberikan referensinya silahkan email ke bayufajar22@gmail.com terima kasih sebelumnya.
saat ini jurnal untuk materi tsb sedang dalam tahap review mas, belum dalam tahap publish, silakan kalau ingin dijadikan sebagai metode penelitian
Mas apakah ada ebook tentang penjalasan metode ini , kalau mas berkenan share ke email saya mas heymrreza@gmail.com untuk tambahan referensi Bab 2 saya
ada mas
mas saya kurang paham tentang tahapan-tahapan untuk metode background subtraction untuk referensi TA saya, mohon di share melalui email saya choirunnisak20@gmail.com
sekalian juga ebook yang menjelaskan metode ini.. terima kasih..
Assalamualaikum ka’
Kalau mendeteksi warna bibir..ini bisa gk ka??
Ini email sy ka’ plakplokk@gmail.com
Maaf kalau bisa saya juga mau tanya bnyk hal..yg brkaitan dengan matlab.
mau tanya itu untuk yang median filtering menghilangkan objek yang luasanya kurang dari 1000, maksudnya 1000 apa ya satuanya mas?
satuan dari luas tersebut adalah piksel
mas bolehkah saya meminta referensi dan ebook untuk TA saya mengnai metode background substraction. bisa minta tolong kirim ke ciwaway@gmail.com terima kasih mas sebelumnya 🙂
Assalammu’alaikum kak. mau tanya apakah ada sourcecode untuk menghitung kecepatan kendaraan tidak ya? untuk tugas akhir saya. kebetulan saya sudah coba deteksinya cuma centroid yang dihitung dari objek yang bergerak hanya satu. sedangkan objek dalam video tersebut banyak. sehingga ketika dihitung kecepatannya tiap bounding box itu semua nilainya sama. mohon bantuannya kak. terimakasih..
Waalaikumsalam
Setelah objek dideteksi maka harus ditracking terlebih dahulu
Setelah itu bisa dilakukan penghitungan kecepatan
kak, maaf mau tanya, itu kan foreground detectionnya kalau dilihat dari langkahnya, harus ada foto background tanpa foreground. kira2 ada nggak metode yg bisa deteksi foreground kalau nggak ada foto backgroundnya dulu
soalnya objek di skripsi saya terllau mepet(tanaman kubis), mohon bantuannya kak, makasih
Sesuai dengan nama metode yg digunakan yaitu background subtraction maka harus ada background nya
Jika tidak ada backgroundnya maka bisa membuat background terlebih dahulu
Utk mendapatkan background bisa dipelajari pada halaman berikut ini
https://pemrogramanmatlab.com/2016/07/06/pengolahan-video-untuk-mendeteksi-objek-bergerak-dengan-metode-background-subtraction/
Maaf Bang, saya mau nanya
Kalo kita deteksi suatu objek itu, kita harus punya citra background nya ya kyk contoh d atas?
Atau kita bisa deteksi lgsg dari satu citra bang, gk peru citra background?
Mohon Bantuan nya bang
Jika ingin menggunakan metode background subtraction maka harus ada citra backgroundnya
Jika tidak punya citra background maka bisa membuat backgroundnya seperti yg ada pada materi berikut
https://pemrogramanmatlab.com/2016/07/06/pengolahan-video-untuk-mendeteksi-objek-bergerak-dengan-metode-background-subtraction/
bacground subtraction bisa di pakai di gambar atau hanya untuk vidio mas ?? trimakasi
Gambar atau video prinsipnya sama saja
Video itu merupakan kumpulan dari beberapa gambar
berarti cara nyari backgroundnnya sama seperti pada gambar vidio ya mas
Iya betul sama seperti itu
Mas saya mau bertanya TA saya, cara mendeteksi hujan berdasarkan rain streaks pada gambar bisa menggunakan background substraction ini?
Bisa dicoba diimplementasikan