Anda di halaman 1dari 17

Laporan Praktikum Mata Kuliah Pengolahan Citra

Percobaan II

1.1 Judul : Layer Gray Scale, Kuantisasi 16, 8, dan 2

1.2 Tujuan
Adapun tujuan dalam percobaan I ini adalah sebagai berikut:
a. Dapat menampilkan Layer Gray Scale, Kuantisasi 16, 8, dan 2 pada Visual Studio
2015.

1.3 Tugas
Adapun tugas dalam percobaan II adalah sebagai berikut:
a. Tambahkan program untuk menampilkan:
Layer Green
Layer Blue
GrayScale Red
GrayScale Blue.
b. Tambahkan program untuk “Sephia” dengan mengambil r dari layer R, kemudian warna
baru diganti dengan nilai R = 2*r, nilai G = 1.8*r dan nilai B = r
c. Lakukan beberapa variasi pembobotan R, G, dan B dan analisis hasilnya.
d. Tuliskan semua program dalam laporan.
e. Berikan penjelasan untuk tiap baris yang anda anggap penting.
f. Lakukan percobaan pada beberapa gambar berbeda dan analisa hasilnya.
Sephia: gambar yang berwarna merah kecoklatan seperti fotofoto yang dicetak pada jaman
dulu sebelum foto-foto dicetak dengan warna true color seperti yang sekarang ini

1.4 Jawaban
Adapun jawaban dari tugas pada percobaan II adalah sebagai berikut:
a. Berikut merupakan langkah-langkah membuat aplikasi Layer Green, Blue, Grayscale Red
dan Grayscale Blue.
1. Buka Visual Studio 2015.
2. Pilih File  New  New Project.
3. Pilih Visual C# [Windows Forms Application].
4. Isi Name dan Solution Name dengan “Image 1” kemudian tekan tombol [OK].
5. Kemudian muncul form baru dari project yang dibuat.
6. Buatlah Form Dengan Tiga Buah Button, Tiga Buah Picturebox Dan Sebuah
Openfiledialog. Aturlah Form Seperti Gambar Berikut

7. Tarik komponen “OpenFileDialog” dari jendela [Toolbox] kedalam form.


8. Tarik komponen “SaveFileDialog” dari jendela [Toolbox] kedalam form.
9. Setelah menambahkan OpenFileDialog dan SaveFileDialog, maka form telah siap.
10. Kemudian klik tombol start, akan muncul tampilan hasil running seperti gambar
dibawah ini.

11. Berikut merupakan listing program Layer Green, Blue, Grayscale Red dan Grayscale
Blue.
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;
using System.Drawing.Imaging;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Bitmap objBitmap1;
Bitmap objBitmap2;
Bitmap objBitmap3;
Bitmap objBitmap4;
Bitmap objBitmap5;
Bitmap objBitmap6;
Bitmap objBitmap7;
Bitmap objBitmap8;
Bitmap objBitmap9;

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)


{
DialogResult d = openFileDialog1.ShowDialog();
if (d == DialogResult.OK)
{
objBitmap1 = new Bitmap(openFileDialog1.FileName);
pictureBox1.Image = objBitmap1;
}
}

private void button2_Click_1(object sender, EventArgs e)


{
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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((0.42 * wr + 0.32 * wg + 0.28 * wb) / 3);
Color new_a = Color.FromArgb(xg, xg, xg);
objBitmap2.SetPixel(x, y, new_a);
}
pictureBox2.Image = objBitmap2;
}

private void button3_Click_1(object sender, EventArgs e)


{
objBitmap3 = 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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
Color new_b = Color.FromArgb(xg, xg, xg);
objBitmap3.SetPixel(x, y, new_b);
}
pictureBox3.Image = objBitmap3;

private void button4_Click(object sender, EventArgs e)


{
objBitmap4 = 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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
if (xg > 127)
xg = 255;
else
xg = 0;
Color new_c = Color.FromArgb(xg, xg, xg);
objBitmap4.SetPixel(x, y, new_c);
}
pictureBox4.Image = objBitmap4;
}
private void Form1_Load(object sender, EventArgs e)
{
}

private void button5_Click(object sender, EventArgs e)


{
objBitmap5 = 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 wg = w.G;
Color new_d = Color.FromArgb(0, wg, 0);
objBitmap5.SetPixel(x, y, new_d);
}
pictureBox5.Image = objBitmap5;
}

private void button6_Click(object sender, EventArgs e)


{
objBitmap6 = 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 wb = w.B;
Color new_e = Color.FromArgb(0, 0, wb);
objBitmap6.SetPixel(x, y, new_e);
}
pictureBox6.Image = objBitmap6;
}

