Senin, 06 Juli 2009

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);

Minggu, 05 Juli 2009

tugas 7 deteksi warna kulit

Deteksi Warna Kulit


Satu 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


tugas 7 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 pembagian
yang sama.

tugas 7 image retrieval


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.

Jumat, 19 Juni 2009

tugas 5





dari gambar tersebut untuk nilai yang dimasukkan masih belum ada, nantinya 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 terkceil dan terbesar yang akan dijadikan sebagai nilai untuk memperbaiki citra, dalam hal ini citra akan diubah ke format grayscale.
setelah itu nantinya akan dimasukkan nilai, dan akan dilihat perbedaan antara nilai yang belum dimasukkan dengan yang sudah dimasukkan. untuk nilai masukkan 45 gambar yang terlihat lebih terang dibandingkan dengan nilai dengan masukkan 150. Semakin besar nilai yang dimasukkan maka gambar yang dihasilkan tidak terlihat begitu jelas atau semakin buram.

Rabu, 27 Mei 2009

tugas 2

1. Tambahan program pada button untuk melakukan load gambar:

void CPrak11_1Dlg::OnButton1()
{
// 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_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
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);
//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);
}

2. Tambahan program pada button 2 yang menampilkan warna merah:
void CPrak11_1Dlg::OnButton2()
{
// TODO: Add your control notification handler code here
int i,j,red,green,blue;
long int warna;
CDC* pDC = m_pic1.GetDC();// mengarah kontrol picture
CDC dcMem1; //mengarahkan obyek yg sdh dipilih pd bitmap
CRect rect;//kotak di picture
BITMAP bm;//mendefinisikan fungsi2 yg ada d bitmap
int hr[256];
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(i=0;i<256;i++)
hr[i]=0;
for(i=0;i
for(j=0;j
{
warna=dcMem1.GetPixel(j,i);
WarnaToRGB(warna,&red,&green,&blue);
hr[red]=hr[red]+1;
}
float hmax=hr[0];
for(i=1;i<256;i++)
{
if(hr[i]>hmax)
hmax=hr[i];
}
for(i=0;i<256;i++)
hr[i]=120*hr[i]/hmax;

CDC* pDC1=m_pic2.GetDC();
pDC1->MoveTo(0,100);
pDC1->LineTo(550,100); //sb x
pDC1->MoveTo(0,100-(int)hr[0]); //ttk h[0]
for(i=1;i<256;i++)
{
pDC1->MoveTo(i*2,100);
pDC1->LineTo(i*2,100-(int)hr[i]);
}
}

3. 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;
}

4. Mengubah RGB ke data pixel:

long int RGBToWarna(int Red, int Green, int Blue)
{
return(Red+(Green<<8)+(Blue<<16));
}

Selasa, 21 April 2009

tugas laporan praktikum 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.



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

laporan praktikum 1





Praktikum 1 melakukan simulasi percobaan yang dilampirkan pada listing prgram, menggunakan Microsoft Visual C++ dengan MFC
Gambar ini menunjukkan pada saat penekanan button 1. Belum ada tampilan gambar yang muncul.
Pada tampilan kedua ini dilakukan penekanan pada button2.

Kamis, 12 Maret 2009

Praktikum 1 Pengolahan Citra EEPIS-ITS

Praktikum Pengolahan Citra EEPIS-ITS
PENDAHULUAN

Tujuan:

1. Mahasiswa dapat membuat program pengolahan citra menggunakan Visual C++
dengan MFC.
2. Mahasiswa dapat membuat dialog menggunakan Visual C++ dengan MFC.

Image processing atau sering disebut dengan pengolahan citra digital merupakan
suatu proses dari gambar asli menjadi gambar lain yang sesuai dengan keinginan kita.
Misal suatu gambar yang kita dapatkan terlalu gelap maka dengan image processing
gambar tersebut bisa kita proses sehingga mendapat gambar yang jelas.


Macam-Macam Komponen IDE VC++ 6


1 Toolbox Bermacam-macam control yang dapat digunakan di project Visual C++ (pada
prak Citra yang biasa dipakai : picture textbox, button,slider dsb).
2 Dialog Editor (MFC) Pada area ini tempat membuat atau mengedit tampilan dialog box bukan form window.
3 Solution Explorer Menampilkan organisasi project yang dibuat
4 Class View Menampilkan simbol code project seperti : namespaces, classes, methods, dan functions
5 Resource View Menampilkan resource file dari project
6 Properties Window Window yang dapat dipakai untuk mengedit atau merubah sifat control pada waktu disain


Percobaan:

3.1 Menjalankan Visual C++ dengan MFC
1. Membuka Visual C++ 6.0
• Pilih menu : Start->Programs->Microsoft Visual Studio 6.0->Microsoft
Visual C++ 6.0
2. Memberi nama program
• Pilih menu : File->New->Projects->MFC AppWizard(exe)
• Isi Project name misalnya dengan: dialog
3. Memilih isi program
• Step 1 : What tipe of application would you like to create
(aplikasi apa yang ingin dibuat) pilih dialog based untuk membuat aplikasi
memakai dialog. Perhatikan gambar 1.4. a dialog step 1. Tekan tombol Next.
• Step 2 :
1. What features would you like to include?
(fitur apa saja yang akan dimasukkan) pilih About box dan 3D
controls untuk pilihan standar.
2. What features would you like to include?
(mendukung aplikasi apa ?) pilih ActiveX controls untuk pilihan
standar.
3. Would you like to include WOSA support ? Window Sockets tidak
dipilih untuk pilihan standard.
4. Please enter a title for your dialog ? Title sudah berisi text sama
dengan nama project untuk pilihan standard
Perhatikan gambar 1.4.b. dialog step 2. Tekan tombol Next.
• Step 3 :
1. What style of project would you like ?
Pilihan standard dan yang aktif hanya MFC Standard.
2. Would you like to generate source file comments ? pilihan standard
Yes, Please
3. How would you like to use the MFC Library ? pilihan standard As a
shared DLL
Perhatikan gambar 1.4.c. dialog step 3. Tekan tombol Next
• Step 4 : AppWizard creates the following classes for you
(AppWizard akan membuat class seperti dibawah ini)
CtestApp
CtestDlg
• Tekan tombol Finish akan muncul New Project Information.
• Kemudian tekan tombol OK.
4. Cara menjalankan program
• Pilih menu : Build->Execute (!), Dialog Hasil Execute
• Tekan tombol Yes, untuk menutup aplikasi.
1.1.1. Cara Mendisain Dialog
Catatan : Jika Dialog Editor tidak tampak buka pada Resource View (Ctrl-Shift-E)
double click pada IDD_TEST_DIALOG.
1. Cara membuat dialog
• Buat aplikasi AppWizard seperti pada praktikum 1 dan beri nama project
dengan Dialog
• Pilih ResourceView pada workspace
• Pilih folder paling atas dengan cara klik pada tanda +
• Pilih folder dialog dengan cara klik pada tanda +
• Klik 2 kali IDD_DIALOG_DIALOG seperti gambar 1.4
2. Menghapus dan menambah control pada dialog
• Untuk menghapus control : aktifkan control dengan cara klik pada area
control lanjutkan dengan menekan tombol delete. Cobalah untuk menghapus
control : text TODO, button OK dan Cancel.
• Untuk menambah control: (button)
(static text)
(picture box)
• Tambahkan control (dua button, 1 static text, 1 picture) pada dialog editor
3. Mengaktifkan control
• Pilih control button1, double clik, pada dialog Add Member Function klik
OK.
• Atau klik kanan, pilih klik ClassWizard, pada MFC Class Wizard Dialog
Messages aktifkan BN_CLICKED, double clik, pada dialog Add Member
Function klik OK.
4. Rubah terlebih dahulu ID dari static text = ID_label dan ID dari picture =
ID_pic1, dengan cara aktifkan control dan klik kanan pilih properti.
5. Pada dialog MFC classwizard,Member Variabels edit type dan member
6. Menulis fungsi pada button1 clik
• Tambahkan program untuk menampilkan pesan pada static text seperti
dibawah ini
void CDialogDlg::OnButton1()
{
// TODO: Add your control notification handler code here
SetDlgItemText(IDC_label,"Belajar Prak Citra dgn VC++ dan MFC")
}
Jalankan program dengan memilih menu Build->Execute (!)
7. Tambahkan deklarasi kelas CBitmap pada File View – Header Files – dialogD
// Construction
public:
CDialogDlg(CWnd* pParent = NULL); // standard constructor
CBitmap m_bmpBitmap;
//
8. Menulis fungsi pada button2 clik
void CDialogDlg::OnButton2()
{
// TODO: Add your control notification handler code here
CDC* pDC = m_pic1.GetDC();//
CDC dcMem1;
CRect rect;//kotak di picture
BITMAP bm;//
HBITMAP
hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),
"pens.bmp",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);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem1,
0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);//
}
Jalankan program dengan memilih menu Build->Execute (!)

