Jumat, 16 April 2010

Teknologi VS Tradisional

Teknologi. Pada zaman sekarang kemajuan teknologi sangatlah pesat sekali. Namun dari perkembangan teknologi tersebut apakah selalu baik di kehidupan masyarakat?
“Tentunya, iya donk. Mana mungkin teknologi berdampak jelek bagi masyarakat? Kan dengan teknologi kita semua mudah melakukan apapun.”
Memang jawaban itu tidak salah. Tentu dengan teknologi kita bisa melakukan apapun yang tidak bisa manusia lakukan dan dapat dilakukan oleh teknologi. Itulah salah satu diantaranya dampak positif dari perkembangan teknologi. Tapi setelah kita menilik lebih dalam lagi pasti ada cela yang tidak bisa tertutup rapat dengan teknologi. Apakah itu?
Negara Indonesia adalah Negara yang sangat kental dengan nilai – nilai budayanya. Dan budaya – budaya tersebut membentuk masyarakat yang dapat bersosialisasi sesamanya dengan baik. Mulai dari anak – anak bahkan sampai dengan orang tua merasakan nilai – nilai budaya yang ada di Negara Indonesia. Namun seiring perkembangan jaman, nilai – nilai budaya tersebut terkikis oleh keberadaan teknologi.
“Memangnya iya ya? Kebudayaan kita terkikis dengan perkembangan teknologi? Contohnya apa memangnya?”
Tidak menutup kemungkinan kalo pertanyaan itu muncul di generasi muda berikutnya. Ya, secara perlahan nilai – nilai budaya Indonesia akan terkikis oleh perkembangan teknologi. Contohnya adalah nilai – nilai budaya social, nilai – nilai budaya tradisional. Nilai – nilai budaya tersebut akan kita bahas sebagai berikut:
1. Perkembangan teknologi yang menurunkan atau mengikis nilai budaya social bermasyakarat (kebersamaan).
- Perkembangan dunia game pada dunia anak.
Tentu kita tahu dunia game pada jaman sekarang sangat canggih teknologinya. Hanya dengan menghubungkan game dengan televisi anak – anak bisa memainkannya. Hanya duduk dan diam, anak – anak sudah sangat senang. Contohnya saja PlayStation.
Bandingkan dengan permainan tradisional anak – anak, seperti Gobak Sodor, Cublek – cublek suweng. Permainan – permainan tersebut tentu tidak hanya tradisional tetapi membuat anak – anak berkreatif, bergerak untuk melatih saraf motorik, penuh dengan keceriaan.


- Perkembangan sound system
Tentu sound system sangat bermanfaat bagi manusia, sebagai pengeras suara sound system sering digunakan pada masjid – masjid dan musholla – musholla. Namun sekarang sound system sering digunakan untuk membangunkan orang sahur saat bulan puasa. Tetapi lebih mengasyikkan lagi jika kita membangunkan sahur dengan berkeliling sambil membawa gallon kosong dengan ramai – ramai, sambil melatih kreatifitas kita dalam bidang musik. Secara tidak langsung nilai – nilai social akan terkikis.


- Perkembangan teknologi pada bidang pertanian.
Jelas sekarang para petani diuntungkan dengan alat berteknologi untuk memisahkan padi dengan pohonnya. Dengan alat tersebut seorang petani dapat menyelesaikan sendiri petak – petak sawahnya. Hanya dengan memasukkan padi yang berisi ke dalam mesin pemisah, biji padi pun dapat dipisahkan dengan sendirinya. Tetapi alat tersebut membuat suara yang sangat bising dari mesin.
Namun dengan cara tradisional tidak kalah menarik. Dengan alat yang bernama Lesung dan Alu padi pun dapat dipisahkan. Bahkan suara – suara yang dihasilkan oleh alat tersebut dapat dijadikan music atau dalam bahasa jawa “klotekan” dan diikuti nyanyian para petani.


