Sabtu, 26 November 2011

Computer Vision

Computer Vision adalah ilmu dan teknologi mesin yang melihat, di mana lihat dalam hal ini berarti bahwa mesin mampu mengekstrak informasi dari gambar yang diperlukan untuk menyelesaikan tugas tertentu. Sebagai suatu disiplin ilmu, visi komputer berkaitan dengan teori di balik sistem buatan bahwa ekstrak informasi dari gambar. Data gambar dapat mengambil banyak bentuk, seperti urutan video, pandangan dari beberapa kamera, atau data multi-dimensi dari scanner medis.

Computer Vision didefinisikan sebagai salah satu cabang ilmu pengetahuan yang mempelajari bagaimana komputer dapat mengenali obyek yang diamati/ diobservasi. Cabang ilmu ini bersama Intelijensia Semu (Artificial Intelligence) akan mampu menghasilkan sistem intelijen visual (Visual Intelligence System).Perbedaannya adalah computer vision lebih mempelajari bagaimana komputer dapat mengenali obyek yang diamati/ diobservasi. Namun komputer grafika lebih ke arah pemanipulasian gambar (visual) secara digital. Bentuk sederhana dari grafika komputer adalah grafika komputer 2D yang kemudian berkembang menjadi grafika komputer 3D, pemrosesan citra (image processing), dan pengenalan pola (pattern recognition). Grafika komputer sering dikenal juga dengan istilah visualisasi data.

Computer Vision adalah kombinasi antara :
*Pengolahan Citra (Image Processing), bidang ini berhubungan dengan proses transformasi citra/gambar (image). Proses ini bertujuan untuk mendapatkan kualitas citra yang lebih baik.
*Pengenalan Pola (Pattern Recognition), bidang ini berhubungan dengan proses identifikasi obyek pada citra atau interpretasi citra. Proses ini bertujuan untuk mengekstrak informasi/pesan yang disampaikan oleh gambar/citra.

Proses dalam Computer Vision
Sebuah komputer yang menyerupai kemampuan manusia dalam menangkap sinyal visual (human sight) dilakukan dalam empat tahapan proses dasar :
* Proses penangkapan citra/gambar (image acquisition),
* Proses pengolahan citra (image processing),
* Analisadata citra (image analysis) dan
* Proses pemahamandata citra (image understanding).

Penjelasan untuk masing-masing proses yaitu, sebagai berikut :

1.    Image Acqusition

·        Image Acqusition pada manusia dimulai dengan mata, kemudian informasi visual diterjemahkan ke dalam suatu format yang kemudian dapat dimanipulasi oleh otak. Senada dengan proses di atas, computer vision membutuhkan sebuah mata untuk menangkap sebuah sinyal visual. Umumnya mata pada computer vision adalah sebuah kamera video. amera menerjemahkan sebuah scene atau image. Kemudian sinyal listrik ini diubah menjadi bilangan biner yang akan digunakan oleh komputer untuk pemrosesan.
·        Keluaran dari kamera adalah berupa sinyal analog, dimana frekuensi dan amplitudonya (frekuensi berhubungan dengan jumlah sinyal dalam satu detik, sedangkan amplitude berkaitan dengan tingginya sinyal listrik yang dihasilkan) merepresentasikan detail ketajaman (brightness) pada scene.
·         Kamera mengamati sebuah kejadian pada satu jalur dalam satu waktu, memindainya dan membaginya menjadi ratusangaris horizontal yang sama. Tiap‐tiap garis membuat sebuah sinyal analog yang amplitudonya menjelaskan perubahan brightness sepanjang garis sinyal tersebut.
·         Karena komputer tidak bekerja dengan sinyal analog, maka sebuah analog‐to‐digital converter (ADC), dibutuhkan untuk memproses semua sinyal tersebut oleh komputer. ADC ini akan mengubah sinyal analog yang direpresentasikan dalam bentuk informasi sinyal tunggal ke dalam sebuah aliran (stream) sejumlah bilangan biner. Bilangan biner ini kemudian disimpan di dalam memori dan akan menjadi data raw yang akan diproses.

2.    Image Processing

