Form Pengujian ONF dan BRF

LISTING PROGRAM

1. Form Pengujian ONF dan BRF

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.Threading.Tasks; using System.Windows.Forms; namespace SelectiveFilter2 { public partial class Form1 : Form { double waktu = 0.0; bool noise; int[,] dataA; int[,] dataB; struct COMPLEX { public double real, imag; public COMPLEXdouble x, double y { real = x; imag = y; } public float Magnitude { return floatMath.Sqrtreal real + imag imag; } public float Phase { return floatMath.Atanimag real; } } byte[,] r_data; byte[,] g_data; byte[,] b_data; FFT ImgFFT; public Form1 { InitializeComponent; } private void bukaGambarToolStripMenuItem_Clickobject sender, EventArgs e { Universitas Sumatera Utara openFileDialog.InitialDirectory = ; openFileDialog.Filter = Bitmap files.bmp|.bmp|Jpeg Files.jpg|.jpg|All valid files + .bmp.jpg|.bmp.jpg; openFileDialog.FilterIndex = 2; openFileDialog.RestoreDirectory = true; if DialogResult.OK == openFileDialog.ShowDialog { this.AutoScroll = true; this.citraAsli.Image = new BitmapopenFileDialog.FileName; this.Invalidate; Bitmap b = new BitmapBitmapthis.citraAsli.Image; dataA = new int[b.Height,b.Height]; dataB = new int[b.Height,b.Height]; if b.Width == b.Height { LL.Text = b.Width.ToString; TT.Text = b.Height.ToString; noise = false; BitmapData bmdata = b.LockBitsnew Rectangle0, 0, b.Width, b.Height, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb; int stride = bmdata.Stride; System.IntPtr Scan0 = bmdata.Scan0; unsafe { byte p = bytevoidScan0; int nOffset = stride - b.Width 3; r_data = new byte[b.Width, b.Height]; g_data = new byte[b.Width, b.Height]; b_data = new byte[b.Width, b.Height]; for int y = 0; y b.Height; ++y { for int x = 0; x b.Width; ++x { b_data[x, y] = p[0]; g_data[x, y] = p[1]; r_data[x, y] = p[2]; p += 3; } p += nOffset; } } Bitmap Is = new BitmapBitmapthis.citraAsli.Image; Sinu_noise periodik = new Sinu_noiseIs; periodik.Period = 200; periodik.Fade = 2; Universitas Sumatera Utara citraNoise.Image = periodik.ResultImage; Bitmap Is4 = new BitmapBitmapthis.citraAsli.Image; selectiveFilter.CitraAbu2Is4; Citra_Gray.Image = null; Citra_Gray.Image = Is4; for int i = 0; i dataA.GetLength1; i++ { for int j = 0; j dataA.GetLength1; j++ { dataA[i, j] = Is4.GetPixeli, j.R; } } Bitmap Is2 = new BitmapBitmapthis.citraNoise.Image; selectiveFilter.CitraAbu2Is2; citraAbu.Image = null; citraAbu.Image = Is2; Bitmap Is3 = new BitmapBitmapthis.citraAbu.Image; ImgFFT = new FFTIs3; ImgFFT.ForwardFFT; ImgFFT.FFTShift; ImgFFT.FFTPlotImgFFT.FFTShifted; citraSpektrum.Image = ImageImgFFT.FourierPlot; Bitmap aa = new BitmapBitmapthis.Citra_Gray.Image; Bitmap bb = new BitmapBitmapthis.citraAbu.Image; } else { citraAsli.Image = null; MessageBox.ShowLebar dan Tinggi gambar harus sama, Gagal, MessageBoxButtons.OK, MessageBoxIcon.Error; } } } private void simpanGambarToolStripMenuItem_Clickobject sender, EventArgs e { Application.Exit; } private void groupBox2_Enterobject sender, EventArgs e { } Universitas Sumatera Utara private void button1_Clickobject sender, EventArgs e { if citraAsli.Image = null ||citraAbu.Image=null { DateTime satu, dua; double W, D0, n; if W1.Text = || D01.Text = || n1.Text = { try { W = Convert.ToDoubleW1.Text; D0 = Convert.ToDoubleD01.Text; n = Convert.ToDoublen1.Text; Bitmap Is3 = new BitmapBitmapthis.citraAbu.Image; ImgFFT = new FFTIs3; satu = DateTime.Now; ImgFFT.ForwardFFT; ImgFFT.FFTShift; ImgFFT.FFTPlotImgFFT.FFTShifted; citraSpektrum.Image = ImageImgFFT.FourierPlot; ImgFFT.RemoveFFTShift; double[,] a = new double[ImgFFT.Obj.Width, ImgFFT.Obj.Height]; selectiveFilter.Band_Rejecta, W, D0, ImgFFT.Obj.Width, ImgFFT.Obj.Height, 1, intn; for int p = 0; p 5; p++ { for int v = 0; v ImgFFT.Obj.Height; v++ { for int u = 0; u ImgFFT.Obj.Width; u++ { ImgFFT.FFTNormal[u, v].real = a[u, v]; ImgFFT.Output[u, v].real = ImgFFT.FFTNormal[u, v].real; ImgFFT.FFTNormal[u, v].imag = a[u, v]; ImgFFT.Output[u, v].imag = ImgFFT.FFTNormal[u, v].imag; } } } ImgFFT.RemoveFFTShift; ImgFFT.InverseFFT; dua = DateTime.Now; TimeSpan seli = dua.Subtractsatu; Universitas Sumatera Utara BR_ideal.Image = ImageImgFFT.Obj; Bitmap bb; if noise == false { bb= new BitmapBitmapthis.BR_ideal.Image; for int i = 0; i dataB.GetLength1; i++ { for int j = 0; j dataB.GetLength1; j++ { dataB[i, j] = bb.GetPixeli, j.R; } } MSE1.Text = MSEPSNR.HitungMSE2dataA, dataB.ToString; PSNR1.Text = MSEPSNR.HitungPSNRConvert.ToDoubleMSE1.Text.ToString; RT1.Text = seli.TotalMilliseconds.ToString; } satu = DateTime.Now; ImgFFT = new FFTIs3; ImgFFT.ForwardFFT; ImgFFT.FFTShift; ImgFFT.FFTPlotImgFFT.FFTShifted; citraSpektrum.Image = ImageImgFFT.FourierPlot; ImgFFT.RemoveFFTShift; selectiveFilter.Band_Rejecta, W, D0, ImgFFT.Obj.Width, ImgFFT.Obj.Height, 2, intn; for int p = 0; p 1; p++ { for int v = 0; v ImgFFT.Obj.Height; v++ { for int u = 0; u ImgFFT.Obj.Width; u++ { ImgFFT.FFTNormal[u, v].real = a[u, v]; ImgFFT.Output[u, v].real = ImgFFT.FFTNormal[u, v].real; ImgFFT.FFTNormal[u, v].imag = a[u, v]; ImgFFT.Output[u, v].imag = ImgFFT.FFTNormal[u, v].imag; } } } Universitas Sumatera Utara ImgFFT.RemoveFFTShift; ImgFFT.InverseFFT; dua = DateTime.Now; BR_B.Image = ImageImgFFT.Obj; if noise == false { bb = new BitmapBitmapthis.BR_B.Image; for int i = 0; i dataB.GetLength1; i++ { for int j = 0; j dataB.GetLength1; j++ { dataB[i, j] = bb.GetPixeli, j.R; } } MSE2.Text = MSEPSNR.HitungMSE2dataA, dataB.ToString; PSNR2.Text = MSEPSNR.HitungPSNRConvert.ToDoubleMSE2.Text.ToString; seli = dua.Subtractsatu; RT2.Text = seli.TotalMilliseconds.ToString; } satu = DateTime.Now; ImgFFT = new FFTIs3; ImgFFT.ForwardFFT; ImgFFT.FFTShift; ImgFFT.FFTPlotImgFFT.FFTShifted; citraSpektrum.Image = ImageImgFFT.FourierPlot; ImgFFT.RemoveFFTShift; selectiveFilter.Band_Rejecta, W, D0, ImgFFT.Obj.Width, ImgFFT.Obj.Height, 3, intn; for int p = 0; p 8; p++ { for int v = 0; v ImgFFT.Obj.Height; v++ { for int u = 0; u ImgFFT.Obj.Width; u++ { ImgFFT.FFTNormal[u, v].real = a[u, v]; ImgFFT.Output[u, v].real = ImgFFT.FFTNormal[u, v].real; ImgFFT.FFTNormal[u, v].imag = a[u, v]; ImgFFT.Output[u, v].imag = ImgFFT.FFTNormal[u, v].imag; } } Universitas Sumatera Utara } ImgFFT.RemoveFFTShift; ImgFFT.InverseFFT; dua = DateTime.Now; BR_G.Image = ImageImgFFT.Obj; if noise == false { bb = new BitmapBitmapthis.BR_G.Image; for int i = 0; i dataB.GetLength1; i++ { for int j = 0; j dataB.GetLength1; j++ { dataB[i, j] = bb.GetPixeli, j.R; } } MSE3.Text = MSEPSNR.HitungMSE2dataA, dataB.ToString; PSNR3.Text = MSEPSNR.HitungPSNRConvert.ToDoubleMSE3.Text.ToString; seli = dua.Subtractsatu; RT3.Text = seli.TotalMilliseconds.ToString; } MessageBox.ShowProses Filter selesai, tekan tombol simpan untuk menyimpan gambar, Sukses, MessageBoxButtons.OK, MessageBoxIcon.Information; } catch Exception ex { MessageBox.ShowMasukkan angka, bukan Huruf, GAGAL, MessageBoxButtons.OK, MessageBoxIcon.Error; } } } } private void button2_Clickobject sender, EventArgs e { if citraAsli.Image = null || citraAbu.Image = null { double D0, n; DateTime satu, dua; int x1x, x2x, y1y, y2y; if DO2.Text = || n2.Text = || x1.Text = || x2.Text = || y1.Text = || y2.Text = { try { D0 = Convert.ToDoubleDO2.Text; n = Convert.ToDoublen2.Text; Universitas Sumatera Utara x1x = Convert.ToInt32x1.Text; x2x = Convert.ToInt32x2.Text; y1y = Convert.ToInt32y1.Text; y2y = Convert.ToInt32y2.Text; Bitmap Is3 = new BitmapBitmapthis.citraAbu.Image; satu = DateTime.Now; ImgFFT = new FFTIs3; ImgFFT.ForwardFFT; ImgFFT.FFTShift; ImgFFT.FFTPlotImgFFT.FFTShifted; citraSpektrum.Image = ImageImgFFT.FourierPlot; double[,] a = new double[ImgFFT.Obj.Width, ImgFFT.Obj.Height]; int[,] K = { { x1x, y1y }, { x2x, y2y } }; selectiveFilter.Optimum_notcha, K, D0, ImgFFT.Obj.Width, ImgFFT.Obj.Height, 1, intn; ImgFFT.RemoveFFTShift; for int p = 0; p 1; p++ { for int v = 0; v ImgFFT.Obj.Height; v++ { for int u = 0; u ImgFFT.Obj.Width; u++ { MessageBox.Showa[u, v].ToString; ImgFFT.FFTNormal[u, v].real = a[u, v]; ImgFFT.Output[u, v].real = ImgFFT.FFTNormal[u, v].real; ImgFFT.FFTNormal[u, v].imag = a[u, v]; ImgFFT.Output[u, v].imag = ImgFFT.FFTNormal[u, v].imag; } } } ImgFFT.RemoveFFTShift; ImgFFT.InverseFFT; dua = DateTime.Now; TimeSpan seli; ONF_I.Image = ImageImgFFT.Obj; Bitmap bb; if noise == false { bb = new BitmapBitmapthis.ONF_I.Image; for int i = 0; i dataB.GetLength1; i++ { Universitas Sumatera Utara for int j = 0; j dataB.GetLength1; j++ { dataB[i, j] = bb.GetPixeli, j.R; } } MSE4.Text = MSEPSNR.HitungMSE2dataA, dataB.ToString; PSNR4.Text = MSEPSNR.HitungPSNRConvert.ToDoubleMSE4.Text.ToString; seli = dua.Subtractsatu; RT4.Text = seli.TotalMilliseconds.ToString; } satu = DateTime.Now; ImgFFT = new FFTIs3; ImgFFT.ForwardFFT; ImgFFT.FFTShift; ImgFFT.FFTPlotImgFFT.FFTShifted; citraSpektrum.Image = ImageImgFFT.FourierPlot; double[,] a1 = new double[ImgFFT.Obj.Width, ImgFFT.Obj.Height]; int[,] K1 = { { x1x, y1y }, { x2x, y2y } }; selectiveFilter.Optimum_notcha1, K1, D0, ImgFFT.Obj.Width, ImgFFT.Obj.Height, 2, intn; ImgFFT.RemoveFFTShift; for int p = 0; p 1; p++ { for int v = 0; v ImgFFT.Obj.Height; v++ { for int u = 0; u ImgFFT.Obj.Width; u++ { MessageBox.Showa[u, v].ToString; ImgFFT.FFTNormal[u, v].real = a1[u, v]; ImgFFT.Output[u, v].real = ImgFFT.FFTNormal[u, v].real; ImgFFT.FFTNormal[u, v].imag = a1[u, v]; ImgFFT.Output[u, v].imag = ImgFFT.FFTNormal[u, v].imag; } } } ImgFFT.RemoveFFTShift; ImgFFT.InverseFFT; dua = DateTime.Now; ONF_B.Image = ImageImgFFT.Obj; if noise == false { Universitas Sumatera Utara bb = new BitmapBitmapthis.ONF_B.Image; for int i = 0; i dataB.GetLength1; i++ { for int j = 0; j dataB.GetLength1; j++ { dataB[i, j] = bb.GetPixeli, j.R; } } MSE5.Text = MSEPSNR.HitungMSE2dataA, dataB.ToString; PSNR5.Text = MSEPSNR.HitungPSNRConvert.ToDoubleMSE5.Text.ToString; seli = dua.Subtractsatu; RT5.Text = seli.TotalMilliseconds.ToString; } satu = DateTime.Now; ImgFFT = new FFTIs3; ImgFFT.ForwardFFT; ImgFFT.FFTShift; ImgFFT.FFTPlotImgFFT.FFTShifted; citraSpektrum.Image = ImageImgFFT.FourierPlot; double[,] a2 = new double[ImgFFT.Obj.Width, ImgFFT.Obj.Height]; int[,] K2 = { { x1x, y1y }, { x2x, y2y } }; selectiveFilter.Optimum_notcha2, K2, D0, ImgFFT.Obj.Width, ImgFFT.Obj.Height, 3, intn; ImgFFT.RemoveFFTShift; for int p = 0; p 1; p++ { for int v = 0; v ImgFFT.Obj.Height; v++ { for int u = 0; u ImgFFT.Obj.Width; u++ { MessageBox.Showa[u, v].ToString; ImgFFT.FFTNormal[u, v].real = a2[u, v]; ImgFFT.Output[u, v].real = ImgFFT.FFTNormal[u, v].real; ImgFFT.FFTNormal[u, v].imag = a2[u, v]; ImgFFT.Output[u, v].imag = ImgFFT.FFTNormal[u, v].imag; } } } Universitas Sumatera Utara ImgFFT.RemoveFFTShift; ImgFFT.InverseFFT; dua = DateTime.Now; ONF_G.Image = ImageImgFFT.Obj; if noise == false { aa = new BitmapBitmapthis.Citra_Gray.Image; bb = new BitmapBitmapthis.ONF_G.Image; for int i = 0; i dataB.GetLength1; i++ { for int j = 0; j dataB.GetLength1; j++ { dataB[i, j] = bb.GetPixeli, j.R; } } MSE6.Text = MSEPSNR.HitungMSE2dataA, dataB.ToString; PSNR6.Text = MSEPSNR.HitungPSNRConvert.ToDoubleMSE6.Text.ToString; seli = dua.Subtractsatu; RT6.Text = seli.TotalMilliseconds.ToString; } MessageBox.ShowProses Filter selesai, tekan tombol simpan untuk menyimpan gambar, Sukses, MessageBoxButtons.OK, MessageBoxIcon.Information; } catch Exception ex { } } } } private void Form1_Loadobject sender, EventArgs e { waktu = 0.0; noise = false; } private void timerx_Tickobject sender, EventArgs e { } private void Form1_FormClosedobject sender, FormClosedEventArgs e { Application.Exit; } Universitas Sumatera Utara public void SimpanMetodPictureBox abc { if abc.Image = null { Bitmap copy = new BitmapBitmapabc.Image; SaveFileDialog saveFileDialog = new SaveFileDialog; saveFileDialog.InitialDirectory = ; saveFileDialog.Filter = Bitmap Files.bmp|.bmp|Jpeg Files.jpg|.jpg|All valid files.bmp.jpg|.bmp.jpg; saveFileDialog.FilterIndex = 2; saveFileDialog.RestoreDirectory = true; if DialogResult.OK == saveFileDialog.ShowDialog { copy.SavesaveFileDialog.FileName; } } } private void button3_Clickobject sender, EventArgs e { SimpanMetodBR_ideal; } private void button4_Clickobject sender, EventArgs e { SimpanMetodBR_B; } private void button5_Clickobject sender, EventArgs e { SimpanMetodBR_G; } private void button6_Clickobject sender, EventArgs e { SimpanMetodONF_I; } private void button7_Clickobject sender, EventArgs e { SimpanMetodONF_B; } private void button8_Clickobject sender, EventArgs e { SimpanMetodONF_G; } private void petunjukToolStripMenuItem_Clickobject sender, EventArgs e { Form3 bc = new Form3; bc.ShowDialog; } private void tentangToolStripMenuItem_Clickobject sender, EventArgs e Universitas Sumatera Utara { Form4 po = new Form4; po.ShowDialog; } private void bukaGambarNoiseToolStripMenuItem_Clickobject sender, EventArgs e { OpenFileDialog openFileDialog = new OpenFileDialog; openFileDialog.InitialDirectory = ; openFileDialog.Filter = Bitmap files.bmp|.bmp|Jpeg Files.jpg|.jpg|All valid files + .bmp.jpg|.bmp.jpg; openFileDialog.FilterIndex = 2; openFileDialog.RestoreDirectory = true; if DialogResult.OK == openFileDialog.ShowDialog { this.AutoScroll = true; Form5 po = new Form5; po.citraAbu.Image = new BitmapopenFileDialog.FileName; po.Invalidate; Bitmap Is3 = new BitmapBitmappo.citraAbu.Image; po.LL.Text = Is3.Width.ToString; po.TT.Text = Is3.Height.ToString; if Is3.Width == Is3.Height { noise = true; ImgFFT = new FFTIs3; ImgFFT.ForwardFFT; ImgFFT.FFTShift; ImgFFT.FFTPlotImgFFT.FFTShifted; po.citraSpektrum.Image = ImageImgFFT.FourierPlot; this.Hide; po.ShowDialog; this.Show; } else { MessageBox.ShowLebar dan Tinggi gambar harus sama, Gagal, MessageBoxButtons.OK, MessageBoxIcon.Error; } } } private void button9_Clickobject sender, EventArgs e { SimpanMetodCitra_Gray; } } } Universitas Sumatera Utara

2. Form Implementasi ONF dan BRF