1.2. Latihan:
1. Buat program untuk menampilkan Tulisan “Selamat Belajar Pengolahan Citra”
dengan menggunakan MessageBox bila submenu yang dipilih.
2. Buatlah program untuk menampilkan Tulisan “Ini adalah Teks” pada fungsi
OnDraw(CDC* pDC) dengan menggunakan pDC->TextOut(10,10,"Ini adalah
Teks");
3. Buatlah program untuk mengambar sumbu x dan sumbu y pada fungsi
OnDraw(CDC* pDC) dengan menggunakan pDC->MoveTo(10,10) dan pDC-
>LineTo(10,100)
4. Buatlah program untuk menampilkan persamaan linear y=x pada fungsi
OnDraw(CDC* pDC) dimana nilai x dari 0 sampai 100
5. Buatlah program untuk menampilkan persamaan kuadrat y=x2
dimana nilai x dari
0 sampai 100 bila submenu yang dibuat dipilih.

Selasa, 10 Maret 2009

(trying...)
Pengolahan Citra Digital atau Digital Image adalah suatu array dimana array adalah kuantisasi yang menunjukkan warna. Adanya digital image karena cahaya itu tentu sudah pasti,
jadi jangan memberikan kesimpulan pada laporan praktikum, usahakan cari kesimpulan yang lebih baik.

Pengikut