LISTING PROGRAM
Kode Program Menu Utama:
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 Harmonic_Mean_Filter {
public partial class utama : Form {
public utama() {
InitializeComponent(); }
private void tambahNoiseToolStripMenuItem_Click(object sender, EventArgs e)
{
tambahnoise frm2 = new tambahnoise(); this.Dispose();
frm2.ShowDialog(); }
private void keluarToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Apakah Anda Ingin Keluar Aplikasi?", "Keluar", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.Yes) {
Application.Exit(); }
}
private void pengujianToolStripMenuItem_Click(object sender, EventArgs e)
{
Form3 frm3 = new Form3(); this.Dispose();
private void tentangToolStripMenuItem_Click(object sender, EventArgs e)
{
tentang frm5 = new tentang(); this.Dispose();
frm5.ShowDialog(); }
private void bantuanToolStripMenuItem_Click(object sender, EventArgs e)
{
bantuan frm4 = new bantuan(); this.Dispose();
frm4.ShowDialog(); }
private void label7_Click(object sender, EventArgs e) {
}
private void utama_Load(object sender, EventArgs e) {
}
private void label2_Click(object sender, EventArgs e) {
}
private void pictureBox1_Click(object sender, EventArgs e)
{ } } }
Kode Program Menu Tambah
Noise
:
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data;
using System.Drawing;
using System.Drawing.Imaging; using System.Linq;
using System.Windows.Forms; using System.IO;
using System.Diagnostics;
using System.Runtime.InteropServices; namespace Harmonic_Mean_Filter
{
public partial class tambahnoise : Form {
BitmapData bmpData = null; byte[] Pixels;
IntPtr point = IntPtr.Zero; private bool bitdeviasi; private double Deviasi; string JenisNoise = ""; public tambahnoise() {
InitializeComponent(); }
private void button6_Click(object sender, EventArgs e) {
utama frm1 = new utama(); this.Dispose();
frm1.ShowDialog(); }
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); citraawal.Image = bit;
long fileSize = new System.IO.FileInfo(open.FileName).Length; if (fileSize / 1000 < 1) {
size.Text = fileSize.ToString(); lblSize.Text = "Byte";
} else {
size.Text = (fileSize / 1000).ToString(); lblSize.Text = "Kb";
location.Text = Path.GetFullPath(open.FileName); filename.Text =
Path.GetFileName(open.FileName);
height.Text = bit.Height.ToString(); width.Text = bit.Width.ToString(); }
}
catch (Exception) {
throw new ApplicationException("Failed loading image");
} }
private void tambahnoise_Load(object sender, EventArgs e) {
}
private void button3_Click(object sender, EventArgs e) {
Bitmap citra = new Bitmap(citraawal.Image); int x, y, widthPos, HeightPos, randomNumber; double prob;
y = citra.Height; x = citra.Width;
prob = Convert.ToDouble(textBox6.Text); if (prob > 100 || prob < 0)
{
MessageBox.Show("Input Noise hanya antara 0 - 100");
} else {
prob = Convert.ToInt32(x * y * (prob/200)); Random rnd = new Random();
while (prob > 0) {
widthPos = rnd.Next(0, x - 1); HeightPos = rnd.Next(0, y - 1); randomNumber = rnd.Next(1, 10); if (randomNumber <= 5)
{
citra.SetPixel(widthPos, HeightPos, Color.FromArgb(255, 0, 0, 0));
} else {
citra.SetPixel(widthPos, HeightPos, Color.FromArgb(255, 255, 255, 255));
}
}
citranoise.Image = citra; button4.Enabled = true; button5.Enabled = true;
MessageBox.Show("Noise Salt and Pepper telah berhasil ditambahkan");
JenisNoise = "Salt and Pepper Noise"; }
}
private void button4_Click(object sender, EventArgs e) {
citranoise.Image = null; textBox6.Text = ""; button4.Enabled = false; button5.Enabled = false; }
private void button5_Click(object sender, EventArgs e) {
if (citranoise.Image != null) {
SaveFileDialog simpan = new SaveFileDialog(); simpan.Filter = "Image Files|*.bmp|Image Files|*.png";
simpan.FileName = "*.bmp";
if (simpan.ShowDialog() == DialogResult.OK) {
citranoise.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(textBox6.Text + "/" + JenisNoise);
sw.Flush(); sw.Close();
MessageBox.Show("Citra Bernoise Telah Disimpan", "Simpan", MessageBoxButtons.OK,
MessageBoxIcon.Information); }
} else {
}
private double getGaussianNumber() {
Random rnd = new Random(); double v1, v2, persegi; if (bitdeviasi)
{
bitdeviasi = false; return Deviasi * 1; }
do {
// nilai random antara -1.0 and 1.0 v1 = 2 * rnd.NextDouble() - 1; v2 = 2 * rnd.NextDouble() - 1; persegi = v1 * v1 + v2 * v2;
// untuk memastikan dalam satu cakupan }
while (persegi >= 1 || persegi == 0);
var kutup = Math.Sqrt(-2 * Math.Log(persegi) / persegi);
// menyimpan simpangan pertama Deviasi = v2 * kutup;
bitdeviasi = true;
// return kembali ke simp[angan kedua return v1 * kutup;
}
private void button2_Click(object sender, EventArgs e) {
Bitmap citra = new Bitmap(citraawal.Image); int x, y, PixelSize;
double gaussnumber = 0.0; int step, newpixel;
double prob; y = citra.Height; x = citra.Width; PixelSize = x * y;
prob = Convert.ToInt32(textBox6.Text); if (prob > 100 || prob < 0)
{
MessageBox.Show("Input Noise hanya antara 0 - 100");
} else {
Random rnd = new Random();
Rectangle box = new Rectangle(0, 0, x, y); int Depth =
bmpData = citra.LockBits(box, ImageLockMode.ReadWrite, citra.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); } }
//i += step; }
Marshal.Copy(Pixels, 0, point, Pixels.Length); citra.UnlockBits(bmpData);
citranoise.Image = citra; button4.Enabled = true; button5.Enabled = true;
MessageBox.Show("Noise Gaussian telah berhasil ditambahkan");
JenisNoise = "Gaussian Noise"; }
} } }
Kode Program Menu Reduksi
Noise
:
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data;
using System.Drawing; using System.Linq; using System.Text;
namespace Harmonic_Mean_Filter
private void groupBox1_Enter(object sender, EventArgs e) {
}
private void label7_Click(object sender, EventArgs e) {
}
hasilgreen = 0;
private void button1_Click(object sender, EventArgs e) {
private void button3_Click(object sender, EventArgs e) {
private void button4_Click(object sender, EventArgs e)
private void button5_Click(object sender, EventArgs e) {
utama frm1 = new utama(); this.Dispose();
frm1.ShowDialog(); }
private double hitungMSE(Bitmap imageAsli, Bitmap imageHasil) {
try {
OpenFileDialog open = new OpenFileDialog(); open.Filter = "Image Files(*.bmp)|*.bmp|Image Files(*.png)|*.png|All Files(*.*)|*.*";
if (open.ShowDialog() == DialogResult.OK) {
Bitmap bit = new Bitmap(open.FileName); imgAwal.Image = bit;
} }
catch (Exception) {
throw new ApplicationException("Failed loading image");
} } } }
Kode Program Menu Bantuan:
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 Harmonic_Mean_Filter {
public partial class bantuan : Form {
public bantuan() {
InitializeComponent(); }
private void kembali4_Click(object sender, EventArgs e) {
utama frm1 = new utama(); this.Dispose();
frm1.ShowDialog(); }
Kode Program Menu Tentang:
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 Harmonic_Mean_Filter {
public partial class tentang : Form {
public tentang() {
InitializeComponent(); }
private void tentang_Load(object sender, EventArgs e) {
}
private void kembali5_Click(object sender, EventArgs e) {
utama frm1 = new utama(); this.Dispose();
frm1.ShowDialog(); }