private void button7_Click(object sender, EventArgs e)


{
objBitmap7 = 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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
Color new_f = Color.FromArgb(wr, xg, xg);
objBitmap7.SetPixel(x, y, new_f);
}
pictureBox7.Image = objBitmap7;
}

private void button8_Click(object sender, EventArgs e)


{
objBitmap8 = 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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
Color new_g = Color.FromArgb(xg, xg, wb);
objBitmap8.SetPixel(x, y, new_g);
}
pictureBox8.Image = objBitmap8;
}
}
}
b. Berikut merupakan langkah-langkah membuat aplikasi Layer Green-Blue dan Red-Green.
1. Atur Seperti pada form di project sebelumnya.
2. Tambahkan text Button untuk “sephia” seperti gambar berikut.

3. Kemudian klik tombol start, akan muncul tampilan hasil running seperti gambar
dibawah ini.

5. Berikut merupakan listing program Sephia.


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;
using System.Drawing.Imaging;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Bitmap objBitmap1;
Bitmap objBitmap2;
Bitmap objBitmap3;
Bitmap objBitmap4;
Bitmap objBitmap5;
Bitmap objBitmap6;
Bitmap objBitmap7;
Bitmap objBitmap8;
Bitmap objBitmap9;

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)


{
DialogResult d = openFileDialog1.ShowDialog();
if (d == DialogResult.OK)
{
objBitmap1 = new Bitmap(openFileDialog1.FileName);
pictureBox1.Image = objBitmap1;
}
}

private void button2_Click_1(object sender, EventArgs e)


{
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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((0.42 * wr + 0.32 * wg + 0.28 * wb) / 3);
Color new_a = Color.FromArgb(xg, xg, xg);
objBitmap2.SetPixel(x, y, new_a);
}
pictureBox2.Image = objBitmap2;
}

private void button3_Click_1(object sender, EventArgs e)


{
objBitmap3 = 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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
Color new_b = Color.FromArgb(xg, xg, xg);
objBitmap3.SetPixel(x, y, new_b);
}
pictureBox3.Image = objBitmap3;

private void button4_Click(object sender, EventArgs e)


{
objBitmap4 = 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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
if (xg > 127)
xg = 255;
else
xg = 0;
Color new_c = Color.FromArgb(xg, xg, xg);
objBitmap4.SetPixel(x, y, new_c);
}
pictureBox4.Image = objBitmap4;
}
private void Form1_Load(object sender, EventArgs e)
{
}

private void button5_Click(object sender, EventArgs e)


{
objBitmap5 = 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 wg = w.G;
Color new_d = Color.FromArgb(0, wg, 0);
objBitmap5.SetPixel(x, y, new_d);
}
pictureBox5.Image = objBitmap5;
}

private void button6_Click(object sender, EventArgs e)


{
objBitmap6 = 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 wb = w.B;
Color new_e = Color.FromArgb(0, 0, wb);
objBitmap6.SetPixel(x, y, new_e);
}
pictureBox6.Image = objBitmap6;
}

private void button7_Click(object sender, EventArgs e)


{
objBitmap7 = 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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
Color new_f = Color.FromArgb(wr, xg, xg);
objBitmap7.SetPixel(x, y, new_f);
}
pictureBox7.Image = objBitmap7;
}

private void button8_Click(object sender, EventArgs e)


{
objBitmap8 = 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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
Color new_g = Color.FromArgb(xg, xg, wb);
objBitmap8.SetPixel(x, y, new_g);
}
pictureBox8.Image = objBitmap8;
}

private void button9_Click(object sender, EventArgs e)


{
objBitmap9 = 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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xr = 2 * wr;
int xg = (int)(1.8 * wr);
int xb = wb;
if (xr > 255)
{
xr = 255;
}
if (xg > 255)
{
xg = 255;
}
Color new_h = Color.FromArgb(xr, xg, xb);
objBitmap9.SetPixel(x, y, new_h);

}
pictureBox9.Image = objBitmap9;
}

private void Form1_Load_1(object sender, EventArgs e)


{

}
}
c. Berikut merupakan langkah-langkah untuk variasi pembobotan R, G, dan B
1. Atur seperti Pada form di project pertama.
2. Atur text button dan picture box seperti berikut
2. Kemudian klik tombol start, akan muncul tampilan hasil running seperti gambar
dibawah ini.

3. Berikut merupakan listing program Kuantisasi 16, 8 dan 2.


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;
using System.Drawing.Imaging; //library tambahan
 
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Bitmap objBitmap1;
Bitmap objBitmap2;
Bitmap objBitmap3;
Bitmap objBitmap4;
public Form1()
{
InitializeComponent();
}
 
