• Tidak ada hasil yang ditemukan

Implementasi dan Perbandingan Metode Wiener Filter dan Adaptive Median Filter Untuk Memperbaiki Kualitas Citra Digital

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi dan Perbandingan Metode Wiener Filter dan Adaptive Median Filter Untuk Memperbaiki Kualitas Citra Digital"

Copied!
18
0
0

Teks penuh

(1)

LISTING PROGRAM

1.

Kode Program MainForm

using System;

using System.Collections.Generic; using System.Drawing;

using System.Windows.Forms;

namespace skrips

{

/// <summary>

/// Description of MainForm. /// </summary>

public partial class MainForm : Form {

public MainForm() {

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

//

// TODO: Add constructor code after the InitializeComponent() call.

// }

void Label1Click(object sender, EventArgs e) {

}

void TestingToolStripMenuItemClick(object sender, EventArgs e)

{

Testing b1 = new Testing(); b1.ShowDialog();

}

void ExitToolStripMenuItemClick(object sender, EventArgs e) {

if (MessageBox.Show("Apakah Anda ingin

keluar?","Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

(2)

Application.Exit(); }

void HelpToolStripMenuItemClick(object sender, EventArgs e) {

Help form3 = new Help(); form3.ShowDialog(); }

2.

Kode Program Form Testing

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Diagnostics; using System.Drawing;

using System.Drawing.Imaging; using System.IO;

using System.Linq;

using System.Runtime.InteropServices; using System.Text;

using System.Windows.Forms;

namespace skrips

{

/// <summary>

/// Description of Testing. /// </summary>

/// public partial class Testing : Form {

public Testing() {

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

//

// TODO: Add constructor code after the InitializeComponent() call.

// }

void OpenClick(object sender, EventArgs e) {

OpenFileDialog open = new OpenFileDialog(); open.Filter = "Image File(.*bmp)|*.bmp";

if(open.ShowDialog() == DialogResult.OK){

(3)

Bitmap bit = new Bitmap(open.FileName); if (bit.Width == bit.Height)

{

gbrAsli.SizeMode = PictureBoxSizeMode.StretchImage; gbrAsli.ImageLocation = open.FileName;

textBox11.Text=bit.Width.ToString(); textBox12.Text=bit.Height.ToString();

textBox10.Text=open.SafeFileName.ToString(); ukuran.Text = (fileSize / 1000).ToString();

} else{

MessageBox.Show("Panjang dan lebar citra harus sama!", "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error); }

} }

void BalikClick(object sender, EventArgs e) {

this.Dispose(); }

double hitungMSE(Bitmap imageAsli, Bitmap imageHasil)

{

double sum = 0;

double pxAsli, pxHasil, MSE;

for (int i = 0; i < imageAsli.Height; i++) {

for (int j = 0; j < imageAsli.Width; j++)

{

pxAsli = imageAsli.GetPixel(j, i).R; pxHasil = imageHasil.GetPixel(j, i).R; sum += Math.Pow((pxAsli - pxHasil), 2); }

}

MSE = Math.Floor(sum /(imageAsli.Height*imageAsli.Width)); return MSE;

}

double hitungPSNR(double MSE)

{

double PSNR=Math.Round(Math.Log10(10*Math.Pow(255, 2)/MSE)); return PSNR;

}

void Simpan1Click(object sender, EventArgs e) {

if(gbrHasil.Image != null) {

SaveFileDialog save = new SaveFileDialog(); save.Filter = "image Files| *.bmp";

(4)

if (save.ShowDialog() == DialogResult.OK) {

gbrHasil.Image.Save(save.FileName, System.Drawin g.Imaging.ImageFormat.Bmp);

MessageBox.Show("Citra berhasil

disimpan", "save", MessageBoxButtons.OK, MessageBoxIcon.Information); }

else {

MessageBox.Show("Citra gagal tersimpan"); }

} }

void Simpan2Click(object sender, EventArgs e) {

if(gbrHasil2.Image != null) {

SaveFileDialog save = new SaveFileDialog(); save.Filter = "image Files| *.bmp";

save.FileName = "*.bmp";

if (save.ShowDialog() == DialogResult.OK) {

gbrHasil2.Image.Save(save.FileName, System.Drawing.Ima ging.ImageFormat.Bmp);

MessageBox.Show ("Citra berhasil disimpan", "save", MessageBoxButtons.OK, MessageBoxIcon.Information);

} else {

MessageBox.Show("Citra gagal tersimpan"); }

} }

void Button3Click(object sender, EventArgs e) {

if(gbrHasil3.Image != null) {

SaveFileDialog save = new SaveFileDialog(); save.Filter = "image Files| *.bmp";

save.FileName = "*.bmp";

if (save.ShowDialog() == DialogResult.OK) {

gbrHasil3.Image.Save(save.FileName, System.Drawing.Imagi ng.ImageFormat.Bmp);

MessageBox.Show("Citra berhasil disimpan", "save", MessageBoxButtons.OK, MessageBoxIcon.Information); }

(5)

MessageBox.Show("Citra gagal tersimpan"); }

} }

void WienerClick(object sender, EventArgs e) {

Stopwatch watch = new Stopwatch(); watch.Start();

FFTN a = new FFTN(gbrAsli.Image); // kelas wiener filter a.FFTExecute();

gbrHasil.Image = a.InverseFFT(); //transformasi balik wiener filter

gbrHasil.SizeMode = PictureBoxSizeMode.StretchImage; watch.Stop();

textBox3.Text = Math.Round(Convert.ToDecimal (watch.ElapsedMilliseconds)/1000,4).ToString();

textBox1.Text=hitungMSE((Bitmap)gbrAsli.Image,(Bitmap)gbrHasil. Image).ToString();

textBox2.Text=hitungPSNR(Convert.ToDouble(textBox1.Text)).ToStr

ing();

MessageBox.Show("Proses Filtering selesai. Tekan tombol Simpan untuk menyimpan citra", "Berhasil", MessageBoxButtons.OK,

MessageBoxIcon.Information); }

void Button1Click(object sender, EventArgs e) // tombol AMF {

Stopwatch watch = new Stopwatch(); watch.Start();

gbrHasil2.Image= AdaptiveMedianFilter((Bitmap)gbrAsli.Image,3); gbrHasil2.SizeMode = PictureBoxSizeMode.StretchImage;

watch.Stop();

textBox6.Text = Math.Round(Convert.ToDecimal (watch.ElapsedMilliseconds)/1000,4).ToString();

textBox4.Text=hitungMSE((Bitmap)gbrAsli.Image,(Bitmap)gbrHasil2. Image).ToString();

textBox5.Text=hitungPSNR(Convert.ToDouble(textBox4.Text)).ToStri

ng();

MessageBox.Show("Proses Filtering selesai. Tekan tombol Simpan

untuk menyimpan

citra", "Berhasil", MessageBoxButtons.OK, MessageBoxIcon.Information) ;

}

void Button2Click(object sender, EventArgs e)// tombol Wiener+AMF {

Stopwatch watch = new Stopwatch(); watch.Start();

gbrHasil3.Image=AdaptiveMedianFilter((Bitmap)gbrHasil.Image,3); gbrHasil3.SizeMode = PictureBoxSizeMode.StretchImage;

(6)

textBox7.Text = (Math.Round(Convert.ToDecimal

(watch.ElapsedMilliseconds)/1000,4)+decimal.Parse(textBox3.Text)).ToS

tring();

textBox8.Text=hitungMSE((Bitmap)gbrAsli.Image,(Bitmap)gbrHasil3 .Image).ToString();

textBox9.Text=hitungPSNR(Convert.ToDouble(textBox4.Text)).ToStr

ing();

MessageBox.Show("Proses Filtering selesai. Tekan tombol Simpan untuk menyimpan

citra", "Berhasil", MessageBoxButtons.OK, MessageBoxIcon.Information) ;

}

Bitmap AdaptiveMedianFilter(Bitmap sourceImage, int size) {

Bitmap bmp;

Bitmap asli = (Bitmap)sourceImage;

bmp = new Bitmap(asli.Width,asli.Height);

List<List<int>>r = red(sourceImage, size); // array utk menampung nilai red

List<List<int>>b = blue(sourceImage, size); // array utk menampung nilai blue

List<List<int>>g = green(sourceImage, size); // array untuk menampung nilai green

for (int i = 0;i < sourceImage.Width;i++){ for (int j =0;j < sourceImage.Height;j++){

bmp.SetPixel(i, j, Color.FromArgb(r[i][j],g[i][j ],b[i][j])); // menampung nilai pixel rgb

} }

return bmp; }

List<List<int>> red(Image sourceImage, int kernelsize) {

Bitmap asli = (Bitmap)sourceImage; int batas = kernelsize/2;

List<int> r = new List<int>();

List<List<int>> outr = new List<List<int>>();

Color d;

for (int i = 0;i < sourceImage.Width;i++){ List<int> nilai = new List<int>();

for (int j = 0;j<sourceImage.Height;j++){

while(true){

for (int x = -batas;x <= batas;x++){ for (int y = -batas;y <= batas;y++){ int x1 = i+x;

int x2 = y+j;

(7)

sourceImage.Width): Math.Abs(x1);//ini pengkondisian di mana jendela filter tidak melewati batas dari ukuran image

x2 = Math.Abs(x2) >= sourceImage.Height ? sourceImage.Height2(Math.Abs(x2) sourceImage.Height) : Math.Abs(x2);

d = asli.GetPixel(x1, x2); r.Add(d.R);

} }

r.Sort();//pengurutan

int imedian = r.Count/2;//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.GetPixel(i, j).R r[0];//Level B --> Zxy - Zmin

int b2 = asli.GetPixel(i, j).R r[r.Count-1]; // Zxy - Zmax

if (b1 > 0 && b2 < 0)

nilai.Add(asli.GetPixel(i, j).R);//ou tput Zxy

else

nilai.Add(r[imedian]);//output Zmed r.Clear();

batas = kernelsize/2; break;

}

else if (batas < kernelsize/2 + 2)//jika tidak memenuhi persyaratan, ke level B

{

batas += 1;//menambah batas jendela filter menjadi 5

r.Clear();

continue;//ulangi level A }

else {

nilai.Add(asli.GetPixel(i, j).R); // ditampung nilai hasilnya

r.Clear();

batas = kernelsize/2; break;

} } }

outr.Add(nilai); }

(8)

}

List<List<int>> green(Image sourceImage, int kernelsize) {

Bitmap asli = (Bitmap)sourceImage; int batas = kernelsize/2;

List<int> r = new List<int>();

List<List<int>> outr = new List<List<int>>(); Color d;

for (int i = 0;i < sourceImage.Width;i++){ List<int> nilai = new List<int>();

for (int j = 0;j<sourceImage.Height;j++){

while(true){

for (int x = -batas;x <= batas;x++){ for (int y = -batas;y <= batas;y++){ int x1 = i+x;

int x2 = y+j;

x1 = Math.Abs(x1) >= sourceImage.Width ? sourceImage.Width2(Math.Abs(x1) sourceImage.Width): Math.Abs(x1);

x2 = Math.Abs(x2) >= sourceImage.Height ? sourceImage.Height2(Math.Abs(x2) sourceImage.Height) : Math.Abs(x2);

d = asli.GetPixel(x1, x2); r.Add(d.G);

} }

r.Sort();

int imedian = r.Count/2; int a1 = r[imedian] - r[0];

int a2 = r[imedian] - r[r.Count-1]; if (a1 > 0 && a2 < 0){

int b1 = asli.GetPixel(i, j).G - r[0]; int b2 = asli.GetPixel(i, j).G

r[r.Count-1];

if (b1 > 0 && b2 < 0)

nilai.Add(asli.GetPixel(i, j).G); else

nilai.Add(r[imedian]); r.Clear();

batas = kernelsize/2; break;

}

else if (batas < kernelsize/2 + 2){ batas += 1;

r.Clear();

continue; }

(9)

nilai.Add(asli.GetPixel(i, j).G); r.Clear();

batas = kernelsize/2; break;

} } }

outr.Add(nilai); //nilai.Clear(); }

return outr; }

List<List<int>> blue(Image sourceImage, int kernelsize) {

Bitmap asli = (Bitmap)sourceImage; int batas = kernelsize/2;

List<int> r = new List<int>();

List<List<int>> outr = new List<List<int>>(); Color d;

for (int i = 0;i < sourceImage.Width;i++){ List<int> nilai = new List<int>();

for (int j = 0;j<sourceImage.Height;j++){ while(true){

for (int x = -batas;x <= batas;x++){ for (int y = -batas;y <= batas;y++){ int x1 = i+x;

int x2 = y+j;

x1 = Math.Abs(x1) >= sourceImage.Width ? sourceImage.Width2(Math.Abs(x1) sourceImage.Width): Math.Abs(x1);

x2 = Math.Abs(x2) >= sourceImage.Height ? sourceImage.Height2(Math.Abs(x2) sourceImage.Height) : Math.Abs(x2);

d = asli.GetPixel(x1, x2); r.Add(d.B);

} }

r.Sort();

int imedian = r.Count/2; int a1 = r[imedian] - r[0];

int a2 = r[imedian] - r[r.Count-1]; if (a1 > 0 && a2 < 0){

int b1 = asli.GetPixel(i, j).B - r[0]; int b2 = asli.GetPixel(i, j).B

r[r.Count-1];

if (b1 > 0 && b2 < 0)

nilai.Add(asli.GetPixel(i, j).B); else

(10)

r.Clear();

batas = kernelsize/2; break;

}

else if (batas < kernelsize/2 + 2){

batas += 1; r.Clear(); continue; }

else{

nilai.Add(asli.GetPixel(i, j).B); r.Clear();

batas = kernelsize/2; break;

} } }

outr.Add(nilai); }

return outr; }

void Button4Click(object sender, EventArgs e) // button reset {

gbrAsli.Image = null; gbrHasil.Image = null; gbrHasil2.Image = null; gbrHasil3.Image = null; textBox1.Text = null; textBox2.Text = null; textBox3.Text = null; textBox4.Text = null; textBox5.Text = null; textBox6.Text = null; textBox7.Text = null; textBox8.Text = null; textBox9.Text = null; textBox10.Text = null; textBox11.Text = null; textBox12.Text = null; ukuran.Text = null; }

3.

Kode Program Class FFTN (Wiener Filter) :

using System;

using System.Drawing;

using System.Windows.Forms;

namespace skrips

{

(11)

/// Description of FFT. /// </summary>

public class FFTN {

public struct Complex{ public double real; public double imag; }

Bitmap gbrhasil;

Complex [][] Rgambar, Ggambar, Bgambar, shiftR, shiftG, shift B;

int nx,ny; int [,] R,G,B;

public FFTN(Image sourceImage) {

gbrhasil

= new Bitmap(sourceImage.Width,sourceImage.Height); nx = sourceImage.Width;

ny = sourceImage.Height;

Rgambar = new Complex[sourceImage.Width][]; Ggambar = new Complex[sourceImage.Width][]; Bgambar = new Complex[sourceImage.Width][]; shiftR = new Complex[sourceImage.Width][]; shiftG = new Complex[sourceImage.Width][]; shiftB = new Complex[sourceImage.Width][]; for (int i = 0;i < sourceImage.Width;i++){

Rgambar[i] = new Complex[sourceImage.Height]; Ggambar[i] = new Complex[sourceImage.Height]; Bgambar[i] = new Complex[sourceImage.Height]; shiftR[i] = new Complex[sourceImage.Height]; shiftG[i] = new Complex[sourceImage.Height]; shiftB[i] = new Complex[sourceImage.Height]; for (int j = 0;j < sourceImage.Height;j++){ Rgambar[i][j].real

= ((Bitmap)sourceImage).GetPixel(i, j).R; Ggambar[i][j].real = ((Bitmap)sourceImage).GetPixel(i, j).G; Bgambar[i][j].real = ((Bitmap)sourceImage).GetPixel(i, j).B;

Rgambar[i][j].imag = 0; Ggambar[i][j].imag = 0; Bgambar[i][j].imag = 0; }

} }

(12)

R = Plot(shiftR); G = Plot(shiftG); B = Plot(shiftB); RemoveFFTShift(); Hitung();

}

void ForwardFFT(Complex [][] gambar){ //Transform the Rows

double [] real = new double[gambar.Length]; double [] imag = new double[gambar.Length]; for (int i=0; i<gambar[0].Length; i++){ for (int j = 0; j<gambar.Length; j++){ real[j] = gambar[j][i].real;

imag[j] = gambar[j][i].imag; }

FFT1D(real,imag);//baris for (int j = 0; j<nx; j++){ gambar[j][i].real = real[j]; gambar[j][i].imag = imag[j]; }

}

for (int i = 0; i<10; i++)

real = new double[gambar[0].Length]; imag = new double[gambar[0].Length]; for (int i = 0; i<gambar.Length; i++){

for (int j = 0; j<gambar[0].Length; j++){ real[j] = gambar[i][j].real;

imag[j] = gambar[i][j].imag; }

FFT1D(real,imag);//kolom for (int j = 0; j<ny; j++){ gambar[i][j].real = real[j]; gambar[i][j].imag = imag[j]; }

} }

void FFT1D(double [] real, double [] imag){ int length = real.Length,n;

double Theta = 3.14 / length; double real2 = Math.Cos(Theta); double imag2 = Math.Sin(Theta); int k = length;

double temp; while (k > 1){ n = k; k >>= 1; temp = real2;

(13)

imag2 = (imag2*temp) + (temp*imag2); double real1 = 1;

double imag1 = 0;

for (int l = 0;l < k;l++){

for (int a = l;a < length; a+=n){ int b = a + k;

double real3 = real[a] - real[b]; double imag3 = imag[a] - imag[b]; real[a] += real[b];

imag[a] += imag[b];

real[b] = (real3 * real1) - (imag3 * imag1); imag[b] = (imag3 * real1) + (real3 * imag1); }

temp = real1;

real1 = (real1 * real2) - (imag1 * imag2); imag1 = (imag1 * real2) + (temp * imag2); }

}

int m = (int)(Math.Log10(length)/Math.Log10(2)); for (int a = 0;a < length; a++){

long b = a; b

= (((b & 0xaaaaaaaa) >> 1) | ((b & 0x55555555) << 1)); b

= (((b & 0xcccccccc) >> 2) | ((b & 0x33333333) << 2)); b

= (((b & 0xf0f0f0f0) >> 4) | ((b & 0x0f0f0f0f) << 4)); b

= (((b & 0xff00ff00) >> 8) | ((b & 0x00ff00ff) << 8)); b = ((b >> 16) | (b << 16)) >> (32 - m); if (b > a){

double real4 = real[a]; double imag4 = imag[a]; real[a] = real[b]; imag[a] = imag[b]; real[b] = real4; imag[b] = imag4; }

} }

public void FFTShift() {

int i, j;

for (i = 0; i <= (ny / 2) - 1; ++i) {

for (j = 0; j <= (nx / 2) - 1; ++j) {

shiftR[i + (nx / 2)][ j + (ny / 2)] = Rgambar[i][j];

(14)

Rgambar[i + (nx / 2)][ j + (ny / 2)];

shiftR[i + (nx / 2)][j] = Rgambar[i][ j + (ny / 2)];

shiftR[i][ j + (nx / 2)] = Rgambar[i + (nx /2)][ j];

shiftG[i + (nx / 2)][ j + (ny / 2)] = Ggambar[i][j];

shiftG[i][ j] = Ggambar[i + (nx / 2)][ j + (ny / 2)];

shiftG[i + (nx / 2)][ j] = Ggambar[i][ j + (ny / 2)];

shiftG[i][ j + (nx / 2)] = Ggambar[i + (nx /2)][ j];

shiftB[i + (nx / 2)][ j + (ny / 2)] = Bgambar[i][j];

shiftB[i][ j] = Bgambar[i + (nx / 2)][ j + (ny / 2)];

shiftB[i + (nx / 2)][ j] = Bgambar[i][ j + (ny / 2)];

shiftB[i][ j + (nx / 2)] = Bgambar[i + (nx /2)][ j];

} } return; }

public void RemoveFFTShift() {

int i, j;

for (i = 0; i <= (nx / 2) - 1; i++) for (j = 0; j <= (ny / 2) - 1; j++) {

Rgambar[i + (nx / 2)][ j + (ny / 2)] = shiftR[i][ j];

Rgambar[i][ j] = shiftR[i + (nx / 2)][ j + (ny / 2)];

Rgambar[i + (nx / 2)][ j] = shiftR[i][ j + (ny / 2)];

Rgambar[i][ j + (nx / 2)] = shiftR[i + (nx / 2)][ j];

Ggambar[i + (nx / 2)][ j + (ny / 2)] = shiftG[i][ j];

Ggambar[i][ j] = shiftG[i + (nx / 2)][ j + (ny / 2)];

Ggambar[i + (nx / 2)][ j] = shiftG[i][ j + (ny / 2)];

Ggambar[i][ j + (nx / 2)] = shiftG[i + (nx / 2)][ j];

Bgambar[i + (nx / 2)][ j + (ny / 2)] = shiftB[i][ j];

(15)

Bgambar[i + (nx / 2)][ j] = shiftB[i][ j + (ny / 2)];

Bgambar[i][ j + (nx / 2)] = shiftB[i + (nx / 2)][ j];

}

}

public Bitmap InverseFFT(){ // proses dari inverse FFT int i, j;

Conjugate(Rgambar); Conjugate(Ggambar); Conjugate(Bgambar); ForwardFFT(Rgambar); ForwardFFT(Ggambar);

ForwardFFT(Bgambar); // FFT 1D Conjugate(Rgambar);

Conjugate(Ggambar); Conjugate(Bgambar); byte R,G,B;

for (i = 0; i <= nx - 1; i++) for (j = 0; j <= ny - 1; j++) {

R

= (byte)Math.Abs(Rgambar[i][j].real / (nx * ny)); G

= (byte)Math.Abs(Ggambar[i][j].real / (nx * ny)); B

= (byte)Math.Abs(Bgambar[i][j].real / (nx * ny));

gbrhasil.SetPixel (i, j, Color.FromArgb(R,G,B)); // tampung ke nilai piksel

}

return gbrhasil; }

void Conjugate(Complex [][] G){

for (int i = 0;i < G.Length;i++){

for (int j = 0;j < G[i].Length;j++){ G[i][j].imag *= -1;

} } }

public int [,] Plot(Complex [][] shift){ Bitmap a = new Bitmap(nx, ny);

int i, j; float max;

float[,] FFTLog = new float[nx, ny]; float[,] FFTPhaseLog = new float[nx, ny];

float[,] FourierMagnitude = new float[nx, ny]; // bilangan real dalam Transformasi Fourier

float[,] FourierPhase

(16)

int[,] FFTNormalized = new int[nx, ny]; int[,] FFTPhaseNormalized = new int[nx, ny]; for (i = 0; i <nx; i++)

for (j = 0; j <ny; j++) {

FourierMagnitude[i, j] = (float)Math.Sqrt((sh ift[i][j].real * shift[i][j].real)+(shift[i][j].imag * shift[i][j].im ag));

FourierPhase[i, j] =(float) Math.Atan(shift[i ][j].real/shift[i][j].imag);

FFTLog[i, j] = (float)Math.Log(1 + FourierMag nitude[i, j]);

FFTPhaseLog[i, j] = (float)Math.Log(1 + Math.Abs( FourierPhase[i, j]));

}

max = FFTLog[0, 0]; for (i = 0; i <nx; i++) for (j = 0; j <ny; j++) {

if (FFTLog[i, j] > max) max = FFTLog[i, j]; }

for (i = 0; i <nx ; i++) for (j = 0; j <ny; j++) {

FFTLog[i, j] = FFTLog[i, j] / max; }

for (i = 0; i <nx; i++) for (j = 0; j <ny; j++) {

FFTNormalized[i, j] = (int)(2000*FFTLog[i, j]); }

return FFTNormalized; }

void Hitung(){ // perhitungan Wiener Filter for (int i = 0;i < nx; i++){

for (int j = 0;j < ny; j++){

Rgambar[i][j].real=(Rgambar[i][j].real*R[i,j])/((R[i,j])+100); Ggambar[i][j].real=(Ggambar[i][j].real*G[i,j])/((G[i,j])+100); Bgambar[i][j].real=(Bgambar[i][j].real*B[i,j])/((B[i,j])+100); Rgambar[i][j].imag=(Rgambar[i][j].imag*R[i,j])/((R[i,j])+100); Ggambar[i][j].imag=(Ggambar[i][j].imag*G[i,j])/((G[i,j])+100); Bgambar[i][j].imag=(Bgambar[i][j].imag*B[i,j])/((B[i,j])+100); }

(17)

4.

Kode Program Form Help

using System;

using System.Drawing;

using System.Windows.Forms;

namespace skrips

{

/// <summary>

/// Description of Help.

/// </summary>

public partial class Help : Form

{

public Help()

{

//

// The InitializeComponent() call is required for Windows

Forms designer support.

//

InitializeComponent();

//

// TODO: Add constructor code after the

InitializeComponent() call.

//

}

void Label1Click(object sender, EventArgs e)

{

}

void BalikClick(object sender, EventArgs e)

{

this.Dispose();

}

}

(18)

DAFTAR RIWAYAT HIDUP

DATA PRIBADI

Nama Lengkap

: Siti Aisyah

Jenis Kelamin

: Perempuan

Alamat

: Jl. A.R Hakim Gg. Nangka no.7, Medan

E-mail

: aya.aisyah04@gmail.com

Pendidikan Terakhir

: Universitas Sumatera Utara Medan, Fakultas Ilmu

Komputer dan Teknologi Informasi Jurusan S-1 Ilmu

Komputer

PENDIDIKAN FORMAL

2011 – 2015

: S1 Ilmu Komputer Universitas Sumatera Utara, Medan

2008 – 2011

: MAN 2 Model Medan

2005 – 2008

: MTs Swasta Al-Ulum Medan

1999 – 2005

: SD Muhammadiyah 07 Medan

PENGALAMAN ORGANISASI DAN KEGIATAN ILMIAH

Anggota Syiar UKMI Al-Khuwarizmi Fasilkom-TI 2012-2013

Sekretaris LSO-IT UKMI Al-Khuwarizmi Fasilkom-TI 2013-2014

Anggota PSDM PEMA USU 2014

Sekretaris Umum KAM Rabbani Fasilkom-TI USU 2014

Praktek Kerja Lapangan di Kantor Gubsu Juli-Agustus 2014

Anggota Kajian Kontemporer UKMI Ad-Dakwah USU 2015

Anggota Komisi A “Isu dan Media” Puskomda SUMUT 2015

KEAHLIAN

Bahasa Indonesia, Bahasa Inggris

Referensi

Dokumen terkait

Hasil penelitian menunjukkan bahwa 1 inflasi di Indonesia periode 20112017 adalah rendah, harga minyak dunia periode 2011-2017 adalah rendah dan harga saham adalah periode

Berdasarkan penelitian yang telah dilakukan menggunakan model pembelajaran Discovery Learning, disimpulkan : 1) Daya serap rata-rata siswa terhadap keterampilan psikomotor

Gambar 15 Halaman Kategori Daerah Anggrek Halaman Link Jenis Anggrek,Halaman ini akan tampil jika user mengklik list Jenis Anggrek yang ada di menu kiri halaman

Dalam rangka Dies Nat alis Fakult as Pet ernakan Universit as Gadjah M ada ke-47, Panit ia m enyelenggarakan Sim posium Nasional Penelitian dan Pengem bangan

Dengan menggunakan aplikasi Aplikasi APENDO, telah dilakukan dekr ipsi file penaw ar an yang mana dalam pr oses ini semua penaw ar an ber hasil didekr ipsi dan ter baca

Kepada perusahaan yang dinyatakan menang, diharapkan menghubungi Pejabat Pembuat Komitmen Direktorat Pelayanan KB Jaluar Pemerintah Satuan Kerja Deputi Bidang KB

pelaksanaan fungsi lain yang diberikan oleh Menteri...

Hasil yang ingin dibagikan secara umum adalah munculnya data tinggi sekitar 0,02 V sampai 0,03 V untuk pertama kali LDR dikenai oleh laser, yang selanjutnya data menurun