Background Subtraction dengan Metode Pengurangan Citra Grayscale


Deteksi kendaraan adalah salah satu tahapan yang harus dilakukan dalam proses identifikasi kendaraan. Contoh aplikasi pemrograman matlab untuk deteksi kendaraan dengan metode background subtraction pengurangan citra grayscale adalah sebagai berikut:

Langkah-langkahnya yaitu:

No Proses Background Frame
1 Baca Citra    
2 Konversi ruang warna RGB menjadi Grayscale    
3 Operasi pengurangan antara background dengan frame  
4 Thresholding dengan metode Otsu  
5 Operasi filling holes  
6 Menghilangkan obyek yang luasannya kurang dari 5000  
7 Membuat masking berdasarkan hasil deteksi foreground  
8 Menampilkan hasil deteksi foreground pada frame  
9 Menampilkan cropping hasil deteksi foreground  

File source code lengkap beserta citra untuk deteksi kendaraan dengan metode background subtraction pengurangan citra grayscale dapat diperoleh melalui halaman berikut ini: Source Code

Sedangkan tampilan source codenya adalah:

clc;
close all;
clear;

% Membaca citra background
Background=imread('background.jpg');

% Membaca citra current frame
CurrentFrame=imread('original.jpg');

% Mengkonversi citra menjadi grayscale
Background_gray = rgb2gray(Background);
CurrentFrame_gray = rgb2gray(CurrentFrame);

% Pengurangan citra grayscale
Subtraction = (double(Background_gray)-double(CurrentFrame_gray));
Min_S = min(Subtraction(:));
Max_S = max(Subtraction(:));
Subtraction = ((Subtraction-Min_S)/(Max_S-Min_S))*255;
Subtraction = uint8(Subtraction);

% Mengkonversi citra menjadi biner menggunakan metode Otsu
Subtraction = ~im2bw(Subtraction,graythresh(Subtraction));

% Operasi Morfologi
bw = imfill(Subtraction,'holes');
bw = bwareaopen(bw,5000);

% Pembuatan masking dan proses cropping
[row,col] = find(bw==1);
h_bw = imcrop(CurrentFrame,[min(col) min(row) max(col)-min(col) max(row)-min(row)]);

[a,b] = size(bw);
mask = false(a,b);
mask(min(row):max(row),min(col):max(col)) = 1;
mask =  bwperim(mask,8);
mask = imdilate(mask,strel('square',3));

R = CurrentFrame(:,:,1);
G = CurrentFrame(:,:,2);
B = CurrentFrame(:,:,3);

R(mask) = 255;
G(mask) = 0;
B(mask) = 0;

RGB = cat(3,R,G,B);
figure, imshow(RGB);

Save

Penerapan metode background subtraction untuk mendeteksi objek dapat dilihat pada video tutorial berikut ini:

Posted on February 9, 2016, in Pengenalan Pola, Pengolahan Citra, Pengolahan Video and tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 40 Comments.

  1. mas punya refrensi mendeteksi objek tangan ga?
    trims sblmnya..

  2. Mas punya referensi perhitungan kecepatan kendaraan dengan matlab ? Trimakasih sblmnya..

  3. Misi.. mas punya referensi untuk perhitungan kecepatan kendaraan menggunkan matlab gak? Trimakasih sblmnya..

    • Algoritmanya:
      1. Tetapkan lintasan kendaraan (pada video) yang nantinya digunakan untuk menghitung kecepatan kendaraan
      2. Hitung panjang lintasan kendaraan pada video dalam satuan piksel
      3. Konversikan satuan panjang lintasan tsb menjadi meter dengan cara membaginya dengan resolusi spasial
      4. Hitung waktu yang dibutuhkan kendaraan untuk melintasi lintasan (pada video) dengan cara membagi banyak frame kendaraan pada lintasan dengan frame rate video
      5. Hitung kecepatan kendaraan dengan cara membagi panjang lintasan kendaraan (dalam satuan meter) dengan waktu tempuh (dalam satuan detik)

  4. Misi mas, Sy kesulitan dalm membuat lintasan di file videonya. Apa ada referensinya? Trimakasih seblmnya.

  5. mas jadi gini, sy lg ada project tugas akhir tentang Traffic light otomatis berdasar kepadatan jalan raya.
    jadi kepengen nya saya, proses pengambilan gambar citra jalan raya itu saat counter traffic light 5 detik terakhir lampu merah.
    bisa bantu saya code nya ga ya mas? makasih

  6. mas, untuk penghitungan gmn? kayak mobil dari atas ke bawah +1 kalau dari bawah ke atas -1 itu code-nya gmn?

  7. mas kalau kalau identifikasi sebuah objek menggunakan canny bisa ?

  8. mas untuk menngunkan foto sebagai latar belakang pada toolls AXES bagaimana?

  9. mas untuk mengidentifikasi nama objek pada suatu citra itu caranya gimana mas?

  10. Mas punya aplikasi matlab gak ?

  11. mas apakah objek mobilnya ini bisa real time dari kamera? mohon pencerahaannya mas terima kasih 🙂

  12. muchammad irwan

    mas ada nomor whatsapnya?? saya ingin konsultasi untuk pengaplikasian secara realtime dengan kamera mas/…

  13. mas, saya lagi ada project tugas akhir tentang klasifikasi kendaraan mobil dan video secara video menggunakan teknik GMM

  14. Assalamu’alaikum
    mas saya lagi ada project akhir mengukur panjang antrian kendaraan saat macet di lampu merah, itu kira2 caranya gimana ya mas membuat garis dari panjang antrian kendaraan dan mengetahui panjangnya dalam satuan panjang seperti cm
    Syukron

    • Waalaikumsalam
      Untuk membuat garis pada citra dapat menggunakan fungsi insertline
      Sedangkan untuk menghitung panjang antrian dapat mengukurnya terlebih dahulu dengan satuan piksel kemudian membagi hasilnya dengan resolusi spasial sehingga diperoleh panjang antrian dalam satuan cm atau meter

  15. Assalamu’alaikum..
    Kalau tracking object mobilnya bagaimana ya mas?

  16. mantap mas sebagai referensi proyek ane,sekalian mau nanya kalau misalkan mobilnya berwarna hitam atau gelap apakah masih bisa terdeteksi? hanya penasaran

  17. assalamualikum mas adi, mau nanya source code pelabelan boundix box pada lebih dari satu objek? bisa nggak ya?

  18. untuk deteksi plat nomor kendaraan bisa diberikan referensi membuatnya ? soalnya saya stuck di OCR jdi saat menampilkan hasilnya tdk da atau error

  19. Leonardus Sandy Ade Putra

    Mas bagaimana ya untuk deteksi plat kendaraan untuk pintu parkir ?

  20. kalau mnghtiung luas permukaan ikan gmna mas menggunakan metode otsu ?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: