Lompat ke konten Lompat ke sidebar Lompat ke footer

Pengertian Histogram of Oriented Gradients (HOG) dan Cara Hitungnya

Deskriptor fitur merupakan sebuah representasi gambar dengan mengekstraksi informasi yang berguna dan mengabaikan informasi yang tidak perlu dari sebuah gambar.

Salah satu deskriptor fitur yang biasa digunakan untuk mendeteksi objek yakni Histogram of Oriented Gradients. 

Apa itu Histogram of Oriented Gradients? Yuk, simak artikel ini karena kita akan membahas lebih detail mengenai deskriptor fitur HOG.

Daftar Isi

Pengertian HOG

Histogram of Oriented Gradient atau singkatnya HOG adalah salah satu pendeteksian objek di computer vision dan image processing.

Secara umum, metode HOG merupakan sebuah metode yang dijalankan dengan menghitung kemunculan orientasi gradien pada bagian-bagian lokal dari suatu gambar.

Bagian-bagian 'lokal' yang dimaksud, yaitu gambar lengkap dipecah menjadi beberapa wilayah yang lebih kecil dan menghitung nilai gradien serta orientasinya. Penggunaan metode ini membutuhkan dataset yang digunakan sebagai data latih.

Pengertian Histogram of Oriented Gradients (HOG) dan Cara Perhitungannya

Deskriptor HOG berfokus pada struktur atau bentuk suatu objek. HOG tidak hanya mendeteksi tetapi juga mampu memberikan arah tepi dengan mengekstraksi gradien dan orientasi dari tepi.

Kemudian HOG akan menghasilkan histogram untuk masing-masing wilayah secara terpisah. Histogram dibuat menggunakan gradien dan orientasi nilai piksel.

Biasanya, fitur deskriptor mengonversi gambar berukuran lebar x tinggi x 3 (channel) menjadi vektor atau array fitur dengan panjang n.

Pada deskriptor fitur HOG, berdasarkan pada paper aslinya masukan gambar memiliki ukuran 64 x 128 x 3 dan keluarannya berupa vektor fitur dengan panjang 3780. Namun, deskriptor fitur HOG juga dapat dihitung untuk ukuran yang lain. 

Langkah Perhitungan Fitur HOG

Langkah 1: Preprocessing

Langkah pertama yang dilakukan dengan mengambil gambar masukan yang diinginkan untuk menghitung fitur HOG. Kemudian mengubah ukuran gambar dengan rasio 1:2 (lebar:tinggi) yakni 64 x 128 piksel.

Ukuran gambar sebaiknya 64 x 128 piksel untuk membagi gambar menjadi 8 x 8 dan 16 x 16 saat mengekstrak fitur.

Dimensi ini digunakan dalam paper dan disarankan oleh penulis sebagai tujuan utama untuk mendapatkan hasil yang lebih baik pada tugas mendeteksi pejalan kaki.

Untuk langkah pertama dapat dilihat pada gambar di bawah ini.

Sumber: learnopencv.com

Langkah 2: Menghitung orientasi (arah x dan y) pada gambar

Untuk menghitung deskriptor HOG, pertama-tama kita perlu menghitung orientasi arah horizontal dan vertikal.

Proses menghitung orientasi ada dua cara yakni menggunakan operator sobel atau centered derivatice (turunan terpusat). 

Gambar di bawah ini merupakan contoh perhitungan menggunakan turunan terpusat. Proses yang dilakukan seperti pada proses konvolusi.

Langkah 3: Menghitung magnitude dan gradien

Selanjutnya kita dapat mencari besaran dan arah gradien menggunakan rumus berikut.

Sumber: towardsdatascience.com

Untuk perhitungan magnitude menggunakan rumus teorema pitagoras. 

Sumber: www.sefidian.com

Dari hasil komputasi perhitungan berdasarkan orientasinya, maka selanjutnya menghitung nilai magnitude tepi dan arah tepi gradien. Berikut contohnya:

Langkah 4: Membuat histogram menggunakan gradien dan orientasi

Untuk histogram, pastikan untuk membaginya menjadi 9 bin terpisah, masing-masing sesuai dengan sudut dari 0–160 derajat dengan kelipatan 20.

Jika nilai pada tiap cell dari proses arah tepi melebihi atau sama dengan nilai 180 maka dilakukan proses polarity change.

Polarity change membuat deskriptor menjadi invarian terhadap perubahan relatif antara foreground dan background.

Pada deskriptor HOG juga perlu dipastikan gambar dibagi ke dalam cell sehingga histogram gradien dapat dihitung untuk setiap cell-nya.

Sebagai contoh, jika gambar sebelumnya memiliki ukuran 64 x 128 piksel, maka bagi gambar menjadi 8 x 8 cell. 

Perhatikan baik-baik gambar di bawah ini!

Sumber: waiyankyawmc.medium.com

Dalam pembuatan histogram, terdapat 4 metode diantaranya:

Metode 1

Pada metode pertama ini akan mengambil nilai setiap piksel, menemukan orientasi piksel dan memperbarui tabel frekuensi.

Sumber: www.sefidian.com

Highlight merah yang ditunjukkan pada gambar merupakan nilai magnitude 85, jika orientasi sudutnya 36, maka pada kolom angle 36, nilai frekuensi diberikan nilai 1.

Proses yang sama diulangi untuk semua nilai piksel, dan kita akan mendapatkan tabel frekuensi yang menunjukkan sudut dan kemunculan sudut ini dalam gambar.

