Kamis, 26 Maret 2009

>> Praktikum 2 Dasar Pengolahan Citra

I. TUJUAN

Setelah kita melakukan praktikumv pertama tentang Pengenlan MFC, kali ini kita akan melakukan percobaan tentang Dasar Pengolahan Citra. Tujuan dari praktikum ini adalah mahasiswa diharapkan
    1. Dapat membuat program untuk memproses gambar dengan mengambil warna RGB
    2. Dapat membuat program untuk memproses gambar dengan meletakkan warna RGB pada lokasi x dan y
II. DASAR TEORI
Dasar dari pengolahan citra adalah pengolahan warna RGB pada posisi tertentu. Dalam pengolahan citra warna dipresentasikan dengan nilai hexadesimal dari 0x00000000 sampai 0x00ffffff. Warna hitam adalah 0x00000000 dan warna putih adalah 0x00ffffff. Definisi nilai warna di atas seperti gambar 2.1, variabel 0x00 menyatakan angka dibelakangnya adalah hexadecimal.





Terlihat bahwa setiap warna mempunyai range nilai 00 (angka desimalnya adalah 0) dan ff (angka desimalnya adalah 255), atau mempunyai nilai derajat keabuan 256 = 28. Dengan demikian range warna yang digunakan adalah (28)(28)(28) = 224 (atau yang dikenal dengan istilah True Colour pada Windows). Nilai warna yang digunakan di atas merupakan gambungan warna cahaya merah, hijau dan biru seperti yang terlihat pada gambar 2.2. Sehingga untuk menentukan nilai dari suatu warna yang bukan warna dasar digunakan gabungan skala kecerahan dari setiap warnanya.



Dari definisi diatas untuk menyajikan warna tertentu dapat dengan mudah dilakukan, yaitu dengan mencampurkan ketiga warna dasar RGB, table 1. berikut memperlihatkan contoh-contoh warna yang bisa digunakan



Untuk mengetahui kombinasi warna, perlu dibuat suatu program yang dapat menampilkan warna sesuai dengan nilai yang dimasukkan sehingga dapat dicoba berbagai macam kombinasi warna RGB seperti gambar 2.2.

III. PERCOBAAN

" Cara Memproses Gambar "
  • Buat aplikasi AppWizard seperti pada praktikum 1 dan beri nama project dengan satu
  • Buat disain dialog dengan 3 buah control picture dan 3 buah button
  • Rubah properti control dan tambahkan class variabel control tipe dan membernya
  • Tambahkan program pada saat button1 click seperti di bawah ini, akan memberikan warna merah pada bitmap (fungsi setpixel) dan menampilkan kembali nilai dari piksel tertentu (fungsi getpixel).

Button 1 :
void Cprak2Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
CDC* pDC = m_picr.GetDC();
CDC dcMem;
CRect rect;
BITMAP bm;//
int i,j;
long int warna;
char str[5];
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_picr.GetClientRect(rect);
m_bmpBitmap.GetBitmap(&bm);
dcMem.CreateCompatibleDC(pDC);
dcMem.SelectObject(&m_bmpBitmap);

// membaca warna pada titik
warna=dcMem.GetPixel(5,5);
sprintf(str,"%ld",warna);
pDC->TextOut(10,10,str);
}



// TODO: Add your control notification handler code here
CDC* pDC = m_picg.GetDC();
CDC dcMem;
CRect rect;
BITMAP bm;//
int i,j;
long int warna;
char str[5];
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_picg.GetClientRect(rect);
m_bmpBitmap.GetBitmap(&bm);
dcMem.CreateCompatibleDC(pDC);
dcMem.SelectObject(&m_bmpBitmap);

// membaca warna pada titik
warna=dcMem.GetPixel(5,5);
sprintf(str,"%ld",warna);
pDC->TextOut(10,10,str);
}



// TODO: Add your control notification handler code here
CDC* pDC = m_picb.GetDC();
CDC dcMem;
CRect rect;
BITMAP bm;//
int i,j;
long int warna;
char str[5];
HBITMAP hBitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),
"pens.bmp",IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
Praktikum Pengolahan Citra PENS-ITS
if(hBitmap)
{
if(m_bmpBitmap.DeleteObject())
m_bmpBitmap.Detach();
m_bmpBitmap.Attach(hBitmap);
}
m_picb.GetClientRect(rect);
m_bmpBitmap.GetBitmap(&bm);
dcMem.CreateCompatibleDC(pDC);
dcMem.SelectObject(&m_bmpBitmap);

