Rabu, 01 Februari 2012

MENGHITUNG NILAI FREKUENSI NADA-NADA









A4 = 440 Hz dipilih sebagai nada patokan karena merupakan general pitch standard.
Untuk lebih jelasnya silahkan cek di 





karena sedang males nulis, jadi saya upload versi picture-nya..
MOHON MAAF yang sebesar-besarnya apabila masih banyak kekurangan..

Minggu, 03 Juli 2011

Kenalan dengan TMS320C6713 DSK

Salah satu produk dari Texas Instruments, yaitu platform TMS320C6000 DSP pada highperformance digital signal processors (DSPs) telah meluncurkan TMS320C6713. Tipe DSK C6713 mememiliki kinerja tertinggi diantara keluarga C6000 DSP platform pada tipe floatingpoint DSPs. Dengan dibekali clock rate sebesar 225 MHz, C6713 dapat memproses informasi pada rate 1.35 giga-floating-point operations per second (GFLOPS).
Produk ini diperkenalkan pada February 1997, C6000 DSP platform didasarkan pada arsitektur TI’s VelociTITM, yang merupakan pengembangan dari very-long-instruction-word (VLIW) architecture untuk DSPs. Pengembangan fitur pada arsitektur VelociTI melibatkan instruction packing, conditional branching, dan pre-fetched branching, yang mana in imenimbulkan permasalahan berkaitan dengan implementasi implementasi VLIW yang muncul sebelumnya.
Architecture sifatnya highly deterministic, yang mana beberapa hambatan bagaimana ketika instruksi di-fetched, executed, atau stored. Flexibilitas arsitektur ini merupakan kunci untuk terobosan level efficiency pada compiler C6000.

TMS320C6713 DSK

C6713 DSK merupakan suatu low-cost stand alone development platform yang memberi kesempatan kepada user untuk melakukan evaluasi dan membangun aplikasi sendiri berbasis keluarga DSP C67xx. DSK juga membantu sebagai sebuah hardware reference design untuk TMS320C6713 DSP. Secara fisik C6713 DSK bisa dilihat seperti gambar berikut ini.

Gambar DSP Starter Kit TMS320C6713

DSK disusun dalam kemasan yang mana semua komponen pendukungnya disediakan pada suatu on-board devices yang memungkinkan digunakan dalam berbagai aplikasi dengan beragam keperluan yang berkaitan dengan pengolahan sinyal digital.

Gambar Blok Diagram TMS320C6713

Untuk memudahkan dalam pemahaman, sebuah diagram skelmatik fungsional nya diberikan pada Gambar diatas. Disini ada beberapa fitur kunci seperti:

  • Processor TMS320C6713 DSP dari Texas Instrument yang beroperasi pada 225 MHz
  • Sebuah AIC23 stereo codec
  • Memory synchronous DRAM 16 M byte
  • Flash Memory non-volatile sebesar 512 Kbytes (256 Kbytes secara default digunakan)
  • 4 user accessible LED dan DIP Switch
  • Software board yang diimplementasikan pada CPLD
  • Standar Expansion kokector
  • JTAG emulation pada on-board JTAG emulator dengan USB Host atau external emulator
  • Single power supply (+5 V)

