Saturday, May 30, 2015

Algoritma Kriptografi simetris Hill Cipher

Kriptografi Simetris adalah : Kode Hill atau lebih dikenal dengan Hill cipher merupakan salah satu algoritma kriptografi kunci simetris dan merupakan salah satu kripto polyalphabetic. Hill cipher diciptakan oleh Lester S. Hill pada tahun 1929.

Teknik kriptografi ini diciptakan dengan maksud untuk dapat menciptakan cipher yang tidak dapat dipecahkan menggunakan teknik analisis frekuensi. Berbeda dengan caesar cipher, hill cipher tidak mengganti setiap abjad yang sama pada plainteks dengan abjad lainnya yang sama pada cipherteks karena menggunakan operasi matematika  pada dasar enkripsi dan dekripsinya


Friday, May 29, 2015

Deteksi Wajah menggunakan library opencv



Penulis hanya menulis ulang dari  http://fewtutorials.bravesites.com untuk digunakan kembali pada riset yaitu face recognition. Penulis sedang membuat aplikasi presensi (malah kadang disebut absensi) yang biasanya menggunakan mesin sidik jari, tapi ini diganti dengan wajah, sehingga kita membutuhkan 2 proses utama yaitu deteksi wajah dan pengenalan wajah. Untuk hardware nya menggunakan webcam saja. Penulis menggunakan beberapa pustaka seperti Aforget.Net, EmguCV, Opencv yang digabung menjadi 1 pada teknologi Net Framework. 


Pada tahap sejauh ini, penulis hanya menggunakan class dan function bawaan dari opencv untuk melakukan deteksi area wajah, sedangkan pada selanjut untuk pengenalan wajah menggunakan teknik lainnya. Kamu bisa melihat kita menggunakan webcam dan aplikasi secara langsung melakukan perhitungan untuk mendapatkan lokasi sebuah wajah.

Sunday, May 24, 2015

Transformasi Circle ke Rectangular pada Citra Iris



Kamu pasti sering lihat teknologi iris recognition bukan?
Dalam teknologi tersebut memanfaatkan ke unikan ciri dari sebuah citra mata, seperti berikut

Tuesday, May 19, 2015

Pengenalan Wajah dengan teknik PCA



Apakah pernah melihat film yang bercerita tentang betapa mudahnya sebuah komputer melakukan pelacakan sebuah wajah seseorang seketika dari ribuan database wajah. Salah satu teknologi olah citra dalam biometrika adalah pengenal wajah atau yang lebih dikenal dengan face recognition (berbeda dengan face detection - bila anda penggunan facebook akan ditemui pada fitur tag foto).







Teknologi face recognition berkembang begitu cepat seiring dengan berkembangnya teknologi komputasi dari sisi hardware nya. Secara garis besar teknologi face recognition dapat dibedakan dalam 2 hal yaitu berbasis tektur dan berbasis geometri (mengukur jarak bagian wajah seperti hidung, mata, mulut, dahi).

C# - Steganografi Pesan dengan Teknik Least Significant Bit-LSB

Teknik LSB (Least Significant Bit) sudah sangat luas digunakan untuk modifikasi sebuah bit-bit pixel untuk diganti dengan bit-bit pesan, dalam proses LSB nilai bit akhir yang dimodifikasi, penulis menggunakan .NET 4.0 dengan bahasa C# dan IDE sharp develop untuk mengimplementasikan teknik LSB.
Berikut alur dari teknik LSB yaitu, misalkan kita mempunyai string ‘C’ dan pixel citra yaitu 11,12,13,14,5,16,17,18
Diubah kedalam ASCII

Monday, May 18, 2015

Java-Gray Level Coocurance Matrix



UPDATE: 01 FEBRUARI 2019
BAHASA: JAVA
SYSTEM:
a. Windows 10
b. NetBeans IDE 8.0.2 (Build 201411181905)
c. Java: 1.8.0_111; Java HotSpot(TM) 64-Bit Server VM 25.111-b14

PENGANTAR:


Manusia mengenal tekstur seperti lembut dan kasar walaupun tangan tidak menyentuh benda tersebut, tapi otak mampu membedakan hal tersebut melalui visualisasi yang ditangkap oleh mata. Tekstur dapat dicirikan sebagai berikut

  1. Pengulangan pola dari variasi lokal sehingga membentuk kesatuan yang utuh
  2. Menyediakan informasi susunan spasial dari warna dan intensitas citra
  3. Dicirikan dengan distribusi spasial dari level intensitas dari nilai pixel ketetanggaan
  4. Tidak bisa didefinisikan sebagai suatu satu point / nilai tertentu karena merupakan sebuah pola / kesatuan