// membaca warna pada titik
warna=dcMem.GetPixel(5,5);
sprintf(str,"%ld",warna);
pDC->TextOut(10,10,str);
}


" Menambah header File"
  • Buka file prak2Dlg.h
  • Tambahkan program seperti dibawah ini
    // Construction
    public:
    Cprak2Dlg(CWnd* pParent = NULL); // standard constructor
    CBitmap m_bmpBitmap;

" Cara menjalankan program"
  • Pilih menu : Build->Execute (!)
  • Click button1 : picture 1 diberi warna merah
  • Click button2 : picture 2 diberi warna hijau
  • Click button3 : picture 3 diberi warna biru

" Laporan Hasil Praktikum"












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


Kesimpulan :

1. Suatu gambar dapat di proses dengan mengambil warna RGB nya. Sehingga dapat diketahui susunan warna RGB nya
2. Dengan program, digunakan untuk memproses gambar dengan meletakkan warna RGB dan lokasi x dan y


Sabtu, 07 Maret 2009

>> Praktikum 1 Pengenalan MFC

I. TUJUAN

Pada praktikum Pengolahan Citra Digital, yang pertama kali akan kita praktikumkan adalah mengenai Pengenalan MFC (Microsoft Foundation Classes )
. Tujuan dari praktikum ini adalah mahasiswa diharapkan
  1. Dapat membuat progran pengolahan citra menggunakan Visual C++ dengan MFC
  2. Dapat membuat dialog menggunakan Visual C++ dengan MFC
II. DASAR TEORI

" Sekilas tentang MFC (Microsoft Foundation Classes) !!! "

Microsoft Foundation Class Library (juga Microsoft Foundation Classes atau MFC) adalah perpustakaan yang wraps bagian dari Windows API dalam C + + kelas, termasuk fungsi yang memungkinkan mereka untuk menggunakan standar kerangka aplikasi. Classes are defined for many of the handle -managed Windows objects and also for predefined windows and common controls. Kelas-kelas yang ditetapkan untuk banyak menangani dikelola Windows-benda dan juga standar untuk jendela dan kontrol umum.


MFC diluncurkan pada tahun 1992 dengan Microsoft C / C + + 7,0 kompiler untuk digunakan dengan 16-bit versi Windows sebagai sangat tipis berorientasi obyek C + + wrapper untuk Windows API. C + + yang baru memulai untuk menggantikan C untuk pengembangan aplikasi perangkat lunak komersial sebagai jalan utama untuk ke API. Dengan itu, mereka juga yang dikirim pertama untuk penggantian tua, alfanumerik IDE bernama PWB.

Permainan kata-kata yang menarik dari MFC adalah penggunaan "Afx" sebagai awalan untuk berbagai fungsi, macro dan standar precompiled header nama "stdafx.h". Selama apa yang menjadi awal pembangunan MFC disebut "Application Framework Extensions" dan disingkat "Afx". Nama Microsoft Foundation Classes (MFC) telah mengadopsi terlambat dalam siklus rilis untuk mengubah referensi ini.

Dalam praktikum perkenalan MFC, yaitu menggunakan IDE (Integrated Development Environtment). Komponen yang ada pada IDE antara lain:
  • Toolbox => berisi Bermacam-macam control yang dapat digunakan di project Visual C++ (pada prak Citra yang biasa dipakai : picture,textbox, button,slider dsb).
  • Dialog Editor (MFC) =>merupakan area tempat membuat atau mengedit tampilan dialog box bukan form window.
  • Solution Explorer => berfungsi menampilkan organisasi project yang dibuat
  • Class View => berfungsi menampilkan simbol code project seperti : namespaces, classes, methods, dan functions.
  • Resource View => berfungsi menampilkan resource file dari project.
  • Properties Window => merupakan window yang dapat dipakai untuk mengedit atau merubah sifat control pada waktu disain.
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.



Gambar Blok Diagram Pengolahan Citra


III. PERCOBAAN

