Tampilkan postingan dengan label Image. Tampilkan semua postingan
Tampilkan postingan dengan label Image. Tampilkan semua postingan

Rabu, 07 September 2016

Pengenalan Tulisan Tangan untuk Angka tanpa Pembelajaran


Terdapat banyak metoda pengenalan angka latin tulisan tangan, namun umumnya menggunakan metoda statistik. Ciri dari metoda statistik adalah bahwa sistem tidak pernah mempertimbangkan angka berapa kira-kira yang sedang diolahnya, karena sistem hanya mengandalkan contoh yang diberikan kepadanya lewat pembelajaran. Dalam tulisan ini diusulkan pengenalan angka tulisan tangan tanpa pembelajaran. Tetapi cukup dengan memanfaatkan ciri-ciri spesifik dari angka tersebut yang disebut sebagai properti geometri. Hasil percobaan yang dilakukan menunjukkan bahwa pendekatan ini memiliki kinerja yang lebih baik dari metoda statistik yang ada dan memiliki waktu komputasi yang lebih cepat.

Penelitian tentang pengenalan tulisan tangan khususnya untuk angka dan huruf latin, merupakan salah satu bahasan dalam pengembangan teknik pengenalan pola yang masih berkembang saat ini. Penelitian ini mulai diminati sejak tahun 1990-an, semenjak dipopulerkan oleh Prof. Ching Yee Suen [2] berbagai penelitian dilakukan untuk mengenali berbagai bentuk tulisan tangan. Perkembangan konsep pengenalan tulisan tangan saat ini yang paling banyak adalah konsep yang menggunakan metoda statistik. Ciri utama dari penggunaan dari metoda statistik adalah sistem yang dikembangkan tidak memperhitungkan atau mempertimbangkan bentuk tulisan atau objek yang sedang diolah atau dikenalinya. Sistem yang dikembangkan dengan menggunakan metoda statistik hanya berpedoman pada contoh pola dari sampel yang di ajarkan kepadanya, dan didalam proses ekstraksi cirinya pun secara umum tidak menggunakan ciri – ciri fisik yang bisa diamati oleh mata manusia [1].

Pembelajaran seperti ini akan membutuhkan banyak data untuk proses pembelajarannya, untuk beberpa kasus penggunaan metode statistik ini sangat efisien dan memiliki tingkat keakuratan yang tinggi [1,3]. Namun dengan semakin banyaknya data inipun ternyata tidak membuat sistem pembelajaran dengan menggunakan metode statistik ini akan menjadi lebih baik, malah akan semakin sulit dalam mengenali, ini dikarenakan semakin banyak data yang digunakan dalam pembelajaran, maka proses pencarian pun akan semakin spesifik sehingga membutuhkan waktu dan biaya yang lebih banyak dan objek yang diperlukanpun belum tentu didapatkan.

Beberapa penelitian telah dilakukan dalam mengenali berbagai bentuk tulisan tangan. Baik itu dalam bentuk tulisan latin maupun dalam bentuk tulisan lain seperti bahasa yang digunakan pada Negara Arab [7,8], Jepang, China [6], Korea, Spanyol [13], dan berbagai Negara lain yang tidak menggunakan tulisan latin sebagai tulisannya. Berbagai pengembangan metode sintaktik telah dilakukan untuk pengenalan tulisan tangan ini, seperti, Pengenalan huruf Arab yang menggunakan adaptive slant correction algorithm dan polygonal approximation algorithm dalam fungsi fuzzy [10], handwriting model for syntactic recognition of cursive script [9]. Penggunaan markov model [12] pun juga sangat gemar digunakan saat ini. Berbagai sistem pengenalan tulisan baik itu tulisan cetak komputer ataupun tulisan tangan, sudah sangat berkembang dengan memanfaatkan konsep marcov model.

Sabtu, 23 Oktober 2010

Menangkap Nilai Red, Green, dan Blue (RGB) Pada Image Dengan C++ Builder


Untuk menangkap nilai RGB dari image diperlukan fungsi macro yang sudah di include dalam VCL builder. Fungsinya adalah :

int GetRValue(TColor Clr);
int GetGValue(TColor Clr);
int GetBValue(TColor Clr);



Contoh Penggunaannya Dalam Sintak Adalah :

Pada Header