DSK menggunakan suatu stereo codec dari Texas Instrument bertipe AIC23 untuk interface sinyal audio input dan output. Codec menyampel sinyal-sinyal analog pada microphone atau line input dan mengkonversikannya ke dalam bentuk data digital sehingga dapat diproses dengan DSP. Ketika DSP telah menyelesaikan pengolahan data (pemfilteran, dsb, maka codec ini juga bisa berfungsi dalam mengkonversi sinyal digital menjadi sinyal output analog melalui line out atau headphone.

Gambar Codec Interface TMS320C6713

Codec berkomunikasi menggunakan dua channel serial, satu untuk mengontrol register konfigurasi line codec, dan satunya untuk mengirim dan menerima sampel-sampel audio digital.
McBSP0 digunakan sebagai unidirectional control channel. Ini seharusnya deprogram untuk mengirim suatu 16-bit control word ke AIC23 dalam format SPI. Ada 7 bit atas pada control word yang seharusnya menspesisikasi register untuk dimodifikasi dan ada 9 bit bawah yang berisi nilai-nilai register. Control channel hanya digunakan ketika mengkonfigurasi codec, pada umumnya dalam kondisi idle ketika data audio sedang ditransmisi.
McBSP1 digunakan sebagai bi-directional data channel. Semua audio data mengalir melalui data channel. Beberapa format data telah bisa disupport didsarkan pada tiga variable pada sample width, clock signal source, dan serial data format. Contoh-contoh DSK secara umum menggunakan sebuah lebar sampel 16-bit dengan codec dalam master mode sehinga mampu membangkitkan frame sync dan bil clocks pada sampel rate yang tepat tampa ada usaha exktra pada sisi DSP. Pilihan format serial adalah mode DSP yang dirancang secara khusus untuk beroperasi dengan McBSP port pada TI DSPs.
Codec memiliki suatu 12 MHz system clock. Sistem ini berkaitan dengan mode sampel rate pada USB, diberi nama ini karena banyak sistem USB yang menggunakan suatu clock 12 MHz dan dapat membangkitkan clock 12 MHz yang terpisah-pisah dalam bentuk frekuensi yang sudah umum seperti 48 kHz, 44.1 KHz, dan 8 KHz. Sampel rate di-set dengagn codec’s SAMPLERATE register.

Minggu, 18 April 2010

LUNTURNYA NILAI-NILAI TRADISIONAL KARENA PERKEMBANGAN TEKNOLOGI


Salah satu indikator zaman dikatakan maju adalah semakin berkembangnya teknologi. Teknologi diciptakan untuk membantu mempermudah pekerjaan manusia. Adapun beberapa hasil teknologi berupa calculator, computer, internet, mesin cuci, video game, rice cooker, printer, televisi, handphone, dlsb. Dengan adanya alat-alat tersebut manusia merasa terbantu dalam kehidupan sehari-hari karena mempermudah dan mempercepat pekerjaan mereka. Dengan rice cooker kita dengan mudah menanak nasi, dengan mesin cuci kita dengan mudah mencuci pakaian tanpa perlu mengeluarkan tenaga ekstra, dengan internet kita dapat menjelajah dunia tanpa biaya dan waktu yang banyak.

Akhir-akhir ini teknologi di bidang informatika dan telekomunikasi banyak digunakan. Kolaborasi teknologi ini banyak menghasilkan ide-ide teknologi baru seperti business online, sms zakat, e-banking, dlsb. Semakin berkembangnya teknologi ke berbagai sektor justru akan dapat melunturkan nilai luhur tradisional yang terkandung di dalam sektor itu sendiri. Di bawah ini akan dipaparkan dua contoh akibat teknologi yang dapat melunturkan nilai tradisional.


1. PlayStation

Dunia bermain identik dengan dunia anak-anak. Seiring dengan berkembangnya teknologi, dunia bermain anak-anak pun sekarang sudah berteknologi. Siapa yang tidak kenal dengan Sega, Nitendo dan PlayStation. Sudah tidak asing lagi nama-nama terebut kita dengar. Mereka adalah label video game terkenal di dunia. 7 dari 10 anak Indonesia pasti kenal dengan yang namanya PlayStation(PS).

Sepulang dari sekolah biasanya anak-anak sering nongkrong di depan PS (kalo belum mampu beli PS ya nongkrongnya di rental PS, Red). Hal ini dapat kita lihat di rental-rental PS di sekitar rumah kita. Hampir setiap hari rental tersebut ramai oleh anak-anak.

Seorang anak yang beramain PS akan cenderung kurang bergaul karena waktu luangnya hanya digunakan untuk bermain di depan PS. Beda halnya dengan anak-anak yang sering bermain permainan tradisional seperti gobak sodor, benteng, dakon, bekel, dlsb. Mereka cenderung memiliki banyak teman karena permainan tradisional biasanya melibatkan minimal 2 orang atau lebih.

Dalam permainan tradisional cenderung melatih interaksi sosial, emosional, komunikasi, taktik dan melatih saraf motorik anak. Bermain gobak sodor misalnya, anak-anak harus membentuk tim dan dituntut mebuat taktik jitu agar bisa menang. Selain itu bermain gobak sodor juga dapat menyehatkan karena permainan ini membutuhkan tempat yang luas agar bisa berlari-lari sehingga secara tidak langsung anak-anak berolahraga untuk membentuk saraf motoriknya.

Gambar (a) Main Gobak Sodor

Gambar (b) Main PS

Apabila bermain PS, semua hal itu tidak akan didapat karena bermain PS hanya cukup duduk di depan TV saja dan bermain PS maksimal hanya membutuhkan 2 pemain saja.


2. Pengaruh televisi terhadap anak-anak

Tahukah bahwa membiarkan anak-anak menonton televisi sepanjang hari, selain bahaya sinar biru, taruhannya adalah KECERDASAN anak-anak. Bahaya sangat mengintai terutama untuk anak di bawah usia 5 tahun.

Menurut dr. Hardiono D. Pusponegoro SpA (K), dokter spesialis anak konsultan neurology dari RSCM, beliau mengatakan, “Televisi memiliki dampak positif dan negatif bagi anak. Tetapi membiarkan anak menonton televisi sepanjang hari, pastinya akan menurunkan tingkat kecerdasan anak.”

Beliau menjelaskan, dengan hanya menonton televisi, otak kehilangan kesempatan mendapat stimulasi dan kesempatan untuk berpartisipasi aktif dalam hubungan sosial dengan orang lain, bermain kreatif, dan memecahkan masalah. Selain itu, televisi bersifat satu arah, sehingga membuat anak kurang mengeksplorasi dunia tiga dimensi dan kehilangan peluang mencapai tahapan perkembangan yang baik. ( *sumber : http://samara156.co.cc/efek-negatif-televisi-bagi-kecerdasan-anak.html )

Sebuah penelitian di Amerika menunjukkan anak usia di bawah lima tahun yang rata-rata menonton televisi 2 jam sehari, setelah usianya beranjak 6-7 tahun diketahui mengalami penurunan kemampuan membaca dan daya ingat.

Akhir-akhir ini, siaran televisi yang banyak mempengaruhi kehidupan anak-anak Indonesia adalah siaran musik. Banyak televisi yang menyiarkan acara musik baik pada pagi, siang dan sore hari bahkan sampai malam hari. Karena terlalu seringnya acara tersebut ditayangkan, maka secara tidak sengaja setiap menonton televisi anak-anak disuguhkan acara musik dewasa. Banyak anak-anak kecil yang lebih hafal lagu orang dewasa dari pada lagu anak-anak.

Keadaan seperti ini sangat tidak baik bagi anak-anak, seharusnya anak-anak hidup dalam dunia musiknya sendiri. Lagu Naik-naik Ke Puncak Gunung, Naik Delman, Pelangi-pelangi, dlsb sudah jarang terdengar dari mulut anak-anak. Mereka malah sering menyanyikan lagu orang dewasa yang bertemakan tentang cinta.


Senin, 29 Maret 2010

Makelar Kasus (MARKUS)

Pernyataan mantan Kabareskrim Komjen Pol Susno Duadji tentang adanya makelar kasus (markus) di tubuh Mabes Polri dengan sigap ditepis oleh pihak Mabes Polri. Padahal ini dapat dijadikan momentum oleh penegak hukum untuk mereformasi institusi tersebut, dengan penyelesaian yang terbuka dan tidak dilakukan secara internal.

"Seharusnya Mabes Polri melihat tudingan Susno tentang adanya markus di Mabes Polri sebagai peluang untuk benar-benar mereformasi institusi ini. Dan ketika Susno sebagai 'orang dalam' Polri sudah berani membeberkan kasus ini dengan sangat rinci, aparat penegak hukum harusnya bertindak cepat untuk menyelesaikan masalah ini secara terbuka dan tidak menyelesaikannya secara internal," kata juru bicara Serikat Pengacara Rakyat (SPR), Habiburokhman, dalam rilisnya yang diterima detikcom.

Ia berharap agar penyelesaian kasus ini dilakukan dengan segera dan terbuka. Karena dengan penyelesaian yang terbuka citra Polri di mata publik akan semakin baik.

"Keterbukaan dalam mengusut kasus ini sangat penting agar publik bisa mengontrol langsung bagaimana hukum dan undang-undang dapat diterapkan. Selain itu dengan penyelesaian yang terbuka sama sekali tidak menghancurkan citra Polri, justru sebaliknya jika ini dapat diselesaikan dengan baik maka citra Polri akan semakin baik," tutupnya.


Berita di atas saya dapat di :

http://www.detiknews.com/read/2010/03/23/061956/1323204/10/pengusutan-markus-pajak-di-polri-harus-dilakukan-secara-terbuka


Menaggapi pemberitaan di atas, saya sangat setuju sekali jika kasus ini diselesaikan secara terbuka (bukan secara internal, Red). Apa mungin karena kasus ini melibatkan oknum high class (berUANG, Red) sehingga kasusnya dikaburkan dengan kasus yang lain seperti pencemaran nama baiklah, melanggar kode etiklah(embohlah, Red).


Seiring dengan mencuatnya kasus ini, pengusuutan-pengusutan secara intensif dilakukan. Sehingga tabir kasus ini mulai terungkap sejak pemeriksaan bahwa Gayus Tambunan ditetapkan sebagai tersangka. Di media-media pemberitaan nama Gayus sudah tidak asing lagi, bahkan stiap hari nama itu tercetak dikoran dan terdengar di televisi.


Secara sepintas, seolah-olah Gayuslah sebagai tersangka utama. Gayus terbukti memiliki uang sekitar 25 Milyar di rekening tabungannya, padahal dia hanya seorang pegawai pajak golongan III/a yang gajinya hanya 12,1 juta perbulan.


Padahal kalau kita coba berpikir lagi, sangat kecil kemungkinannya seorang PEGAWAI golongan III/a memiliki rekening sebanyak itu.(toh kalau mau korupsi, pegawai golongan segitu paling mentok bermain di ratusan juta sudah bagus, Red). Saya yakin pasti ada orang besar di balik kasus ini. Mungkin saja Gayus hanya dijadikan tameng untuk menutupi kelakuan bejat mereka.


Gayus kan hanya seorang pegawai biasa saja (jabatannya g’ bagus2 amat, Red), bisa jadi dia adalah kacung yang disuruh ”orang diatasnya” untuk menyimpan hasil korupsi orang itu dengan janji sebuah imbalan pada Gayus (g’ sedikit dong imbalannya, Red).


Anehnya, di media-media pemberitaan seolah-olah Gayus-lah orang yang paling diburu. Padahal menurut saya Gayus adalah korban dari ”orang-orang di atasnya” (bukan berarti saya pro Gayus loh..., Red). Hampir tiap hari di berita topiknya hanya Gayus dan Gayus yang selalu diungkap baik dari alamat rumahnya, gajinya, isterinya, bahkan sampai anaknya. Belum ada topik berita tentang ”bagaimana dan dari siapa Gayus mendapat uang itu???” atau ”siapa saja yang ikut menikmati uang itu??”.


Topik seperti di atas jarang dibahas, apakah ini bagian dari skenario ”orang atas” untuk mengalihan perhatian publik agar seolah-olah mereka tidak bersalah?. Perlu diingat bahwa kasus ini merupakan kasus yang melibatkan beberapa instansi negara yang sangat berwibawa yaitu orang-orang POLRI dan orang-orang PAJAK, bahkan berita-berita terkini menginformasikan bahwa Jaksa Agung juga terlibat (yang tidak terlibat jangan tersingung ya..,Red). Mereka adalah orang-orang yang sangat mengerti hukum, bahkan bisa merumuskan hukum itu sendiri. Apa mungkin pada kasus ini mereka membuat hukum baru lagi agar dapat melindungi diri mereka sendiri??? (bisa-bisa aj Gan, Red).


Waduh, kalau sudah seperti ini mau jadi apa negara kita (tapi salut buat Indonesia, sekarang sudah dibuka lapangan kerja baru di aparat pemerintahan yaitu jadi MakelAR KasUS, hehe...,Red).


Untuk menangani kasus korupsi sperti ini, pada hakekatnya terletak pada kekonsitenan aparat penegak hukum terhadap hukum yang telah dibuat. Mau jadi apa negara kita apabila peraturan hukumnya sudah jelas dan bagus, tetapi aparat penegak hukumnya yang lemah (ditampar uang dikit aja matanya sudah biru, Red).


(kalau boleh usul ni.., Red) Setelah browsing dan membaca beberapa media, solusi agar dapat menekan terjadinya praktek markus di zona pemerintahan Indonesia adalah sebagai berikut:

- Menumbuhkan dan membangun etos kerja pejabat maupun pegawai tentang pemisahan yang jelas antara milik negara atau perusahaan dengan milik pribadi, mengusahakan perbaikan penghasilan (gaji), menumbuhkan kebanggaan-kebanggaan dan atribut kehormatan diri setiap jabatan dan pekerjaan, teladan dan pelaku pimpinan atau atasan lebih efektif dalam memasyarakatkan pandangan, penilaian dan kebijakan, terbuka untuk kontrol, adanya kontrol sosial dan sanksi sosial.

- Menegakkan hukum yang berlaku pada koruptor dan penayangan wajah koruptor di layar televisi dan herregistrasi (pencatatan ulang) kekayaan pejabat dan pegawai.


(INGATT!!! g’ boleh pilih kasih saat proses hukumnya ya.., Red).


Semoga solusi di atas bermanfaat bagi kita semua dan dapat dilaksanakan dengan sebaik-baiknya. Ami..n

Sabtu, 13 Maret 2010

DOA SELAMAT



Artinya:
Ya Allah, kami mohon kepada-Mu akan keselamatan dalam agama, kesehatan dalam badan, bertambah dalam ilmu, keberkatan dalam rejeki, taubat sebelum mati, rahmat ketika mati, dan ampunan sesudah mati.Ya Allah, ringankanlah kami ketika sakratul maut, dan selamatkanlah kami dari siksa api neraka, dan memdapat ampunan di hari perhitungan amal.
Ya Allah Tuhan kami, janganlah Engkau sesatkan kami sesudah mendapat petunjuk, berilah kami rahmat dari sisi-Mu. Karena sesungguhnya Engkaulah Yang Maha Pemurah.
Ya Allah Tuhan kami, berilah kami kebahagiaan di dunia dan kesejahteraan di akhirat, dan peliharalah kami dari siksa neraka.

Senin, 06 Juli 2009

Laporan Resmi Praktikum 3

ANALISA

Hasil praktikum dapat dilihat pada gambar 1. Untuk mengambil gambar, kita tekan 'load gambar', dan untuk membalik gambar tersebut secara horizontal, kita tekan 'balik horizontal', sedangkan apabila kita ingin membalik gambar secara vertikal kita tinggal menekan 'balik vertikal'.

hal yang dilakukan pertama adalah mengambil semua pixel tiap baris dalam
gambar dengan perintah getPixel. Kemudian pixel-pixel yang didapat disimpan
dalam array yang nantinya akan diset (ditampilkan) dalam picture2, pada picture 2
baris pertama akan diisi oleh pixel-pixel dari baris terbawah dari gambar,
sehingga gambar akan terbalik yang atas menjadi bawah.


KESIMPULAN
  1. Kita dapat membuat suatu aplikasi menggunakan visual C++ untuk keperluan membalik gambar baik secara vertikal maupun horizontal.
  2. Aplikasi tersebut dibuat menggunakan dialog based
  3. Untuk membuat gambar menjadi terbalik, kita masukkan program untuk merubah posisi pixel gambar tersebut

Tugas 5

Pengenalan Angka

· 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).