Selasa, 21 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);
Senin, 06 Juli 2009
tugas 7
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
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
Tugas7
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
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
Kamis, 02 Juli 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
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));
}
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));
}
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 praktikum1
Praktikum 1 pengolahan citra digial
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.
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.
Langganan:
Postingan (Atom)