Pada Body


void __fastcall TFormRGB::ImageRGBMouseMove(
TObject *Sender,TShiftState Shift, int X, int Y)
{
PanelColor->Color = ImageRGB->Picture->Bitmap->
Canvas->Pixels[X][Y];

LabelR->Caption = "R : " +
IntToStr(GetRValue(ImageRGB->Picture->Bitmap->
Canvas->Pixels[X][Y]));

LabelG->Caption = "G : " +
IntToStr(GetGValue(ImageRGB->Picture->Bitmap->
Canvas->Pixels[X][Y]));

LabelB->Caption = "B : " +
IntToStr(GetBValue(ImageRGB->Picture->Bitmap->
Canvas->Pixels[X][Y]));
}
//---------------------------------------------------------------------------

Dengan fungsi macro tersebut bisa didapat nilai RGB yang dibutuhkan...
Enjoy Your Job...

Sabtu, 02 Oktober 2010

Sekilas Tentang Algoritma Semut ( AntNet Algorithm )

Algoritma Semut diadopsi dari perilaku koloni semut yang dikenal sebagai sistem semut (Dorigo, 1996). Secara alamiah koloni semut mampu menemukan rute terpendek dalam perjalanan dari sarang ke tempat-tempat sumber makanan. Koloni semut dapat menemukan rute terpendek antara sarang dan sumber makanan berdasarkan jejak kaki pada lintasan yang telah dilalui. Semakin banyak semut yang melalui suatu lintasan, maka akan semakin jelas bekas jejak kakinya. Hal ini akan menyebabkan lintasan yang dilalui semut dalam jumlah sedikit, semakin lama akan semakin berkurang kepadatan semut yang melewatinya, atau bahkan akan tidak dilewati sama sekali. Sebaliknya lintasan yang dilalui semut dalam jumlah banyak, semakin lama akan semakin bertambah kepadatan semut yang melewatinya, atau bahkan semua semut akan melalui lintasan tersebut.

Gambar berikut menujukkan perjalanan semut dalam menemukan jalur terpendek dari sarang ke sumber makanan.
 Perjalanan semut menemukan sumber makanan.

Gambar a di atas menunjukkan ada dua kelompok semut yang akan melakukan perjalanan. Satu kelompok bernama L yaitu kepompok yang berangkat dari arah kiri yang merupakan sarang semut dan kelompok lain yang bernama kelompok R yang berangkat dari kanan yang merupakan sumber makanan. Kedua kelompok semut dari titik berangkat sedang dalam posisi pengambilan keputusan jalan sebelah mana yang akan diambil. Kelompok semut L membagi dua kelompok lagi. Sebagian melalui jalan atas dan sebagian melalui jalan bawah. Hal ini juga berlaku pada kelompok semut R. Gambar b dan gambar c menunjukkan bahwa kelompok semut berjalan pada kecepatan yang sama dengan meninggalkan  feromon atau jejak kaki di jalan yang telah dilalui. Feromon yang ditinggalkan oleh kumpulan semut yang melalui jalan atas telah mengalami banyak penguapan karena semut yang melalui jalan atas berjumlah lebih sedikit dari pada jalan yang di bawah. Hal ini dikarenakan jarak yang ditempuh lebih panjang daripada jalan bawah. Sedangkan  feromon yang berada di jalan bawah, penguapannya cenderung lebih lama.  Karena semut yang melalui jalan bawah lebih banyak daripada semut yang melalui jalan atas. Gambar d menunjukkan bahwa semut-semut yang lain pada akhirnya memutuskan untuk melewati jalan bawah karena feromon yang ditinggalkan masih banyak. Sedangkan feromon pada jalan atas sudah banyak menguap sehingga semut-semut tidak memilih jalan atas tersebut. Semakin banyak semut yang melalui jalan bawah maka semakin banyak semut yang mengikutinya.   

Demikian juga dengan jalan atas, semakin sedikit semut yang melalui jalan atas, maka  feromon yang ditinggalkan semakin berkurang bahkan hilang. Dari sinilah kemudian terpilihlah jalur terpendek antara  sarang dan sumber makanan. Dalam algoritma semut, diperlukan beberapa variabel dan langkah-langkah untuk menentukan jalur terpendek, yaitu: 