·         Image processing membantu peningkatan dan perbaikan kualitas image, sehingga dapat dianalisa dan di olah lebihjauh secara lebih efisien. Image processing akan meningkatkan perbandingan sinyal terhadap noise (signal‐to‐noise ratio = s/n).
·         Sinyal‐sinyal tersebut adalah informasi yang akanmerepresentasikan objek yang ada dalam image. Sedangkan noise adalah segala bentuk interferensiyang terjadi pada sebuah objek.

3.    Image Analysis

·         Image analysis akan mengeksplorasi scene ke dalam bentuk karateristik utama dari objek melalui suatu proses investigasi. Sebuah program komputer akan mulai melihat melalui bilangan biner yang merepresentasikan informasi visual untuk mengidentifikasi fitur‐fitur spesifik dan karekteristiknya.
·         Lebih khusus lagi program image analysis digunakanuntuk mencari tepi dan batas‐batasan objek dalamimage.
·         Sebuah tepian (edge) terbentuk antara objek dan latarbelakangnya atau antara dua objek yang spesifik.Tepi ini akan terdeteksi sebagai akibat dari perbedaan
level brightness pada sisi yang berbeda dengan salahsatu batasnya.

4.    Image Understanding

·         Pada bagian ini akan melibatkan kajian tentang teknikteknik artificial intelligent. Understanding berkaitan dengn template matching yang ada dalam sebuah scene.
·         Metoda ini menggunakan program pencarian (search program)dan teknik penyesuaian pola (pattern matching techniques).

Penerapan computer vision terdapat dalam beberapa bidang yaitu  :
1.      Bidang Pertahanan dan Keamanan (Militer).
2.      Bidang Didalam kendaraan Otonom.
3.      Bidang Industri.
4.      Bidang pengolahan citra medis.
5.      Bidang Neurobiologi.
6.      Bidang Industri Perfilman
7.      Bidang Kecerdasan Buatan.
8.      Bidang Pemrosesan Sinyal.
9.      Bidang Fisika.
10.     Bidang matematika murni.

Beberapa aplikasi yang dihasilkan dari Computer Vision antara lain :

1. Psychology, AI – exploring representation and computation in natural vision
2. Optical Character Recognition – text reading
3. Remote Sensing – land use and environmental monitoring
4. Medical Image Analysis – measurement and interpretation of many types of images
5. Industrial Inspection – measurement, fault checking, process control
6. Robotic – navigation and control

sumber :


Rabu, 09 November 2011

Perbedaan Perancangan Terstruktur dan Perancangan Objek

Ada 2 metode dalam pengembangan sistem, yaitu :
1. Metode terstruktur 
2. Metode berorientasi objek

Dibawah ini akan dijelaskan tentang kedua metode tersebut.

Perancangan Terstruktur 

Pendekatan terstruktur mengenalkan penggunaan alat-alat dan teknik-teknik untuk mengembangkan sistem yang terstruktur. Tujuan pendekatan terstruktur adalah agar pada akhir pengembangan perangkat lunak dapat
memenuhi kebutuhan user, dilakukan tepat waktu,  tidak melampaui anggaran biaya, mudah dipergunakan, mudah dipahami dan mudah dirawat. Teknik terstruktur, merupakan pendekatan formal  untuk memecahkan masalah-masalah dalam  aktivitas bisnis menjadi bagian-bagian kecil yang  dapat diatur dan berhubungan untuk kemudian  dapat disatukan kembali menjadi satu kesatuan  yang dapat dipergunakan untuk memecahkan  masalah. Selain itu perancangan terstruktur juga bertujuan untuk   membuat model solusi terhadap problem yang sudah dimodelkan secara lengkap pada tahap analisis terstruktur. 

Ada empat kegiatan perancangan yang harus dilakukan, yaitu:

  1. Perancangan arsitektural: kita merancang struktur modul P/L dengam mengacu pada model analisis yang sesuai (DFD). Langkahnya adalah: mengidentifikasi jenis aliran (transform flow atau transaction flow), menemukan batas-batas aliran (incoming flow dan outgoing flow), kemudian memetakannya menjadi striktur hirarki modul. Selanjutnya, kita alokasikan fungsi-fungsi yang harus ada pada modul-modul yang tepat.
  2. Perancangan data: kita merancang struktur data yang dibutuhkan, serta merancang skema basisdata dengan mengacu pada model analisis yang sesuai (ERD).
  3. Perancangan antarmuka: kita merancang antarmuka P/L dengan pengguna, antarmuka dengan sistem lain, dan antarmuka antar-modul.
  4. Perancangan prosedural: kita merancang detil dari setiap fungsi pada modul. Notasi yang digunakan bisa berupa flow chart, algoritma, dan lain-lain

