Senin, 03 Mei 2010

Hard Computing Vs Soft Computing

Slide 1

Bila kita berbicara tentang hard computing maka tidak akan jauh dari pembahasan soft computing karena hard computing merupakan perkembangan dari soft computing. Kita akan berlanjut ke pengertian.

Pengertian hard computing adalah adalah metode komputerisasi secara kovensional atau boleh dibilang tradisional. Belum terotomatisasi dan masih menkhususkan pada suatu masalah tertentu. Hard computing membuat model dan pencarian masalah masih menggunakan metode analitis dan numeris (tradisional)

Contoh dari hard computing adalah software untuk melakukan perhitungan matriks, persamaan linier atau persamaan matematis lain. Atau beberapa aplikasi yang digunakan untuk menyelesaikan masalah tertentu di dalam kondisi real kehidupan.

Berbeda dengan hard computing, soft computing merupakan perkembangan dari hard computing dimana metode yang dilakukan adalah koleksi dari beberapa metodologi yang bertujuan untuk mengeksploitasi adanya toleransi terhadap ketidaktepatan, ketidakpastian, dan kebenaran parsial untuk dapat diselesaikan dengan mudah, robustness, dan biaya penyelesaiannya murah. Atau bisa kita sebut soft computing seperti Artificial Intelegence yang bertindak seperti pikiran manusia.

Contoh dari soft computing Aplikasi untuk pengenalan tulisan tangan, system otomotif, manufacturing pabrik

Berikut bagan perbedaan antar hard computing dan soft computing

Senin, 08 Maret 2010

LUA Bahasa Pemrograman Alternatif yang Hebat

Pada bahasan kali ini saya ingin sedikit memperkenalkan suatu bahasa pemrograman yang mungkin belum banyak kita ketahui tapi mungkin bisa menjadi alternative untuk kita sebagai suatu bahasa pemrogram. Bahasa pemrograman tersebut adalah LUA.

Lua adalah bahasa penulisan (scripting) yang lahir pada tahun 1993, sebagai bagian dari Tecgraf, Computer Graphics Technology Group di PUC-Rio, Universitas Pontificial Catholic Rio de Janeiro, Brazil. Ketiga pencipta Lua merupakan anggota Tecgraf, yaitu Roberto Ierusalimschy, Luiz Henrique de Figueiredo, dan Waldemar celes. Di awal kelahirannya, Lua merupakan perangkat pengembangan software rumahan, namun telah diadopsi oleh beberapa proyek industri seluruh dunia dan telah berkembang luas dalam berbagai jenis aplikasi industri seperti robotic, pemrograman literature, bisnis terdistribusi, teks editor, Bioinformatika, pengembangan web, dan lain-lain. Secara khusus, Lua menjadi salah satu software terkemuka di dunia dalam perkembangan game. Sejak awal, Lua telah dirancang sederhana, portable, cepat, dan mudah untuk ditempel (embedded) kedalam aplikasi-aplikasi. Hal itulah yang menjadikan Lua sukses dalam industry.

Para pengguna Lua pada umumnya terbagi dalam tiga kelompok besar:

a) mereka yang menggunakan Lua yang telah ter'(embedded)' dalam satu program aplikasi,

b) mereka yang menggunakan Lua stand alone, dan

c) mereka yang menggunakan Lua dan C bersama-sama.

Banyak orang menggunakan Lua embedded dalam satu program aplikasi, seperti CGILua (untuk membangun Halaman web dinamis) atau LuaOrb (untuk mengakses CORBA object). Aplikasi ini menggunakan Lua-C API untuk mendaftarkan fungsi-fungsi baru, untuk membuat tipe-tipe baru.

Mengubah perilaku dari beberapa operasi bahasa, konfigurasi Lua untuk domain spesifik. Sering, para pemakai aplikasi-aplikasi tersebut bahkan tidak mengetahui bahwa Lua adalah satu bahasa independent yang diadaptasikan pada domain khusus; sebagai contoh, CGILUA para pemakai cenderung berpikir Lua sebagai bahasa yang secara khusus dirancang untuk Web.

Lua juga bermanfaat sebagai bahasa stand alone, sebagian besar untuk pengolahan teks dan sebagian kecil suatu program. Untuk penggunaan-penggunaan seperti itu, kemampuan utama Lua datang pada pustaka standarnya, yang menawarkan bentuk yang sesuai dan fungsi lain untuk penanganan string. Kita mungkin menganggap bahasa stand alone seperti penempelan(embedding) pada Lua dalam bagian string dan (teks) manipulasi file.

