Rabu, 16 Juni 2010
BERSULAM CINTA DAN ALLAH MENYERTAIMU
Allah telah menghitung manisnya senyummu,
Saat sapaanmu tak terjawab,
Allah tak lupa berapa kata yang kau ucap,
Saat ajakanmu tak terpenuhi, lelahmu tak akan tertinggal dicatat raqib-Nya,
Ketika kau menangis atas perihnya perjuanganmu,
Allah tak lalai menghitung berapa tetes air matamu,
Ketika mereka lari meninggalkanmu, Allah tak akan lupa menyertaimu.
Sahabat,
jika kita banyak mengeluh karena beratnya ujian kehidupan,
jika kita banyak menangis karena celaan dan cacian, jika kita menyerah dalam dakwah ini,
ingatlah, sesungguhnya Allah tidak akan salah dalam mencatat sekecil apaun pengorbanan kita di jalan ini.
Lantas,
apakah pekerjaan kita sebanding dengan karunia Allah dalam setiap desah nafas kita, dalam setiap amal ibadah kita?
Apakah kita pernah merasakan tersenyum kepada sahabat kita,
kepada keluarga kita, kepada binaan kita, kepada objek dakwah kita?
lalu mereka tidak membalas senyumanmu itu,
bahkan mengejek dan menertawakanmu atau bahkan tersenyum namun secara sinis.
Apakah pernah lisan kita menyapa kawan kita,
menyapa mad’u kita, menyapa rekan kerja kita,
menyapa semua orang dengan suara kebaikan kita setulus hati?
Namun balasan mereka jauh dari yang kita harapkan.
Mereka senantiasa acuh terhadap sapaan hangat kita,
mereka tidak peduli dengan ketulusan salam kita,
atau mereka hanya membalas tanpa ada kesan menerima dengan tulus.
Engkau mengajak semua orang kepada jalan kebaikan dengan mengorbankan jiwa bahkan harta,
dengan mengorbankan waktu dan tenaga. Balasan mereka kadang tidak peduli terhadap ajakan kita,
bahkan mereka marah-marah dan mencaci kita,dengan umpatan,hujatan dan makian yang menyakitkan.
Ajakan kita ditolak baik dengan kasar ataupun halus, dengan cacian ataupun hanya diam.
Ketika semua usaha kita dalam dakwah ini mendapat tantangan yang sangat berat,
air matamu pun jatuh perlahan,menangis karena perihnya cobaan, karena pedihnya cacian,
karena lelahnya perjuangan dan pengorbanan,
karena hanya sedikit yang menolong kita dalam mengarungi jalan ini.
Ketika aktivis dakwah yang tidak menolong kita,
ketika para penyeru itu tidak mau ikut ambil bagian dalam beratnya perjuangan.
Yakinlah, Allah tidak akan lalai terhadap hamba-Nya yang memperjuangkan agama-Nya.
Ketika senyuman tulus kita untuk teman atau objek dakwah kita tidak mendapat balasan atau senyuman,
Yakinlah Allah telah menghitung manisnya senyummu dari tulusnya hatimu.
Ketika sapaan hangat kita dibalas dengan acuh,
Yakinlah Allah telah mencatat berapa kata yang terucap dalam sapaanmu.
Ketika ajakanmu dalam kebaikan dibalas dengan keburukan,
Allah tidak pernah lengah mencatat usaha dan kerja kerasmu, meski lelah, meski resah dan gelisah.
Ketika mereka lari darimu, karena tidak mau mengikuti dalam keb aikan dan kebenaran,
Yakinlah Allah tidak akan meninggalkanmu.
Ketika kita menangis karena perihnya cobaan dalam dakwah ini,
Yakinlah, Allah tidak akan pernah lalai menghitung tiap tetes air matamu.
Maka, jangan pernah berkeluh kesah, dan jangan pernah takut dalam berjuang di jalan-Nya,
karena Allah beserta orang-orang yang berjihad dengan harta dan jiwanya,
karena Allah akan menolong dan meneguhkan pendiriannya, Karena Allah telah menjanjikan surga bagi hamba-hamba-Nya.
Semoga kita semakin teguh di jalan ini. Semoga kita tetap istiqomah dalam dakwah ini.
Dan semoga petunjuk dan pertolongan Allah senantiasa menyertai kita dalam lelahnya jiwa ini,
dalam beratnya ujian ini, dalam sakitnya siksaan ini.
Semoga kita digolongkan menjadi para penghuni surga tertinggi di surga Firdaus. Amin
Senin, 14 Juni 2010
MEMBANGUN ETIKA SEJAK DINI
Membangun etika tidak semudah membangun sebuah rumah idaman. Akan tetapi pada prinsipnya mempunyai kesamaan yaitu sama – sama butuh perencanaan yang matang, pondasi yang kokoh serta berbagai perabotan untuk mengisi rumah tersebut agar nampak cantik dan elok untuk dipandang. Membangun etika bisa dilakukan dimana saja baik di lingkungan keluarga, sekolah maupun masyarakat. Peranan keluarga khususnya para orang tua adalah yang paling utama dalam membangun etika seorang anak sejak dini.
Adapun tahapan – tahapan dalam membangun etika sejak dini adalah sebagai berikut :
1. Sentuh Indera (Penglihatan dan Pendengaran)
Anak - anak memiliki naluri untuk meniru dari apa yang ditemukan dan diamati, ini adalah proses awal pembentukan kepribadian(etika). Seluruh pengaruh yang dirasakannya baik yang dilihat dan didengar dapat dijadikan sebagai sebuah pengalaman dan pengetahuan baru. Suatu keadaan lingkungan tertentu (sekolah dan masyarakat) dapat memberikan pengalaman baru yang dipahami oleh mereka. Bagaimana kita mengerti proses yang terjadi tersebut sebagai suatu yang wajar dan alamiah, sehingga dalam upaya memberikan pendidikan mengenai etika akan lebih berhasil. Disinilah peranan orang tua sangat dibutuhkan dalam membangun etika si anak. Diharapkan dengan contoh – contoh yang baik akan menjadikan si anak meniru perilaku yang baik itu pula. Misalnya memberi pengemis uang (memberi contoh anak untuk gemar bersedekah), mengajak anak beribadah, tidak berkelahi, tidak membuang sampah sembarangan, menghormati orang tua, figuritas dsb.
2. Sentuh Hati atau Perasaan
Hati anak kecil adalah suci, terdapat kepolosan dalam diri anak kecil. Jika kita tanamkan kebaikkan maka hasilnya akan baik. Jika kita tanamkan keburukan maka hasilnya buruk. Disinilah tahapan selanjutnya setelah kita menyentuh indera mereka. Sesuatu perbuatan yang mereka lakukan, mereka lihat, mereka temukan pasti ada nilainya. Sentuh hati disini adalah dimaksudkan pemberian kesadaran serta pemberian alasan kepada si anak tentang sesuatu hal yang dilakukannya. Sentuh hati disini tidak dilakukan secara kasar atau otoriter. Tapi secara perlahan – lahan beserta pemberian contoh kepada anak. Contoh sentuh hati adalah mengajak anak ke panti asuhan. Disini kita mengajarkan kepada anak tentang rasa syukur atas karunia yang tuhan berikan.
Program apa saja yang dapat membentuk etika sejak dini adalah
1. Tanamkan Moral Agama Pada Anak
Disini anak lebih ditekankan agar berperilaku baik sesuai agama yang dipeluknya. Dengan agama akhlak seorang anak dibangun. Rasa sayangnya kepada tuhan dengan ibadahnya, tindakannya kepada sesama manusia dan sikapnya kepada alam. Setiap tindakannya dilihat oleh tuhan dan akan mendapatkan ganjaran (berupa pahala dan dosa). Disini pribadi seorang anak dibangun seperti sikap jujur, adil, tidak sombong, dsb.
2. Mengembangkan Kepekaan Sosial
Empati merupakan upaya memahami posisi seseorang dan apa yang dirasakannya. Dengan kata lain, empati lebih dari sekadar rasa kasihan, karena di dalamnya terdapat makna untuk menghargai dan menghormati orang di sekitarnya. Itulah sebabnya, bagi para orangtua, membangun pemahaman anak terhadap empati lebih penting artinya dibandinglan sekadar memberikan materi kepada orang lain (misalnya pada pengemis) hanya karena kasihan. Caranya bisa beragam dan akan lebih mengena bila si anak mengalaminya secara langsung. Misalnya, merayakan ulang tahun bersama anak-anak panti asuhan, membagikan sembako pada para pengungsi bencana alam di tenda-tenda pengungsian, ataupun menyumbangkan alat baca-tulis pada anak-anak jalanan.
Pada dasarnya, setiap manusia dibekali sifat welas asih untuk saling membantu dan menyayangi antara sesama manusia, sesama makhluk hidup dan lingkungannya. Melalui kegiatan sosial tersebut, anak tidak hanya melihat potret kehidupan orang lain, tetapi belajar untuk peduli dan memahami bahwa banyak anak-anak yang tidak seberuntung dirinya. Dengan begitu, empati dan kepekaan sosialnya dapat terasah. Perlu diingat, empati amat erat kaitannya dengan kepekaan atau kecerdasan sosial sehingga perlu ditanamkan sejak kecil dalam membangun etika.
3. Bebas tapi bertanggung jawab
Anak bebas melakukan tindakan apapun asal sesuai dengan norma – norma yang ada serta didasari rasa tanggung jawab atas semua tindakan yang dilakukannnya.
Sabtu, 17 April 2010
LUNTURNYA NILAI ETIKA TRADISIONAL AKIBAT TEKNOLOGI
Salah satu dampak yang muncul sebagai akibat dari perkembangan teknologi informasi adalah semakin lunturnya etika tradisional. nilai – nilai etika tradisional yang dahulu dijunjung tinggi, dianggap dan diyakini sebagai suatu keluhuran, kini diabaikan karena dianggap tidak penting lagi. Sebagai contohnya :
Contoh 1. FACEBOOK
a) Teknologi:
Internet
b) Model kerja:
Facebook adalah media jejaring sosial yang diciptakan untuk dapat berkomunikasi dengan keluarga, teman dan kolega yang berada jauh tanpa harus bertatap muka.Sejalan dengan perkembangannya Facebook digunakan juga untuk mencari teman atau kenalan. Mudah saja untuk berkomunikasi dengan menggunakan Facebook kita tinggal mengisi Box Message, Wall, ataupun Chat user yang kita inginkan. Misalkan saja kita sebagai user A dan orang yang kita inginkan dapat berkomunikasi adalah User B (penerima pesan).Ketika User A ingin berkenalan dengan User B, user A tinggal mencari nama atau email user B, meng-klik namanya, lalu klik “Add as friend”.User B akan menerima permintaan pertemanan dari User A. Jika User B meng-klik “Confirm”, maka pertemanan pun terjadi.
c) Nilai etika tradisional yang hilang
Pada proses komunikasi antara User A dan B diatas jelas sekali terlihat bahwa tidak terjadi pertemuan fisik. Hal ini tentu saja menghilangkan spirit atau jiwa dan nilai esensi dari ajang komunikasi atau sosialisasi (ikatan emosional, silahturahmi dan rasa kekeluargaan). Selain itu akan melunturkan nilai manusia sebagai makhluk social. Seseorang akan menjadi kurang peka terhadap lingkungan dan menjadi terasa memiliki dunia sendiri. Banyak orang yang enggan keluar dari rumah karena sudah merasa cukup mendapatkan informasi melalui internet. Akan tetapi perlu digaris bawahi bahwa tidak semua masalah dapat diselesaikan menggunakan internet. Banyak user Facebook menuangkan suasana hatinya di dalam Facebook, tidak sedikit juga semua hal yang berhubungan dengan user dapat diketahui dengan melihat Facebook user tersebut. Hal – hal inilah yang menjadi cikal bakal akan hilangnya budaya timur bangsa kita, budaya yang menjunjung rasa kekeluargaan. Nilai – nilai yang harusnya tabu untuk diketahui orang menjadi biasa di dunia Facebook. Lihat saja status user Facebook yang mengungkapkan isi hatinya, entah itu masalah pribadinya ataupun keluarganya. Masalah yang harusnya dikunci rapat – rapat dalam bingkai hatinya ternyata tertuang mudah begitu saja dalam kata – kata di Facebook. Lihat juga foto – foto user Facebook (para muslimah). Selembar kain suci yang tiap pagi hingga petang menjaganya dari mustapah ternoda begitu saja dan terasa tak berharga oleh rambutnya yang indah dalam bingkai Facebook. Perlu diketahui juga dampak negatifnya yaitu perdagangan wanita lewat Facebook serta berbagai penipuan.
Contoh 2. TOKO ONLINE
a) Teknologi:
Internet
b) Model kerja:
Toko online adalah proses jual beli melalui media Internet. Dalam proses jual beli ini, Penjual membuat Web yang berisi tentang informasi barang yang diperdagangkan. Melalui internet inilah, calon Pembeli yang posisinya berada dimana saja cukup membuka Web tersebut untuk menemukan barang yang ingin dibelinya. kemudian Pembeli tinggal meng-klik “Beli” pada barang yang ingin dibelinya dan transaksipun telah terjadi. Selanjutnya Pembeli tinggal men-transfer uang ke Penjual via Internet Banking dan Barang, melalui jasa pengiriman barang, akan sampai ke Pembeli dalam hitungan hari.
c) Nilai etika tradisional yang hilang
Pada transaksi jual beli diatas, proses jual belinya tetap dilakukan meskipun si penjual dan pembeli berada di tempat yang berbeda tanpa ada pertemuan fisik. Hal ini membuat etika dalam transaksi tradisional menjadi hilang. Beberapa etika tradisional yang hilang itu antara lain tatap muka, proses tawar menawar, silaturahmi dan rasa kekeluargaan. Tatap muka atau pertemuan fisik sangatlah penting dilakukan sebagai makhluk sosial. Apabila kita melakukan proses jual beli di pasar tradisional, kita tidak hanya melihat tatap muka antara si penjual dan pembeli yang bertransaksi saja tetapi kita akan bertatap muka dengan pembeli-pembeli dan penjual-penjual lainnya. Disinilah terjadi proses tawar menawar. Dengan bumbu – bumbu canda dan tawa proses tawar menawar pun terjadi, rasa kekeluargaan pun terbentuk dan bahkan menjadi ajang silaturahmi antara penjual dan pembeli.
Contoh lainnya adalah laundry, disitu kita juga dapat menelaah satu persatu akibat adanya teknologi. Dampak positifnya kita dapat membuat lapangan kerja baru beserta mempantu para ibu rumah tangga yang sibuk. Tapi perlu diingat ada dampak negatifnya juga yaitu membuat orang menjadi bermalas malasan (kebiasaan) sehingga menjadi budaya dalam dirinya. Serta menjadikan orang tersebut hidup boros.
Dari 3 contoh tersebut dapat disimpulkan bahwa dengan semakin berkembangnya dunia teknologi dapat berakibat positif dan negatif bagi seseorang tetapi hal tersebut tergantung dari orangnya. Apabila orang tersebut dapat memanfaatkan dengan baik akan membawa keuntungan yang baik, tapi apabila tidak dapat mengaturnya dengan baik akan berakibat fatal bagi orang tersebut dan berakibat melunturkan nilai etika tradisional pada dirinya sendiri.
Teknologi memang diciptakan untuk memudahkan manusia dalam menyelesaikan pekerjaannya, akan tetapi akan sangat tidak bijak jika dalam pengembangan dan penerapan teknologi tersebut pada akhirnya mengikis nilai – nilai kita sebagai Manusia. Semua dikembalikan pada diri kita masing – masing.
Rabu, 31 Maret 2010
SANG AKTOR 25 M
Kasus yang bulan lalu santer terdengar lantang ditelinga kita kini kian lama mulai redup. Berterima kasihlah pada pegawai pajak golongan IIIA ini. Siapa peduli dengan kasus 6,7 triliyun yang tak jelas kemana ujungnya itu. Lupakan huru hara di panggung termegah di pemerintahan kita bulan lalu. Masih ingatkah kita dengan opsi C bahwa Kebijakan bailout Century dianggap kebijakan yang keliru. Setidaknya lagu yang berjudul GAYUS menjadi top hit urutan atas makanan para pencari berita di media massa. Lupakan pula rekomendasi untuk penon aktifan dua pejabat tinggi negara, Wapres Boediono dan Menteri Keuangan Sri Mulyani. Dengan 25 Milyar rupiah kasus Century kian redup. Siapa aktor dibelakangnya???
Dialah si Gayus Halomoan Tambunan. Dengan usia belum genap sepertiga abad, dia mampu menyabet gelar sebagai salah satu pegawai negeri sipil (PNS) terkaya di Indonesia. Pegawai pajak golongan IIIA ini memiliki Rp 25 miliar di rekeningnya. Ditambah rumah megah nan elok dimata berdiri kokoh pada sebidang lahan di Gading Park View. Padahal kalau dihitung dari gajinya saja setiap bulan rasanya tidak mungkin. Wow, darimana ya si Gayus bisa membangun istana semegah itu? Hmmm ^_^ … darimana ya !!! Mungkin perkataan itu yang sekarang terbesit dipikiran kita. Jangan-jangan !!!
Dengan gaji pokok dan berbagai tunjangan 2,4 juta, remunerasi sekitar 8,2 juta serta imbalan prestasi kerja rata-rata 1,5 juta apakah tidak cukup bagi Gayus untuk hidup. Di tengah situasi ekonomi yang kian sulit ini tindakannya sangat melukai wong cilik. Banyak saudara-saudara kita memeras keringat dan membanting tulang hanya demi sesuap nasi. Demi keluarga mereka, demi anak-anak mereka. Lihatlah para tukang becak, pemulung, tukang ojek, para sopir, para pembersih sampah guna menyambung hidup. Mereka relah menerjang derasnya hujan,teriknya panas matahari serta debu-debu kehidupan hanya demi uang 10 ribu sampai 40 ribu (gak sampai sejuta sebulan). Tidakkah kita miris melihat adek-adek kecil dijalanan mengemis, menyanyi, serta mejual koran. Pantaskah mimpi anak-anak kecil itu melayang begitu saja. Tak melihatkah ia bahwa para abdi negara yang rela berkorban nyawa alias mati demi negara berpenghasilhan dibawahnya.Tak terbesitkah di otak Gayus bahwa gajinya di dinas pajak itu sangatlah besar menurut mereka. Masih kurangkah ???
Lantas siapakah yang patut disalahkan atas masalah ini? Apakah kita pantas untuk menyalahkan agama untuk masalah ini? Almamater yang melahirkannya kah? Ataukah budaya orang Indonesia yang jeli melihat kesempatan itu? Mungkinkah keterlibatan keluarga?
??? hmm..
Banyak sekali pertanyaan yang hinggap di kepala kita.
Agama !!!. Adakah ajaran agama yang berisi nilai-nilai kebaikan mengajarkan begitu? Pasti semua pemeluk agama agama di Indonesia mengatakan tidak. Pantaskah kita tetap menyalahkan ajaran agama yang bersumber dari tuhan untuk masalah si Gayus.
Hmm.. kita lewati tentang agama. Selanjutnya adalah almamater si Gayus bernaung yang mengubah hidupnya 360 derajat. Dari penghuni rumah kecil menjadi penghuni rumah megah bak ‘istana’di kelapa gading. Kuliah dimana sih si Gayus ??? pasti semua sudah mengetahuinya. Semua mata saat ini tertuju pada Sekolah Tinggi Akuntansi Negara yang menjadi almamater si Gayus. Melihat sepak terjang STAN selama ini yang mencetak abdi Negara yang hebat. Dengan sisitem perekrutan yang begitu selektif untuk dapat mengenyam pendidikan di institusi tersebut. Pantaskah kita menodai citra yang terbentuk selama ini hanya karena seorang Gayus.
Keluarga !!! Ini adalah tolak ukur kita untuk menilai seseorang. Karena di keluargalah seseorang memperoleh pendidikan pertama sebelum terjun dalam masyarakat. Disinilah nilai-nilai agama ditanamkan untuk pertama kalinya, nilai moral dan etika pertama kali diajarkan. Dari sinilah awal watak dan perilaku seseorang mulai terbentuk. Dan untuk merubahnya setelah dewasa sangatlah sulit. Dibutuhkan faktor yang sangat besar untuk merubah itu semua. Tidak menutup kemungkinan dari sinilah latar belakang Gayus melakukannya. Hanya butuh 10 tahun dia mampu menjelma menjadi seorang milyader. Mungkin dari istri, anak bahkan mertuanya ia melakukannya. Semua dugaan tentang keluarga itu akan sirna jika seseorang mampu mengendalikan emosi dan nafsu dalam dirinya jika dibentengi agama yang kuat. Godaan keluarga dan budaya dapat diatasi jika seseorang mempunyai kekuatan yang besar yaitu iman. Dengan iman seseorang akan lebih takut hukuman akhirat dibandingkan dengan hukuman penjara jika melakukannya karena mereka sadar kekekalan hukuman itu. Dengan pengetahuan agama yang melimpah seseorang akan menjadi pribadi yang elok dimata masyarakat bahkan tuhan dengan ibadah-ibadahnya. Sehingga pentingnya ilmu agama terutama akhlak sangatlah membantu untuk mengarungi hidup yang kejam ini. Seseorang akan tetap kokoh berdiri dengan menjujung niali-nilai kebenaran agamanya meski badai godaan menerjangnya. Dengan pendidikan agama dari kecil diharapkan tidak akan muncul Gayus-Gayus lainnya yang membuat wong cilik sakit hati lagi.
Selasa, 07 Juli 2009
Jawaban Tugas 6
short[,] vse = new short[3, 3] {
{ 0, 1, 0 },
{ 0, 1, 0 },
{ 0, 1, 0 }
};
AForge.Imaging.Filters.HitAndMiss vFilter =
new AForge.Imaging.Filters.HitAndMiss( vse );
System.Drawing.Bitmap vImage = vFilter.Apply( image );
// searching for horizontal lines
short[,] hse = new short[3, 3] {
{ 0, 0, 0 },
{ 1, 1, 1 },
{ 0, 0, 0 }
};
AForge.Imaging.Filters.HitAndMiss hFilter =
new AForge.Imaging.Filters.HitAndMiss( hse );
System.Drawing.Bitmap hImage = hFilter.Apply( image );
source code 2
// create filter sequence
AForge.Imaging.Filters.FiltersSequence filterSequence =
new AForge.Imaging.Filters.FiltersSequence();
// add 8 thinning filters with different structuring elements
filterSequence.Add(new AForge.Imaging.Filters.HitAndMiss(
new short [,] {{0, 0, 0}, {-1, 1, -1}, {1, 1, 1}}, HitAndMissMode.Thinning ));
filterSequence.Add(new AForge.Imaging.Filters.HitAndMiss(
new short [,] {{-1, 0, 0}, {1, 1, 0}, {-1, 1, -1}}, HitAndMissMode.Thinning ));
filterSequence.Add(new AForge.Imaging.Filters.HitAndMiss(
new short [,] {{1, -1, 0}, {1, 1, 0}, {1, -1, 0}}, HitAndMissMode.Thinning ));
filterSequence.Add(new AForge.Imaging.Filters.HitAndMiss(
new short [,] {{-1, 1, -1}, {1, 1, 0}, {-1, 0, 0}}, HitAndMissMode.Thinning ));
filterSequence.Add(new AForge.Imaging.Filters.HitAndMiss(
new short [,] {{1, 1, 1}, {-1, 1, -1}, {0, 0, 0}}, HitAndMissMode.Thinning ));
filterSequence.Add(new AForge.Imaging.Filters.HitAndMiss(
new short [,] {{-1, 1, -1}, {0, 1, 1}, {0, 0, -1}}, HitAndMissMode.Thinning ));
filterSequence.Add(new AForge.Imaging.Filters.HitAndMiss(
new short [,] {{0, -1, 1}, {0, 1, 1}, {0, -1, 1}}, HitAndMissMode.Thinning ));
filterSequence.Add(new AForge.Imaging.Filters.HitAndMiss(
new short [,] {{0, 0, -1}, {0, 1, 1}, {-1, 1, -1}}, HitAndMissMode.Thinning ));
// create filter iterator for 10 iterations
AForge.Imaging.Filters.FilterIterator filter =
new AForge.Imaging.Filters.FilterIterator(filterSequence, 10);
Kamis, 02 Juli 2009
Tugas 7 (Karya Tulis)
Content Based Image Retrieval (CBIR)
Ada dua cara yang dapat dilakukan dalam pengambilan kembali suatu image atau image retrieval
a. context-based adalah pengambilan data dengan merujuk pada kandungan semantik berkaitan dengan image, biasanya berhubungan dengan deskripsi image misalnya keyword dari image.
b. content-based adalah pengambilan data dengan merujuk pada fitur image seperti warna, tekstur, bentuk, atau kombinasi atau yang biasa desebut dengan Content Based Image Retrieval (CBIR).
Pada perkembangannya teknik context based menjadi tidak praktis dikarenakan adanya ukuran basis data yang besar dan penilaian subjektif dalam mengartikan image dengan text. Untuk menghindari teknik ini, maka digunakan pendekatan lain dalam image retrieval yaitu content based.CBIR adalah salah satu metodologi untuk pemanggilan kembali data image berdasarkan content sebuah image. Teknik CBIR yang banyak digunakan adalah teknik warna, teknik tekstur, dan teknik bentuk. Pada sistem CBIR, content visual dari image akan diekstraksi dan diuraikan menggunakan metode pengekstrakan ciri. Untuk mendapatkan kembali image, user menginputkan query image. Kemudian sistem akan mengekstrak image tersebut sehingga menghasilkan fitur ciri image. Fitur ciri image query dan image dalam database akan dicari similaritynya. Image yang memiliki nilai similarity yang paling tinggi akan muncul diurutan teratas. Gambar dibawah ini memperlihatkan bentuk umum sistem CBIR. Pada image tersebut terdapat dua jalur utama yaitu query dan database. Pada kedua lajur tersebut terdapat visual content description yang akan digunakan untuk proses similarity comparison, indexing dan retrieval.
www.ittelkom.ac.id/library/index.php?option
Sistem Pengenalan Wajah Optimal
Sistem Pengenalan Wajah
Wajah manusia merupakan objek dinamik yang memiliki tingkat variabilitas yang
tinggi. Hal ini membuat sistem pengenalan wajah yang memanfaatkan komputer meru-
pakan si
stem yang tidak sederhana. Permasalahan umum yang ingin dijawab oleh sis-tem ini adalah : Diberikan citra statis atau citra video, tunjukkan bagian citra yang
yang mengandung wajah(-wajah), jika ada identifikasi atau verifikasi wajah tersebut.
Pada dasarnya ada lima langkah yang dilakukan dalam pengenalan wajah yaitu
menangkap citra wajah baik langsung maupun tidak langsung, melakukan segmen-
tasi atau deteksi wajah dengan cara melokalisir wajah dari latar belakangnya, meng-
ekstraksi ciri wajah dari region wajah yang sudah terdeteksi untuk mendapatkan tem-
plate wajah, membandingkan template dengan template pada basisdata wajah dan
menunjukkan hasilnya. Gambar 2.1 memperlihatkan langkah-langkah tersebut secara
generik.
Gambar 2.1: Diagram Blok Sistem Pengenalan Wajah Generik
Penangkapan citra wajah (image capturing) dapat dilakukan secara langsung (real
time) menggunakan kamera video atau secara tidak langsung dimana citra wajah di-
ambil dari citra yang sudah ada ataupun dipindahkan dengan bantuan scanner. Secara
umum tahapan ini bisa dilakukan tanpa kendala yang berarti. Tahap lokalisasi wajah
adalah tahap dimana komputer mencoba melokalisir wajah yang ada di dalam citra,
kemudian memisahkannya dari latar belakangnya. Tahapan ini merupakan tahapan
yang sukar dilakukan namun sangat penting, walaupun dalam literatur masih belum
banyak dibahas [6]. Pengetahuan tentang bagaimana bentuk wajah serta warna kulit
sangat mempengaruhi kesuksesan pendeteksian wajah. Setelah citra wajah diperoleh,
maka dilakukan tahap analisis karakteristik wajah dimana ciri-ciri khusus wajah diek-
straksi (features extraction) untuk memperoleh template wajah. Template ini berisi
kumpulan data wajah yang telah direduksi demikian rupa yang menunjukkan ciri-ciri
khusus wajah yang bersangkutan. Tahapan pengenalan wajah dapat dikelompokkan
dalam 2 bagian yaitu identifikasi (who is X?) dan verifikasi (is this X?). Pada tahapan
ini template akan dibandingkan dengan template yang ada pada basisdata wajah.
Dalam literatur disebutkan topik-topik penelitian lain yang berkaitan dengan pen-
deteksian wajah antara lain adalah penelitian ekspresi wajah dan juga penelusuran
wajah (face tracking).
2.2 Metode Pendeteksian Wajah
Pendeteksian wajah merupakan bagian yang utama dalam sistem pengenalan wajah.
Literatur memberikan penjelasan yang berbeda-beda mengenai metode-metode yang
digunakan pada tahapan ini. Chellapa dalam [30] membagi sistem pengenalan wa-
jah menjadi tiga bagian yaitu segmentasi/deteksi, ekstraksi ciri dan pengenalan wa-
jah. Masing-masing tahapan dijelaskan metode-metode yang tercakup di dalamnya.
Hjelmas [6] dalam surveinya tidak membagi pendeteksi wajah berdasarkan langkah-
langkah, namun ia mengelompokkannya menjadi dua bagian besar yaitu berdasarkan
pendekatan ciri (Feature-based approaches) dan berdasarkan pendekatan citra (Image-
based approaches) seperti yang ditunjukkan pada gambar 2.2.
Pendekatan lain dibuat oleh Yang [17] dimana pendeteksian wajah dibagi ke dalam
empat kategori sebagai berikut:
1. Metode berbasiskan pengetahuan (Knowledge-based methods). Metode
berbasiskan aturan ini (rule-based) mencoba mengkodekan pengetahuan manusia
yang menjelaskan apa itu wajah manusia. Biasanya aturan-aturan ini mengkaitkan
relasi antara ciri-ciri wajah.
2. Pendekatan ciri invarian (F
berusaha menemukan struktur ciri yang ada dalam berbagai posisi, titik pengam-3. Metode pencocokan template (Template matching methods). Beber-
apa pola-pola wajah disimpan untuk mendeskripsikan wajah secara keseluruhan
maoun sebagian. Korelasi antara citra masukan dan pola yang disimpan akan
dihitung untuk pendeteksian.
4. Metode Berbasiskan Penampilan (Appearance-based methods). Pada
pendekatan ini, sekaligus juga peningkatan metode sebelumnya, model wajah akan dipelajari oleh sistem melalui sekumpulan citra yang mewakili ciri-ciri wajah
yang berbeda.
PROGRAM PASCASARJANA
INSTITUT TEKNOLOGI BANDUNG
2004
Deteksi Huruf Dan angka
dapat didefinisikan sebagai bentuk visual yang dapatditerima secara baik oleh indera penglihatan, apapunbentuknya. Dalam bidang komputer, citra atau disebut juga image merupakan representasi visual dari suatuobjek setelah mengalami berbagai transformasi datadari berbagai bentuk rangkaian numerik. Komputer memiliki cara pandang tersendiriterhadap suatu citra. Berbeda dengan citra konvensionalyang misalnya dengan melalui proses fotografis seperti pada foto dapat dihasilkan suatu citra nyata
yang langsung dapat dinikmati oleh indera penglihatan,
citra pada komputer harus melalui beberapa tahapan
yang cukup rumit. Tahapan-tahapan tersebut dapat
digambarkan sebagai suatu rangkaian proses dari
proses akuisisi data, manipulasi data, visualisasi data,
serta proses penyimpanan data. Penjelasan lebih lanjut
dari proses-proses tersebut dapat dilihat pada [8].
Diantara proses tersebut diatas, proses penyimpanan
data adalah bagian paling pelik dari pengolahan citra
pada komputer. Saat ini sudah ter-dapat banyak metode
yang dapat digunakan untuk menyimpan suatu citra
digital ke dalam suatu file. File adalah media penyimpanan
standar pada sistem komputer. Metode-metode
penyimpanan tadi tentunya memiliki perbedaan yang
cukup berarti antara satu dengan yang lainnya. Hal
yang paling membedakan biasanya adalah tingkat
kompresi data yang ditawarkan oleh masing-masing
metode. Beberapa metode yang sudah cukup dikenal
adalah BMP, JPEG, PCX, WMF, TIFF, dll.
B. Jaringan Syaraf Propagasai Balik
Propagasi balik merupakan salah satu proses
belajar jaringan syaraf buatan dimana dalam proses
belajar tersebut pengubahan nilai berlangsung pada
arah mundur, yaitu mulai dari lapisan output dan
berakhir di lapisan input.
Algoritma belajar propagasi balik adalah sebagai
berikut [5] :
1. Perhitungan nilai keluaran neuron pada lapisan
tersembunyi dan output
dimana,
i = nomor neuron yang sedang dihitung
sinyal aktivasinya.
j = nomor neuron yang outputnya
dikontribusikan pada neuron i
sj = nilai output neuron j
wij = nilai bobot hubungan antara neuron ke i
dan ke j
qi = nilai bias neuron ke i
fungsi neti atau f(neti) disebut juga sebagai fungsi
aktivasi yang bentuknya dapat bermacam-macam.
2. Perhitungan kesalahan dalam proses belajar
disebut dengan fungsi energi.
dimana,
yi = output target neuron output i
si
x = output aktual neuron output I pada saat
jaringan terhubung dengan sample x
3. Perhitungan sensitivitas (δi) neuron-neuron dalam
lapisan tersembunyi dan lapisan output. Dimana
persamaan yang digunakan untuk perhitungan
sensitivitas baik untuk lapisan tersembunyi
maupun lapisan output, tergantung dari fungsi
aktivasi yang digunakan.
4. Perhitungan nilai perubahan bobot dan bias.
perubahan bobot :
perubahan bias :
5. Perhitungan nilai bobot dan bias baru.
bobot baru :
bias baru :
6. Langkah-langkah tersebut diulang sampai deviasi
keluaran kecil sehingga mencapai stopping kriteria
error yang diharapkan.
Fungsi aktivasi dapat diibaratkan sebagai
pendefinisian penguatan non linier dalam sistem analog
(continue). Penguatan (gain) ini dihitung dengan
mencari rasio perubahan pada fungsi output neuron
pada lapisan tersembunyi dan lapisan keluaran, dimana
penguatan merupakan kemiringan kurva pada suatu
tingkat eksistensi tertentu, dan nilainya berubah dari
harga yang kecil pada eksitasi negatif yang besar
(kurvanya hampir mendatar) menjadi harga yang besar
pada eksitasi nol, dan nilainya kembali mengecil
seiring dengan eksitasi yang semakin besar dan positif.
Fungsi aktivasi tidak hanya digunakan pada saat
perhitungan nilai keluaran neuron saja (neuron pada
lapisan tersembunyi dan lapisan output), tetapi turunan
pertamanya digunakan juga untuk menghitung
perubahan bobot dan bias pada proses belajar. Dalam
penulisan ini digunakan fungsi aktivasi Sigmoid
Parameter penting lainnya dari JSB adalah
bagaimana output dari JSB tersebut direpresentasikan,
secara terlokalisasi atau terdistribusi. Dalam penulisan
ini akan digunakan metode output yang direpresentasikan
secara terdistribusi. Hal ini dikarenakan banyaknya
jumlah variasi output yang harus direpresentasikan,
sehingga tidaklah efektif bila direpresentasikan
dengan jumlah digit sebanyak variasi output yang
berbeda. Perlu diketahui, seperti yang telah disebutkan
pada bagian batasan masalah, bahwa citra yang akan
dicoba untuk dikenali adalah citra huruf-huruf alpabet
(huruf kecil maupun huruf kapital) berikut angka-angka
arab satuan, yang berarti ada sejumlah 62 (13 huruf
kecil+13 huruf besar+10 angka arab satuan) objek yang
harus direpresentasikan sebagai target output. Tentunya
sangatlah tidak efektif bila 62 objek tersebut
( )
i ( i)
N
j
i ij j i
s f net
net w s q
=
+ =Σ
=1
( )
( )
= Σ Σ −
xy i
x
i
x
i E
dimana,
yi = output target neuron output i
si
x = output aktual neuron output I pada saat
jaringan terhubung dengan sample x
3. Perhitungan sensitivitas (δi) neuron-neuron dalam
lapisan tersembunyi dan lapisan output. Dimana
persamaan yang digunakan untuk perhitungan
sensitivitas baik untuk lapisan tersembunyi
maupun lapisan output, tergantung dari fungsi
aktivasi yang digunakan.
4. Perhitungan nilai perubahan bobot dan bias.
perubahan bobot :
perubahan bias :
5. Perhitungan nilai bobot dan bias baru.
bobot baru :
bias baru :
6. Langkah-langkah tersebut diulang sampai deviasi
keluaran kecil sehingga mencapai stopping kriteria
error yang diharapkan.
Fungsi aktivasi dapat diibaratkan sebagai
pendefinisian penguatan non linier dalam sistem analog
(continue). Penguatan (gain) ini dihitung dengan
mencari rasio perubahan pada fungsi output neuron
pada lapisan tersembunyi dan lapisan keluaran, dimana
penguatan merupakan kemiringan kurva pada suatu
tingkat eksistensi tertentu, dan nilainya berubah dari
harga yang kecil pada eksitasi negatif yang besar
(kurvanya hampir mendatar) menjadi harga yang besar
pada eksitasi nol, dan nilainya kembali mengecil
seiring dengan eksitasi yang semakin besar dan positif.
Fungsi aktivasi tidak hanya digunakan pada saat
perhitungan nilai keluaran neuron saja (neuron pada
lapisan tersembunyi dan lapisan output), tetapi turunan
pertamanya digunakan juga untuk menghitung
perubahan bobot dan bias pada proses belajar. Dalam
penulisan ini digunakan fungsi aktivasi Sigmoid
Parameter penting lainnya dari JSB adalah
bagaimana output dari JSB tersebut direpresentasikan,
secara terlokalisasi atau terdistribusi. Dalam penulisan
ini akan digunakan metode output yang direpresentasikan
secara terdistribusi. Hal ini dikarenakan banyaknya
jumlah variasi output yang harus direpresentasikan,
sehingga tidaklah efektif bila direpresentasikan
dengan jumlah digit sebanyak variasi output yang
berbeda. Perlu diketahui, seperti yang telah disebutkan
pada bagian batasan masalah, bahwa citra yang akan
dicoba untuk dikenali adalah citra huruf-huruf alpabet
(huruf kecil maupun huruf kapital) berikut angka-angka
arab satuan, yang berarti ada sejumlah 62 (13 huruf
kecil+13 huruf besar+10 angka arab satuan) objek yang
harus direpresentasikan sebagai target output. Tentunya
sangatlah tidak efektif bila 62 objek tersebut
direpresentasikan dengan sejumlah 62 digit biner
output.
Pada metode output terdistribusi, setiap huruf
alpabet dan angka arab akan dikonversi ke dalam
bentuk pengkodean 6 bit. Berarti hanya diperlukan 6
neuron yang akan digunakan sebagai output pada
lapisan output JSB. Tetapi dengan pengkodean 6 bit
berarti tersedia 26 = 64 variasi output yag berbeda,
sedangkan simbol atau objek yang akan
direpresentasikan hanya ada 62 objek, untuk itu penulis
menambahkan dua objek tambahan untuk melengkapi
ketersediaan pengkodean, kedua objek tersebut adalah
‘>’ dan ‘?’.
III. IMPLEMENTASI KONSEP
A. Analisi Masalah
Suatu citra huruf atau angka (selanjutnya akan
disebut sampel) yang akan diidentifikasi menggunakan
JSB, haruslah melalui tahapan-tahapan tertentu terlebih
dahulu sehingga dapat menjadi input yang baik bagi
JSB. Adapun input yang dapat diterima oleh dengan
baik oleh JSB adalah berupa kumpulan data numerik.
Dengan demikian maka permasalahan pertama adalah
bagaimana mengkonversi suatu citra digital menjadi
kumpulan data numerik yang representatif dan
konsisten. Tentunya walaupun JSB yang digunakan
memiliki karakteristik, struktur ataupun konfigurasi
yang sudah cukup spesifik, masih ada parameterparameter
penting lain dari JSB tersebut yang harus
diatur untuk mendapatkan hasil terbaik. Parameterparameter
tersebut antara lain adalah pengaruh bias dan
bobot awal, nilai momentum, nilai LearnRates, nilai
stopping criteria error, epoch, dan lain sebagainya.
Penyesuaian terhadap nilai-nilai tersebut adalah
masalah berikutnya yang akan dianalisa.
B. Metode Akuisisi Data
Setiap sampel yang akan diamati dan dianalisa
oleh JSB harus direpresentasikan secara baik ke dalam
bentuk data numerik. Untuk itu diperlukan suatu
metode yang dapat mengekstraksi data ciri dari setiap
sampel tadi secara konsisten. Tentunya data numerik
yang dihasilkan haruslah benar-benar dapat mewakili
karakteristik atau ciri-ciri dari sampel yang diamati,
sehingga diharapkan dari sekumpulan data dengan
target yang sama akan dihasilkan suatu generalisasi
atau pencirian secara umum terhadap suatu target yang
sejenis. Proses akuisisi data tersebut harus benar-benar
akurat dengan mempertimbangkan semua karakteristik
dari setiap sampel yang tidak lain adalah suatu citra
digital, dimana setiap citra digital memiliki
karakteristik tertentu.
B.1. Karakteristik Sampel
Sampel-sampel yang akan diamati tentunya harus
dibatasi dengan suatu struktur dimensi dan
homogenisasi pixel yang sederhana, sehingga diharapkan
dapat mempermudah proses analisa terhadap
konsep ini. Setiap sampel adalah satu citra digital yang
nilai warna dari pixel-pixelnya terhomo-genisasi
menjadi dua representasi warna, yaitu warna aktif
(hitam) dan warna nonaktif (selain hitam). Selain itu
dimensi dari setiap sampel dibatasi sebesar area yang
disediakan pada program aplikasi, tetapi tidak akan
mengurangi fleksibilitas dan skalabilitas yang
diharapkan.
B.2. Ekstraksi Data
Untuk mendapatkan data yang akurat dan
konsisten dari setiap sampel, digunakan suatu metode
sederhana yaitu dengan cara menghitung jumlah pixel
aktif yang terdapat pada bagian-bagian dari sampel.
Adapun algoritma umum dari pengekstrakan data
numerik dari setiap sampel adalah sebagai berikut :
1. Setiap sampel yang diamati, dibagi menjadi
beberapa area, misalnya 4 kolom dan 5 baris,
sehingga akan terdapat 20 area pengamatan;
2. jumlah pixel yang aktif dari setiap area yang ada
dihitung secara akurat;
3. dihasilkan sejumlah 20 data numerik dengan
atribut kolom dan baris yang diharapkan dapat
mewakili data ciri dari sampel yang diamati.
Setelah melalui tahapan normalisasi, data-data
numerik tadi akan menjadi data input pada JSB.
Dengan demikian jumlah area yang ada pada setiap
sampel akan bersesuaian dengan jumlah neuron input
JSB yang akan digunakan. Agar dapat dihasilkan
kumpulan data yang seragam, maka setiap sampel yang
akan diamati haruslah memiliki jumlah area pembagian

yang sama. Berikut contoh pengekstrakan data ciri dari
sampel pada Gambar 3.1.
>> Praktikum 7 Histogram Ekualisasi (Enhancement 3)
Mahasiswa dapat membuat program untuk memperjelas citra dengan histogram Equalization
Dasar Teori :
Histogram Equalization
Histogram Equalization adalah suatu proses perataan histogram, dimana distribusi nilai derajat keabuan pada suatu citra dibuat rata. Untuk dapat melakukan histogram equalization ini diperlukan suatu fungsi distribusi kumulatif yang merupakan kumulatif dari histogram.
Misalkan diketahui data sebagai berikut:


Analisa :
1. Tugas 1
a. Histogram citra gray scale : grafik yang menggambarkan hubungan antara suatu nilai dan banyaknya nilai itu muncul pada sebuah data
b. Kumulatif histogram citra gray scale : banyaknya kemunculan suatu nilai pada sebuah data
c. Histogram equalisasi citra gray scale : suatu proses perataan histogram, dimana distribusi nilai derajat keabuan pada suatu citra dibuat rata
Citra yang dihasilkan menggunakan metode penambahan contrass menjadi lebih terang dari citra aslinya. Namun citra yang dihasilkan tidak teralu baik (terlalu terang).
3. Tugas 3
Citra yang dihasilkan menggunakan metode penambahan brightness menjadi lebih terang dari citra aslinya. Namun citra yang dihasilkan tidak terlalu baik (kabur)
4. Tugas 4
Hasil dari hequalization ternyata sesuai dengan yang terdapat pada teori yaitu naik secara linier. Hal tersebut dikarenakan Hequalization (perataan histogram) adalah suatu proses dimana histogram diratakan berdasarkan suatu fungsi linier (garis lurus)
5. Tugas 5
Kesimpulan :
2. Histogram equalization dilakukan dengan cara meratakan distribusi nilai derajat keabuan dari suatu citra.
>> Praktikum 6 Transformasi Citra (Enhancement 2)
Mahasiswa dapat membuat program untuk transformasi citra yaitu inverse, log, inverse log, nth power, nth root power
Dasar Teori :
Transformasi Citra:
Inversi Citra
Inversi citra adalah proses negatif pada citra, misalkan pada photo, dimana setiap nilai citra dibalik dengan acuan threshold yang diberikan. Proses ini banyak digunakan pada citra-citra medis seperti USG dan X-Ray. Untuk citra dengan derajat keabuan 256, proses inversi citra didefinisikan dengan:
xn = 255 - x
Tranformasi Logaritmik
Tranformasi Logaritmik didefinisikan dengan G = c Log (F +1)
Tranformasi Invers Logaritmik didefinisikan dengan G = c Log (L-F +1)
Dimana G adalah citra hasil, F citra asal, c adalah konstanta yang dipasang sebagai efek perubahan kontras
Transformasi Power Law
Transformasi Power Law ada dua yaitu nth power dan nth root power
Transformasi nth power dedifinisikan dengan G = C F Y
Transformasi nth root power didefinisikan dengan G = C F 1/Y
Dimana G adalah citra hasil, F adalah citra asal, c dan y adalah konstanta positif
Analisa :
1. Latihan 1
a. Transforma
si citra negativeInversi citra adalah proses negatif pada citra, dimana setiap nilai citra dibalik dengan acuan threshold yang diberikan. Gambar yang dihasilkan baru sedikit terliha
t ketika slider dimaksimalkan. Untuk citra dengan derajat keabuan 256, proses inversi citra didefinisikan dengan: xn = 255 – xb. Transformasi citra dengan fungsi LOG
Transformasi menggunakan fungsi LOG akan mempengaruhi contras dari suatu citra, citra yang ditransformasi menggunakan metode ini akan terlihat lebih terang.
c.Transformasi citra dengan fungsi inverse LOG

Transformasi menggunakan fungsi LOG akan mempengaruhi contras dari suatu citra, citra yang ditransformasi menggunakan metode ini akan terlihat lebih gelap.
d.Transformasi citra Nth power

Transformasi citra Nth power menghasilkan citra yang menyerupai grayscale.
e.Transformasi citra Nth root power

Transformasi citra Nth root power menghasilkan citra yang lebih contras menyerupai transformasi menggunakan fungsi LOG
2. Latihan 2

• Negative : Semakin besar input gray level yang diberikan maka semakin kecil nilai output gray level yang dihasilkan. Nilai output yang didapatkan linier.
• LOG : Mula-mula nilai output gray level yang didapatkan mengalami peningkatan yang cukup besar seiring bertambahnya nilai input. Namun saat mencapai nilai input tertentu, peningkatan nilai output menjadi menurun hingga mendekati kondisi steady.
• Inverse LOG : Mula-mula nilai gray level yang didapatkan mengalami peningkatan yang kecil seiring bertambahnya nilai output. Namun saat mencapai nilai input tertentu, nilai output mengalami peningkatan yang cukup besar hingga mendekati kondisi steady
• Nth power : Karakteristiknya hamper sama seperti inverse LOG, namun lebih mendekati linier.
• Nth power root : Karakteristiknya hamper sama seperti LOG, namun lebih mendekati linier
Kesimpulan :
1. Transformasi citra dapat dilakukan dengan berbagai cara, diantaranya dengan inverse (negative), proses logaritmik (LOG dan inverse LOG) , dan power law (Nth power dan Nth power root).
2. Untuk transformasi inverse diperlukan nilai maksimum yang didapatkan dari slider. Untuk transformasi LOG dan inverse LOG diperlukan nilai C yang diinputkan melalui text box. Sedangkan untuk transformasi power law dibutuhkan nilai C dan Y yang diinputkan melalui text box
Jawaban Tugas 5
//Konversi dari data pixel ke RGB dan dari data RGB ke data Pixel:
void WarnaToRGB(long int warna,int *Red, int *Green, int *Blue)
{
*Red = warna & 0x000000FF;
*Green = (warna & 0x0000FF00) >> 8;
*Blue = (warna & 0x00FF0000) >> 16;
}
long int RGBToWarna(int Red, int Green, int Blue){return(Red+(Green<<8)+(Blue<<16));
}
//Program untuk melakukan load angka (*.bmp).
void CAngkaDlg::OnLoad1()
{static char BASED_CODE szFilter[]="Bitmap Files (*.bmp)|*.bmp||";
CFileDialog m_ldFile(TRUE,"*.bmp",name, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);
if(m_ldFile.DoModal()==IDOK) { name=m_ldFile.GetPathName();
}
CDC* pDC = m_pic1.GetDC(); CDC dcMem;
CRect rect; BITMAP bm;
HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),name,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(hBitmap) {
if(m_bmpBitmap.DeleteObject()) m_bmpBitmap.Detach(); m_bmpBitmap.Attach(hBitmap);
}
m_pic1.GetClientRect(rect); m_bmpBitmap.GetBitmap(&bm);
dcMem.CreateCompatibleDC(pDC); dcMem.SelectObject(&m_bmpBitmap);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bm.bmWidth,bm.bmHeight,SRCCOPY);
}
//Program untuk menampilkan proyeksi integral horizontal dari angka .
void CAngkaDlg::OnHip1() {
int i,j; int red,green,blue; long int warna;
CDC* pDC = m_pic1.GetDC(); CDC dcMem; CRect rect; BITMAP bm;
HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),name,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
m_pic1.GetClientRect(rect); m_bmpBitmap.GetBimap(&bm);
dcMem.CreateCompatibleDC(pDC); dcMem.SelectObject(&m_bmpBitmap);
for(j=0;j<,bm.bmWidth;j++){
hx1[j]=0;
for(i=0;i<,bm.bmHeight;i++)
{
warna=dcMem.GetPixel(j,i);
WarnaToRGB(warna,&red,&green,&blue);
hx1[j]+=(float)(255-red)/255;}
hx1[j]=hx1[j]/2;
}
CDC* pDC1 = m_pic3.GetDC();
for(i=1;iMoveTo(i*0.75,0);
pDC1->LineTo(i*0.75,hx1[i]); }
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bm.bmWidth,bm.bmHeight,SRCCOPY);
}
//Program untuk menampilkan proyeksi integral vertikal dari angka.
void CAngkaDlg::OnVip1() {
int i,j; int warna,red,green,blue; CDC* pDC = m_pic1.GetDC();
CDC dcMem1; CRect rect; BITMAP bm;
HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),name,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(hBitmap) {
if(m_bmpBitmap.DeleteObject()) m_bmpBitmap.Detach();
m_bmpBitmap.Attach(hBitmap); }
m_pic1.GetClientRect(rect); m_bmpBitmap.GetBitmap(&bm);
dcMem1.CreateCompatibleDC(pDC); dcMem1.SelectObject(&m_bmpBitmap);
for(j=0;j<,bm.bmHeight;j++) {
hy1[j]=0;
for(i=0;i<,bm.bmWidth;i++) {
warna=dcMem1.GetPixel(j,i);
warnaToRGB(warna,&red,&green,&blue);
hy1[j]+=(float)(255-red)/255; }
hy1[j]=hy1[j]/2;
}
CDC*pDC1= m_pic2.GetDC(); for(i=0;i
pDC1->MoveTo(0,0.75*i); pDC1->LineTo(hy1[i],0.75*i);
}}
>> Praktikum 5 Perbaikan Citra (Enhancement 1)
1.Mahasiswa dapat membuat program untuk menampilkan histogram dari citra 2. Mahasiswa dapat membuat program untuk memperjelas citra (brighness) dan kontras
Dasar Teori :
Brightness Brightness adalah proses penambahan kecerahan dari nilai derajat keabuan. Proses brightness ini dilakukan dengan me-nambahkan nilai derajat keabuan dengan suatu nilai penambah. xb = x + b dimana x = adalah nilai derajat keabuan b = nilai penambah xb = hasil brightness
Mengubah Kontras Mengubah kontras dari suatu citra adalah proses pengaturan nilai range interval pada setiap nilai derajat keabuan, dan didefinisikan dengan :
Analisa :
1. Latihan 1