Maka dari itu, kita sebagai masyarakat Indonesia yang mengenal budaya bersosial dan bermasyarakat, harus bisa memfilter teknologi – teknologi yang dapat mengikis nilai budaya social dan bermasyarakat tersebut. Janganlah seenak – enaknya memakai teknologi tanpa mengetahui manfaatnya.

Minggu, 04 April 2010

Kasus Markus, Antara Etika dan Profesionalisme

Markus, sebutan dari Makelar Kasus. Itulah fenomena yang terjadi di Negara kita, Negara Kesatuan Republik Indonesia. Karena fenomena inilah sehingga muncul beberapa pertanyaan yang perlu dijelaskan.
Ada apa gerangan dengan Negara kita tercinta ini?
Adakah yang salah dengan Negara kita ini?
Beberapa pekan terakhir kita tidak bisa menolak dengan tayangan televisi seputar markus di kalangan perpajakan. Gayus Tambunan, nama itulah adalah aktor dibalik maraknya markus. Kita semua tahu bahwa Gayus adalah seorang PNS golongan III A. Berdasarkan kompas.com bahwa gaji gayus mencapai Rp. 12.1 juta. Apakah dia merasa tidak cukup dengan gaji sebesar itu?
Makelar kasus memang mengambil keuntungan jika ada kesempatan. Ya itulah namanya korupsi. Menurut pendapat penulis ada beberapa factor yang mempengaruhi terjadinya korupsi. Pertama adalah dari institusi pendidikan. Disini tanpa adanya pembelajaran dari pendahulunya dalam arti institusi pendidikannya, tak mungkin jika seseorang melakukan tindak korupsi. Jelas pasti ada cara sendiri untuk melakukannya, untuk melihat peluang yang ada. Maka dari itu untuk generasi muda berikutnya dalam memilih institusi pendidikan marilah kita melihat sejarahnya terlebih dahulu dari institusi pendidikan tersebut.
Kedua adalah factor agama. Iman seseorang sangat berpengaruh dalam melakukan setiap perbuatan. Jika kita memiliki iman yang kuat pasti dalam hal melakukan kegiatan kita ingat kepada Tuhan Yang Maha Esa, dan pasti tahu mana yang benar dan mana yang salah. Ketiga adalah factor budaya, ketika kita masuk kedalam suatu institusi pemerintahan, kita juga harus pintar menjaga budaya yang benar, sesuai dengan norma – norma yang berlaku. Menurut pendapat penulis, pasti seorang Gayus terpengaruh oleh “budaya” yang ada dalam institusi tersebut. Dan menurut beberapa pendapat beberapa orang, jika tidak menuruti “budaya” dari institusi tersebut maka bersiap – siaplah untuk gigit jari melihat teman naik pangkat karena menggunakan “budaya” tersebut.
Maka dari itu kita semua sebagai generasi penerus bangsa, harus tahu mana yang benar dan mana yang salah. Jangan tinggalkan agama karena agama adalah pondasi kita agar tidak melakukan hal – hal yang berdosa. Mari kita menggunakan Ideologi Pancasila agar kita tetap beretika dan professional dalam melakukan perbuatan apapun.

Senin, 06 Juli 2009

Tugas 7