Akhirnya, ada programmer yang bekerja di sisi lain dari bench, penulisan aplikasi yang menggunakan Lua sebagai library. Programmer seperti itu akan membuat program lebih pada C daripada Lua, meski mereka perlu pemahaman yang baik tentang Lua untuk membuat interface yang sederhana, mudah digunakan, dan terintegrasi baik dengan bahasa pemrograman.

Keunggulan fasilitas-fasilitas berikut menjadikan Lua jauh berbeda dari bahasa-bahasa lain adalah :

Extensibility: Extensibility Lua sangat menarik perhatian sehingga banyak orang menganggap Lua bukan sebagai suatu bahasa, tetapi sebagai suatu perangkat untuk membangun bahasa-bahasa domain spesifik. Lua telah dirancang untuk diperluas/diaplikasikan, pada kode Luad dan kode eksternal C. Sebagai suatu bukti dari konsep, Lua menerapkan banyak kemampuan dasarnya melalui fungsi-fungsi eksternal. Hal ini sangat mudah untuk menghubungkan Lua dengan C/C++ dan bahasa-bahasa lain, seperti Fortran, Java, Smalltalk, Ada, bahkan dengan bahasa-bahasa penulisan yang lain.

Simplicity / Sederhana : Lua adalah bahasa yang mudah dan sederhana. Lua mempunyai sedikit konsep (namun tangguh). Kesederhanaan ini membuat Lua mudah dipelajari dan memperbesar suatu implementasi yang sederhana. Distribusinya yang lengkap (source program, manual, biner-biner lebih untuk beberapa platform) sesuai dengan floopy disk.

Efisiensi: Lua mempunyai implementasi yang efisien. Benchmark-benchmark yang mandiri menunjukkan Lua sebagai bahasa tercepat dalam dunia bahasa penulisan (interpreted).

Portabilitas: Ketika kita berbicara tentang portabilitas, kita tidak berbicara tentang menjalankan Lua di platform Windows dan Unix. Kita berbicara tentang menjalankan Lua di semua platform yang sudah pernah kita dengar, seperti: NextStep, OS/2, PlayStation II (Sony), Mac OS-9 dan OS X, BeOS, MS-DOS, IBM, EPOC, PalmOS, MCF5206ELITE Evaluation Board, RISC OS, dan tentu saja semua jenis Unix dan Windows. Source program untuk masing-masing platform hampir sama. Lua tidak menggunakan kumpulan kondisi untuk menyesuaikan kodenya kepada mesin-mesin yang berbeda; sebagai gantinya, Lua mengikuti standar ANSI ( ISO) C. Dengan cara itu, biasanya anda tidak perlu menyesuaikan pada suatu lingkungan baru: Jika anda mempunyai satu compiler ANSI C, anda hanya harus meng-kompile Lua, out of box.

Kamis, 10 Desember 2009

Konversi Gambar ke Matriks


Pada tulisan kali ini kita akan coba membahas bagaimana mengkonversikan suatu citra atau gambar kedalam bentuk matriks.

Jenis citra dibagi menjadi 2 yaitu citra berwarna dan citra monokrom. Perbedaan dari kedua citra ini adalah terletak pada informasi warna pada setiap pixel. Pixel tidak terlepas dari representasi dari suatu matriks. Karena pixel pun berbentuk matriks. Oleh karena itu gambar pun merupakan suatu matriks continyu yang menghubungkan suatu pixel dengan pixel lain yang akan membentuk suatu gambar.

gambar dibawah ini yang akan digunakan untuk percobaan. gamabar dibawah ini nantinya akan dikonversi kedalam bentuk matriks.


Untuk melakukan konversi kita menggunakan software Matlab ketikan listing dibawah ini :
Setelah itu kita lakukan run program maka akan tampil hasil konversi gambar tersebut ke bentuk matriks seperti dibawah ini :

C=imread('01SC087.JPG','jpg')
asci=uint8(C)

Setelah itu kita lakukan run program maka akan tampil hasil konversi gambar tersebut ke bentuk matriks seperti dibawah ini :

Matriks diatas terdiri dari jutaan angka matriks yang tersususn secara kontinyu sehingga membentuk suatu citra.




Selasa, 17 November 2009

Deteksi Tepi Menggunakan Metode Robert, Sobel, Prewitt, dan Laplacian

Tepi (Edge) Adalah perubahan nilai intensitas derajat keabuan yang cepat atau tiba-tiba (besar) dan dalam jarak yang singkat.

