Implementasi Deteksi Tepi Canny Dan Isotropik Dengan Transformasi Power Law Studi Kasus Kanker Mulut Rahim (Serviks)
LISTING PROGRAM
1. Deteksitepi.cs
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace skripsi
{
public partial class deteksitepi : Form
{
Canny CannyData;
public deteksitepi()
{
InitializeComponent();
}
void HomeToolStripMenuItemClick(object sender, EventArgs e)
{
MainForm f2 = new MainForm();
f2.Show();
this.Hide();
}
void AboutToolStripMenuItemClick(object sender, EventArgs e)
{
about F2 = new about();
F2.Show();
this.Hide();
}
void DeteksiTepiToolStripMenuItemClick(object sender, EventArgs e)
{
deteksitepi F2 = new deteksitepi();
F2.Show();
this.Hide();
}
Universitas Sumatera Utara
void DeteksiKankerToolStripMenuItemClick(object sender, EventArgs e)
{
deteksikanker F2 = new deteksikanker();
F2.Show();
this.Hide();
}
void Button3Click(object sender, EventArgs e) // membersihkan semua data
{
pictureBox1.Image = null;
pictureBox2.Image = null;
pictureBox3.Image = null;
pictureBox4.Image = null;
textBox1.Text = null;
textBox2.Text = null;
textBox3.Text = null;
textBox5.Text = null;
textBox6.Text = null;
textBox4.Text = null;
textBox7.Text = null;
textBox8.Text = null;
textBox9.Text = null;
}
void Button1Click(object sender, EventArgs e)// method input citra
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.png)|*.png";
if (open.ShowDialog() == DialogResult.OK)
{
pictureBox2.Image = new Bitmap(open.FileName);
textBox1.Text = open.FileName;
}
}
void Button2Click(object sender, EventArgs e) //private canny
{
DateTime dp = DateTime.Now;
CannyData = new Canny((Bitmap)pictureBox4.Image,20,10,5,1 );
pictureBox1.Image = CannyData.DisplayImage(CannyData.EdgeMap);
TimeSpan ds = DateTime.Now - dp;
double waktu = ds.TotalMilliseconds;
textBox5.Text = (waktu/1000).ToString();
textBox4.Text
Universitas Sumatera Utara
= HitungMSE((Bitmap)pictureBox4.Image,(Bitmap)pictureBox1.Image).ToString();
textBox7.Text = HitungPSNR(Convert.ToDouble(textBox4.Text)).ToString();
}
private Bitmap Isotropik ( Bitmap Original)// private isotropik
{
Bitmap isotropik = new Bitmap(Original);
int [,] arr_r;
int [,] arr_g;
int [,] arr_b;
byte[,] temp_array;
arr_r = new int[isotropik.Width, isotropik.Height];
arr_g = new int[isotropik.Width, isotropik.Height];
arr_b = new int[isotropik.Width, isotropik.Height];
temp_array=new byte[isotropik.Width, isotropik.Height];
double x;
double y;
double grad;
for (int i = 1; i < (isotropik.Width - 1); i++)
{
for (int j = 1; j < (isotropik.Height - 1); j++)
{
arr_r[i, j] = Original.GetPixel(i, j).R;
arr_g[i, j] = Original.GetPixel(i, j).G;
arr_b[i, j] = Original.GetPixel(i, j).B;
arr_r[i, j] = (arr_r[i, j] + arr_g[i, j] + arr_b[i, j]) /3;
}
}
for (int i = 1; i < (isotropik.Width-1); i++)
{
for (int j = 1; j < (isotropik.Height-1); j++)
{
x=System.Math.Abs(1*arr_r[i-1,j-1]+1.41421*arr_r[i-1,j]+1*arr_r[i-1,j+1]-arr_r[i+1, j1]-1.41421*arr_r[i+1, j] -arr_r[i + 1, j + 1]);
y=System.Math.Abs(1*arr_r[i-1,j-1]+1.41421*arr_r[i,j-1]+1*arr_r[i+1,j-1]-1*arr_r[i1,j+1]-1.41421*arr_r[i,j+1]-1*arr_r[i+1,j+1]);grad = System.Math.Sqrt(x*x+y*y);
if ( grad > 255) grad =255;
temp_array[i, j] =(byte)(grad);
isotropik.SetPixel(i,j,Color.FromArgb(temp_array[i, j],temp_array[i, j],temp_array[i,j]))
;
}
} return isotropik;
}
Universitas Sumatera Utara
void Button4Click(object sender, EventArgs e) //menyimpan gambar canny
{
SaveFileDialog save = new SaveFileDialog();
save.Filter = "Image Files(*.png) | *.png";
if (save.ShowDialog() == DialogResult.OK)
{
textBox2.Text = save.FileName;
pictureBox1.Image.Save(save.FileName, System.Drawing.Imaging.ImageFormat.Png);
MessageBox.Show("Apakah anda ingin menyimpan gambar ?", "
Simpan", MessageBoxButtons.OK);
}
else
{
MessageBox.Show("Gagal Menyimpan gambar !");
}
}
void SaveisoClick(object sender, EventArgs e)// menyimpan gambar isotropik
{
SaveFileDialog save = new SaveFileDialog();
save.Filter = "Image Files(*.png) | *.png";
if (save.ShowDialog() == DialogResult.OK)
{
textBox3.Text = save.FileName;
pictureBox3.Image.Save(save.FileName, System.Drawing.Imaging.ImageFormat.Png);
MessageBox.Show("Apakah anda ingin menyimpan
gambar?", "Simpan", MessageBoxButtons.OK);
}
else
{
MessageBox.Show("Gagal Menyimpan Gambar !");
}
}
void Button5Click(object sender, EventArgs e)// proses isotropik
{
DateTime dp = DateTime.Now;
Bitmap bit = new Bitmap(pictureBox4.Image);
int x = bit.Height; int y = bit.Width;
double rd=0,bl=0,gr=0,gy=0;
Bitmap imageHasil = new Bitmap(x,y);
for (int i = 0; i < x-1; i++)
{
Universitas Sumatera Utara
for (int j = 0; j
1. Deteksitepi.cs
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace skripsi
{
public partial class deteksitepi : Form
{
Canny CannyData;
public deteksitepi()
{
InitializeComponent();
}
void HomeToolStripMenuItemClick(object sender, EventArgs e)
{
MainForm f2 = new MainForm();
f2.Show();
this.Hide();
}
void AboutToolStripMenuItemClick(object sender, EventArgs e)
{
about F2 = new about();
F2.Show();
this.Hide();
}
void DeteksiTepiToolStripMenuItemClick(object sender, EventArgs e)
{
deteksitepi F2 = new deteksitepi();
F2.Show();
this.Hide();
}
Universitas Sumatera Utara
void DeteksiKankerToolStripMenuItemClick(object sender, EventArgs e)
{
deteksikanker F2 = new deteksikanker();
F2.Show();
this.Hide();
}
void Button3Click(object sender, EventArgs e) // membersihkan semua data
{
pictureBox1.Image = null;
pictureBox2.Image = null;
pictureBox3.Image = null;
pictureBox4.Image = null;
textBox1.Text = null;
textBox2.Text = null;
textBox3.Text = null;
textBox5.Text = null;
textBox6.Text = null;
textBox4.Text = null;
textBox7.Text = null;
textBox8.Text = null;
textBox9.Text = null;
}
void Button1Click(object sender, EventArgs e)// method input citra
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.png)|*.png";
if (open.ShowDialog() == DialogResult.OK)
{
pictureBox2.Image = new Bitmap(open.FileName);
textBox1.Text = open.FileName;
}
}
void Button2Click(object sender, EventArgs e) //private canny
{
DateTime dp = DateTime.Now;
CannyData = new Canny((Bitmap)pictureBox4.Image,20,10,5,1 );
pictureBox1.Image = CannyData.DisplayImage(CannyData.EdgeMap);
TimeSpan ds = DateTime.Now - dp;
double waktu = ds.TotalMilliseconds;
textBox5.Text = (waktu/1000).ToString();
textBox4.Text
Universitas Sumatera Utara
= HitungMSE((Bitmap)pictureBox4.Image,(Bitmap)pictureBox1.Image).ToString();
textBox7.Text = HitungPSNR(Convert.ToDouble(textBox4.Text)).ToString();
}
private Bitmap Isotropik ( Bitmap Original)// private isotropik
{
Bitmap isotropik = new Bitmap(Original);
int [,] arr_r;
int [,] arr_g;
int [,] arr_b;
byte[,] temp_array;
arr_r = new int[isotropik.Width, isotropik.Height];
arr_g = new int[isotropik.Width, isotropik.Height];
arr_b = new int[isotropik.Width, isotropik.Height];
temp_array=new byte[isotropik.Width, isotropik.Height];
double x;
double y;
double grad;
for (int i = 1; i < (isotropik.Width - 1); i++)
{
for (int j = 1; j < (isotropik.Height - 1); j++)
{
arr_r[i, j] = Original.GetPixel(i, j).R;
arr_g[i, j] = Original.GetPixel(i, j).G;
arr_b[i, j] = Original.GetPixel(i, j).B;
arr_r[i, j] = (arr_r[i, j] + arr_g[i, j] + arr_b[i, j]) /3;
}
}
for (int i = 1; i < (isotropik.Width-1); i++)
{
for (int j = 1; j < (isotropik.Height-1); j++)
{
x=System.Math.Abs(1*arr_r[i-1,j-1]+1.41421*arr_r[i-1,j]+1*arr_r[i-1,j+1]-arr_r[i+1, j1]-1.41421*arr_r[i+1, j] -arr_r[i + 1, j + 1]);
y=System.Math.Abs(1*arr_r[i-1,j-1]+1.41421*arr_r[i,j-1]+1*arr_r[i+1,j-1]-1*arr_r[i1,j+1]-1.41421*arr_r[i,j+1]-1*arr_r[i+1,j+1]);grad = System.Math.Sqrt(x*x+y*y);
if ( grad > 255) grad =255;
temp_array[i, j] =(byte)(grad);
isotropik.SetPixel(i,j,Color.FromArgb(temp_array[i, j],temp_array[i, j],temp_array[i,j]))
;
}
} return isotropik;
}
Universitas Sumatera Utara
void Button4Click(object sender, EventArgs e) //menyimpan gambar canny
{
SaveFileDialog save = new SaveFileDialog();
save.Filter = "Image Files(*.png) | *.png";
if (save.ShowDialog() == DialogResult.OK)
{
textBox2.Text = save.FileName;
pictureBox1.Image.Save(save.FileName, System.Drawing.Imaging.ImageFormat.Png);
MessageBox.Show("Apakah anda ingin menyimpan gambar ?", "
Simpan", MessageBoxButtons.OK);
}
else
{
MessageBox.Show("Gagal Menyimpan gambar !");
}
}
void SaveisoClick(object sender, EventArgs e)// menyimpan gambar isotropik
{
SaveFileDialog save = new SaveFileDialog();
save.Filter = "Image Files(*.png) | *.png";
if (save.ShowDialog() == DialogResult.OK)
{
textBox3.Text = save.FileName;
pictureBox3.Image.Save(save.FileName, System.Drawing.Imaging.ImageFormat.Png);
MessageBox.Show("Apakah anda ingin menyimpan
gambar?", "Simpan", MessageBoxButtons.OK);
}
else
{
MessageBox.Show("Gagal Menyimpan Gambar !");
}
}
void Button5Click(object sender, EventArgs e)// proses isotropik
{
DateTime dp = DateTime.Now;
Bitmap bit = new Bitmap(pictureBox4.Image);
int x = bit.Height; int y = bit.Width;
double rd=0,bl=0,gr=0,gy=0;
Bitmap imageHasil = new Bitmap(x,y);
for (int i = 0; i < x-1; i++)
{
Universitas Sumatera Utara
for (int j = 0; j