190 likes | 387 Views
Praktikum Pengolahan Citra. Pertemuan 8 – Konvolusi dan Image Filtering. Frekwensi Tinggi. Frekwensi rendah. Prinsip Filter Dalam Image Processing.
E N D
Praktikum Pengolahan Citra Pertemuan 8 – Konvolusi dan Image Filtering
Frekwensi Tinggi Frekwensi rendah Prinsip Filter Dalam Image Processing • Gambarselaluberadapadafrekwensirendah, halinikarenasetiaptitikpadagambarmempunyaibanyakkemiripanwarnadengantitik-titiktetangganya. • Bilasuatugambarmenunjukkanfrekwensitinggimakapadagambartersebutbanyaktitik yang nilai gray-scalenya (warna) yang berbedajauhdengantitik-titiktetangganya.
Prinsip Filter Dalam Image Processing • Untukmembuangtitik yang berbedadengantitik-titiktetangganya (proses reduksi noise) makadilakukan Low-Pass Filter (LPF), suatubentuk filter yang mengambil data padafrekwensirendahdanmembuang data padafrekwensitinggi • Untukmempertahankantitik yang berbedadengantitik-titiktetangganya (proses deteksitepi) makadilakukan High-Pass Filter (HPF), suatubentuk filter yang mengambil data padafrekwensitinggidanmembuang data padafrekwensirendah. • Untukmempertahankantitik yang dekatdengantitik-titiktetangganya, dantitik yang berbedadengantitik-titiktetangganya (sharperness) makadilakukan Band Pass Filter, yang bergunamempertahankanfrekwensirendahdantinggi yang tidakterlalurendahdantinggi.
Prinsip Filter Dalam Image Processing Hasilgambar yang difilter Y darigambarasal X dan filter dengan kernel H dapatdihitungdengan: Konvolusi
Konvolusi Konvolusidari H dan X didefinisikandengan: Dimana (x,y) adalah posisi filter dan (Tx,Ty) adalah titik yang difilter
Proses Konvolusi H = X =
Petunjuk Praktikum • Buatlah form dengan tiga buah button, dua buah pictureBox dan sebuah OpenFileDialog. • Aturlah form seperti gambar berikut.
Petunjuk Praktikum • Ubah text pada Button1 menjadi “Load”, Button2 menjadi “GrayScale”, Button3 menjadi “Histogram Equalization”. • Aturlah picture box dengan mode StretchImage. • Kemudian tambahkan dua object bitmap. Bitmap objBitmap1; Bitmap objBitmap2;
Petunjuk Praktikum • Double klik pada button1 dan tambahkan program berikut. • Program tersebut bertujuan untuk melakukan load file image dari komputer. DialogResult d = openFileDialog1.ShowDialog(); if(d == DialogResult.OK) {objBitmap1 = new Bitmap(openFileDialog1.FileName); pictureBox1.Image = objBitmap1;}
Petunjuk Praktikum • Pada button2 kita tambahkan code untuk konvolusi dengan kernel 4 node. Dengan matrix sebagai berikut: H=
Petunjuk Praktikum • Double klik pada button2 dan tambahkan program berikut. float[] a=new float[5]; a[0] = (float)0.2; a[1] = (float)0.2; a[2] = (float)0.2; a[3] = (float)0.2; a[4] = (float)0.2; objBitmap2 = new Bitmap(objBitmap1); for(int x=1;x<objBitmap1.Width-1;x++) for(int y = 1; y < objBitmap1.Height - 1; y++) { Color w1 = objBitmap1.GetPixel(x-1,y); Color w2 = objBitmap1.GetPixel(x+1, y); Color w3 = objBitmap1.GetPixel(x, y-1); Color w4 = objBitmap1.GetPixel(x, y+1); Color w = objBitmap1.GetPixel(x, y);
Petunjuk Praktikum • Lanjutan dari program pada button 2 int x1 = (w1.R + w1.G + w1.B) / 3; int x2 = (w2.R + w2.G + w2.B) / 3; int x3 = (w3.R + w3.G + w3.B) / 3; int x4 = (w4.R + w4.G + w4.B) / 3; int xg = (w.R + w.G + w.B) / 3; int xb = (int)(a[0] * xg); xb = (int)(xb + a[1] * x1 + a[2] * x2 + a[3] * x3 + a[4] * x4); if (xb < 0) xb = 0; if (xb > 255) xb = 255; Color wb = Color.FromArgb(xb,xb,xb); objBitmap2.SetPixel(x,y,wb); } pictureBox2.Image = objBitmap2;
Petunjuk Praktikum • Pada button3 kita tambahkan code untuk konvolusi dengan kernel 8 node. Dengan matrix sebagai berikut: H=
Petunjuk Praktikum float[] a = new float[10]; a[1] = (float)0.1; a[2] = (float)0.1; a[3] = (float)0.1; a[4] = (float)0.1; a[5] = (float)0.2; a[6] = (float)0.1; a[7] = (float)0.1; a[8] = (float)0.1; a[9] = (float)0.1; objBitmap2 = new Bitmap(objBitmap1); for (int x = 1; x < objBitmap1.Width - 1; x++) for(int y = 1; y < objBitmap1.Height - 1; y++) { • Double klik pada button3 dan tambahkan program berikut.
Petunjuk Praktikum Color w1 = objBitmap1.GetPixel(x - 1, y-1); Color w2 = objBitmap1.GetPixel(x - 1, y); Color w3 = objBitmap1.GetPixel(x-1, y + 1); Color w4 = objBitmap1.GetPixel(x, y - 1); Color w5 = objBitmap1.GetPixel(x, y); Color w6 = objBitmap1.GetPixel(x, y + 1); Color w7 = objBitmap1.GetPixel(x+1, y - 1); Color w8 = objBitmap1.GetPixel(x+1, y ); Color w9 = objBitmap1.GetPixel(x+1, y + 1); int x1 = (w1.R + w1.G + w1.B) / 3; int x2 = (w2.R + w2.G + w2.B) / 3; int x3 = (w3.R + w3.G + w3.B) / 3; int x4 = (w4.R + w4.G + w4.B) / 3; • Lanjutan program pada button3.
Petunjuk Praktikum int x5 = (w5.R + w5.G + w5.B) / 3; int x6 = (w6.R + w6.G + w6.B) / 3; int x7 = (w7.R + w7.G + w7.B) / 3; int x8 = (w8.R + w8.G + w8.B) / 3; int x9 = (w9.R + w9.G + w9.B) / 3; int xb = (int)(a[1] * x1 + a[2] * x2 + a[3] * x3); xb = (int)(xb + a[4] * x4 + a[5] * x5 + a[6] * x6); xb = (int)(xb + a[7] * x7 + a[8] * x8 + a[9] * x9); if (xb < 0) xb = 0; if (xb > 255) xb = 255; Color wb = Color.FromArgb(xb, xb, xb); objBitmap2.SetPixel(x, y, wb); } pictureBox2.Image = objBitmap2; • Lanjutan program pada button3.
Tugas • Ubah matrik kernel 4 node dengan matrik berikut • H= • H= • Ubah matrik kernel 8 node dengan matrik berikut • H= • H=