You are on page 1of 7

Nurul Fauziyah / 7410040021

Laporan Resmi Praktikum 7 : Konvolusi dan Image Filtering


Source Code :
Library yang dipakai :

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Prak7 { public partial class Form1 : Form { Bitmap objBitmap1; Bitmap objBitmap2; public Form1() { InitializeComponent(); }

Button 1 (untuk load gambar) :


private void button1_Click(object sender, EventArgs e) { DialogResult d = openFileDialog1.ShowDialog(); if (d == DialogResult.OK) { objBitmap1 = new Bitmap(openFileDialog1.FileName); pictureBox1.Image = objBitmap1; } }

Button 2 , Filter konvolusi kernel 4 node dengan matriks

w1 merupakan pixel tetangga sebelah kiri w2 merupakan pixel tetangga sebelah kanan w3 merupakan pixel tetangga sebelah bawah w4 merupakan pixel tetangga atas Setiap pixel tetangga akan dirata rata nilai RGBnya untuk mendapatkan keabuan dari pixel tersebut. Setelah itu proses konvolusi dilakukan dengan cara mengalikan tiap nilai pada matrik konvolusi dengan pixel tetangga.
private void button2_Click(object sender, EventArgs e) { 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);

Nurul Fauziyah / 7410040021


Color w3 = objBitmap1.GetPixel(x, y - 1); Color w4 = objBitmap1.GetPixel(x, y + 1); Color w = objBitmap1.GetPixel(x, y); 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;

Button 3, filter konvolusi kernel 8 node dengan matrik

w1, w2, w3, w4, w7, w8, dan w9 merupakan pixel tetanggga dari w5 Setiap pixel tetangga akan dirata rata nilai RGBnya untuk mendapatkan keabuan dari pixel tersebut. Setelah itu proses konvolusi dilakukan dengan cara mengalikan tiap nilai pada matrik konvolusi dengan pixel tetangga.
private void button3_Click(object sender, EventArgs e) { 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++) { 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; 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;

Nurul Fauziyah / 7410040021


Color wb = Color.FromArgb(xb, xb, xb); objBitmap2.SetPixel(x, y, wb);

} } }

} pictureBox2.Image = objBitmap2;

Running Program :

Analisa

Gambar terlihat lebih cerah pada filter 8 node dibandingkan dengan filter 4 node

Tugas
1. Filter konvolusi kernel 4 node dengan matriks

Source code
a[0] = (float)-0.5; a[1] = (float)-0.5;

Nurul Fauziyah / 7410040021


a[2] = (float)0; a[3] = (float)0.5; a[4] = (float)0.5;

Gambar terlihat lebih gelap mendekati nilai 0 (hitam) karena hasil RGB sebagian besar pixel setelah dikonvolusikan kurang dari sama dengan 0 (jika kurang dari 0 maka akan dijadikan 0) atau mendekati nilai 0. 2. Filter konvolusi kernel 8 node dengan matriks

Source code : a[1] = (float)1; a[2] = (float)-0.5; a[3] = (float)0; a[4] = (float)-0.5; a[5] = (float)0; a[6] = (float)0.5; a[7] = (float)0; a[8] = (float)0.5; a[9] = (float)1;

Nurul Fauziyah / 7410040021

Gambar terlihat lebih terang pada sebagian besar pixel, terdapat pixel yang mendekati nilai maksimum (putih) Bila hasil konvolusi > derajat keabuan maksimum, maka nilai diubah ke derajat keabuan maksimum. 3. Filter konvolusi kernel 4 node dengan matriks

Source code
a[0] = (float)-0.5; a[1] = (float)-0.5; a[2] = (float)1; a[3] = (float)0.5; a[4] = (float)0.5;

4. Filter konvolusi kernel 8 node dengan matriks

Source code a[1] = (float)-1; a[2] = (float)-0.5; a[3] = (float)0; a[4] = (float)-0.5; a[5] = (float)1; a[6] = (float)0.5; a[7] = (float)0; a[8] = (float)0.5; a[9] = (float)1;

Nurul Fauziyah / 7410040021

Tugas Tambahan :
Lakukan percobaan pada gambar grayscale dengan ukuran 10 x 10 pixel. Filter konvolusi kernel 4 node dengan matriks

Nurul Fauziyah / 7410040021

Dari ketiga gambar konvolusi 4 node diatas dapat dilihat bahwa pada gambar pertama gambar terlihat buram (berfrekuensi rendah), karena pixel gambar memiliki RGB yang sama dengan pixel tetangga. Sementara pada gambar kedua gambar terlihat lebih gelap setelah dikonvolusikan. Karena banyak pixel hasil konvolusi lebih kecil nilainya dibandingkan nilai minimum derajat keabuan (negatif). Bila hasil konvolusi negatif,maka nilai dijadikan 0. Sedangkan pada gambar ketiga pixel tetangga memiliki nilai yang lebih kecil dari awalnya dan pixel lain memiliki nilai tetap. Filter konvolusi kernel 8 node dengan matriks

Dari ketiga gambar konvolusi 8 node diatas, pada gambar pertama tingkat keabuan merata pada semua pixel. Sementara gambar kedua lebih terang dari lainnya karena hasil konvolusi mendekati maksimum (putih). Sedangkan pada gambar ketiga pixelnya lebih terang pada bagian pojok kanan bawah sementara pixel yang lain terlihat lebih gelap.

You might also like