Langkah 1 :  
a. Inisialisasi harga parameter-parameter algoritma. Parameter-parameter yang di inisialisasikan adalah :  

Minggu, 22 Agustus 2010

Sedikit Tentang Pengolahan Citra (Image Processing)

Citra (image) merupakan gabungan antara titik-titik yang membentuk sebuah gambar pada bidang dwimatra (dua dimensi). Dilihat dari sudut pandang matematis , citra merupakan fungsi yang berkelanjutan (continue) dari intesitas cahaya pada bidang dua dimensi. Proses perekaman sebuah citra bermula dari sumber cahaya menerangi objek, objek memantulkan kembali sebagian cahaya tersebut, pantulan ini ditangkap oleh alat-alat optik, misal pada mata manusia, kamera, scanner, dan masih banyak lagi yang dapat membuat bayangan objek terekam.

Citra sebagai keluaran dari suatu sistem perekaman data memiliki sifat - sifat  berikut (MUR 92) :
  1. Optic berupa foto.
  2. Analog berupa sinyal video seperti gambar pada monitor televisi.
  3. Digital yang dapat langsung disimpan pada suatu pita magnetic.
Ada 2 jenis citra (MUN 2004) :
  1. Citra diam (still image) merupakan citra tunggal yang tidak bergerak. Citra diam biasanya disebut dengan citra saja.
  2. Citra begerak (moving image) merupakan rangakaian citra diam yang ditampilkan secara berurutan (sequential) sehingga memberi kesan pada mata kita sebagai gambar yang bergerak atau sering disebut dengan animasi.
Sering terdapat permasalahan pada citra yang menyebabkannya terjadi penurunan mutu (degradasi), seperti terdapat cacat atau derau (noise), warna yang terlalu kontras ,  kurang tajan,  kabur (blurring), dsb. Karena permasalahan tersebut menyebabkan penyampaian informasi terhadap citra tersebut juga menjadi kurang.  Oleh karena itulah pengolahan citra dibutuhkan  untuk memperbaiki citra yang mengalami gangguan mudah di interpretasi baik oleh manusia maupun mesin.
Pengolahan citra merupakan (MUN 2004) pemrosesan citra, khususnya dengan menggunakan komputer, menjadi citra yang kualitasnya lebih baik. Pada dasarnya pada bidang ilmu komputer, terdapat tiga bidang studi yang berkaitan dengan data citra dan memilki tujuan yang berbeda-beda, yaitu :
  1. Grafika Komputer (computer graphics)
  2. Pengolahan Citra (image processing)
  3. Pengenalan Pola (pattern recognition/image interpretation)
Hubungan antara ketiga bidang studi tersebut yaitu pada gambar :
 Tiga bidang studi yang berhubungan dengan citra

Grafika Komputer bertujuan menghasilkan citra (lebih tepat disebut grafik atau picture ) dengan primitive-primitive geometris seperti garis, lingkaran dan sebagainya. merupakan proses untuk menciptakan suatu gambar berdasarkan deskripsi obyek maupun latar belakang yang terkandung pada gambar tersebut. merupakan teknik untuk membuat gambar obyek sesuai dengan obyek tersebut di alam nyata. Grafika komputer memainkan peranan penting dalam visualisasi dan virtual reality.
Implementasi grafika komputer ke pencitraan

Pengolahan Citra bertujuan memperbaiki kualitas citra agar mudah diinterpretasi oleh manusia atau mesin (dalam hal ini komputer). Memperbaiki kwalitas gambar, dilihat dari aspek radiometrik (peningkatan kontras, transformasi warna, restorasi citra) dan dari aspek geometrik (rotasi, translasi, skala, transformasi geometrik). Melakukan pemilihan citra ciri (feature images) yang optimal untuk tujuan analisis. Melakukan proses penarikan informasi atau deskripsi obyek atau pengenalan obyek yang terkandung pada citra. Melakukan kompresi atau reduksi data untuk tujuan penyimpanan data, transmisi data, dan waktu proses data.
Teknik-teknik pengolahan citra mentransformasikan citra menjadi citra lain. Jadi, masukannya adalah citra dan keluarannya juga citra, namun citra keluaran mempunyai kualitas lebih baik daripada citra masukan. Pemampatan citra (image compression) juga termasuk kedalam bidang ini.

