Anda di halaman 1dari 12

LAPORAN PRAKTIKUM 1 & 2

NAMA : SYILVIA WINDY KHARISMA PUTRI


KELAS : TI-4C
NIM : 1641720026
ABSEN : 26

PROGRAM STUDI TEKNIK INFORMATIKA


JURUSAN TEKNOLOGI INFORMASI
POLITEKNIK NEGERI MALANG
2019
Modul 1 - Instalasi Visual Studio, Buka dan Simpan File Citra, Operasi Citra Sederhana
1. Menambahkan form tentang

2. Menambahkan Status Strip dan Progress Bar


Tabel RGB untuk Citra

No Citra Masukan R+ G+ B+ Citra Hasil


1 Hitam 255 0 0 Merah
2 Hitam 255 255 0 Kuning
3 Hitam 252 165 3 Orange
4 Hitam 62 254 255 Cyan
5 Hitam 191 0 255 Purple/ungu
6 Hitam 128 128 128 Gray/Abu-abu
7 Hitam 150 75 0 Coklat
Modul 2 : Brightness Contrast Invert Kuantisasi

Multiple Control Brightness dan Contrast

Code Brightness dan Contrast

private void brightnessContrastToolStripMenuItem_Click(object sender, EventArgs e)


{
if (pbInput.Image == null)
{
MessageBox.Show("Tidak Ada Citra yang akan diolah");
}
else {
frmBrightness frm2 = new frmBrightness();
if (frm2.ShowDialog() == DialogResult.OK)
{
Bitmap b = new Bitmap((Bitmap)this.pbInput.Image);
int nilaiBrightness = Convert.ToInt16(frm2.tbBrightness.Text);
progBar.Visible = true;
for (int i = 0; i < b.Width; i++)
{
for (int j = 0; j < b.Height; j++)
{
Color c1 = b.GetPixel(i, j);
int ergebeB = (Convert.ToInt16(frm2.tbBrightness.Text));
int ergebeC = (Convert.ToInt16(frm2.tbContrast.Text));

double rgb = c1.R + c1.G + c1.B;


double rgb1 = (259 * (ergebeC + 255)) / (255 * (259 -
ergebeC));

double rC = 0;
double gC = 0;
double bC = 0;

if (ergebeC != 0)
{
rC = (rgb1 * (c1.R - 128)) + 128;
gC = (rgb1 * (c1.G - 128)) + 128;
bC = (rgb1 * (c1.B - 128)) + 128;

}
else {
rC = 0;
gC = 0;
bC = 0;
}

int r1 = c1.R + (ergebeB / 3) + (Convert.ToInt16(rC));


int g1 = c1.G + (ergebeB / 3) + (Convert.ToInt16(gC));
int b1 = c1.B + (ergebeB / 3) + (Convert.ToInt16(bC));

if (r1 > 255)


{
r1 = 255;
}
else if (r1 < 0)
{
r1 = 0;
}

if (g1 > 255)


{
g1 = 255;
}
else if (g1 < 0)
{
g1 = 0;
}

if (b1 > 255)


{
b1 = 255;
}
else if (b1 < 0)
{
b1 = 0;
}

b.SetPixel(i, j, Color.FromArgb(r1, g1, b1));


}
progBar.Value = Convert.ToInt16(100 * (i + 1) / b.Width);

}
progBar.Visible = true;
this.pbOutput.Image = b;
}
}

Hasil Brightness dan Contrast

Hasil brightness = 95

Hasil contrast = 70
Code Invers
private void inversToolStripMenuItem_Click(object sender, EventArgs e)
{
if (pbInput.Image == null)
{
MessageBox.Show("Tidak Ada citra yang akan diolah");
}
else
{
Bitmap b = new Bitmap((Bitmap)this.pbInput.Image);
progBar.Visible = true;
for (int i = 0; i < b.Width; i++)
{
for (int j = 0; j < b.Height; j++)
{
Color c1 = b.GetPixel(i, j);
int r1 = 255 - c1.R;
int g1 = 255 - c1.G;
int b1 = 255 - c1.B;
b.SetPixel(i, j, Color.FromArgb(r1, g1, b1));
}
progBar.Value = Convert.ToInt16(100 * (i + 1) / b.Width);
}
progBar.Visible = false;
this.pbOutput.Image = b;
}

Hasil invers
Code Log Brightness

private void logBrightnessToolStripMenuItem_Click(object sender, EventArgs e)


{
if (pbInput.Image == null)
{
MessageBox.Show("Tidak Ada Citra yang akan diolah");
}
else {

Form3 frm3 = new Form3();


if (frm3.ShowDialog() == DialogResult.OK)
{
Bitmap b = new Bitmap((Bitmap)this.pbInput.Image);
double nilaiBrightness = Convert.ToDouble(frm3.tbLogB.Text);
progBar.Visible = true;
for (int i = 0; i < b.Width; i++)
{
for (int j = 0; j < b.Height; j++)
{
Color c1 = b.GetPixel(i, j);

double r0 = c1.R + c1.G + c1.B;

double logBInput = Convert.ToInt16(frm3.tbLogB.Text);


double c = 0;

double r1 = 0;
double g1 = 0;
double b1 = 0;

if (logBInput != 0)
{
c = 255 / (Math.Log(1 + Math.Abs(logBInput)));

r1 = c * Math.Log10(1 + Math.Abs(c1.R));
g1 = c * Math.Log10(1 + Math.Abs(c1.G));
b1 = c * Math.Log10(1 + Math.Abs(c1.B));

if (r1 > 255)


{
r1 = 255;
}
else if (r1 < 0)
{
r1 = 0;
}

if (g1 > 255)


{
g1 = 255;
}
else if (g1 < 0)
{
g1 = 0;
}
if (b1 > 255)
{
b1 = 255;
}
else if (b1 < 0)
{
b1 = 0;
}

b.SetPixel(i, j, Color.FromArgb(Convert.ToInt16(r1),
Convert.ToInt16(g1), Convert.ToInt16(b1)));
}
else
{
r1 = c1.R;
g1 = c1.G;
b1 = c1.B;
}

}
progBar.Value = Convert.ToInt16(100 * (i + 1) / b.Width);
}
progBar.Visible = false;
this.pbOutput.Image = b;
}

Hasil Log Brightness = 80


Code Log Contrast

private void logContrastToolStripMenuItem_Click(object sender, EventArgs e)


{
if (pbInput.Image == null)
{
MessageBox.Show("Tidak Ada Citra yang akan diolah");
}
else
{

Form4 frm4 = new Form4();


if (frm4.ShowDialog() == DialogResult.OK)
{
Bitmap b = new Bitmap((Bitmap)this.pbInput.Image);
double nilaiContrast = Convert.ToDouble(frm4.tbLogC.Text);
progBar.Visible = true;
for (int i = 0; i < b.Width; i++)
{
for (int j = 0; j < b.Height; j++)
{
Color c1 = b.GetPixel(i, j);

double r0 = c1.R + c1.G + c1.B;

double logCInput = Convert.ToInt16(frm4.tbLogC.Text);


double factorC = (259 * (logCInput + 255)) / (255 * (259 -
logCInput));

double rZ = 0;
double gZ = 0;
double bZ = 0;

double c = 0;

double r1 = 0;
double g1 = 0;
double b1 = 0;

if (logCInput != 0)
{
rZ = (factorC * (c1.R - 128)) + 128;
gZ = (factorC * (c1.G - 128)) + 128;
bZ = (factorC * (c1.B - 128)) + 128;

double cR = 255 / (Math.Log(1 + Math.Abs(rZ)));


double cG = 255 / (Math.Log(1 + Math.Abs(gZ)));
double cB = 255 / (Math.Log(1 + Math.Abs(bZ)));

r1 = cR * Math.Log10(1 + Math.Abs(c1.R));
g1 = cG * Math.Log10(1 + Math.Abs(c1.G));
b1 = cB * Math.Log10(1 + Math.Abs(c1.B));

if (r1 > 255)


{
r1 = 255;
}
else if (r1 < 0)
{
r1 = 0;
}

if (g1 > 255)


{
g1 = 255;
}
else if (g1 < 0)
{
g1 = 0;
}

if (b1 > 255)


{
b1 = 255;
}
else if (b1 < 0)
{
b1 = 0;
}

b.SetPixel(i, j, Color.FromArgb(Convert.ToInt16(r1),
Convert.ToInt16(g1), Convert.ToInt16(b1)));
}
else
{
r1 = c1.R;
g1 = c1.G;
b1 = c1.B;
}

}
progBar.Value = Convert.ToInt16(100 * (i + 1) / b.Width);
}
progBar.Visible = false;
this.pbOutput.Image = b;
}

}
Hasil Log Contrast = 90

Anda mungkin juga menyukai