Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

3/14/2016

Pengenalan Wajah (Face Recognition) menggunakan PCA - Octave Code -

Ketika sedang ber-nostalgia dengan file tugas kuliah zaman S1, kursor tertarik untuk membuka paper yang berjudul "PCA and LDA based Neural Networks for Human Face Recognition". Paper ini adalah salah satu bacaan favorit saya sekitar lima tahun lalu karena isi paper ini disampaikan dengan bahasa yang sederhana dan cukup mudah untuk dipahami. Pada tulisan kali ini, saya akan membahas bagaimana cara membuat Pengenalan Wajah (Face Recognition) menggunakan PCA (Principal Component Analysis) yang dituliskan dalam bahasa pemrograman Octave. Contoh program dilengkapi dengan beberapa sampel gambar dapat di-download di akhir tulisan ini. Selamat membaca.

Pendekatan PCA untuk pengenalan wajah (A Eleyan, 2007)

2/27/2016

Membaca Data GPS (latitude/longitude) dan Memplotnya pada Openstreetmap Menggunakan Python

Pada bahasan sebelumnya tentang Raspberry Pi dan GPS kita telah berhasil mendapatkan data GPS menggunakan gpsd daemon. Kali ini, kita akan sedikit bermain dengan python untuk membaca data latitude/longitude dari GPS dan memplotnya  pada OpenStreeMap seperti pada contoh di bawah ini.


1/15/2016

Membaca Input Analog menggunakan MCP3008 dan Raspberry Pi

Banyak sekali website yang membahas tentang membaca analog input terutama di link ini adafruit yang merupakan sumber utama dari tulisan ini. Setelah membeli Raspberry Pi 2, MCP3008 (yang berfungsi sebagai analog to digital converter), resistor 10k dan FSR (Force Sensitive Resistor) dari amazon, saya mengikuti tutorial pada link tersebut dan mendokumentasinya seperti pada gambar di bawah ini. Untuk lebih lengkap bagaimana cara membaca input analog menggunakan MCP3008 dan Raspberry Pi silahkan baca tulisan ini lebih lanjut.
 
My Raspberry Pi 2

11/10/2015

Chaotic Map: Skew Tent Map

Pada tulisan kali ini, saya akan membanding dua bahasa pemrograman yaitu Python dan Octave dalam hal seberapa cepat mereka menghasilkan angka secara acak. Angka acak sendiri dapat dihasilkan dengan menggunakan fungsi interasi dimana kondisi awal diberikan pada suatu fungsi untuk mendapatkan output yang akan digunakan kembali sebagai input pada fungsi yang sama. Dalam simulasi ini, skew tent map yang didefinisikan seperti pada persamaan di bawah ini digunakan sebagai fungsi yang menunjukkan perilaku acak.

$f(x) =
  \begin{cases}
    \displaystyle \frac{x}{c}       & \quad \text{for } 0 \leq x < c\\
    \displaystyle \frac{1-x}{1-c}       & \quad \text{for } c \leq x \leq 1\\
  \end{cases}
$

3/29/2015

Julia Alternatif untuk Komputasi Numerik

Tahukan Anda tentang Julia? bagi yang suka Scientific Computing, Julia adalah bahasa pemrograman yang patut untuk dicoba. Syntax-nya pun cukup familiar dan sangat mudah untuk dipelajari. Dikatakan di official website-nya bahwa kecepatan komputasinya cukup cepat dan mendekati bahasa C.

3/24/2015

Pemisahan Suara menggunakan Binary Masking (BM)


Ketika berbicara di suatu tempat yang ramai, kita tetap bisa fokus pada apa yang disampaikan oleh lawan bicara meskipun suara yang terdengar tercampur dengan noise di sekitarnya. Mendengar dan fokus pada suara yang ingin kita dengar adalah hal yang mudah bagi kita, manusia. Namun, itu adalah hal yang rumit di signal processing. Banyak sekali penelitian terkait pemisahan suara yang bisa kita temukan melalui google (ketik saja "source separation") dan pada kesempatan ini, saya akan mengulas tentang pemisahan suara melalui simulasi dengan metode yang sangat sederhana yaitu Binary Masking. Pastikan anda telah membaca dan mencoba postingan sebelumnya terkait Short-Time Fourier Transform (STFT) sebelum melanjutkan bacaan ini karena metode yang akan kita buat ini menggunakan STFT.