private void button1_Click(object sender, EventArgs e)
{
DialogResult d = openFileDialog1.ShowDialog();
if (d == DialogResult.OK)
{
objBitmap1 = new Bitmap(openFileDialog1.FileName);
pictureBox1.Image = objBitmap1;
}
 
}

private void button2_Click(object sender, EventArgs e)


{
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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((0.42*wr + 0.32*wg + 0.28*wb) / 3);
Color new_a = Color.FromArgb(xg, xg, xg);
objBitmap2.SetPixel(x, y, new_a);
}
pictureBox2.Image = objBitmap2;
  }
private void button3_Click(object sender, EventArgs e)
{
objBitmap3 = 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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((0.7*wr + 0.3*wg + 0.0*wb) / 3);
Color new_b = Color.FromArgb(xg, xg, xg);
objBitmap3.SetPixel(x, y, new_b);
}
pictureBox3.Image = objBitmap3;
}
private void button4_Click(object sender, EventArgs e)
{
objBitmap4 = 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 wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((0.3*wr + 0.0*wg + 0.7*wb) / 3);
Color new_c = Color.FromArgb(xg, xg, xg);
objBitmap4.SetPixel(x, y, new_c);
}
pictureBox4.Image = objBitmap4;
}
private void Form1_Load(object sender, EventArgs e)
{
 
}
}
}

1.5 Analisis Data


