Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LATIHAN PRATIKUM
1. ARITMATIKA OPERATION
➢ Sourcecode
averageDenoisingToolStripMenuItem
private void averageDenoisingToolStripMenuItem_Click(object sender, EventArgs
e)
{
FolderBrowserDialog folderDlg = new FolderBrowserDialog();
folderDlg.ShowNewFolderButton = true;
if (folderDlg.ShowDialog() == DialogResult.OK)
{
Environment.SpecialFolder root = folderDlg.RootFolder;
}
List<Image> pictureArray = new List<Image>();
foreach (string item in
Directory.GetFiles(folderDlg.SelectedPath, "*.jpg",
SearchOption.AllDirectories))
{
Image _image = Image.FromFile(item);
pictureArray.Add(_image);
}
pbInput.Image = pictureArray[0];
Bitmap b = new Bitmap((Bitmap)this.pbInput.Image);
Bitmap c = new Bitmap((Bitmap)this.pbInput.Image);
ProgressBar1.Visible = true;
toolStripStatusLabel2.Text = "Res. Citra: " + pbInput.Image.Width
+ " x " + pbInput.Image.Height;
int R, G, B, newR, newG, newB;
int jumGambar = 50;
for (int i = 0; i < b.Width; i++)
{
for (int j = 0; j < b.Height; j++)
{
R = 0;
G = 0;
B = 0;
for (int k = 0; k < jumGambar - 1; k++)
{
b = (Bitmap)pictureArray[k];
Color c1 = b.GetPixel(i, j);
R += c1.R;
G += c1.G;
B += c1.B;
}
newR = R / jumGambar;
newG = G / jumGambar;
newB = B / jumGambar;
c.SetPixel(i, j, Color.FromArgb(newR, newG, newB));
}
ProgressBar1.Value = Convert.ToInt16(100 * (i + 1) /
c.Width);
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H
}
ProgressBar1.Visible = false;
this.pbOutput.Image = c;
➢ Hasil
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H
2. WARNA TERDEKAT
➢ Sourcecode
}
return pValueR1;
Nearest8ColorToolStripMenuItem
➢ Hasil
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H
3. ERROR DIFFUSION
➢ Soucecode
if (i == 0)
{
b.SetPixel(i + 1, j,
Color.FromArgb(truncateInt(b.GetPixel(i + 1, j).R + 7 / 16 *
Convert.ToInt32(errorR)),
truncateInt(b.GetPixel(i + 1, j).G + 7 / 16 *
Convert.ToInt32(errorG)),
truncateInt(b.GetPixel(i + 1, j).B + 7 / 16 *
Convert.ToInt32(errorB))));
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H
b.SetPixel(i, j + 1,
Color.FromArgb(truncateInt(b.GetPixel(i, j + 1).R + 5 / 16 *
Convert.ToInt32(errorR)),
truncateInt(b.GetPixel(i, j + 1).G + 5 / 16 *
Convert.ToInt32(errorG)),
truncateInt(b.GetPixel(i, j + 1).B + 5 / 16 *
Convert.ToInt32(errorB))));
b.SetPixel(i + 1, j + 1,
Color.FromArgb(truncateInt(b.GetPixel(i + 1, j + 1).R + 1 / 16 *
Convert.ToInt32(errorR)),
truncateInt(b.GetPixel(i + 1, j + 1).G + 1 /
16 * Convert.ToInt32(errorG)),
truncateInt(b.GetPixel(i + 1, j + 1).B + 1 /
16 * Convert.ToInt32(errorB))));
}
else
{
b.SetPixel(i + 1, j,
Color.FromArgb(truncateInt(b.GetPixel(i + 1, j).R + 7 / 16 *
Convert.ToInt32(errorR)),
truncateInt(b.GetPixel(i + 1, j).G + 7 / 16 *
Convert.ToInt32(errorG)),
truncateInt(b.GetPixel(i + 1, j).B + 7 / 16 *
Convert.ToInt32(errorB))));
b.SetPixel(i - 1, j + 1,
Color.FromArgb(truncateInt(b.GetPixel(i - 1, j + 1).R + 3 / 16 *
Convert.ToInt32(errorR)),
truncateInt(b.GetPixel(i - 1, j + 1).G + 3 /
16 * Convert.ToInt32(errorG)),
truncateInt(b.GetPixel(i - 1, j + 1).B + 3 /
16 * Convert.ToInt32(errorB))));
b.SetPixel(i, j + 1,
Color.FromArgb(truncateInt(b.GetPixel(i, j + 1).R + 5 / 16 *
Convert.ToInt32(errorR)),
truncateInt(b.GetPixel(i, j + 1).G + 5 / 16 *
Convert.ToInt32(errorG)),
truncateInt(b.GetPixel(i, j + 1).B + 5 / 16 *
Convert.ToInt32(errorB))));
b.SetPixel(i + 1, j + 1,
Color.FromArgb(truncateInt(b.GetPixel(i + 1, j + 1).R + 1 / 16 *
Convert.ToInt32(errorR)),
truncateInt(b.GetPixel(i + 1, j + 1).G + 1 /
16 * Convert.ToInt32(errorG)),
truncateInt(b.GetPixel(i + 1, j + 1).B + 1 /
16 * Convert.ToInt32(errorB))));
}
}
ProgressBar1.Value = Convert.ToInt16(100 * (i + 1) /
b.Width);
}
ProgressBar1.Visible = false;
this.pbOutput.Refresh();
}
}
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H
➢ Hasil
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H
PRATIKUM
➢ Sourcecode
InputToolStripMenuItem
histoB[c1.R] += 1.0;
}
}
ProgressBar1.Value = Convert.ToInt16(100 * (i + 1) /
b.Width);
}
ProgressBar1.Visible = false;
//jika histogram R == G, maka kemungkinan besar citra
grayscale
//jika grayscale maka form5 yang ditampilkan
if (histoR.Count == histoG.Count &&
!histoR.Except(histoG).Any())
{
//Variabel intensitas pixel pada dictionary dimapping ke
dalam List kunci1 bertipe Byte
List<Byte> kunci1 = new List<Byte>(histoR.Keys.ToList());
frm5.Show();
//tiga baris dibawah ini sengaja diset di code, agar tahu
setting propertiesnya
frm5.chart1.Series["Series1"].Color = Color.Gray;
frm5.chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled = false;
frm5.chart1.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled = false;
//Untuk tiap data dalam List kunci1
foreach (Byte key in kunci1)
{
//nilai histogram dinormalisasi
histoR[key] = histoR[key] / (b.Width * b.Height);
frm5.chart1.Series["Series1"].Points.AddXY(key,
histoR[key]);
}
}
else
{
//lakukan proses histogram citra warna
List<Byte> kunci1 = new List<Byte>(histoR.Keys.ToList());
List<Byte> kunci2 = new List<Byte>(histoG.Keys.ToList());
List<Byte> kunci3 = new List<Byte>(histoB.Keys.ToList());
kunci1.Sort();
kunci2.Sort();
kunci3.Sort();
frm6.Show();
foreach (Byte key in kunci1)
{
histoR[key] = histoR[key] / (b.Width * b.Height);
frm6.chart1.Series["Series1"].Points.AddXY(key,
histoR[key]);
}
foreach (Byte key in kunci2)
{
histoG[key] = histoG[key] / (b.Width * b.Height);
frm6.chart2.Series["Series1"].Points.AddXY(key,
histoG[key]);
}
foreach (Byte key in kunci3)
{
histoB[key] = histoB[key] / (b.Width * b.Height);
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H
frm6.chart3.Series["Series1"].Points.AddXY(key,
histoB[key]);
}
}
}
}
outputToolStripMenuItem
ProgressBar1.Value = Convert.ToInt16(100 * (i + 1) /
b.Width);
}
ProgressBar1.Visible = false;
histogramGrayscale.chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled =
false;
histogramGrayscale.chart1.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled =
false;
histogramColor.chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled =
false;
histogramColor.chart1.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled =
false;
histogramColor.chart2.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled =
false;
histogramColor.chart2.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled =
false;
histogramColor.chart3.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled =
false;
histogramColor.chart3.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled =
false;
histogramGrayscale.chart1.Series[0].Points.DataBindXY(HistoR.Keys,
HistoR.Values);
histogramGrayscale.ShowDialog();
}
else
{
histogramColor.chart1.Series["Series1"].Color =
Color.Red;
histogramColor.chart2.Series["Series1"].Color =
Color.Green;
histogramColor.chart3.Series["Series1"].Color =
Color.Blue;
histogramColor.chart1.Series[0].Points.DataBindXY(HistoR.Keys,
HistoR.Values);
histogramColor.chart2.Series[0].Points.DataBindXY(HistoG.Keys,
HistoG.Values);
histogramColor.chart3.Series[0].Points.DataBindXY(HistoB.Keys,
HistoB.Values);
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H
histogramColor.ShowDialog();
}
}
}
Input
histoB[c1.R] += 1.0;
}
}
ProgressBar1.Value = Convert.ToInt16(100 * (i + 1) /
b.Width);
}
ProgressBar1.Visible = false;
//jika histogram R == G, maka kemungkinan besar citra
grayscale
//jika grayscale maka form5 yang ditampilkan
if (histoR.Count == histoG.Count &&
!histoR.Except(histoG).Any())
{
//Variabel intensitas pixel pada dictionary dimapping ke
dalam List kunci1 bertipe Byte
List<Byte> kunci1 = new List<Byte>(histoR.Keys.ToList());
frm5.Show();
//tiga baris dibawah ini sengaja diset di code, agar tahu
setting propertiesnya
frm5.chart1.Series["Series1"].Color = Color.Gray;
frm5.chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled = false;
frm5.chart1.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled = false;
//Untuk tiap data dalam List kunci1
foreach (Byte key in kunci1)
{
//nilai histogram dinormalisasi
histoR[key] = histoR[key] / (b.Width * b.Height);
frm5.chart1.Series["Series1"].Points.AddXY(key,
histoR[key]);
}
}
else
{
//lakukan proses histogram citra warna
List<Byte> kunci1 = new List<Byte>(histoR.Keys.ToList());
List<Byte> kunci2 = new List<Byte>(histoG.Keys.ToList());
List<Byte> kunci3 = new List<Byte>(histoB.Keys.ToList());
kunci1.Sort();
kunci2.Sort();
kunci3.Sort();
frm6.Show();
foreach (Byte key in kunci1)
{
histoR[key] = histoR[key] / (b.Width * b.Height);
frm6.chart1.Series["Series1"].Points.AddXY(key,
histoR[key]);
}
foreach (Byte key in kunci2)
{
histoG[key] = histoG[key] / (b.Width * b.Height);
frm6.chart2.Series["Series1"].Points.AddXY(key,
histoG[key]);
}
foreach (Byte key in kunci3)
{
histoB[key] = histoB[key] / (b.Width * b.Height);
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H
frm6.chart3.Series["Series1"].Points.AddXY(key,
histoB[key]);
}
}
}
}
Output
}
ProgressBar1.Value = Convert.ToInt16(100 * (i + 1) /
b.Width);
}
ProgressBar1.Visible = false;
histogramGrayscale.chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled =
false;
histogramGrayscale.chart1.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled =
false;
histogramColor.chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled =
false;
histogramColor.chart1.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled =
false;
histogramColor.chart2.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled =
false;
histogramColor.chart2.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled =
false;
histogramColor.chart3.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled =
false;
histogramColor.chart3.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled =
false;
histogramGrayscale.chart1.Series[0].Points.DataBindXY(HistoR.Keys,
HistoR.Values);
histogramGrayscale.ShowDialog();
}
else
{
histogramColor.chart1.Series["Series1"].Color =
Color.Red;
histogramColor.chart2.Series["Series1"].Color =
Color.Green;
histogramColor.chart3.Series["Series1"].Color =
Color.Blue;
histogramColor.chart1.Series[0].Points.DataBindXY(HistoR.Keys,
HistoR.Values);
histogramColor.chart2.Series[0].Points.DataBindXY(HistoG.Keys,
HistoG.Values);
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H
histogramColor.chart3.Series[0].Points.DataBindXY(HistoB.Keys,
HistoB.Values);
histogramColor.ShowDialog();
}
}
}
inputOutputToolStripMenuItem
➢ Hasil
Hasil histogram -> input
YASMINI_1641720089 PRATIKUM 6_PCD TI 4H