Deteksi Warna KulitSatu fungsi image adalah satu penyajian matematis dari satu image, antara lain: f ( x) = f ( x,y ) intensitas cahaya atau daya pada posisi x. Satu dapat tulis: f ( x) = i( x). r ( x) dengan i (x ) iluminasi dan r (x ) pemantulan. Keduanya adalah terbatas: MEMASUKI<= i( x) <= dan memasuki<= r ( x) <= 1, sesuai dengan total pemantulan batas serapan dan penjumlahan. Pentingnya r (x ) dalam hal ini, tapi dengan cahaya struktur dan bentuk dari menaungi i(x ) permainan satu peran penting. Dengan tampilan hitam dan putih , f ( x) adalah satu nilai skalar; di image spektral multi f (x ) adalah satu nilai vektor. Image yang punya f 3 dimensi: f ( x) = { fred (x ), fgreen (x ), fblue (x )}. Pencitraan image diambil dari satelit atau pesawat udara, menghasilkan satu image yang mana dapat bisa berada pada dimensi 30 sampai dimensi 256 . Untuk 3 - D menggambar satu x= penggunaan {x,y,x }, dan untuk satu gugus berkala image: f ( x,t ). Satu model pendigitan dideskripsikan pada koordinat digtal ruang dan waktu, memanggil sampling, dan nilai intensitas tersebut, disebut dengan kuantisasi. Kamera CCD dan scanner sering mempergunakan persegi untuk melakukan sampling; pancaran pemasukan kemudian adalah terintegrasi berlalu area atau bagian dari ini. Untuk menggambar image yang mana harus diperlihatkan pada televisi, segiempat memiliki sisi dengan rasio 4:3 ( rasio aspek) atau 16:9 untuk layar lebar paling baru standar TV. Format lain digunakan juga pada kamera CCD percobaan seperti titik bersudut enam. Ini mempunyai keuntungan pada satu titik yang punya memiliki jenis sesuatu dari titik berdekatan. Ketika memilih satu sistem kamera lensa zoom, pastikan bahwa resolusinya cukup tinggi jadi saat itu resolusi paling kecil punya satu luas permukan dari paling tidak pada suatu titik tertentu. Banyaknya pixel yang diperlukan tergantung pada kebutuhan yang diukur dan dengan akurasi yang dihitung. Lebih tinggi daya pisah, makin banyak tempat yang diperlukan untuk penyimpanan ini. Waktu kalkulasi untuk algoritma juga bertambah, misal seperti n.ln (n ), n2 atau n3, n menjadi beberapa titik. Itulah sebabnya mengapa daya pisah piramida dipergunakan: antara lain dari satu 512*512 memperoleh image, kita hitung pertama 256*256, 128*128, 64*64, dsb. image. Menemukan objek dapat terjadi pada 64*64 gambar. Menentukan permukaan dari satu objek kemudian lebih tepat pada 512*512 gambar. Tentu, waktu yang ada harus dibebani siap sedia dibutuhkan ke bangun piramida seperti halnya ingatan ekstra memerlukan simpan image. Bagaimanapun, sejumlah titik pada image ekstra tidak akan pernah lebih dari sejumlah titik pada image asli (melihat bab 7.1.1). Sejumlah bytes memerlukan untuk menyimpan data intermediate, seperti itu tepi dari objek, dapat kurang

Pengenalan Angka dan Huruf
Aplikasi pengenalan angka dan huruf menggunakan Jaringan Syaraf Buatan (JSB)Secara umum dan sederhana, citra dapatdidefinisikan sebagai representasi visual dari suatu objek. Lebih jauh citra juga dapat diartikan sebagai gambaran yang representatif mengenai suatu objek sedemikian sehingga citra tersebut dapat memberikan kesan yang mendalam mengenai objek yang dimaksud. Jika ingin mendefinisikannya lebih bebas lagi, citra dapat didefinisikan sebagai bentuk visual yang dapat diterima secara baik oleh indera penglihatan, apapun bentuknya. Dalam bidang komputer, citra atau disebut juga image merupakan representasi visual dari suatu objek setelah mengalami berbagai transformasi data dari berbagai bentuk rangkaian numerik.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 pembagianyang sama.

Image Retrieval
Ada dua cara yang dapat dilakukan dalam pengambilan kembali suatu image atau image retrievala. 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.

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
YOFN_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
ELR_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_LOADFROMFILEL
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_LOADFROMFILELR_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_HIDEREADONLYOFN_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_LOADFROMFILELR_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_LOADFROMFILELR_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_LOADFROMFILELR_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).