" Cara menjalankan Visual C++ dengan MFC: "

Pertama kali yang dilakukan adalah membuka aplikasiVisual C++ 6.0 dengan cara
Pilih menu : Start->Programs->Microsoft Visual Studio 6.0->Microsoft Visual C++ 6.0

Setelah Visual C++ telah terbuka langkah selanjutnya adalah memberi nama program. dengan caraPilih menu : File->New->Projects->MFC AppWizard(exe) Isi Project name dan terakhir tekan tombol OK.Kemudian kita akan memilih isi dari program yang akan kita buat. Dengan cara : • Step 1 :(aplikasi apa yang ingin dibuat) pilih dialog based untuk membuat aplikasi memakai dialog. Tekan tombol Next.

• Step 2 :
1.(fitur apa saja yang akan dimasukkan) pilih About box dan 3D controls untuk pilihan standar.
2.(mendukung aplikasi apa ?) pilih ActiveX controls untuk pilihan standar.
3. apakah kamu ingin memasukkan WOSA ? Window Sockets tidak dipilih untuk pilihan standard.
4.Kemudian masukkan judul pada dialaog, Title sudah berisi text sama dengan nama project untuk pilihan standard, Tekan tombol Next.

• Step 3 :
1. Bentuk Project yang diinginkan ?
Pilihan standard dan yang aktif hanya MFC Standard.
2. Apakah kamu ingin mengenerate source file coment ? pilihan standard Yes, Please
3. Apakah kamu ingin menggunakan MFC Library ? pilihan standard As a shared DLL,

• Step 4 :
AppWizard creates the following classes for you

Cara menjalankan program• Pilih menu : Build->Execute (!) Tekan tombol Yes, untuk menutup aplikasi.

" Cara mendisain dialog "

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

Menghapus dan menambah kontrol 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) pilih icon button control pada toolbox drag drop ke editor dialog.

(static text) pilih icon control pada toolbox drag drop ke editor dialog.
• Tambahkan control (dua button, 1 static text, 1 picture) pada dialog editor

Mengaktifkan Control
• Pilih control button1, double clik, pada dialog Add Member Function klik
• Atau klik kanan, pilih klik ClassWizard, pada MFC Class Wizard Dialog messages aktifkan BN_CLICKED, double clik, pada dialog Add Member Function klik OK.

Rubah terlebih dahulu ID dari static text = ID_label dan ID dari picture = ID_pic1, dengan cara aktifkan control dan klik kanan pilih properti.

Pada dialog MFC classwizard,Member Variabels edit type dan member dari control

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 (!)
Tambahkan deklarasi kelas CBitmap pada File View – Header Files – dialogDlg.h

// Construction
public:
CDialogDlg(CWnd* pParent = NULL); // standard constructor
CBitmap m_bmpBitmap;
//

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 (!)


" Laporan Hasil Praktikum "







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.

Pada latihan no. 1, kita diminta untuk membuat suatu program untuk menampilkan messagebox dengan tulisan ‘Selamat Belajar Pengolahan Citra’ apabila salah satu submenu dipilih. Untuk menampilkan messagebox tersebut, menu yang dipilih adalah ‘Menu’ sedangkan submenu yang dipilih adalah ‘Satu

Pada latihan no. 2, kita diminta untuk membuat program yang bisa menampilkan tulisan ‘Ini adalah teks’ apabila salah satu submenu dipilih. Untuk menampilkan tulisan tersebut, menu yang dipilih adalah ‘Menu’, sedangkan submenu yang dipilih adalah ‘Dua


Pada latihan no. 3, kita diminta untuk membuat program yang bisa menampilkan sumbu x dan y apabila salah satu submenu dipilih. Untuk menampilkan tulisan tersebut, menu yang dipilih adalah ‘Menu’, sedangkan submenu yang dipilih adalah ‘Tiga

KESIMPULAN

  • MFC dapat digunakan untuk membuat program yang bisa menampilkan dan memroses suatu gambar.

  • Untuk membuat program yang menghasilkan tampilan seperti pada percobaan awal, jenis projek yang dipilih yaitu ‘Dialog based’. Sedangkan untuk membuat program yang menghasilkan tampilan seperti pada latihan, jenis projek yang dipilih yaitu ‘Multiple document’.