} 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