Lihatlah ilustrasi berikut tentang tekstur sebuah citra yaitu terdiri dari 50% hitam dan 50% putih






Tentunya uji statistik standar seperti mean, standar deviasi tidak akan mampu membedakan ketiga citra tersebut karena akan menghasilkan nilai yang sama. Seperti yang sudah dijelaskan bahwa tekstur merupakan suatu pengulangan pola dan distribusi spasial artinya ketiga citra tersebut mempunyai tingkat intensitas nilai pixel yang sama tapi mempunyai distribusi spasial yang berbeda.


Analisis tekstur merupakan salah satu metode untuk melakukan identifikasi atau klasifikasi suatu citra, analisis tersebut telah banyak digunakan dalam berbagai bidang yaitu uji tekstur wajah, mutu keramik, membedakan jenis daun dan dalam interpretasi suatu peta sehingga dapat diketahui jenis lahan.

#GLCM sebagai salah satu metode analisis tekstur

Gray-Level Co-occurrence matrix merupakan metode paling banyak digunakan untuk analisis tekstur. Metode ini diperkenalkan oleh Haralick di tahun 1973 yang merupakan bagian dari project yang didukung olah NASA yaitu tepatnya NASA Goddard Space Flight Center. Haralick menggunakan citra dari NASA ERTS untuk melakukan klasifikasi dengan tingkat akurasi diatas 80%.

Matrix GLCM dihitung dari nilai pixel yang berpasangan dan memiliki nilai intensitas tertentu. Misalkan d adalah jarak antara dua pixel yaitu (x1,y1) dan (x2,y2) dan Ѳ tetha didefinisikan sebagai sudut antara keduanya, maka matrix GLCM merupakan distribusi spasial dari Pd Ѳ (i,j). Banyak paper menuliskan berbagai versi tentang perhitungan GLCM terutama mengenai masalah sudut yang digunakan. Berikut adalah ilustrasi yang menggambarkan arah sudut dengan jarak 1 pixel dan ada 4 jenis sudut yang digunakan:
  • 0=180;
  • 45=225,
  • 90=270, dan
  • 135=315

tapi terkadang ada yang menyatakan terdiri dari 8 arah, hal ini terjadi karena antara sudut 0o dan 180o dianggap berbeda begitu juga dengan arah sudut yang lainnya






#Perhitungan 7 fitur utama

[1] Angularsecond moment/uniformity/energy
Mengukur tentang keseragaman atau sering disebut angular second moment. Energy akan bernilai tinggi ketika nilai pixel mirip satu sama lain sebaliknya akan bernilai kecil menandakan nilai dari GLCM normalisasi adalah heterogen. Nilai maksimum dari energy adalah 1 yang artinya distribusi pixel dalam kondisi konstan atau bentuk nya yang berperiodik (tidak acak).




[2] Entropy
Mengukur kompleksitas(keacakan) citra. Entropy akan bernilai tinggi ketika citra tidak seragam.



[3] Dissimilarity
Mengukur ketidakmiripan suatu tekstur, yang akan bernilai besar bila acak dan sebaliknya akan bernilai kecil bila seragam.

[4] Contrast/inertia
Mengukur frekuensi spasial dari citra dan perbedaan moment GLCM. Perbedaan yang dimaksudkan adalah perbedaan tinggi dan rendah nya pixel. Contrast akan bernilai 0 jika pixel ketetanggaan mempunyai nilai yang sama.


[5]Correlation
Mengukur linearitas (the joint probability) dari sejumlah pasangan pixel (pairs).

[6] Homogeneity/inversedifference moment
Mengukur homogenitas. Nilai ini sangat sensitif terhadap nilai disekitar diagonal utama. Bernilai tinggi ketika semua pixel mempunyai nilai yang sama / seragam. Kebalikan dari contrast yaitu akan bernilai besar jika mempunyai nilai pixel yang sama pada saat energy bernilai tetap.



[7] Autocorrelation
Mengukur correlation diantara garis diagonal utama.


Untuk lebih jelasnya bisa kunjungi link berikut yang telah ditulis ulang ke bahasa C#
http://www.softscients.web.id/2018/10/bab-5-analisis-tekstur.html


DATASET:


Untuk dataset, kita mencoba untuk versi simple saja untuk menghitung GLCM dari Feature dari sebuah array berikut

 int [][] data = new int[][] {
 { 0,   0,   1,   2 },
 {2,   0,   2,   0 },
 {1,   0,   0,   2 },
 {2,   0,   1,   1 }
  };      
 