Diposkan oleh A. Fikri Akbar Hofa (013) di 08:26 0 komentar

Tugas 6
// searching for vertical linesshort[,] 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 linesshort[,] 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 sequenceAForge.Imaging.Filters.FiltersSequence filterSequence =new AForge.Imaging.Filters.FiltersSequence();// add 8 thinning filters with different structuring elementsfilterSequence.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 iterationsAForge.Imaging.Filters.FilterIterator filter =new AForge.Imaging.Filters.FilterIterator(filterSequence, 10);

Tugas 6

// searching for vertical linesshort[,] 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 linesshort[,] 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 sequenceAForge.Imaging.Filters.FiltersSequence filterSequence = new AForge.Imaging.Filters.FiltersSequence();// add 8 thinning filters with different structuring elementsfilterSequence.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 iterationsAForge.Imaging.Filters.FilterIterator filter =new AForge.Imaging.Filters.FilterIterator(filterSequence, 10);

Tugas 4

Source codex :bool CxImage::Jitter(long radius){// check if the image is valid, this should be always the first line in// the functionif (!pDib) return false;// local variableslong nx,ny;// temporary image to store the partial results of the algorithmCxImage tmp(*this,pSelection!=0,true,true);// limit the effects of the functions only in the smallest rectangle that// holds the selected region (defined with the Selection...() functions ),// this will speed up the loops.long xmin,xmax,ymin,ymax;if (pSelection){xmin = info.rSelectionBox.left; xmax = info.rSelectionBox.right;ymin = info.rSelectionBox.bottom; ymax = info.rSelectionBox.top;} else {xmin = ymin = 0;xmax = head.biWidth; ymax=head.biHeight;}// main loop : scan the image in vertical directionfor(long y=ymin; y // monitor the progress of the loopsinfo.nProgress = (long)(100*y/head.biHeight);// let the application a way to exit quicklyif (info.nEscape) break;// main loop : scan the image in horizontal directionfor(long x=xmin; x// if the feature is enabled, process only the pixels inside the// selected region#if CXIMAGE_SUPPORT_SELECTIONif (SelectionIsInside(x,y))#endif //CXIMAGE_SUPPORT_SELECTION{// main algorithmnx=x+(long)((rand()/(float)RAND_MAX - 0.5)*(radius*2));ny=y+(long)((rand()/(float)RAND_MAX - 0.5)*(radius*2));if (!IsInside(nx,ny)) {nx=x;ny=y;}// save the result in the temporary image.// if you can, use PixelColor only for 24 bpp images,// and PixelIndex for 8, 4 and 1 bpp images : it's fasterif (head.biClrUsed==0){tmp.SetPixelColor(x,y,GetPixelColor(nx,ny));} else {tmp.SetPixelIndex(x,y,GetPixelIndex(nx,ny));}// if the feature is enabled, process also the pixels// in the alpha layer#if CXIMAGE_SUPPORT_ALPHAtmp.AlphaSet(x,y,AlphaGet(nx,ny));#endif //CXIMAGE_SUPPORT_ALPHA}}}// save the result and exitTransfer(tmp);return true;}

Laporan Resmi Praktikum 2










Pada percobaan kedua memahami maksud dari percobaan ini. Yaitu bagaimana kita memproses gambar dengan mengambil warna RGB (red,green,blue)Tampilan awal adalah pada saat penekanan tombol merah warna yang keluar adalah merah. Begitu juga sama halnya untuk warna hijau dan biru. dan menamplikan semua warna langsung yaitu Red, Green, dan Blue





tugas 2


terdapat ketidaksempurnaan pada gambar di samping, yaitu adanya gambar lain yang masuk pada tampilan warna blue, namun untuk hasil output pada kombinasi warna RGB masing-masing bernilai 255, 255, 255 adalah warna putih hal ini sudah termasuk memenuhi kriteria.