Skema Teknik Transformasi Citra

Contoh dibawah ini merupakan pengolahan operasi citra  lainya yaitu penghilangan derau (noise) pada citra kucing. citra kucing disebelah kiri mengandung derau berupah bintik-bintik (derau). Dengan operasi penapisan (filetering) derau pada citra ini sehingga dihasilkan gambar kualitas citra kucing yang lebih baik.
a. citra kucing yang memiliki noise, b. citra kucing yang telah diperbaiki atau dilakukan penapisan (filtering).

Pengenalan Pola Secara teori pattern recognition dapat kita katakan sebagai salah satu cabang dari ilmu komputasi yang dititik beratkan pada penemuan pola pada data yang menunjukkan satu informasi tertentu. Data yang digunakan untuk pengenalan pola ini dapat berupa citra, suara, text, maupun gambar bergerak (video). Dengan kata lain, kita berupaya agar data tadi mampu mengeluarkan informasi yang terkandung di dalamnya. Seberapa jauh kemampuan data itu dapat memberikan informasinya, tentunya tergantung dari kualitas dan kuantitas data itu sendirimengelompokkan data numerik dan simbolik (termasuk citra) secara otomatis oleh mesin (dalam hal ini komputer). Tujuan pengelompokkan ini ialah untuk mengenali suatu objek didalam citra.
Pengetahuan ini banyak dipengaruhi oleh kemampuan manusia itu sendiri dalam memproses informasi, mengenal wajah, tulisan, dsb. Namun belum ada satupun algoritma yang dapat menyamai kemampuan tersebut, karena otak manusia sendiri berisi kira-kira 20 miliar sel otak. walaupun saat ini hal tersebut sudah hampir mendekati. Selain itu otak manusia memiliki struktur yang lebih komplek. Sel-sel yang jumlahnya banyak tersebut saling berhubungan satu sama lain dimana masing-masing sel tersebut mewakili satu karakteristik tersendiri.
Kita dapat mengenali suatu objek yang kita lihat karena otak kita telah belajar mengklasifikasikan objek-objek tersebut sehingga secara alami kita bisa membedakan suatu objek dengan objek yang lainnya. Begitu juga halnya mesin yang mencoba mengikuti dasar dari kemampuan visual manusia. komputer menerima masukan berupa citra objek yang akan diidentifikasi, memproses citra tersebut, dan memberikan keluaran berupa deskripsi objek didalam citra.
Skema Pengenalan Pola

Untuk menghasilkan citra digital dan dapat diolah dengan komputer digital, suatu citra harus direpresentasikan secara numeric dengan nilai-nilai diskrit. Digitalisasi merupakan representasi citra dari fungsi malar (kontinu) menjadi niai-nilai diskrit. Citra yang dihasilkan inilah yang disebut citra digital (digital image).
Citra digital yang tingginya N, lebarnya M, dan memiliki L derajat keabuan dapat dianggap sebagai fungsi (DUL 97):

Citra digital yang berukuran N X M biasa dinyatakan dengan matriks yang berukuran N baris dan M kolom sebagai berikut :

Indeks baris (i) dan indeks kolom (j) menyatakan suatu koordinat titik pada citra, sedangkan f(I,j) merupakan intensitas (derajat keabuan) pada titik (I,j). Setiap elemen pada citra biasa disebut dengan image elemen, atau pixel, atau picture elemen atau pel .
Sebagai contoh, misalkan sebuah citra berukuran N X M mempunyai 256 X 256 pixel dan direpresentasikan secara numeric dengan matriks yang terdiri  dari 256 buah baris (di-indeks dari 0 sampai 255) dan 256 buah kolom (di-indeks dari 0 sampai 255) (MUN 2004) seperti contoh berikut :
Representasi Numerik

Pixel pertama pada koordinat  (0,0) mempunyai nilai intensitas 0 yang berarti warna pixel tersebut hitam, pixel kedua pada koordinat (0,1) mempunyai koordinat 134 yang berarti warnanya antara hitam dan putih, dst.
Proses digitalisasi citra ada dua macam :
  1. Digitalisasi spasial (x,y) yang sering disebut sebagai sampling
  2. Digitalisasi intensitas f(x,y), sering disebut sebagai kuantisasi. 