Dengan nilai maksimal array adalah 2, dan sudut yang akan hitung adalah 0

GLCM glcm = new GLCM();
int maksimal = 2; //karena nilai 
glcm.process(data,GLCM.SUDUT_0,2);

Hitung feature GLCM

FeatGLCM fitur = new FeatGLCM();
fitur.process(glcm.getT());//matrix normalisasi
System.out.println("Fitur");
System.out.println("Autocorrelation : " + fitur.getAutocorrelation());
System.out.println("Contrast : " + fitur.getContrast());
System.out.println("Correlation : " + fitur.getCorrelation());
System.out.println("Dissimilarity : " + fitur.getDissimilarity());
System.out.println("Energy : " + fitur.getEnergy());
System.out.println("Entropy : " + fitur.getEntropy());
System.out.println("Homogen : " + fitur.getHomogen());

Kode lengkapnya sebagai berikut

import glcm.FeatGLCM;
import glcm.GLCM;
public class DemoConsole {
    public static void main(String[] args) {
        // TODO code application logic here
        int [][] data = new int[][] {
                    { 0,   0,   1,   2 },
                    {2,   0,   2,   0 },
                    {1,   0,   0,   2 },
                    {2,   0,   1,   1 }
                  };
        GLCM glcm = new GLCM();
        int maksimal = 2; //karena nilai 
        glcm.process(data,GLCM.SUDUT_0,2);
        
        FeatGLCM fitur = new FeatGLCM();
        fitur.process(glcm.getT());//matrix normalisasi
        System.out.println("Fitur");
        System.out.println("Autocorrelation : " + fitur.getAutocorrelation());
        System.out.println("Contrast : " + fitur.getContrast());
        System.out.println("Correlation : " + fitur.getCorrelation());
        System.out.println("Dissimilarity : " + fitur.getDissimilarity());
        System.out.println("Energy : " + fitur.getEnergy());
        System.out.println("Entropy : " + fitur.getEntropy());
        System.out.println("Homogen : " + fitur.getHomogen());
    }
}

Output

Fitur
Autocorrelation : 2.75
Contrast : 2.0
Correlation : -0.45454545454545453
Dissimilarity : 1.1666666666666667
Energy : 0.15625
Entropy : 1.9439903027667307
Homogen : 0.49999999999999994

Untuk versi pengolahan gambar, agar lebih mudah telah dibuatkan GUI

 PUSTAKA GLCM:




Kode GLCM tidak memerlukan library tambahan karena ditulis sendiri.

Friday, May 8, 2015

Grouping Text in OCR



Dalam algoritma OCR, hal yang tak kalah penting adalah menentukan sebuah kumpulan huruf termasuk sebuah kalimat atau bukan! Penulis memberi tanda garis warna merah sesuai dengan kumpulan kalimat!

Sunday, May 3, 2015

Python-Percepton Dataset Non Linear

Penulis mencoba menggunakan teknik percepton sebagai teknik klasifikasi secara linear! Cara kerja hampir sama seperti SVM tapi lebih mudah!
 




Persamaan dasarnya adalah 
y = x1*w1+x2*w2+b, if y>=0, then +1
else -1

Saturday, May 2, 2015

Membuat list directory dengan extension di python

Penulis bekerja dengan banyak data dalam proses pengujian suatu algoritma, misalkan saja dengan mudahnya meletakan ratusan file gambar kedalam satu folder kemudian diolah one by one untuk menghasilkan ciri fitur dan menyimpan nya dalam bentuk format csv. Tapi kali ini penulis hanya membahas cara me list suatu direktory/folder dengan sebuah extension, misakan saja untuk melihat suatu daftar file *.jpg
print daftar('.','jpg')
['A01.jpg', 'A02.jpg', 'A03.jpg', 'A04.jpg', 'A05.jpg', 'B01.jpg', 'B02.jpg', 'B03.jpg', 'B04.jpg', 'B05.jpg', 'C01.jpg', 'C02.jpg', 'C03.jpg', 'C04.jpg', 'C05.jpg']
Penulis sajikan code nya yaitu

Friday, May 1, 2015

Fungsi Limit Aljabar

Bagi kamu yang ingin belajar mengenai limit, bisa berkunjung ke
http://soulmath4u.blogspot.com/2014/01/limit-fungsi-aljabar.html
Limit dan Turunan akan sering digunakan dalam memecahkan persoalan dalam machine learning!
Sehingga membutuhkan dasar pengertian matematika aljabar  
Turunan
https://fanzdirectory.wordpress.com/2013/10/03/turunan-fungsi/