2/06/2015

Perfect Reconstruction: Short-Time Fourier Transform (STFT) dan Invers-nya menggunakan half-cycle sine window

Short-time Fourier Transform (STFT) artinya transformasi fourier dari masing-masing blok sinyal yang diperoleh dari proses windowing suatu sinyal. Seperti yang sudah kita ketahui sebelumnya, jika kita menerapkan fft pada suatu sinyal, kita hanya akan mendapatkan informasi frekuensi dengan cukup akurat namun tanpa informasi waktu dari suatu sinyal dan begitu pula sebaliknya. Nah STFT menjembatani dua hal tersebut, pada saat yang bersamaan STFT akan memberikan informasi waktu dan frekuensi secara temporal. Untuk lebih jelasnya mari kita coba membuat STFT menggunakan Octave. 

1/28/2015

Independent Component Analysis (ICA) menggunakan Octave

Di signal processing, ICA adalah salah satu metode komputasi numerik untuk memisahkan sumber-sumber independen atau sinyal-sinyal independen yang tercampur secara linier dan sinyal tersebut direkam oleh beberapa sensor. Ada banyak algoritma yang digunakan untuk ICA dan salah satu algoritma yang efisien and cukup populer adalah FastICA yang ditemukan oleh Aapo Hyvärinen. Algoritma ini dibangun  berdasarkan fixed-point iteration scheme dengan memaksimalkan non-Gaussianity sebagai parameter untuk mengukur independensi suatu sinyal dan dapat juga diturunkan dari pendekatan iterasi newton.

Cukup komplek jika kita harus menurunkan persamaan ICA, namun cukup mudah untuk menuliskannya dalam Octave. Bahasan Kali ini, kita akan mencoba menuliskan algoritma ICA menggunakan Octave dan mengujinya dengan memisahkan sinyal-sinyal yang tercampur secara linier.

1/27/2015

Fast Fourier Transform (FFT) di Octave

Fast Fourier Transform (FFT) adalah salah satu algoritma untuk menghitung Discrete Fourier Transform (DFT) atau secara sederhana bisa dikatakan mengkonversi data dari domain waktu ke domain frekuensi. Untuk apa dikonversi? tentu untuk mengekstrak informasi tertentu yang tidak bisa kita dapatkan di domain waktu yaitu informasi frekuensi.
Kali ini kita akan mencoba untuk mengetahui informasi frekuensi dari suatu sinyal menggunakan Octave.

1/24/2015

Segmentasi Citra berdasarkan Warna menggunakan Octave

Seperti yang sudah kita ketahui, image atau citra adalah suatu imitasi dari sebuah objek yang tersusun dari kombinasi titik, garis, bidang dan warna seperti foto, lukisan dan sebagainya. Contoh paling mudah adalah saat kita mengambil foto dengan handphone kita. Pernahkah kalian mengecek bahwa foto tersebut sesungguhnya terdiri atas 3 buah warna: merah (Red), hijau (Green), dan biru (Blue)? tersusun dari dari deretan angka antara 0 sampai 255? dan sangat mudah untuk dimanipulasi?

Yup, kita akan membuat sebuah program sederhana menggunakan octave yakni segmentasi.

1/23/2015

Octave Alternatif untuk Komputasi Numerik

Octave adalah salah satu open source software yang cukup populer untuk komputasi numerik seperti pada signal processing, numerical methods, image processing dan lain sebagainya. 
Bahasa pemrograman Octave hampir identik dengan Matlab sehingga bagi yang sudah terbiasa dengan Matlab mencoba Octave akan terasa lebih mudah (saya sebelumnya adalah pengguna Matlab).