sourceImage.Width: Math.Absx1;ini pengkondisian di mana jendela filter tidak melewati batas dari ukuran image
x2 = Math.Absx2 = sourceImage.Height ? sourceImage.Height-2-Math.Absx2 -
sourceImage.Height : Math.Absx2; d = asli.GetPixelx1, x2;
r.Addd.R; }
} r.Sort;pengurutan
int imedian = r.Count2;indeks median int a1 = r[imedian] - r[0];Level A -- Zmed
- Zmin int a2 = r[imedian] - r[r.Count-1]; Zmed -
Zmax if a1 0 a2 0 Jika memenuhi ke
level B {
int b1 = asli.GetPixeli, j.R - r[0];Level B -- Zxy - Zmin
int b2 = asli.GetPixeli, j.R - r[r.Count-1]; Zxy - Zmax
if b1 0 b2 0 nilai.Addasli.GetPixeli, j.R;ou
tput Zxy else
nilai.Addr[imedian];output Zmed r.Clear;
batas = kernelsize2; break;
} else if batas kernelsize2 + 2jika
tidak memenuhi persyaratan, ke level B {
batas += 1;menambah batas jendela filter menjadi 5
r.Clear; continue;ulangi level A
} else {
nilai.Addasli.GetPixeli, j.R; ditampung nilai hasilnya
r.Clear; batas = kernelsize2;
break; }
} }
outr.Addnilai; }
return outr;
Universitas Sumatera Utara
} ListListint greenImage sourceImage, int kernelsize
{ Bitmap asli = BitmapsourceImage;
int batas = kernelsize2; Listint r = new Listint;
ListListint outr = new ListListint; Color d;
for int i = 0;i sourceImage.Width;i++{ Listint nilai = new Listint;
for int j = 0;jsourceImage.Height;j++{ whiletrue{
for int x = -batas;x = batas;x++{ for int y = -batas;y = batas;y++{
int x1 = i+x; int x2 = y+j;
x1 = Math.Absx1 = sourceImage.Width ? sourceImage.Width-2-Math.Absx1 -
sourceImage.Width: Math.Absx1; x2 = Math.Absx2 =
sourceImage.Height ? sourceImage.Height-2-Math.Absx2 - sourceImage.Height : Math.Absx2;
d = asli.GetPixelx1, x2; r.Addd.G;
} }
r.Sort; int imedian = r.Count2;
int a1 = r[imedian] - r[0]; int a2 = r[imedian] - r[r.Count-1];
if a1 0 a2 0{ int b1 = asli.GetPixeli, j.G - r[0];
int b2 = asli.GetPixeli, j.G - r[r.Count-1];
if b1 0 b2 0 nilai.Addasli.GetPixeli, j.G;
else nilai.Addr[imedian];
r.Clear; batas = kernelsize2;
break; }
else if batas kernelsize2 + 2{ batas += 1;
r.Clear; continue;
} else{
Universitas Sumatera Utara
nilai.Addasli.GetPixeli, j.G; r.Clear;
batas = kernelsize2; break;
} }
} outr.Addnilai;
nilai.Clear; }
return outr; }
ListListint blueImage sourceImage, int kernelsize {
Bitmap asli = BitmapsourceImage; int batas = kernelsize2;
Listint r = new Listint; ListListint outr = new ListListint;
Color d; for int i = 0;i sourceImage.Width;i++{
Listint nilai = new Listint; for int j = 0;jsourceImage.Height;j++{
whiletrue{ for int x = -batas;x = batas;x++{
for int y = -batas;y = batas;y++{ int x1 = i+x;
int x2 = y+j; x1 = Math.Absx1 =
sourceImage.Width ? sourceImage.Width-2-Math.Absx1 - sourceImage.Width: Math.Absx1;
x2 = Math.Absx2 = sourceImage.Height ? sourceImage.Height-2-Math.Absx2 -
sourceImage.Height : Math.Absx2; d = asli.GetPixelx1, x2;
r.Addd.B; }