Source code untuk brightness :

Nilai warna pada setiap pixel akan diambil rata-rata red, green dan bluenya kemudian nilai rata-rata itu akan ditambahkan dengan nilai brightness yang didapat dari textbox, nilai warna akan dibatasi dari 0 sampai dengan 255,kemudian semua titik akan diberikan nilai warna baru tersebut 2. Latihan 2




Source code untuk contrass :

Sama dengan proses brightness pada gambar RGB tetapi nilai k tidak ditambahkan dengan rata-rata nilai red, green bluenya melainkan dikalikan
3. Latihan 3

Source code untuk autolevel :

Auto level akan mengatur brightness dan contrass gambar secara otomatis, dengan cara mencari nilai terbesar dan terkecil rata-rata red green blue tiap-tiap pixel, setelah itu akan dicari jarak antara nilai terkcil dan terbesar yang akan dijadikan sebagai nilai untuk memperbaiki citra, dalam hal ini citra akan diubah ke format grayscale
Kesimpulan :
1. Brightness adalah proses penambahan kecerahan dari nilai derajat keabuan. Proses brightness ini dilakukan dengan menambahkan nilai derajat keabuan dengan suatu nilai penambah.
2. Mengubah kontras dari suatu citra adalah proses pengaturan nilai range interval pada setiap nilai derajat keabuan
Jawaban Tugas 4 (Membuat Aplikasi Pengenalan Angka )
Percobaan 1 (Membuat Aplikasi Sederhana Untuk Proses Pengenalan Angka):
- Pembuatan Aplikasi
· Buat aplikasi AppWizard dan beri nama project dengan Lat17
· Buat disain dialog seperti pada gambar berikut dengan 6 buah control picture dan 7 buah button.
·
Ubah properti control dan tambahkan class variabel control tipe dan membernya seperti pada tabel berikut:
· Tambahkan program untuk melakukan konversi dari data pixel ke RGB dan dari data RGB ke data Pixel. Seperti berikut.
// merubah data pixel ke RGB
void WarnaToRGB(long
int warna,int *Red, int *Green, int *Blue)
{
*Red = warna & 0x000000FF;
*Green = (warna &
0x0000FF00) >> 8;
*Blue = (warna &
0x00FF0000) >> 16
;
}
//merubah RGB
ke data pixel
long int RGBToWarna(int Re
d, int Green, int Blue)
{
return(Red+(Green<<8)+(blue<<1
6));
}
· Tambahkan program pada button1 click seperti di bawah ini,yang berfungsi untuk melakukan load gambar angka1 (Load Angka [1]).
void
CLat17Dlg::OnButton
1()
{
// TODO: Add your control notification handler code here
static char BASED_CODE
szFilter[]="Bitmap Files
(*.bmp)|*.bmp||";
CFileDialog m_ldFile(TRUE, "*.bmp", name,
OFN_HIDEREADONL
Y|OFN_OVERWRITEP
ROMPT, szFilter);
if(m_ldFile.DoModal()==IDOK)
{
name=m_ldFile.GetP
athName();
}
CDC* p
DC = m_pic1.GetDC();//
mengarah kontrol picture
CDC dcMem; //mengarahkan obyek yg sdh dipilih pd
bitmap
CRect rect;//kotak di picture
BITMAP bm;//mendefinisikan
fungsi2 yg ada d bitmap
HBITMA
P hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),
name ,IMAGE_BITMAP,
0, 0, LR_LOADFROMFIL
E|LR_CREATEDIBSECTION);
if(hBitmap)
{
if(m_bmpBitmap.Del
eteObject())
m_bmpBitmap.Detach
();
m_bmpBitmap.Attach(h
Bitmap);
}
m_pic1.GetClientRect(rect);
m_bmpBitmap.GetB
itmap(&bm);
dcMem.CreateCompati
bleDC(pDC);
//pDC->MoveTo(10,190);
//pDC->LineTo(300,190);
dcMem.SelectObje
ct(&m_bmpBitmap);
pDC->StretchBlt(0,0
,rect.Width(),rect.Height(),&dcMem,
0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
}
· Tambahkan program pada button2 click seperti di bawah ini,yang akan melakukan proses Integral Proyeksi Horizontal terhadap angka 1 (gambar1) dan menampilkannya pada Picture 5 (gambar 5).
void CLat17Dlg::OnButton
2()
{
// TODO: Add your control notification handler code here
int i,j;
int red,green,blue;
long int warna,warna1;
//float h[384];
CDC* pDC = m_pic1.GetDC();
CDC dcMem;
CRect rect; //kotak di
picture
BITMAP bm; //mendefinisikan fungsi2 yg ada d bitmap
HBITMAP hBitm
ap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),
name ,IMAGE_BIT
MAP, 0, 0, LR_LOADFROMFILE|L
R_CREATEDIBSEC
TION);
m_pic1.GetClientRect(rect);
m_bmpBitmap.GetBit
map(&bm);
dcMem.CreateComp
atibleDC(pDC);
dcMem.SelectObject(&m_bmpBitmap);
for(j=0;j
{
hx[j]=0;
for(i=0;i
{
warna=dcMem.GetPixel(j,i);
WarnaToRGB(warna,&red,&green,&blue);
hx[j]+=(float)(255-red)/255;
}
hx[j]=hx[j]/2;
}
CDC* pDC1 = m_pic5.GetDC();
for(i=1;i
{
//1.3 nilai x atau lebar
pDC1->MoveTo(i*3.5,0);
pDC1->LineTo(i*3.5,hx[i]);
}
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,
0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
}
· Tambahkan program pada button3 click seperti di bawah ini,yang akan melakukan proses Integral Proyeksi Vertical terhadap angka 1 (gambar1) dan menampilkannya pada Picture 2 (gambar 2).
void CLat17Dlg::OnButton3()
{
// TODO: Add your control notification handler code here
int i,j;
int red,green,blue;
long int warna,warna1;
//float h[384];
CDC* pDC = m_pic1.GetDC();
CDC dcMem;
CRect rect; //kotak di picture
BITMAP bm;//mendefinisikan fungsi2 yg ada d bitmap
HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),
name ,IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
m_pic1.GetClientRect(rect);
m_bmpBitmap.GetBitmap(&bm);
dcMem.CreateCompatibleDC(pDC);
dcMem.SelectObject(&m_bmpBitmap);
for(i=0;i
{
hy[i]=0;
for(j=0;j
{
warna=dcMem.GetPixel(j,i);
WarnaToRGB(warna,&red,&green,&blue);
hy[i]+=(float)(255-red)/255;
}
hy[i]=hy[i]/2;
}
CDC* pDC1 = m_pic2.GetDC();
for(i=1;i
{
//1.3 nilai x atau lebar
pDC1->MoveTo(0,i*2);
pDC1->LineTo(hy[i],i*2);
}
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,
0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
}
· Tambahkan program pada button4 click seperti di bawah ini,yang berfungsi untuk melakukan load gambar angka2 (Load Angka [2]).
void CLat17Dlg::OnButton4()
{
// TODO: Add your control notification handler code here
static char BASED_CODE szFilter[]="Bitmap Files (*.bmp)|*.bmp||";
CFileDialog m_ldFile(TRUE, "*.bmp", name, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, szFilter);
if(m_ldFile.DoModal()==IDOK)
{
name=m_ldFile.GetPathName();
}
CDC* pDC = m_pic3.GetDC(); // mengarah kontrol picture
CDC dcMem; //mengarahkan obyek yg sdh dipilih pd bitmap
CRect rect; //kotak di picture
BITMAP bm; //mendefinisikan fungsi2 yg ada d bitmap
HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),
name ,IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(hBitmap)
{
if(m_bmpBitmap.DeleteObject())
m_bmpBitmap.Detach();
m_bmpBitmap.Attach(hBitmap);
}
m_pic3.GetClientRect(rect);
m_bmpBitmap.GetBitmap(&bm);
dcMem.CreateCompatibleDC(pDC);
//pDC->MoveTo(10,190);
//pDC->LineTo(300,190);
dcMem.SelectObject(&m_bmpBitmap);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,
0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
}
· Tambahkan program pada button5 click seperti di bawah ini,yang akan melakukan proses Integral Proyeksi Horizontal terhadap angka 2 (gambar3) dan menampilkannya pada Picture 6 (gambar 6).
void CLat17Dlg::OnButton5()
{
// TODO: Add your control notification handler code here
int i,j;
int red,green,blue;
long int warna,warna1;
//float h[384];
CDC* pDC = m_pic3.GetDC();
CDC dcMem;
CRect rect; //kotak di picture
BITMAP bm; //mendefinisikan fungsi2 yg ada d bitmap
HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),
name ,IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
m_pic3.GetClientRect(rect);
m_bmpBitmap.GetBitmap(&bm);
dcMem.CreateCompatibleDC(pDC);
dcMem.SelectObject(&m_bmpBitmap);
for(j=0;j
{
hx2[j]=0;
for(i=0;i
{
warna=dcMem.GetPixel(j,i);
WarnaToRGB(warna,&red,&green,&blue);
//penggunaan red, tidak terikat, bisa green atau blue
// digunakan 255- , supaya bisa masuk/mendapatkan warna hitam
hx2[j]+=(float)(255-red)/255;
}
hx2[j]=hx2[j]/2;
}
CDC* pDC1 = m_pic6.GetDC();
for(i=1;i
{
//1.3 nilai x atau lebar
// dimulai dari 0 ke atas, sehingga gambar histogramnya kebalik
pDC1->MoveTo(i*2,0);
pDC1->LineTo(i*2,hx2[i]);
}
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,
0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
}
· Tambahkan program pada button6 click seperti di bawah ini,yang akan melakukan proses Integral Proyeksi Vertical terhadap angka 2 (gambar3) dan menampilkannya pada Picture 4 (gambar 4).
void CLat17Dlg::OnButton6()
{
// TODO: Add your control notification handler code here
int i,j;
int red,green,blue;
long int warna,warna1;
//float h[384];
CDC* pDC = m_pic3.GetDC();
CDC dcMem;
CRect rect; //kotak di picture
BITMAP bm; //mendefinisikan fungsi2 yg ada d bitmap
HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),
name ,IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
m_pic3.GetClientRect(rect);
m_bmpBitmap.GetBitmap(&bm);
dcMem.CreateCompatibleDC(pDC);
dcMem.SelectObject(&m_bmpBitmap);
for(i=0;i
{
hy2[i]=0;
for(j=0;j
{
warna=dcMem.GetPixel(j,i);
WarnaToRGB(warna,&red,&green,&blue);
hy2[i]+=(float)(255-red)/255;
}
hy2[i]=hy2[i]/2;
}
CDC* pDC1 = m_pic4.GetDC();
for(i=1;i
{
//1.3 nilai x atau lebar
pDC1->MoveTo(0,i*2);
pDC1->LineTo(hy2[i],i*2);
}
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,
0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
}
· Tambahkan program pada button7 click seperti di bawah ini,yang berfungsi untuk melakukan load pencocokan antara angka1 dengan angka 2 dengan membandingkan perhitungan kedua integral proyeksinya,baik horizontal maupun vertical dari kedua gambar angka yang dibandingkan (Matching).
void CLat17Dlg::OnButton7()
{
// TODO: Add your control notification handler code here
CDC* pDC1 = GetDC();//
float dx=0,dy=0,d;
int i;
char str[5];
float jhx=0,jhy=0,jhx2=0,jhy2=0;
//digunakan untuk normalisasi angka1
for(i=0;i<50;i++)
jhx+=hx[i];
for(i=0;i<80;i++)
jhy+=hy[i];
for(i=0;i<50;i++)
hx[i]=hx[i]/jhx;
for(i=0;i<80;i++)
hy[i]=hy[i]/jhy;
//digunakan untuk normalisasi angka2
for(i=0;i<50;i++)
jhx2+=hx2[i];
for(i=0;i<80;i++)
jhy2+=hy2[i];
for(i=0;i<50;i++)
hx2[i]=hx2[i]/jhx2;
for(i=0;i<80;i++)
hy2[i]=hy2[i]/jhy2;
//hitung jarak
for(i=0;i<50;i++)
dx=dx+fabs (hx[i]-hx2[i]);
for(i=0;i<80;i++)
dy=dy+fabs (hy[i]-hy2[i]);
d=dx/50+dy/80;
sprintf(str,"%f",d);
pDC1->TextOut(60,320,str);
}
2. Menambah header file
· Buka file Lat17Dlg.h
· Tambahkan program seperti dibawah ini
public:
CLat17Dlg(CWnd* pParent = NULL); // standard constructor
CBitmap m_bmpBitmap;
CBitmap m_bmpBitmap2;
CString name;
float hx[300],hy[300];
float hx2[300],hy2[300];
3. Cara menjalankan program (Running Program)
· Pilih menu : Build->Execute (!)
· Click button1(Load Angka1 ): picture 1 akan menampilkan gambar angka1
· Click button2 (Integral Proyeksi Horizontal [1]): picture 5 akan menampilkan hasil integral proyeksi dari gambar angka1.
· Click button3 (Integral Proyeksi Vertical [1]): picture 2 akan menampilkan hasil integral proyeksi dari gambar angka1.
· Click button4(Load Angka2 ): picture 3 akan menampilkan gambar angka2
· Click button5 (Integral Proyeksi Horizontal [2]): picture 6 akan menampilkan hasil integral proyeksi dari gambar angka2.
· Click button6 (Integral Proyeksi Vertical [2]): picture 4 akan menampilkan hasil integral proyeksi dari gambar angka2.
· Click button7 (Matching): Akan dilakukan perhitungan kemiripan antara angka1 dengan angka2 berdasarkan bentuk integral proyeksi horizontal & integral proyeksi verticalnya.
· Hasil Running Aplikasi tampak seperti pada gambar berikut:
Tampilan Hasil Exsekusi program:
Pada Tampilan diatas dilakukan proses pembandingan antara angka 0 dan angka 6 berdasarkan integral proyeksi horizontal & integral proyeksi vertikalnya.dan diperoleh nilai error 0.012879. Semakin kecil nilai errornya (semakin mendekati 0) maka dua macam obyek akan semakin memiliki tingkat kemiripan yang tinggi.

Pada tampilan diatas dilakukan pengenalan angka terhadap obyek yang sama yaitu,angka 0 dan diperoleh hasil nilai error = 0.000000 (kedua obyek sama).
Analisa :
· Semakin kecil nilai error yang dihasilkan dari proses pengenalan angka,maka akan diperoleh hasil yang semakin valid & akurat.
· Dalam proses pengenalan angka ini dilakukan pembandingan dua macam obyek berdasarkan kesamaan bentuk dan nilai dari integral proyeksi horizontal & integral proyeksi verticalnya.



