Kelas Selective_Filter Implementasi Dan Perbandingan Optimum Notch Filter Dan Band Reject Filter Untuk Mereduksi Periodic Noise Pada Citra Digital

} 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; } } }

3. Kelas Selective_Filter

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace SelectiveFilter2 { class selectiveFilter { public static bool CitraAbu2Bitmap b { BitmapData bmData = b.LockBitsnew Rectangle0, 0, b.Width, b.Height, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb; int stride = bmData.Stride; System.IntPtr Scan0 = bmData.Scan0; byte[,] grayx = new byte[b.Width, b.Height]; unsafe { byte p = bytevoidScan0; int nOffset = stride - b.Width 3; for int y = 0; y b.Height; ++y { for int x = 0; x b.Width; ++x { grayx[x, y] =byte p[0] + p[1] + p[2] 3; p += 3; } p += nOffset; } Universitas Sumatera Utara byte p1 = bytevoidScan0; for int y = 0; y b.Height; ++y { for int x = 0; x b.Width; ++x { p1[0] = grayx[x, y]; p1[1] = grayx[x, y]; p1[2] = grayx[x, y]; p1 += 3; } p1 += nOffset; } } b.UnlockBitsbmData; return true; } public static void Band_Rejectdouble[,] H, double W, double D0, int x, int y, int tipe, int n { double[,] D = new double[x, y]; hitung nilai D[u,v] for int v = 0; v y; v++ { for int u = 0; u x; u++ { D[u, v] = Math.Sqrtu u + v v; MessageBox.ShowD[u, v].ToString; } } hitung nilai filter H[u,v] for int v = 0; v y; v++ { for int u = 0; u x; u++ { if tipe == 1 { if D[u, v] D0 - W 2 || D[u, v] D0 + W 2 H[u, v] = 1; else H[u, v] = 0; } if tipe == 2 { H[u, v] = 1 1 + Math.PowD[u, v] W Math.PowD[u, v], 2 - Math.PowD0, 2, 2 n; } if tipe == 3 { H[u, v] = 1 - Math.PowMath.E, - Math.PowMath.PowD[u, v], 2 - Math.PowD0, 2 D[u, v] W, 2; } } } Universitas Sumatera Utara } public static void Optimum_notchdouble[,] H, int[,] K, double D0, int x, int y, int tipe, int n { double[,] D1 = new double[x, y]; double[,] D2 = new double[x, y]; double[,] H1 = new double[x, y]; double[,] H2 = new double[x, y]; hitung nilai D1[u,v] dan D2[u,v] D1--Dk, D2--D-k for int v = 0; v y; v++ { for int u = 0; u x; u++ { D1[u, v] = Math.SqrtMath.Powu + K[0, 0], 2 + Math.Powv + K[0, 1], 2; D2[u, v] = Math.SqrtMath.Powu - K[1, 0], 2 + Math.Powv - K[1, 1], 2; } } hitung nilai filter H[u,v] for int v = 0; v y; v++ { for int u = 0; u x; u++ { if tipe == 1 { if D1[u, v] = D0 || D2[u, v] = D0 H[u, v] = 0; else H[u, v] = 1; } if tipe == 2 { H1[u, v] = 1 1 + Math.PowD0 D1[u, v], 2 n; H2[u, v] = 1 1 + Math.PowD0 D2[u, v], 2 n; H[u, v] = H1[u, v] H2[u, v]; } if tipe == 3 { H1[u, v] = 1 - Math.PowMath.E, -D1[u, v] D1[u, v] 2 D0 D0; H2[u, v] = 1 - Math.PowMath.E, -D2[u, v] D2[u, v] 2 D0 D0; H[u, v] = H1[u, v] H2[u, v]; } } } } Universitas Sumatera Utara } }

4. Kelas MSEPSNR