Masih melanjutkan tulisan sebelumnya, sengaja disambung karena isinya sangat sederhana (gatal kalau tidak ditulis). LBP (Local Binary Pattern) atau Pola Biner Lokal merupakan salah satu informasi yang dapat dianalisis dari citra. Informasi LBP biasanya digunakan sebagai deksriptor dari tekstur. Salah satu kelebihan dari LBP adalah sifatnya yang invarian terhadap perubahan fotometri dari objek yang sama karena sifatnya yang merupakan ukuran intensitas relatif suatu piksel dengan intensitas piksel di sekitarnya.
istilah biner berasal dari representasi kenisbian intensitas piksel tetangga terhadap piksel yang sedang diproses. LBP dihitung dengan mengasosiasikan sejumlah ketetanggaan dengan bit-bit pada angka. Misalkan, untuk area ketetanggaan 3×3 piksel maka piksel yang ada di tengah akan memiliki tetangga sebanyak 8 piksel. Suatu posisi bit akan bernilai 1 jika intensitas piksel tetangga lebih besar daripada piksel yang sedang diproses (piksel tengah). Setiap piksel tetangga diasosiasikan dengan satu posisi bit sehingga untuk ketetanggan 3×3 (8 tetangga) tersebut maka setiap piksel yang diproses akan memiliki variasi tetangga sebanyak 2^8 = 255 kombinasi.
Implementasi algoritma menghitung fitur LBP diperlihatkan pada kode (python) berikut.
import cv def calc_lbp(im): """ calculate LBP (Local Binary Pattern) image N8 neighborhood """ sz = cv.GetSize(im) gr = cv.CreateImage(sz, 8, 1) lbp = cv.CreateImage(sz, 8, 1) #convert to grayscale cv.CvtColor(im, gr, cv.CV_BGR2GRAY) LBPMASK = [(0,-1),(1,-1),(1,0),(1,1),(0,1),(-1,-1),(-1,0),(-1,1)] for y in xrange(1, sz[1]-2): for x in xrange(1, sz[0]-2): n = 0 gv = gr[y,x] for i in xrange(len(LBPMASK)): m = LBPMASK[i] if gr[y+m[1], x+m[0]]>gv: n += 1 << i lbp[y,x] = n return lbp if __name__ == '__main__': im = cv.LoadImage('jalan2.jpg') lbpim = calc_lbp(im) cv.ShowImage('lbp', lbpim) key = cv.WaitKey(0)
Untuk menunjukkan efek dari kode di atas, saya akan menggunakan gambar yang sama dengan tulisan sebelumnya.
Dalam beberapa paper yang saya baca, fitur LBP ini dikombinasikan dengan fitur HOG untuk menghasilkan sistem pendeteksi yang lebih akurat. Pemrosesan lebih lanjut dengan PCA dilakukan untuk mereduksi dimensi vektor yang perlu diproses untuk membandingkan dan ternyata (di paper yang saya baca) melaporkan bahwa hasil pendeteksiannya menjadi lebih akurat. Mari kita buktikan apakah laporan itu benar atau tidak. tunggu tulisan selanjutnya!
“fitur LBP ini dikombinasikan dengan fitur HOG untuk menghasilkan sistem pendeteksi yang lebih akurat” — ditunggu mas artikel selanjutnya..
Artikel yang menarik, saya ingin tahu artikel mana yang mengatakan bila fitur LBP dikombinasikan dengan HOG menjadi lebih baik?