Fuzzy clustering merupaka salah satu metode yang digunakan untuk mengelompokan data menjadi beberapa kelompok (class), setiap data akan dimasukan kedalam kelas dan setiap kelas mempunyai kemiripan data antara data satu dengan data yang lainnya, sehingga tujuan dari clustering ini adalah mengelompokan data berdasarkan kemiripan data. Banyak sekali metode metode clustering selain fuzzy C-Mean. seperti SOM dan lain-lain.
Disini akan dikembangkan fuzzy clustering yang di implementasikan pada gambar, dimana pada gambar data-datanya yang akan dikelompokan adalah data pixel dari setiap titik di gambar tersebut, sedangkan attribut dari setiap pixel adalah RED,GREEN,BLUE. Sehingga pada kasus implementasi pada gambar, jumlah data yang akan diolah adalah (panjang x lebar), dengan attrribut 3 (jika menggunajan citra RGB) atau dengan attribute 1 (jika menggunajan warna grayscale).
sekarang mari kita buat programnya..... seperti biasa. siapkan project baru, klik file pilih new project pada IDE visual studio. pada kotak project name isi nama project sesuai dengan keinginan, misalnya disini kita isi dengan (Program Fuzzy C-MEan), untuk langkah-langkah selanjutnya silahkan ikuti instruksi dibawah ini, sedangkan untuk lebih memahami tentang fuzzy C-Mean Clustering silahkan download materi satu disini, materi dua disini, materi tiga disini, materi empat disini
langkah 1 : tambahkan dua komponen picturebox, satu openfileDialog, satu backroundWorker, satu loading bar, satu numeric updown, dan dua button, atur dan tata komponen-komponen tersebut seperti pada gambar berikut ini
sekarang mari kita buat programnya..... seperti biasa. siapkan project baru, klik file pilih new project pada IDE visual studio. pada kotak project name isi nama project sesuai dengan keinginan, misalnya disini kita isi dengan (Program Fuzzy C-MEan), untuk langkah-langkah selanjutnya silahkan ikuti instruksi dibawah ini, sedangkan untuk lebih memahami tentang fuzzy C-Mean Clustering silahkan download materi satu disini, materi dua disini, materi tiga disini, materi empat disini
Gambar1. Preview desain aplikasi
langkah 1 : tambahkan dua komponen picturebox, satu openfileDialog, satu backroundWorker, satu loading bar, satu numeric updown, dan dua button, atur dan tata komponen-komponen tersebut seperti pada gambar berikut ini
Gambar2. Hasil running program
Langkah kedua : pada button satu yang telah diberi label open Image tambahkan code berikut ini
if (DialogResult.OK == openFileDialog1.ShowDialog())
{
myGambar = new Bitmap(openFileDialog1.FileName);
pictureBox1.Height = myGambar.Height;
pictureBox1.Width = myGambar.Width;
pictureBox1.Image = myGambar;
pictureBox2.Height = myGambar.Height;
pictureBox2.Width = myGambar.Width;
dataPixel = new int[((myGambar.Height) * (myGambar.Width)), 3];
pixelBaru = new double[myGambar.Height * myGambar.Width, 3];
dataCenter=new double[cluster,3];
miu = new double[(myGambar.Height * myGambar.Width), cluster];
miuUpdate = new double[(myGambar.Height * myGambar.Width), cluster];
//random miu;
random();
getDataPixel();
}
{
myGambar = new Bitmap(openFileDialog1.FileName);
pictureBox1.Height = myGambar.Height;
pictureBox1.Width = myGambar.Width;
pictureBox1.Image = myGambar;
pictureBox2.Height = myGambar.Height;
pictureBox2.Width = myGambar.Width;
dataPixel = new int[((myGambar.Height) * (myGambar.Width)), 3];
pixelBaru = new double[myGambar.Height * myGambar.Width, 3];
dataCenter=new double[cluster,3];
miu = new double[(myGambar.Height * myGambar.Width), cluster];
miuUpdate = new double[(myGambar.Height * myGambar.Width), cluster];
//random miu;
random();
getDataPixel();
}
langkah ketiga : pada buttton tiga tambahkan code berikut ini
progressBar1.Maximum = Convert.ToInt16(numericUpDown1.Value);
backgroundWorker1.RunWorkerAsync();
Langkah keemapat : Tambahkan beberapa fucntion yang akan digunakan dalam fuzzy C-Means, diantaranya adalah, function drawImage(), function random(), function getDataPixel(), function rekonstruksiImage(), function getDataCenterCluster(),
berikut ini source codenya
untuk function drawImage()
private void drawImage()
{
double max = 0;
int indekMax = 0;
int j = 0;
for (int i = 0; i < myGambar.Height * myGambar.Width; i++)
{
for (j = 0; j < cluster; j++)
{
if (miu[i, j] > max)
{
max = miu[i, j];
indekMax = j;
}
}
pixelBaru[i, 0] = dataCenter[indekMax, 0];
pixelBaru[i, 1] = dataCenter[indekMax, 1];
pixelBaru[i, 2] = dataCenter[indekMax, 2];
max = 0;
indekMax = 0;
}
rekontruksiImage();
}
{
double max = 0;
int indekMax = 0;
int j = 0;
for (int i = 0; i < myGambar.Height * myGambar.Width; i++)
{
for (j = 0; j < cluster; j++)
{
if (miu[i, j] > max)
{
max = miu[i, j];
indekMax = j;
}
}
pixelBaru[i, 0] = dataCenter[indekMax, 0];
pixelBaru[i, 1] = dataCenter[indekMax, 1];
pixelBaru[i, 2] = dataCenter[indekMax, 2];
max = 0;
indekMax = 0;
}
rekontruksiImage();
}
berikut ini untuk fucntion random
function random()
double[] temp=new double[5];
for (int j = 0; j < (myGambar.Height*myGambar.Width); j++)
{
temp=bismilah(cluster);
miu[j,0] = temp[0];
miu[j, 1] = temp[1];
miu[j, 2] = temp[2];
miu[j, 3] = temp[3];
miu[j, 4] = temp[4];
}
for (int j = 0; j < (myGambar.Height*myGambar.Width); j++)
{
temp=bismilah(cluster);
miu[j,0] = temp[0];
miu[j, 1] = temp[1];
miu[j, 2] = temp[2];
miu[j, 3] = temp[3];
miu[j, 4] = temp[4];
}
function getDataPixel()
int indek = 0;
for (int i = 0; i < myGambar.Height; i++)
{
for (int j = 0; j < myGambar.Width; j++)
{
dataPixel[indek, 0] = myGambar.GetPixel(j,i).R;
dataPixel[indek, 1] = myGambar.GetPixel(j, i).G;
dataPixel[indek, 2] = myGambar.GetPixel(j,i).B;
indek = indek + 1;
}
}
for (int i = 0; i < myGambar.Height; i++)
{
for (int j = 0; j < myGambar.Width; j++)
{
dataPixel[indek, 0] = myGambar.GetPixel(j,i).R;
dataPixel[indek, 1] = myGambar.GetPixel(j, i).G;
dataPixel[indek, 2] = myGambar.GetPixel(j,i).B;
indek = indek + 1;
}
}
Source code untuk getDataCenter
function getDataCenter()
private double[] getDataCenterCluster(int dimensi)
{
int panjangData=myGambar.Height*myGambar.Width;
double[] miuInput=new double[panjangData];
double[] hasil = new double[3];
double jumMiuKuadrat = 0;
double jumMiuAttribute1 = 0;
double jumMiuAttribute2 = 0;
double jumMiuAttribute3 = 0;
for (int j = 0; j < cluster; j++)
{
if (dimensi == j)
{
for (int i = 0; i < panjangData; i++)
{
miuInput[i] = miu[i, j];
}
break;
}
}
{
int panjangData=myGambar.Height*myGambar.Width;
double[] miuInput=new double[panjangData];
double[] hasil = new double[3];
double jumMiuKuadrat = 0;
double jumMiuAttribute1 = 0;
double jumMiuAttribute2 = 0;
double jumMiuAttribute3 = 0;
for (int j = 0; j < cluster; j++)
{
if (dimensi == j)
{
for (int i = 0; i < panjangData; i++)
{
miuInput[i] = miu[i, j];
}
break;
}
}
function rekonstruksiImage()
private void rekontruksiImage()
{
{
gambarHasil = new Bitmap(myGambar.Width,myGambar.Height);
int indek = 0;
for (int i = 0; i < myGambar.Height; i++)
{
for (int j = 0; j < myGambar.Width; j++)
{
gambarHasil.SetPixel(j, i, Color.FromArgb(Convert.ToInt16(pixelBaru[indek, 0]), Convert.ToInt16(pixelBaru[indek, 1]), Convert.ToInt16(pixelBaru[indek, 2])));
indek = indek + 1;
}
}
pictureBox2.Image = gambarHasil;
} int indek = 0;
for (int i = 0; i < myGambar.Height; i++)
{
for (int j = 0; j < myGambar.Width; j++)
{
gambarHasil.SetPixel(j, i, Color.FromArgb(Convert.ToInt16(pixelBaru[indek, 0]), Convert.ToInt16(pixelBaru[indek, 1]), Convert.ToInt16(pixelBaru[indek, 2])));
indek = indek + 1;
}
}
pictureBox2.Image = gambarHasil;
langkah terkahir : Done... program selesai dibuat..... jika langkah langkah diatas dilakukan dengan benar, program mampu mengklasifikasikan pixel image dari suatu citra berdasarkan kemiripan data, sehingga data-data pixel yang mempunyai kemiripan nilai pixel akan diberi warna rata-rata dari kelas itu sendiri. perhatikan hasil running dibawah ini
Gambar 3. Preview hasil program yang telah dirunning
downlaod full project disini disini.
for more information contact on informasi@csharp-indonesia.com
untuk cara download, klik link download yang disediaan diatas, setelah itu akan muncul halaman adf.ly, tunggu beberapa detik sampai pada pojok kanan atas muncul tulisan skip ad. klik skip ad setelah itu silahkan klik pada button download yang muncul pada halaman ziddu
NB : Dalam tutorial ini program ditulisa menggunakan IDE Visual studio 2010. dengan target framework 2.0 . Sehingga minimal komputer harus terinstal windows xp untuk bisa menjalankan program *.exe nya, Sedangkan untuk membuka projectnya mau tidak mau harus menginstal microsoft visual studio 2010
maksud dari iterasi itu apa??
BalasHapussama apa fungsi dimensi pada menu cek
Sebelumnya maaf ya.. reply nya agak terlambat
BalasHapusIterasi itu samadengan looping dan sama juga pula dengan perulangan,
ada masalah mengenai hierarchical clustering ga? soalnya tugas akhir saya mengenai itu. saya ada mengirim e-mail ke informasi@csharp-indonesia.com kenapa ga bisa ya?
BalasHapusuntuk email informasi@csharp-indonesia memang agak bermasalah. sering terjadi hang up. untuk hierarchieal clustering. saya pernah mempelajarinya. tapi tidak sampai mengimplementasikannya kedalam sebuah program.
BalasHapusada referensi untuk itu tidak? trims..
BalasHapusuntuk referensi yang saya gunakan dulu adalah jurnal dari IEEE, untuk buku saya kurang begitu tahu yang membahas tentang hierarchiel clustering
BalasHapusada contoh untuk masalah dengan algoritma apriori ga ?? terimakasih
BalasHapusfungsi dimensinya pada menu cek apa om?
BalasHapus2015-11-24 xiaozhengm
BalasHapussac longchamp pliage
longchamp handbags
jordan 13
coach outlet
pandora jewelry
coach factory outlet
nike uk
michael kors outlet
coach outlet
oakley sunglasses
ugg boots
christian louboutin outlet
jordan 6
sac longchamp pas cher
nike air max
oakley sunglasses
michael kors outlet online
michael kors handbags
michael kors outlet online
coach outlet
coach outlet
gucci outlet
coach outlet
ghd straighteners
canada gooses outlet
barbour uk
mizuno running shoes
tory burch outlet
ray ban
christian louboutin outlet
michael kors outlet
michael kors
michael kors
nike tn
running shoes
adidas outlet store
christian louboutin
cheap oakley sunglasses
christian louboutin uk
gucci outlet
under armour shoes
BalasHapuscowboys jerseys
toms outlet
coach outlet store
air jordan uk
saints jerseys
cheap nfl jerseys
michael kors outlet
ray ban sunglasses
michael kors handbags
link mati
BalasHapusmaaf boss, ini gambar tidak ada, file ny juga tidak ada
BalasHapusWe find lots of learning after reading this very useful article .
BalasHapus