Ciri-ciri utama yang mendukung pendekatan terstruktur

* Memanfaatkan alat-alat pemodelan 
Menggunakan model untuk menjelaskan berbagai sistem, sub sistem untuk ditelaah dan dievaluasi oleh pelanggan dan pengembang (sebagai alat komunikasi, eksperimentasi atau prediksi).

„* Merancang berdasar modul
Modularisasi adalah proses yang membagi suatu sistem menjadi beberapa modul yang dapat beroperasi secara independent

*Bekerja dengan pendekatan top-down 
Dimulai dari level atas (secara global) kemudian diuraikan sampai ke tingkat modul (rinci)

*Dilakukan secara iterasi
Dengan iterasi akan didapat hasil yang lebih baik, terlalu banyak iterasi juga akan menurunkan hasilnya dan menunjukkan bahwa tahap sebelumnya tidak dilakukan dengan baik 

*Kegiatan dilakukan secara paralel
Pengembangan subsistem-subsistem dapat dilakukan secara paralel, sehingga akan memperpendek waktu pengembangan sistem

„*Menggunakan CASE (Perangkat Lunak Pendukung Proses Pengembangan) 
Dengan CASE (computer aided software engineering)  memungkinkan analis dapat membangun sistem dan menghasilkan executable secara otomatis

Kelebihan

-Milestone diperlihatkan dengan jelas yang memudahkan dalam manajemen proyek
-SSAD merupakan pendekatan visual, ini membuat metode ini mudah dimengerti oleh pengguna atau programmer.
-Penggunaan analisis grafis dan tool seperti DFD menjadikan SSAD menjadikan bagus untuk digunakan.
-SSAD merupakan metode yang diketahui secara umum pada berbagai industry.
-SSAD sudah diterapkan begitu lama sehingga metode ini sudah matang dan layak untuk digunakan.
-SSAD memungkinkan untuk melakukan validasi antara berbagai kebutuhan
-SSAD relatif simpel dan mudah dimengerti.

Kekurangan

-SSAD berorientasi utama pada proses, sehingga mengabaikan kebutuhan non-fungsional.
-Sedikit sekali manajemen langsung terkait dengan SSAD
-Prinsip dasar SSAD merupakan pengembangan non-iterative (waterfall), akan tetapi kebutuhan akan berubah pada setiap proses.
-Interaksi antara analisis atau pengguna tidak komprehensif, karena sistem telah didefinisikan dari awal, sehingga tidak adaptif terhadap perubahan (kebutuhan-kebutuhan baru).
-Selain dengan menggunakan desain logic dan DFD, tidak cukup tool yang digunakan untuk mengkomunikasikan dengan pengguna, sehingga sangat sliit bagi pengguna untuk melakukan evaluasi.
-Pada SAAD sliit sekali untuk memutuskan ketika ingin menghentikan dekomposisi dan mliai membuat sistem.
-SSAD tidak selalu memenuhi kebutuhan pengguna.
-SSAD tidak dapat memenuhi kebutuhan terkait bahasa pemrograman berorientasi obyek, karena metode ini memang didesain untuk mendukung bahasa pemrograman terstruktur, tidak berorientasi pada obyek (Jadalowen, 2002).

Perancangan Objek

Pendekatan berorientasi objek merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.

Pendekatan berorientasi objek adalah cara memandang persoalan dengan menggunakan model – model yang diorganisasikan seputar konsep objek yang mengkombinasikan struktur data dan perilaku suatu entitas. Pada pendekatan ini, organisasi perangkat lunak adalah sebagai kumpulan objek diskrit yang saling bekerja sama, berkomunikasi, dan berinteraksi menuju sasaran tertentu

Pendekatan Objek memiliki beberapa karakteristik atau sifat yaitu:

1. Abstraksi, yaitu prinsip untuk merepresentasikan dunia nyata yang kompleks menjadi satu bentuk model yang sederhana dengan mengabaikan aspek-aspek lain yang tidak sesuai dengan permasalahan.

2. Enkapsulasi, yaitu pembungkusan atribut data dan layanan (operasi-operasi) yang dipunyai objek.

