Listing Program
Kode Program Menu Home:
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 High_Boost_Filtering {
public partial class Form1 : Form {
public Form1() {
InitializeComponent(); }
private void pengujianToolStripMenuItem_Click(object sender, EventArgs e) {
this.Dispose();
Form2 frm2 = new Form2(); frm2.ShowDialog();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e) {
Application.Exit(); }
private void helpToolStripMenuItem_Click(object sender, EventArgs e) {
Form3 frm3 = new Form3(); this.Dispose();
frm3.ShowDialog(); }
private void hasilToolStripMenuItem_Click(object sender, EventArgs e) {
Form4 frm4 = new Form4(); this.Dispose();
frm4.ShowDialog(); }
Kode Program Menu Pengujian:
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data;
using System.Drawing;
using System.Drawing.Imaging; using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices; using System.Diagnostics;
using System.IO;
namespace High_Boost_Filtering {
public partial class Form2 : Form {
BitmapData bmpData = null; private bool bitdeviasi; private double Deviasi; IntPtr point = IntPtr.Zero; Bitmap imageAwal;
int[,] pixelImage; double A = 2.6; double w;
string JenisNoise = ""; byte[] Pixels;
double[,] tapisHighBoost; public Form2()
{
InitializeComponent(); }
private void homeToolStripMenuItem_Click(object sender, EventArgs e) {
this.Dispose();
Form1 frm1 = new Form1(); frm1.ShowDialog();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e) {
if (MessageBox.Show("Keluar Aplilkasi?", "Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Application.Exit(); }
private void Form2_Load(object sender, EventArgs e) {
w = (9 * A) - 1;
{-1,-1,-1}}; for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++) {
tapisHighBoost[i, j] = (1 / 9) * tapisHighBoost[i, j]; }
} }
private Bitmap getSaltAndPepper(Bitmap image) {
int x = image.Width; int y = image.Height; int pixelx, pixely, val; double prob;
prob = Convert.ToDouble(textBox1.Text); prob = Convert.ToInt32((prob/200) * x * y); Random rnd = new Random();
for (int i = 0; i < prob; i++) {
pixelx = rnd.Next(0, x - 1); pixely = rnd.Next(0, y - 1); val = rnd.Next(0, 10); if (val <= 5)
{
image.SetPixel(pixelx, pixely, Color.FromArgb(255, 0, 0, 0)); }
else {
image.SetPixel(pixelx, pixely, Color.FromArgb(255, 255, 255, 255)); }
JenisNoise = "Salt & Pepper Noise"; }
return image;
}
private double getGaussianNumber() {
Random rnd = new Random(); double v1, v2, persegi; if (bitdeviasi)
{
bitdeviasi = false; return Deviasi * 1; }
do {
v1 = 2 * rnd.NextDouble() - 1; v2 = 2 * rnd.NextDouble() - 1; persegi = v1 * v1 + v2 * v2;
}
var kutup = Math.Sqrt(-2 * Math.Log(persegi) / persegi);
Deviasi = v2 * kutup; bitdeviasi = true;
return v1 * kutup; }
private Bitmap getGaussianNoise(Bitmap image) {
int x = image.Width; int y = image.Height; double gaussnumber = 0.0; double prob;
prob = Convert.ToInt32(textBox1.Text); int step, newpixel, PixelSize = x * y; BitmapData bmpData = null;
byte[] Pixels;
Random rnd = new Random();
Rectangle box = new Rectangle(0, 0, x, y);
int Depth = System.Drawing.Bitmap.GetPixelFormatSize(image.PixelFormat); step = Depth / 8;
bmpData = image.LockBits(box, ImageLockMode.ReadWrite, image.PixelFormat); Pixels = new byte[PixelSize * step];
point = bmpData.Scan0;
Marshal.Copy(point, Pixels, 0, Pixels.Length); for (int i = 0; i < Pixels.Length; i += step) {
if (i < Pixels.Length - step) {
for (int j = 0; j < step; j++) {
gaussnumber = getGaussianNumber();
newpixel = Convert.ToInt32(gaussnumber * prob) + Convert.ToInt32(Pixels[i + j]);
if (newpixel < 0) newpixel = 0; if (newpixel > 255) newpixel = 255; Pixels[i + j] = Convert.ToByte(newpixel); }
}
JenisNoise = "Gaussian Noise"; }
Marshal.Copy(Pixels, 0, point, Pixels.Length); image.UnlockBits(bmpData);
return image;
}
bool isGrayscale(params int[] ints) {
for (int i = 0; i < ints.Length - 1; i++) {
}
return true; }
private void btnImport_Click(object sender, EventArgs e) {
OpenFileDialog open = new OpenFileDialog();
open.Filter = "bmp Files|*.bmp|png Files|*.png|All Files(*.*)|*.*"; open.FileName = "*.bmp";
bool grayscale = true;
if (open.ShowDialog() == DialogResult.OK) {
imageAwal = new Bitmap(open.FileName); for (int i = 0; i < imageAwal.Height; i++) {
for (int j = 0; j < imageAwal.Width; j++) {
if (! isGrayscale(imageAwal.GetPixel(j, i).R, imageAwal.GetPixel(j, i).G, imageAwal.GetPixel(j, i).B))
{
MessageBox.Show("Image harus Grayscale", "High-Boost Filtering", MessageBoxButtons.OK, MessageBoxIcon.Warning);
grayscale = false; break;
} }
if (!grayscale) break; }
if (grayscale)
imgAwal.Image = imageAwal; }
}
private void rbtSalt_CheckedChanged(object sender, EventArgs e) {
if (rbtSalt.Checked) {
if (textBox1.Text != "") {
imgNoise.Image = null;
imgNoise.Image = getSaltAndPepper(imageAwal);
MessageBox.Show("Salt & Pepper Noise telah ditambahkan ke Image", "High-Boost Filtering", MessageBoxButtons.OK, MessageBoxIcon.Information);
} else {
MessageBox.Show("Masukkan probabilitas Noise terlebih dahulu", "High-Boost Filtering", MessageBoxButtons.OK, MessageBoxIcon.Warning);
textBox1.Focus();
rbtSalt.Checked = false; }
} }
if (rbtGaussian.Checked) {
if (textBox1.Text != "") {
imgNoise.Image = null;
imgNoise.Image = getGaussianNoise(imageAwal);
MessageBox.Show("Gaussian Noise telah ditambahkan ke Image", "High-Boost Filtering", MessageBoxButtons.OK, MessageBoxIcon.Information);
} else {
MessageBox.Show("Masukkan probabilitas Noise terlebih dahulu", "High-Boost Filtering", MessageBoxButtons.OK, MessageBoxIcon.Warning);
textBox1.Focus();
rbtGaussian.Checked = false; }
} }
private void btnReset_Click(object sender, EventArgs e) {
imgAwal.Image = null; imgHasil.Image = null; imgNoise.Image = null; textBox1.Text = "";
rbtGaussian.Checked = false; rbtSalt.Checked = false; txtMSE.Text = "";
txtPSNR.Text = ""; }
private void btnSimpan_Click(object sender, EventArgs e) {
if (imgHasil.Image != null) {
SaveFileDialog simpan = new SaveFileDialog();
simpan.Filter = "Image Files|*.bmp|Image Files|*.png"; simpan.FileName = "*.bmp";
if (simpan.ShowDialog() == DialogResult.OK) {
imgHasil.Image.Save(simpan.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
string filename = simpan.FileName.Substring(0, simpan.FileName.Length - 4) + ".txt";
FileStream fstream = new FileStream(filename, FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(fstream);
SeekOrigin seekorigin = new SeekOrigin(); sw.BaseStream.Seek(0, seekorigin);
sw.WriteLine(txtMSE.Text + "/" + txtPSNR.Text); sw.Flush();
sw.Close();
MessageBox.Show("Image Hasil Telah Disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show("Image Noise Tidak Ada"); }
}
private void btnFilter_Click(object sender, EventArgs e) {
Bitmap image = new Bitmap(imgNoise.Image);
Bitmap output = new Bitmap(image.Width, image.Height); int pixel;
pixelImage = new int[image.Height, image.Width]; for (int i = 0; i < image.Height; i++)
{
for (int j = 0; j < image.Width; j++) {
pixelImage[i, j] = image.GetPixel(j, i).R; }
}
for (int i = 0; i < image.Height - 2; i++) {
for (int j = 0; j < image.Width - 2; j++) {
pixel = Convert.ToInt32(HighBoost(i, j)); if (pixel < 0)
pixel *= -1; if (pixel > 255) pixel = 255;
output.SetPixel(j + 1, i + 1, Color.FromArgb(255, pixel, pixel, pixel));
} }
imgHasil.Image = output; }
private double HighBoost(int x, int y) {
double Hasil = 0; int row = x; int col = y;
for (int i = 0; i < 3; i++) {
col = y;
for (int j = 0; j < 3; j++) {
Hasil += pixelImage[row, col] * tapisHighBoost[i, j]; col++;
} row++; }
double HighBoost = ((A - 1) * pixelImage[x, y]) + Hasil; return HighBoost;
}
private double hitungMSE(Bitmap imageAsli, Bitmap imageHasil) {
double pxAsli, pxHasil, MSE;
for (int i = 0; i < imageAsli.Height; i++) {
for (int j = 0; j < imageAsli.Width; j++) {
pxAsli = imageAsli.GetPixel(j, i).R; pxHasil = imageHasil.GetPixel(j, i).R; sum += Math.Pow(pxAsli - pxHasil, 2); }
}
MSE = sum / (imageAsli.Height * imageAsli.Width); return MSE;
}
private double hitungPSNR(double MSE) {
double PSNR = Math.Log10(Math.Pow(255, 2) / MSE); return PSNR;
}
private void btnHitung_Click(object sender, EventArgs e) {
double MSE = hitungMSE((Bitmap)imgAwal.Image, (Bitmap)imgHasil.Image); double PSNR = hitungPSNR(MSE);
txtMSE.Text = Math.Round(Convert.ToDecimal(MSE.ToString()), 4).ToString(); txtPSNR.Text = Math.Round(Convert.ToDecimal(PSNR.ToString()), 4).ToString(); }
private void helpToolStripMenuItem_Click(object sender, EventArgs e) {
Form3 frm3 = new Form3(); this.Dispose();
frm3.ShowDialog(); }
private void hasilToolStripMenuItem_Click(object sender, EventArgs e) {
Form4 frm4 = new Form4(); this.Dispose();
frm4.ShowDialog(); }
private void textBox1_TextChanged(object sender, EventArgs e) {
}
private void button1_Click(object sender, EventArgs e) {
if (imgNoise.Image != null) {
SaveFileDialog simpan = new SaveFileDialog();
simpan.Filter = "Image Files|*.bmp|Image Files|*.png"; simpan.FileName = "*.bmp";
imgNoise.Image.Save(simpan.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
string filename = simpan.FileName.Substring(0, simpan.FileName.Length - 4) + ".txt";
FileStream fstream = new FileStream(filename, FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(fstream);
SeekOrigin seekorigin = new SeekOrigin(); sw.BaseStream.Seek(0, seekorigin);
sw.WriteLine(textBox1.Text + "/" + JenisNoise); sw.Flush();
sw.Close();
MessageBox.Show("Image Noise Telah Disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Information);
} } else {
MessageBox.Show("Image Noise Tidak Ada"); }
}
private void imgNoise_Click(object sender, EventArgs e) {
} } }
Kode Program Menu Hasil:
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data;
using System.Drawing; using System.Linq; using System.Text; using System.IO;
using System.Windows.Forms; namespace High_Boost_Filtering {
public partial class Form4 : Form {
public Form4() {
InitializeComponent(); }
private void homeToolStripMenuItem_Click(object sender, EventArgs e) {
this.Dispose();
Form1 frm1 = new Form1(); frm1.ShowDialog();
private void pengujianToolStripMenuItem_Click(object sender, EventArgs e) {
this.Dispose();
Form2 frm2 = new Form2(); frm2.ShowDialog();
}
private void helpToolStripMenuItem_Click(object sender, EventArgs e) {
Form3 frm3 = new Form3(); this.Dispose();
frm3.ShowDialog(); }
private void exitToolStripMenuItem_Click(object sender, EventArgs e) {
if (MessageBox.Show("Keluar Aplilkasi?", "Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Application.Exit(); }
private void button1_Click(object sender, EventArgs e) {
try {
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.bmp)|*.bmp|Image Files(*.jpg)|*.jpg|All Files(*.*)|*.*";
if (open.ShowDialog() == DialogResult.OK) {
Bitmap bit = new Bitmap(open.FileName); imgAwal.Image = bit;
long fileSize = new System.IO.FileInfo(open.FileName).Length; if (fileSize / 1000 < 1)
{
size.Text = fileSize.ToString(); labelsize.Text = "Byte";
} else {
size.Text = (fileSize / 1000).ToString(); labelsize.Text = "Kb";
}
string pixel = "";
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
pixel += bit.GetPixel(j, i).R + " "; }
pixel += "\r\n"; }
txtAwal.Text = pixel;
// location.Text = Path.GetFullPath(open.FileName); filename.Text = Path.GetFileName(open.FileName); // height.Text = bit.Height.ToString();
} }
catch (Exception) {
throw new ApplicationException("Failed loading image"); }
}
private void groupBox1_Enter(object sender, EventArgs e) {
}
private void button3_Click(object sender, EventArgs e) {
try {
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.bmp)|*.bmp|Image Files(*.jpg)|*.jpg|All Files(*.*)|*.*";
if (open.ShowDialog() == DialogResult.OK) {
Bitmap bit = new Bitmap(open.FileName); imgNoise.Image = bit;
string nama = open.FileName.Substring(0, open.FileName.Length - 4) + ".txt";
FileStream fstream = new FileStream(nama, FileMode.Open, FileAccess.ReadWrite);
StreamReader sreader = new StreamReader(fstream); sreader.BaseStream.Seek(0, SeekOrigin.Begin); string Keterangan = sreader.ReadToEnd(); sreader.Close();
string[] info = new string[2]; info = Keterangan.Split('/'); textBox1.Text = info[0]; textBox2.Text = info[1]; string pixel = "";
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
pixel += bit.GetPixel(j, i).R + " "; }
pixel += "\r\n"; }
txtNoise.Text = pixel; }
}
catch (Exception) {
throw new ApplicationException("Failed loading image"); }
}
private void button2_Click(object sender, EventArgs e) {
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.bmp)|*.bmp|Image Files(*.jpg)|*.jpg|All Files(*.*)|*.*";
if (open.ShowDialog() == DialogResult.OK) {
Bitmap bit = new Bitmap(open.FileName); imgHasil.Image = bit;
string nama = open.FileName.Substring(0, open.FileName.Length - 4) + ".txt";
FileStream fstream = new FileStream(nama, FileMode.Open, FileAccess.ReadWrite);
StreamReader sreader = new StreamReader(fstream); sreader.BaseStream.Seek(0, SeekOrigin.Begin); string Keterangan = sreader.ReadToEnd(); sreader.Close();
string[] info = new string[2]; info = Keterangan.Split('/'); textBox3.Text = info[0]; textBox4.Text = info[1]; string pixel = "";
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
pixel += bit.GetPixel(j, i).R + " "; }
pixel += "\r\n"; }
txtHasil.Text = pixel; }
}
catch (Exception) {
throw new ApplicationException("Failed loading image"); }
}
private void reset_Click(object sender, EventArgs e) {
imgAwal.Image = null; imgHasil.Image = null; imgNoise.Image = null; textBox1.Text = ""; textBox2.Text = ""; textBox3.Text = ""; textBox4.Text = ""; filename.Text = ""; size.Text = ""; txtAwal.Text = ""; txtHasil.Text = ""; txtNoise.Text = "";
}
this.Dispose();
Form3 frm3 = new Form3(); frm3.ShowDialog();
}
} }
Kode Program Menu Help:
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 High_Boost_Filtering {
public partial class Form3 : Form {
public Form3() {
InitializeComponent(); }
private void homeToolStripMenuItem_Click(object sender, EventArgs e) {
this.Dispose();
Form1 frm1 = new Form1(); frm1.ShowDialog();
}
private void pengujianToolStripMenuItem_Click(object sender, EventArgs e) {
this.Dispose();
Form2 frm2 = new Form2(); frm2.ShowDialog();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e) {
if (MessageBox.Show("Keluar Aplilkasi?", "Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Application.Exit(); }
private void hasilToolStripMenuItem_Click(object sender, EventArgs e) {
Form4 frm4 = new Form4(); this.Dispose();