Praktikum Pengolahan Citra Pertemuan 4 – Image Enhancement
Brightness Brightness adalah proses menambah terang/gelap sebuah gambar dengan menambah nilai derajat keabuan (xg) dengan nilai perubah brightness (kb).
Brightness Untuk mengubah brightness pada gambar derajat keabuan kita dapat menggunakan rumus sebagai berikut: 𝑥𝑔 adalah nilai derajat keabuan pada titik (x,y). 𝑘𝑏 adalah konstanta brightness yang ditambahkan pada citra. Bila 𝑘𝑏 bernilai positif maka hasilnya akan semakin terang, dan bila nilai 𝑘𝑏 bernilai negatif maka hasilnya akan semakin gelap. 𝑥𝑏=𝑥𝑔+𝑘𝑏
Contrast Contrast adalah proses menaik-turunkan perbedaan nilai terang dan gelap sebuah gambar dengan cara mengalikan nilai derajat keabuan dengan nilai perubah contrast. Menaikkan contrast berati menaikan perbedaan antara nilai minimum dan nilai maksimum dari gambar, dan sebaliknya menurunkan contrast akan menurunkan perbedaan nilai minimum dan maksimum. 𝑥𝑔 adalah nilai derajat keabuan pada titik (x,y). 𝑐 adalah konstanta contrast. Bila nilai c lebih dari 1 maka hasilnya akan menambah contrast, dan bilai nilai c antara 0 dan 1 hasilnya akan mengurangi contrast. 𝑥𝑐=𝑐∗𝑥𝑔
Contrast Menaikkan contrast berati menaikan perbedaan antara nilai minimum dan nilai maksimum dari gambar, dan sebaliknya menurunkan contrast akan menurunkan perbedaan nilai minimum dan maksimum. 𝑥𝑔 adalah nilai derajat keabuan pada titik (x,y). 𝑐 adalah konstanta contrast. Bila nilai c lebih dari 1 maka hasilnya akan menambah contrast, dan bilai nilai c antara 0 dan 1 hasilnya akan mengurangi contrast. 𝑥𝑐=𝑐∗𝑥𝑔
Invers Invers adalah proses membalik nilai derajat keabuan dimana titik terang akan menjadi gelap dan titik gelap akan menjadi terang. Atau bisa juga disebut negatif. Untuk membalik nilai derajat keabuan digunakan rumus sebagai berikut: Sehingga jika sebuah titik memiliki nilai derajat keabuan 0 maka akan berubah menjadi 255. sebaliknya jika titik memiliki nilai 255 akan menjadi 0. 𝑥𝑖=255−𝑥𝑔
Auto Level 𝑥𝑏= 255 𝑥𝑔𝑚𝑎𝑥 −𝑥𝑔𝑚𝑖𝑛 (𝑥𝑔−𝑥𝑔𝑚𝑖𝑛) Auto Level adalah proses merubah nilai minimum sebuah citra menjadi 0 dan nilai maksimum sebuah citra menjadi 255. Pada gambar yang cenderung gelap biasanya nilai maksimumnya tidak sampai 255, dan pada gambar terang biasanya nilai minimumnya tidak mencapai 0. dengan proses auto level maka nilai maksimum akan menjadi 255 dan minimum menjadi 0. 𝑥𝑏= 255 𝑥𝑔𝑚𝑎𝑥 −𝑥𝑔𝑚𝑖𝑛 (𝑥𝑔−𝑥𝑔𝑚𝑖𝑛)
Petunjuk Praktikum Buatlah form dengan lima buah button, lima buah pictureBox, dua textBox dan sebuah OpenFileDialog. Aturlah form seperti gambar berikut.
Petunjuk Praktikum Tambahkan lima buah object Bitmap. Object Bitmap pertama berfungsi untuk menampung gambar asli. Bitmap kedua untuk gambar Invers. Bitmap ketiga untuk gambar Auto-Level. Bitmap keempat dan kelima untuk Contrast dan Brightness. Bitmap objBitmap1; Bitmap objBitmap2; Bitmap objBitmap3; Bitmap objBitmap4; Bitmap objBitmap5;
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 Double klik pada button2 dan tambahkan program berikut. Program tersebut bertujuan untuk menampilkan Gambar Invers. objBitmap2 = new Bitmap(objBitmap1); for (int x = 0; x < objBitmap1.Width; x++) for (int y = 0; y < objBitmap1.Height; y++) { Color w = objBitmap1.GetPixel(x, y); int xg = (int)((w.R + w.G + w.B) / 3); int xi = 255 – xg; Color new_w = Color.FromArgb(xi, xi, xi); objBitmap2.SetPixel(x, y, new_w); } pictureBox2.Image = objBitmap2;
Petunjuk Praktikum Double klik pada button3 dan tambahkan program berikut. objBitmap3 = new Bitmap(objBitmap1); int xgmax = 0; int xgmin = 255 for (int x = 0; x < objBitmap1.Width; x++) for (int y = 0; y < objBitmap1.Height; y++) { Color w = objBitmap1.GetPixel(x, y); int xg = (int)((w.R + w.G + w.B) / 3); if(xg > xgmax) xgmax = xg; if(xg < xgmin) xgmin = xg; }
Petunjuk Praktikum Kelanjutan dari kode sebelumnya. Program tersebut bertujuan untuk menampilkan gambar auto-level for (int x = 0; x < objBitmap1.Width; x++) for (int y = 0; y < objBitmap1.Height; y++) { Color w = objBitmap1.GetPixel(x, y); int xg = (int)((w.R + w.G + w.B) / 3); int xb = (int)(255*(xg-xgmin)/(xgmax-xgmin)); Color new_w = Color.FromArgb(xb, xb, xb); objBitmap3.SetPixel(x, y, new_w); } pictureBox3.Image = objBitmap3;
Petunjuk Praktikum Double klik pada button4 dan tambahkan program berikut. Program tersebut bertujuan untuk menampilkan gambar brightness objBitmap4 = new Bitmap(objBitmap1); int a = Convert.ToInt16(TextBox1.Text); for (int x = 0; x < objBitmap1.Width; x++) for (int y = 0; y < objBitmap1.Height; y++) { Color w = objBitmap1.GetPixel(x, y); int xg = (int)((w.R + w.G + w.B) / 3); int xb = xg + a; Color new_w = Color.FromArgb(xb, xb, xb); objBitmap4.SetPixel(x, y, new_w); } pictureBox4.Image = objBitmap4;
Petunjuk Praktikum Double klik pada button5 dan tambahkan program berikut. Program tersebut bertujuan untuk menampilkan gambar Contrast. objBitmap5 = new Bitmap(objBitmap1); int c = Convert. ToSingle(TextBox2.Text); for (int x = 0; x < objBitmap1.Width; x++) for (int y = 0; y < objBitmap1.Height; y++) { Color w = objBitmap1.GetPixel(x, y); int xg = (int)((w.R + w.G + w.B) / 3); int xc = c * xg; Color new_w = Color.FromArgb(xc, xc, xc); objBitmap5.SetPixel(x, y, new_w); } pictureBox5.Image = objBitmap5;
Capture Program
Tugas Lakukan beberapa percobaan untuk proses brightness dengan mengubah nilai brightness. Masukkanlah nilai 0, 255, -255 dan beberapa nilai lain. Analisalah perbedaan hasilnya yang tampak. Apa yang terjadi jika rumus invers di ganti dengan xi=128-xg? Berikan analisa! Lakukan percobaan pada proses contras dengan memasukkan nilai 1, 0, nilai lebih dari satu, dan antara 0 s/d 1. Analisalah perbedaan hasilnya! Jelaskan manfaat dari auto-level!