Tabel frekuensi ini dapat digunakan untuk menghasilkan histogram dengan nilai sudut pada sumbu x dan frekuensi pada sumbu y.

Perhatikan bahwa di sini nilai bin dari histogram adalah 1.

Metode 2

Metode ini mirip dengan metode sebelumnya, hanya saja memiliki ukuran bin kelipatan 20. Jadi, jumlah bin yang digunakan adalah 9. Sekali lagi, untuk setiap piksel, kita akan memeriksa orientasi atau arah tepi, dan menyimpan frekuensi nilai orientasi dalam bentuk matriks 9 x 1. 

Sumber: www.sefidian.com

Metode 3

Kedua metode sebelumnya hanya menggunakan nilai orientasi untuk menghasilkan histogram dan tidak memperhitungkan nilai gradien. Metode ketiga dapat menghasilkan histogram selain menggunakan frekuensi, tetapi juga menggunakan besaran gradien untuk mengisi nilai dalam matriks.

Sumber: www.sefidian.com

Metode 4

Metode keempat merupakan metode yang paling sering digunakan pada operasi HOG. Metode ini melakukan proses perbaikan dari metode ketiga sebelumnya. Perlu diingat bahwa kontribusi yang lebih tinggi seharusnya pada nilai bin yang lebih dekat dengan orientasi.
Sumber: www.sefidian.com

Pada gambar di atas orientasi 36 berada diantara bin 20 dan 40, maka pada metode ini dilakukan dengan menghitung nilai magnitude yang akan dibagi 20 (default) terhadap dua nilai diantaranya. Nilai magnitude terbesar tentunya milik bin yang paling mendekati nilai orientasinya.

Contoh lain ditunjukkan pada gambar di bawah ini:

Sumber: www.sefidian.com

Ditunjukkan bahwa nilai pada gradien arah memiliki nilai 165 dan magnitude 85, nilai pada gradien arah melebihi nilai bin 160. Oleh karena itu, nilai 165 terletak diantara bin 160 dan 0 (sudut 160 keatas akan kembali ke bin awal dengan kelipatan 20). 

Langkah 5: Menghitung HOG pada 8 x8 cell (9 x 1)

Pada langkah sebelumnya telah dijelaskan bahwa histogram yang dibuat di deskriptor fitur HOG membagi gambar menjadi 8 x 8 cell, dan histogram gradien berorientasi dihitung untuk setiap pikselnya.

Hal ini bertujuan agar mendapatkan fitur (atau histogram) untuk patch yang lebih kecil mewakili keseluruhan gambar. Pembagian cell dapat menggunakan 8 x8 menjadi 16 x 16 atau 32 x 32. 

Jika kita membagi gambar menjadi 8×8 sel dan menghasilkan histogram, kita akan mendapatkan matriks berukuran 9 x 1 untuk setiap sel.

Matriks ini dihasilkan dengan salah satunya menggunakan metode ke-4 yang telah kita bahas pada bagian sebelumnya.

Langkah 6: Normalisasi Gradien

Meskipun kita sudah memiliki fitur HOG yang dibuat untuk cell gambar 8×8, terdapat kondisi di mana pada saat proses perhitungan gradien diperoleh nilai gradien yang berbeda-beda serta nilai gradien  pada gambar peka terhadap pengaruh cahaya.

Ini berarti bahwa untuk gambar tertentu, sebagian gambar akan menjadi sangat terang dibandingkan dengan bagian lainnya.

Kita tidak sepenuhnya mampu menghilangkan ini dari gambar. Tapi kita bisa mengurangi variasi pencahayaan ini dengan menormalkan gradien dengan mengambil blok 16x16.

Sumber: learnopencv.com

Di sini, kita akan menggabungkan empat sel 8×8 untuk membuat blok 16×16. Dan kita sudah tahu bahwa setiap sel 8×8 memiliki matriks histogram 9×1. Jadi, kita akan memiliki empat matriks berukuran 9x1 atau satu matriks berukuran 36x1.

Untuk menormalkan matriks ini, kita akan membagi setiap nilai ini dengan akar kuadrat dari jumlah kuadrat dari nilai-nilai tersebut. Secara matematis, untuk vektor V yang diberikan:

V = [a1, a2, a3, ….a36]

Rumus:


Hasilnya akan menjadi vektor yang dinormalisasi dengan ukuran 36×1.

Langkah 7: Fitur untuk gambar lengkap

Ini merupakan langkah terakhir untuk menghasilkan fitur HOG untuk gambar. Sejauh ini, kita telah membuat fitur untuk 16×16 blok gambar. Sekarang, kita akan menggabungkan semua ini untuk mendapatkan fitur untuk gambar akhir.

Pertama-tama kita perlu mencari tahu berapa banyak blok 16x16 yang akan kita dapatkan untuk satu gambar 64x128:


Kita akan memiliki 105 (7×15) blok berukuran 16×16. Masing-masing dari 105 blok ini memiliki vektor 36×1 sebagai fitur. Oleh karena itu, fitur total untuk gambar tersebut adalah 105 x 36×1 = 3780 fitur.

Maka hasil dari proses desktiptor HOG ditunjukkan pada gambar di bawah ini:

Sumber: learnopencv.com

Penutup

Demikianlah penjelasan lengkap mengenai pengertian dan langkah-langkah perhitungan HOG untuk ekstraksi fitur pada citra. Semoga informasi yang disajikan dapat bermanfaat dan menambah khazanah pengetahuan kita.

Salam!

Referensi:

Posting Komentar untuk "Pengertian Histogram of Oriented Gradients (HOG) dan Cara Hitungnya"