Professional Documents
Culture Documents
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(); }
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);
} pictureBox2.Image = objBitmap2;
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;
} } }
} 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;
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;
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;
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;
Tugas Tambahan :
Lakukan percobaan pada gambar grayscale dengan ukuran 10 x 10 pixel. Filter konvolusi kernel 4 node dengan matriks
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.