Senin, 18 Mei 2015

GLCM - Analisis Tekstur Citra Digital

Manusia mengenal tekstur seperti lembut dan kasar walaupun tangan tidak menyentuh benda tersebut, tapi otak mampu membedakan hal tersebut melalui visualisasi yang ditangkap oleh mata. Tekstur dapat dicirikan sebagai berikut

    1. Pengulangan pola dari variasi lokal sehingga membentuk kesatuan yang utuh
    2. Menyediakan informasi susunan spasial dari warna dan intensitas citra
    3. Dicirikan dengan distribusi spasial dari level intensitas dari nilai pixel ketetanggaan
    4. Tidak bisa didefinisikan sebagai suatu satu point / nilai tertentu karena merupakan sebuah pola / kesatuan

      Lihatlah ilustrasi berikut tentang tekstur sebuah citra yaitu terdiri dari 50% hitam dan 50% putih






      Tentunya uji statistik standar seperti mean, standar deviasi tidak akan mampu membedakan ketiga citra tersebut karena akan menghasilkan nilai yang sama. Seperti yang sudah dijelaskan bahwa tekstur merupakan suatu pengulangan pola dan distribusi spasial artinya ketiga citra tersebut mempunyai tingkat intensitas nilai pixel yang sama tapi mempunyai distribusi spasial yang berbeda.


      Analisis tekstur merupakan salah satu metode untuk melakukan identifikasi atau klasifikasi suatu citra, analisis tersebut telah banyak digunakan dalam berbagai bidang yaitu uji tekstur wajah, mutu keramik, membedakan jenis daun dan dalam interpretasi suatu peta sehingga dapat diketahui jenis lahan.


      #GLCM sebagai salah satu metode analisis tekstur

      Gray-Level Co-occurrence matrix merupakan metode paling banyak digunakan untuk analisis tekstur. Metode ini diperkenalkan oleh Haralick di tahun 1973 yang merupakan bagian dari project yang didukung olah NASA yaitu tepatnya NASA Goddard Space Flight Center. Haralick menggunakan citra dari NASA ERTS untuk melakukan klasifikasi dengan tingkat akurasi diatas 80%.


      Matrix GLCM dihitung dari nilai pixel yang berpasangan dan memiliki nilai intensitas tertentu. Misalkan d adalah jarak antara dua pixel yaitu (x1,y1) dan (x2,y2) dan Ѳ tetha didefinisikan sebagai sudut antara keduanya, maka matrix GLCM merupakan distribusi spasial dari Pd Ѳ (i,j). Banyak paper menuliskan berbagai versi tentang perhitungan GLCM terutama mengenai masalah sudut yang digunakan. Berikut adalah ilustrasi yang menggambarkan arah sudut dengan jarak 1 pixel dan ada 4 jenis sudut yang digunakan: a. 0=180;
      b. 45=225,
      c. 90=270, dan
      d. 135=315  

      tapi terkadang ada yang menyatakan terdiri dari 8 arah, hal ini terjadi karena antara sudut 0o dan 180o dianggap berbeda begitu juga dengan arah sudut yang lainnya




      #Perhitungan 7 fitur utama


      [1] Angularsecond moment/uniformity/energy
      Mengukur tentang keseragaman atau sering disebut angular second moment. Energy akan bernilai tinggi ketika nilai pixel mirip satu sama lain sebaliknya akan bernilai kecil menandakan nilai dari GLCM normalisasi adalah heterogen. Nilai maksimum dari energy adalah 1 yang artinya distribusi pixel dalam kondisi konstan atau bentuk nya yang berperiodik (tidak acak).

      [2] Entropy
      Mengukur kompleksitas(keacakan) citra. Entropy akan bernilai tinggi ketika citra tidak seragam.

      [3] Dissimilarity
      Mengukur ketidakmiripan suatu tekstur, yang akan bernilai besar bila acak dan sebaliknya akan bernilai kecil bila seragam.

      [4] Contrast/inertia
      Mengukur frekuensi spasial dari citra dan perbedaan moment GLCM. Perbedaan yang dimaksudkan adalah perbedaan tinggi dan rendah nya pixel. Contrast akan bernilai 0 jika pixel ketetanggaan mempunyai nilai yang sama.

      [5]Correlation
      Mengukur linearitas (the joint probability) dari sejumlah pasangan pixel (pairs).

      [6] Homogeneity/inversedifference moment
      Mengukur homogenitas. Nilai ini sangat sensitif terhadap nilai disekitar diagonal utama. Bernilai tinggi ketika semua pixel mempunyai nilai yang sama / seragam. Kebalikan dari contrast yaitu akan bernilai besar jika mempunyai nilai pixel yang sama pada saat energy bernilai tetap.

      [7] Autocorrelation
      Mengukur correlation diantara garis diagonal utama.

      Disini tidak dibahas detail cara menghitung nya, melainkan hanya disajikan cara menggunakan pustaka yang telah dibuat


      Demo penggunaan menghitung GLCM

             
      
      public static void DemoGLCM()
      {
       Console.WriteLine("Matrix");
       int[,] matrix = new int[,] { 
        {0, 0, 1, 2},
        {2, 0, 2, 0},
        {1, 0, 0, 2},
        {2, 0, 1, 1}
      
          };
       Program.Print(matrix);
       GLCM glcm = new GLCM(); //panggil class GLCM
       int sudut = 0;
       int nilaiMaksimalMatrix = 2; //nilai maksimal matrix
       glcm.Process(matrix, sudut, nilaiMaksimalMatrix);  //hitung GLCM
       double[,] T = glcm.T; //matrix GLCM
       double[,] H = glcm.H; //matrix GLCM setelah dinormalisasi!
       Console.WriteLine("Matrix GLCM");
       Program.Print(H);
       Console.WriteLine("Matrix GLCM yang di normalisasi");
       Program.Print(T);
      
      
       Feature fitur = new Feature(); //panggil class  feature
       fitur.Process(T); //hitung fitur
       Console.WriteLine("Fitur");
       Console.WriteLine("Autocorrelation : " + fitur.Autocorrelation);
       Console.WriteLine("Contrast : " + fitur.Contrast);
       Console.WriteLine("Correlation : " + fitur.Correlation);
       Console.WriteLine("Dissimilarity : " + fitur.Dissimilarity);
       Console.WriteLine("Energy : " + fitur.Energy);
       Console.WriteLine("Entropy : " + fitur.Entropy);
       Console.WriteLine("Homogen : " + fitur.Homogen);
       
      }
      
             
       

      menghasilkan

      Bila menggunakan gambar, berikut cara penggunaanya



             
      
      public static void DemoGLCMCitra()
      {
       String lokasiFile = "D:/bunga.bmp";
       Console.WriteLine("File : " + lokasiFile);
       Bitmap gambar = (Bitmap) Bitmap.FromFile(lokasiFile);
       if(gambar.PixelFormat !=PixelFormat.Format8bppIndexed )//jika bukan gray alias truecolor!
       {
        gambar = AForge.Imaging.Filters.Grayscale.CommonAlgorithms.RMY.Apply(gambar); //konvert ke gray!
       }
       ReadImage bacaGambar = new ReadImage(gambar); //baca nilai pixel gambar!
       ushort[,] matrix = bacaGambar.Matrix[0]; //ambil nilai pixel nya!
       GLCM glcm = new GLCM(); //panggil class GLCM
       int sudut = 0;
       int nilaiMaksimalMatrix = 255; //nilai maksimal matrix
       glcm.Process(matrix, sudut, nilaiMaksimalMatrix);  //hitung GLCM
       double[,] T = glcm.T; //matrix GLCM
       double[,] H = glcm.H; //matrix GLCM setelah dinormalisasi!            
       
      
       Feature fitur = new Feature(); //panggil class  feature
       fitur.Process(T); //hitung fitur
       Console.WriteLine("Fitur");
       Console.WriteLine("Autocorrelation : " + fitur.Autocorrelation);
       Console.WriteLine("Contrast : " + fitur.Contrast);
       Console.WriteLine("Correlation : " + fitur.Correlation);
       Console.WriteLine("Dissimilarity : " + fitur.Dissimilarity);
       Console.WriteLine("Energy : " + fitur.Energy);
       Console.WriteLine("Entropy : " + fitur.Entropy);
       Console.WriteLine("Homogen : " + fitur.Homogen);
      }
      
             
       

      Menghasilkan





      GUI

      Penulis telah membuat aplikasi menggunakan C#, berikut tampilan aplikasi nya
       



      dikembangkan menggunakan C# sebagai tools utamanya. user dapat melihat bahwa GLCM dipengaruhi oleh arah sudut yang digunakan, yaitu

      0, 45, 90, 135, dan ALL

      ada 6 feature yang digunakan yaitu

      feature.Contrast
      feature.Correlation
      feature.Dissimilarity
      feature.Energy
      feature.Entropy
      feature.Homogen
        


      user bisa melihat dari sisi 90 maka akan tampak tidak ada nya gradasi, tapi bila melihat pada sisi 0 akan tampak sekali


      feature.Contrast (akan bernilai 1 jika terjadi gradasi)

      feature.Correlation (akan bernilai 1 jika terjadi gradasi)

      feature.Dissimilarity (akan bernilai 1 jika terjadi gradasi)

      feature.Energy (akan bernilai 0 jika terjadi gradasi)





      Download

      https://www.dropbox.com/s/u8kqo7b967ms93r/release%20Aplikasi%20Teksture%20GLCM%20%20dengan%20C%23.rar?dl=0
      Posting Komentar