Deteksi tepi (Edge Detection) pada suatu citra adalah suatu proses yang menghasilkan tepi-tepi dari obyek-obyek citra, tujuannya adalah :
• Untuk menandai bagian yang menjadi detail citra
• Untuk memperbaiki detail dari citra yang kabur, yang terjadi karena error atau adanya efek dari proses akuisisi citra
Suatu titik (x,y) dikatakan sebagai tepi (edge) dari suatu citra bila titik tersebut mempunyai perbedaan yang tinggi dengan tetangganya.


Teknik yang digunakan untuk pendeteksian tepi antara lain :
-Operator Gradien Utama (Differential Gradien)
-Operator Turunan Kedua (Laplacian)
-Operator Kompas ( Compas Opertor)

Pada pembuatan program ini kita akan membahas deteksi tepi pada Operator Gradien Utama dan Operator Turunan Kedua. Operator gradien utama terdiri dari 3 metode yaitu :

Metode Robert
Metode Robert adalah nama lain dari teknik differensial yang dikembangkan di atas, yaitu differensial pada arah horisontal dan differensial pada arah vertikal, dengan ditambahkan proses konversi biner setelah dilakukan differensial. Teknik konversi biner yang disarankan adalah konversi biner dengan meratakan distribusi warna hitam dan putih [5. Metode Robert ini juga disamakan dengan teknik DPCM (Differential Pulse Code Modulation)

Metode Prewitt
Metode Prewitt merupakan pengembangan metode robert dengan menggunakan filter HPF yang diberi satu angka nol penyangga. Metode ini mengambil prinsip dari fungsi laplacian yang dikenal sebagai fungsi untuk membangkitkan HPF.

Metode Sobel
Metode Sobel merupakan pengembangan metode robert dengan menggunakan filter HPF yang diberi satu angka nol penyangga. Metode ini mengambil prinsip dari fungsi laplacian dan gaussian yang dikenal sebagai fungsi untuk membangkitkan HPF. Kelebihan dari metode sobel ini adalah kemampuan untuk mengurangi noise sebelum melakukan perhitungan deteksi tepi.

Sedangkan pada operator turunan kedua terdapat metode laplacian

Untuk langkah persiapan terdapat pada tulisan blog sebelumnya dengan judul "histogram". Syntax yang digunakan untuk pendeteksian tepi dengan metode robert, prewitt, dan sobel serta teknik turunan kedua laplacian. berikut adalah listing program dan output program.

Listing program

clear all;
l=imread('Humpback Whale.jpg');
l1=rgb2gray(l);
l2=fft(double(l1));
l2_1=fft(double(l));
figure(1)
clf(subplot(3,2,1),imshow(l));
title('Original image');
hold on;
subplot(3,2,2),imshow(l1);
title('Gray scale image ');
% creat filter matrix(3x3 window)
h=fspecial('prewitt');
l_pre=uint8(round(filter2(h,l1)));
l_pre_1=fft(double(l_pre));
subplot(3,2,3),imshow(l_pre)
title('Prewitt filtered image');
% creat filter matrix(3x3 window)
h=fspecial('sobel');
l_sobel=uint8(round(filter2(h,l1)));
l_sobel_1=fft(double(l_sobel));
subplot(3,2,4),imshow(l_sobel)
title('Sobel filtered image');
h=fspecial('log',5);
l_log=uint8(round(filter2(h,l1)));
l_log_1=fft(double(l_log));
subplot(3,2,5),imshow(l_log)
title('5x5 Laplacian of Guassian Filtered Image');
h=fspecial('log',3);
l_log3=uint8(round(filter2(h,l1)));
l_log3_1=fft(double(l_log3));
subplot(3,2,6),imshow(l_log3)
title('3x3 Laplacian of Guassian Filtered Image');
%suitable images are TIFF images ,png,jpgonly bmp is not suitable.
figure(2)
subplot(3,2,1),imshow(l2);
subplot(3,2,2),imshow(l2);
subplot(3,2,3),imshow(l_pre_1);
subplot(3,2,4),imshow(l_sobel_1);
subplot(3,2,5),imshow(l_log_1);
subplot(3,2,6),imshow(l_log3_1);


Output Program






Histogram

Pada Penulisan Blog kali ini saya ingin membuat program dan membuat analisa perubahan suatu citra atau gambar kedalam bentuk histogram

sebelum kita masuk masuk ke program saya akan menjelaskan apa yang dimaksud dengan citra dan histogram itu sendiri.

Citra mungkin klw kita mengetahui banyak orang yang bilang bahwa citra itu sama dengan gambar, foto, atau hal apapun yang ada gambarny, padahal klw mnurut ilmu nyang benernya klw citra itu merupakan fungsi malar (kontinyu) dari intensitas cahaya. Secara matematisdisimbulkandengan f(x,y), dimana :

(x,y) : koordinat pada bidang dwi warna
F(x,y) : intensitas cahaya pada titik (x,y)

Nilai f(x,y) adalah hasil kali dari :
i(x,) = jumlah cahaya yang berasal dari sumber, nilainya antara 0 sampai tak terhingga
r(x,y) = derajat kemampuan objek memantulkan cahaya , nilainya antara 0 dan 1
Jadi f(x,y) = i(x,y) . r(x,y)

Ribet ya kalau bahasa jermannya artinya klw citra itu merupakan merupakan kumpulan intensi
tas suatu cahaya yang berkelanjutan dan dipengaruhi oleh cahaya pada yang menimpa objek.
Nah kurang lebih gtu lah bahasa jermanya.

Lanjut kita ke histogram. Histogram adalah diagram yang menunjukkan jumlah kemunculan grey
level (0-255) pada suatu citra. jadi histogram itu merupakan diagram yang digunakan untuk
menghitung jumlah kemunculan suatu warna pada suatu citra.

kemudian histogram prosessing

Gambar gelap: histogram cenderung ke sebelah kiri

Gambar terang: histogram cenderung ke sebelah kanan

Gambar low contrast: histogram mengumpul di suatu tempat

Gambar high contrast: histogram merata di semua tempat

Histogram processing: mengubah bentuk histogram agar pemetaan gray level


Biar ga tambah bingung kita akan langsung menuju kepada program :
Pembuatan program ini saya menggunakan software matlab 7.0 hal ini dikarenakan bahwa matlab
biasa digunakan untuk beberapa fungsi matematika jadi saya membuat program ini menggunakan
matlab.

Persiapan dan langkah-langkah :
Instalasi Software Matlab
Kemudian jalankan software matlab
Kemudian pilih menu bar file-new-m file
Setelah itu akan muincul text editor untuk mengetikan sintaks program
Kemudian ketikan listing seperti pada lampiran listing dibawah nanti
Setelah iti jalankan program dangan pilih menu bar debug-run atau ketik F5 pada keyboad maka
akan tampil output seperti lampiran output dibawah nanti

Dibawah ini adalah listing program
clear all;
close all;
l=imread('01SC087.JPG');
l1=rgb2gray(l);
figure(1)
subplot(1,2,1)
imshow(l1)
title('Original Image');
[counts x]=imhist(l1);
counts1=counts(2:256-1,:);
x1=[2:1:255];
h=hist(counts1,x1);
p=histeq(l1,h);
subplot(1,2,2)
imshow(p);
title('Processed Image');
hold on;
figure(2)
subplot(1,2,1)
imhist(l1)
title('Histogram of Original Image');
subplot(1,2,2)
imhist(p)
title('Histogram of Processed Image');
hold on;
k=mean2(l1);
k2=mean2(p);
dev=std2(l1);
dev1=std2(p);
[co xi]=imhist(l1,8);
[co1 xi1]=imhist(p,8);
m=mean2(xi);
m2=mean2(xi1);
stdev=std2(xi);
stdev1=std2(xi1);
disp('********Comparison of Mean and Standard Deviation for Whole Image and 8x8 Block*********');
disp('Original Image');
disp('Mean of Whole Image=')
disp(k);
disp('Mean for 8x8 Sub-Block of Intensities=');
disp(m);
disp('Standard Deviation of Whole Image=')
disp(dev);
disp('Standard Deviation for 8x8 Sub-Block of Intensities=');
disp(stdev);
disp('Processed Image');
disp('Mean of Whole Image=')
disp(k2);
disp('Mean for 8x8 Sub-block of Intensities=');
disp(m2);
disp('Standard Deviation of Whole Image=')
disp(dev1);
disp('Standard Deviation for 8x8 Sub-block of Intensities=');
disp(stdev1);

Output Program

Pada tampilan pertama sebelah kiri adalah citra yang original dan yang sebelah kanan adalah citra yang telah di telah di proses enhancement akan terlihat pada tampilan histogram pada tampilan kedua histogram cenderung kesebalah kiri artinya citra gelap. tampilan kedua adalah histogram masing-masing citra.