3. Pewarisan (Inheritance), yaitu mekanisme yang memungkinkan satu objek mewarisi sebagian atau seluruh definisi dan objek lain sebagai bagian dan dirinya.

4. Reusability, yaitu pemanfaatan kembali objek yang sudah didefinisikan untuk suatu permasalahan pada permasalahan lainnya yang melibatkan objek tersebut.

5. Generalisasi dan Spesialisasi, yaitu menunjukkan hubungan antara kelas dan objek yang umum dengan kelas dan objek yang khusus.

6. Komunikasi Antar Objek, yaitu dilakukan lewat pesan yang dikirim dari satu objek ke objek lainnya.

7. Polymorphism, yaitu kemampuan suatu objek untuk digunakan di banyak tujuan yang berbeda dengan nama yang sama, sehingga menghemat baris program.

Kelebihan

-Dibandingkan dengan metode SSAD, OOAD lebih mudah digunakan dalam pembangunan sistem
-Dibandingkan dengan SSAD, waktu pengembangan, level organisasi, ketangguhan,dan penggunaan kembali (reuse) kode program lebih tinggi dibandingkan dengan metode OOAD (Sommerville, 2000).
-Tidak ada pemisahan antara fase desain dan analisis, sehingga meningkatkan komunikasi antara user dan developer dari awal hingga akhir pembangunan sistem.
-Analis dan programmer tidak dibatasi dengan batasan implementasi sistem, jadi desain dapat diformliasikan yang dapat dikonfirmasi dengan berbagai lingkungan eksekusi.
-Relasi obyek dengan entitas (thing) umumnya dapat di mapping dengan baik seperti kondisi pada dunia nyata dan keterkaitan dalam sistem. Hal ini memudahkan dalam mehami desain (Sommerville, 2000).
-Memungkinkan adanya perubahan dan kepercayaan diri yang tinggi terhadap kebernaran software yang membantu untuk mengurangi resiko pada pembangunan sistem yang kompleks (Booch, 2007).
-Encapsliation data dan method, memungkinkan penggunaan kembali pada proyek lain, hal ini akan memperingan proses desain, pemrograman dan reduksi harga.
-OOAD memungkinkan adanya standarisasi obyek yang akan memudahkan memahami desain dan mengurangi resiko pelaksanaan proyek.
-Dekomposisi obyek, memungkinkan seorang analis untuk memcah masalah menjadi pecahan-pecahan masalah dan bagian-bagian yang dimanage secara terpisah. Kode program dapat dikerjakan bersama-sama.      
-Metode ini memungkinkan pembangunan software dengan cepat, sehingga dapat segera masuk ke pasaran dan kompetitif. Sistem yang dihasilkan sangat fleksibel dan mudah dalam memelihara.

Kekurangan

-Pada awal desain OOAD, sistem mungkin akan sangat simple.
-Pada OOAD lebih fockus pada coding dibandingkan dengan SSAD.
-Pada OOAD tidak menekankan pada kinerja team seperti pada SSAD.
-Pada OOAD tidak mudah untuk mendefinisikan class dan obyek yang dibutuhkan sistem.
-Sering kali pemrogramam berorientasi obyek digunakan untuk melakukan anlisisis terhadap fungsional sistem, sementara metode OOAD tidak berbasis pada fungsional sistem.
-OOAD merupakan jenis manajemen proyek yang tergolong baru, yang berbeda dengan metode analisis dengan metode terstruktur. Konsekuensinya adalah, team developer butuh waktu yang lebih lama untuk berpindah ke OOAD, karena mereka sudah menggunakan SSAD dalam waktu yang lama ( Hantos, 2005).
-Metodologi pengembangan sistem dengan OOAD menggunakan konsep reuse. Reuse merupakan salah satu keuntungan utama yang menjadi alasan digunakannya OOAD. Namun demikian, tanpa prosedur yang emplisit terhadap reuse, akan sangat sliit untuk menerapkan konsep ini pada skala besar (Hantos, 2005).

Perbedaan dari kedua pendekatan sistem tersebut adalah :
  • Terstrukur ==> modul merupakan unit dari kode software yang menjalankan fungsi
  • Objek==>modul merupakan objek yang mengenkapsulasi atribut dan kode program untuk bisa berjalan

sumber :