Sampling  merupakan Citra kontinu yang dapat dilihat pada grid-grid yang berbentuk bujursangkar (kisi-kisi dalam arah horizontal dan vertical) . seperti pada gambar  dibawah ini :
Sampling secara spasial

Terdapat perbedaan antara gambar yang disampling dengan koordinat matriks(hasil digitalisasi) titik asal (0,0) pada gambar dan elemen (0,0) pada matriks tidak sama. Koordinat x dan y pada gambar dimulai dari sudut kiri bawah, sedangkan penomoran pixel pada matriks dimulaidari sudut kiri atas.
Penomoran Pixel


Dalam hal ini,
i = x, 0 ≤ i ≤ N – 1            
j = (M-y), 0 ≤ i ≤ N – 1
x = DxIN increment
y = DyIM increment

keterangan :
N   = jumlah maksimum pixel dalam satu baris
M   = jumlah maksimum pixel dalam satu kolom
Dx = lebar gambar (dalam inchi)
Dy = tinggi gambar (dalam inchi)

Catataan : beberapa referensi menggunakan (1,1) –daripada (0,0) – sebagai koordinat elemen pertama pada matriks.

Elemen (I,j) di dalam matriks menyatakan rata-rata intensitas cahaya pada area citra yang direpresentasikan oleh pixel. Sebagai contoh, lihat citra biner yang hanya mempunyai 2 derajat keabuan, 0 mewakili hitam, dan 1 mewakili putih. Sebuah gambar yang berukuran 10 X 10 inchi dinyatakan dalam matriks yang berukuran 5 X 4, yaitu lima baris dan empat kolom. Tiap elemen gambar lebarnya 2.5 inchi dan tingginya 2 inchi akan diisi dengan sebuah nilai bergantung pada rata-rata intensitas cahaya pada area tersebut.
Area 2.5 X 2.0 inchi pada sudut kiri atas gambar dinyatakan dengan (0,0) pada matriks 5X4 yang menagndung nilai 0 yang berarti tidak memiliki intensitas cahaya. Area 2.5 X 2.0 inchi pada sudut kanan bawah gambar dinyatakan dengan lokasi (4,3) pada matriks 5X4 yang mengandung nilai 1 (yang berarti iluminasi maksimum).
a. yang disampling b. yang merepresentasikan gambar (GAL 90)

Untuk memudahkan implementasi, jumlah sampling biasanya diasumsikan perpangkatan dari dua,
N = 2 n
Dimana, 
N = jumlah sampling pada suatu baris / kolom
n  = bilangan bulat positif
Contoh ukuran sampling : 256 X 256 pixel, 128X256 pixel, langkah selanjutnya setelah proses sampling yaitu kuantisasi. Proses kuantisasi yaitu membagi skala keabuan (0,L) menjadi G buah level yang dinyatakan dengan suatu harga bilangan bulat (integer), biasanya G diambil perpangkatan dari 2,
G = 2m
Dimana, 
G = derajat keabuan
m = bilangan bulat positif

Nilai skala dan nilai keabuan serta pixel depth


             Hitam dinyatakan dengan derajat keabuan terendah yaitu 0, sedangkan putih dinyatakan dengan derajat keabuan tertinggi misalnya 15 untuk level 16. jumlah bit yang dibutuhkan untuk merepresentasikan nilai keabuan pixel disebut kedalaman pixel (pixel depth). Citra sering diasosiasikan dengan kedalaman pixelnya. Jadi, citra dengan kedalaman 8 bit disebut juga citra 8-bit (atau citra 256 warna). Pada kebanyakan aplikasi, citra hitam putih dikuantisasikan pada 256 level dan membutuhkan 1 byte (8 bit) untuk representasi setiap level pixel-nya (G=256=28) .Penyimpanan citra digital yang disampling menjadi N X M buah pixel dan dikuantisasikan menjadi G = 2m level derajat keabuan memerlukan memori sebanyak(bit)
b = N X M X m
Contohnya apabila kita menyimpan sebuah citra yang berukuran 512 X 512 pixel dengan 256 derajat keabuan membutuhkan memori sebesar 512 X 512 X 8 bit = 2048.000 bit. Jadi semakin tinggi nilai N ( atau M) dan m,  maka kualitas citra yang dihasilkan semakin bagus.