Pada percobaan II ini telah dibuat program untuk Layer Grayscale, Red, Green, Blue,
Green-Blue, Red-Green, kuantisasi 16, 8, 2, Pembobotan RGB, dan Sephia, dimana dilakukan
pada software Visual Studio 2015. Berikut merupakan keterangan pada listing program dari
program Pembobotan RGB, Grayscale, Citra Biner, Layer Green, Blue, Grayscale red, Grayscale
blue, dan sephia.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Imaging;
//Using adalah metode untuk mengimport object lain yang akan digunakan didalam aplikasi ini
namespace Image_1 //Namespace digunakan untuk memberikan nama project sehingga project
akan lebih mudah untuk diidentifikasi
{
public partial class Form1 : Form
{
Bitmap objBitmap;
Bitmap objBitmap1;
Bitmap objBitmap2;
Bitmap objBitmap3;
Bitmap objBitmap4;
Bitmap objBitmap5;
Bitmap objBitmap6;
Bitmap objBitmap7;
Bitmap objBitmap8;
Bitmap objBitmap9;
public Form1()
{
InitializeComponent(); //untuk menginisialisasi objek apa saja yanga da didalam project
tersebut (dalam hal ini objek yang diinisialisasi adalah form, coomandButton, pictureBox,
termasuk ukurannya, penempatannya dalam koordinat x dan y. Intinya adalah tentang bagaimana
form ini ditampilkan).
}
private void Form1_Load(object sender, EventArgs e)
{

private void button1_Click(object sender, EventArgs e)


{
DialogResult d = openFileDialog1.ShowDialog();
if (d == DialogResult.OK)
{
objBitmap = new Bitmap(openFileDialog1.FileName); // Membuka file pada gallery
computer
pictureBox1.Image = objBitmap;
}
}

private void button2_Click(object sender, EventArgs e)


{
objBitmap2 = new Bitmap(objBitmap1); // Menyalin bitmap pada objBitmap ke
objBitmap2
for (int x = 0; x < objBitmap1.Width; x++)
for (int y = 0; y < objBitmap1.Height; y++)
{
Color w = objBitmap1.GetPixel(x, y);
int wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((0.42 * wr + 0.32 * wg + 0.28 * wb) / 3);
// Menentukan nilai RGB dari gambar yang akan ditampilkan
Color new_a = Color.FromArgb(xg, xg, xg);
objBitmap2.SetPixel(x, y, new_a);
}
pictureBox2.Image = objBitmap2; // Menampilkan objBitmap2 pada picturebox2
}

private void button3_Click(object sender, EventArgs e)


{
objBitmap3 = new Bitmap(objBitmap1); // Menyalin bitmap pada objBitmap ke
objBitmap3
for (int x = 0; x < objBitmap1.Width; x++)
for (int y = 0; y < objBitmap1.Height; y++)
{
Color w = objBitmap1.GetPixel(x, y);
int wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
Color new_b = Color.FromArgb(xg, xg, xg);
objBitmap3.SetPixel(x, y, new_b);
}
pictureBox3.Image = objBitmap3; // Menampilkan objBitmap3 pada picturebox3
}

private void button4_Click(object sender, EventArgs e)


{
objBitmap4 = new Bitmap(objBitmap1); // Menyalin bitmap pada objBitmap ke
objBitmap4
for (int x = 0; x < objBitmap1.Width; x++)
for (int y = 0; y < objBitmap1.Height; y++)
{
Color w = objBitmap1.GetPixel(x, y);
int wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
if (xg > 127)
xg = 255;
else
xg = 0; // Untuk membatasi nilai menjadi 0 dan 255
Color new_c = Color.FromArgb(xg, xg, xg);
objBitmap4.SetPixel(x, y, new_c);
}
pictureBox4.Image = objBitmap4; // Menampilkan objBitmap4 pada picturebox4
}

private void button5_Click(object sender, EventArgs e)


{
objBitmap5 = new Bitmap(objBitmap1); // Menyalin bitmap pada objBitmap ke
objBitmap5
for (int x = 0; x < objBitmap1.Width; x++)
for (int y = 0; y < objBitmap1.Height; y++)
{
Color w = objBitmap1.GetPixel(x, y);
int wg = w.G;
Color new_d = Color.FromArgb(0, wg, 0);
// Menampilkan warna gambar R,G,B
objBitmap5.SetPixel(x, y, new_d);
}
pictureBox5.Image = objBitmap5; // Menampilkan objBitmap5 pada picturebox5
}

private void button6_Click(object sender, EventArgs e)


{
objBitmap6 = new Bitmap(objBitmap1); // Menyalin bitmap pada objBitmap ke
objBitmap6
for (int x = 0; x < objBitmap1.Width; x++)
for (int y = 0; y < objBitmap1.Height; y++)
{
Color w = objBitmap1.GetPixel(x, y);
int wb = w.B;
Color new_e = Color.FromArgb(0, 0, wb);
// Menampilkan warna gambar R,G,B
objBitmap6.SetPixel(x, y, new_e);
}
pictureBox6.Image = objBitmap6; // Menampilkan objBitmap6 pada picturebox6
}
private void button7_Click(object sender, EventArgs e)
{
objBitmap7 = new Bitmap(objBitmap1); // Menyalin bitmap pada objBitmap ke
objBitmap7
for (int x = 0; x < objBitmap1.Width; x++)
for (int y = 0; y < objBitmap1.Height; y++)
{
Color w = objBitmap1.GetPixel(x, y);
int wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
Color new_f = Color.FromArgb(wr, xg, xg);
// Menampilkan warna gambar R,G,B
objBitmap7.SetPixel(x, y, new_f);
}
pictureBox7.Image = objBitmap7; // Menampilkan objBitmap7 pada picturebox7
}
private void button8_Click(object sender, EventArgs e)
{
objBitmap8 = new Bitmap(objBitmap1); // Menyalin bitmap pada objBitmap ke
objBitmap8
for (int x = 0; x < objBitmap1.Width; x++)
for (int y = 0; y < objBitmap1.Height; y++)
{
Color w = objBitmap1.GetPixel(x, y);
int wr = w.R;
int wg = w.G;
int wb = w.B;
int xg = (int)((wr + wg + wb) / 3);
Color new_g = Color.FromArgb(xg, xg, wb);
// Menampilkan warna gambar R,G,B
objBitmap8.SetPixel(x, y, new_g);
}
pictureBox8.Image = objBitmap8; // Menampilkan objBitmap8 pada picturebox8
}
private void button9_Click(object sender, EventArgs e)
{
objBitmap9 = new Bitmap(objBitmap1); // Menyalin bitmap pada objBitmap ke
objBitmap2
for (int x = 0; x < objBitmap1.Width; x++)
for (int y = 0; y < objBitmap1.Height; y++)
{
Color w = objBitmap1.GetPixel(x, y);
int wr = w.R;
int wg = w.G;
int wb = w.B;
int xr = 2 * wr;
int xg = (int)(1.8 * wr);
int xb = wb;
if (xr > 255)
{
xr = 255;
}
if (xg > 255)
{
xg = 255;
} // Untuk membatasi nilai nilai RGB
Color new_h = Color.FromArgb(xr, xg, xb);
objBitmap9.SetPixel(x, y, new_h);
}
pictureBox9.Image = objBitmap9; // Menampilkan objBitmap2 pada picturebox2
}

}
}
1.6 Lampiran
a. Layer Red dan Grayscale d. Pembobotan RGB

b. Layer Green-Blue dan Layer Red-Green e. Grayscale dan Citra Biner

c. Kuantisasi 16, 8, 2

Anda mungkin juga menyukai