Analisis Tekstur Menggunakan Metode GLCM, LBP, dan FLBP


Apakah yang dimaksud dengan analisis tekstur??

Tekstur merupakan salah satu ciri yang bisa diekstrak dari suatu citra digital. Tekstur dapat digunakan sebagai ciri yang membedakan antara citra yang satu dengan citra lainnya. Analisis tekstur dapat diimplementasikan ke dalam bidang pengolahan citra antara lain untuk pengenalan motif kain batik, identifikasi kualitas daging, identifikasi tumor/kanker, klasifikasi jenis kayu, dll.

Berikut ini merupakan contoh aplikasi pemrograman matlab mengenai analisis tekstur menggunakan tiga buah metode yang berbeda yaitu Gray-Level Co-Occurrence Matrix (GLCM), Local Binary Pattern (LBP), dan Fuzzy Local Binary Pattern (FLBP). Pada pemrograman ini analisis tekstur dilakukan terhadap citra yang diberi perlakuan rotasi. Hal ini dilakukan untuk melihat pengaruh rotasi dalam analisis tekstur pada masing-masing metode.

Tampilan citra asli dan setelah diberi perlakuan rotasi ditunjukkan pada gambar di bawah ini.

bricks.jpg

bricksRotated.jpg

Langkah-langkah pemrograman untuk analisis tekstur adalah sebagai berikut:

1. Analisis tekstur menggunakan metode Gray-Level Co-Occurrence Matrix (GLCM)

clc; clear; close all;

% membaca citra bricks
brickWall = imread('bricks.jpg');

% pembuatan matriks kookurensi
pixel_dist = 1;
GLCM = graycomatrix(brickWall,'Offset',[0 pixel_dist;...
-pixel_dist pixel_dist; -pixel_dist 0; -pixel_dist -pixel_dist]);

% ekstraksi ciri GLCM terhadap citra bricks
stats = graycoprops(GLCM,{'contrast','correlation','energy','homogeneity'});
Contrast = mean(stats.Contrast);
Correlation = mean(stats.Correlation);
Energy = mean(stats.Energy);
Homogeneity = mean(stats.Homogeneity);
bricks_features = [Contrast,Correlation,Energy,Homogeneity];

% membaca citra bricksRotated
rotatedBrickWall = imread('bricksRotated.jpg');

% pembuatan matriks kookurensi
pixel_dist = 1;
GLCM = graycomatrix(rotatedBrickWall,'Offset',[0 pixel_dist;...
-pixel_dist pixel_dist; -pixel_dist 0; -pixel_dist -pixel_dist]);

% ekstraksi ciri GLCM terhadap citra bricksRotated
stats = graycoprops(GLCM,{'contrast','correlation','energy','homogeneity'});
Contrast = stats.Contrast;
Correlation = stats.Correlation;
Energy = stats.Energy;
Homogeneity = stats.Homogeneity;
bricksRotated_features = [Contrast,Correlation,Energy,Homogeneity];

% menampilkan citra bricks
figure
imshow(brickWall)
title('Bricks')

% menampilkan citra bricksRotated
figure
imshow(rotatedBrickWall)
title('Rotated Bricks')

% menampilkan hasil ekstraksi ciri GLCM
figure
b = bar([bricks_features; bricksRotated_features]');
b(1).FaceColor = 'r';
b(1).EdgeColor = 'r';
b(2).FaceColor = 'b';
b(2).EdgeColor = 'b';
grid on
title('Bricks vs BricksRotated')
xlabel('GLCM Features')
xticklabels({'Contrast','Correlation','Energy','Homogeneity'})
legend('Bricks','Rotated Bricks')

Tampilan perbandingan hasil ekstraksi ciri GLCM terhadap citra bricks dan bricksRotated adalah sebagai berikut

Pada pemrograman di atas ciri GLCM yang diekstrak adalah contrast, correlation, energy, dan homogeneity. Keempat ciri tersebut menunjukkan nilai yang hampir sama antara citra bricks dan bricksRotated. Hal ini menunjukkan bahwa metode GLCM tidak terlalu terpengaruh oleh rotasi sehingga baik digunakan dalam analisis tekstur.

2. Analisis tekstur menggunakan metode Local Binary Pattern (LBP)

clc; clear; close all;

% membaca citra bricks & bricksRotated
brickWall = imread('bricks.jpg');
rotatedBrickWall = imread('bricksRotated.jpg');

% menampilkan citra bricks
figure
imshow(brickWall)
title('Bricks')

% menampilkan citra bricksRotated
figure
imshow(rotatedBrickWall)
title('Rotated Bricks')

% ekstraksi ciri LBP terhadap masing-masing citra
lbpBricks1 = LBPFeatures(brickWall);
lbpBricks2 = LBPFeatures(rotatedBrickWall);

% menampilkan hasil ekstraksi ciri LBP
figure
b = bar([lbpBricks1; lbpBricks2]');
b(1).FaceColor = 'r';
b(1).EdgeColor = 'r';
b(2).FaceColor = 'b';
b(2).EdgeColor = 'b';
grid on
title('Bricks vs BricksRotated')
xlabel('LBP Histogram Bins')
legend('Bricks','Rotated Bricks')

Tampilan perbandingan hasil ekstraksi ciri LBP terhadap citra bricks dan bricksRotated adalah sebagai berikut

Pada pemrograman di atas feature vector LBP yang diekstrak menunjukkan nilai yang hampir sama antara citra bricks dan bricksRotated. Hal ini menunjukkan bahwa metode LBP juga tidak terlalu terpengaruh oleh rotasi sehingga baik digunakan dalam analisis tekstur.

3. Analisis tekstur menggunakan metode Fuzzy Local Binary Pattern (FLBP)

clc; clear; close all;

% membaca citra bricks & bricksRotated
brickWall = imread('bricks.jpg');
rotatedBrickWall = imread('bricksRotated.jpg');

% menampilkan citra bricks
figure
imshow(brickWall)
title('Bricks')

% menampilkan citra bricksRotated
figure
imshow(rotatedBrickWall)
title('Rotated Bricks')

% ekstraksi ciri FLBP terhadap masing-masing citra
flbpBricks1 = flbp(brickWall);
flbpBricks2 = flbp(rotatedBrickWall);

% menampilkan hasil ekstraksi ciri FLBP
figure
plot([flbpBricks1; flbpBricks2]');
xlim([1 256])
grid on
title('Bricks vs BricksRotated')
xlabel('FLBP Histogram Bins')
legend('Bricks','Rotated Bricks')

Tampilan perbandingan hasil ekstraksi ciri FLBP terhadap citra bricks dan bricksRotated adalah sebagai berikut

Pada pemrograman di atas feature vector FLBP yang diekstrak menunjukkan nilai yang hampir sama antara citra bricks dan bricksRotated. Hal ini menunjukkan bahwa metode FLBP juga tidak terlalu terpengaruh oleh rotasi sehingga baik digunakan dalam analisis tekstur.

Ketiga metode pada pemrograman di atas menunjukkan performa yang baik dalam melakukan analisis tekstur dengan tidak terpengaruh terhadap rotasi.

File source code lengkap beserta citra pada pemrograman di atas dapat diperoleh melalui halaman berikut ini: Source Code

Posted on September 27, 2018, in Pengenalan Pola, Pengolahan Citra and tagged , , , , , , , , , , , , , , . Bookmark the permalink. 8 Comments.

  1. Mas adi untuk ekstraksi fitur dengan metode di atas apakah ukuran gambarnya harus sama?

  2. mas adi mau tanya, kalo semisal saya menggunakan metode GLCM sama LBP untuk pengenalan/klasifikasi tekstur, inputan apa saja yang perlu digunakan untuk pelatihan dan pengujian di JST metode Backpropagation??
    mohon pencerahannya
    terima kasih

  3. pak adi , mau nanya ttg LBP ini,, grafik LBP histogram Bins ada penjelasanya tdk?
    saya msh kurang paham maksudnya mengapa ada 1-10 dan itu beda”,,
    jika GLCM kan sdh jelas itu, ada contras dll

  4. maff mau anya say agak bingung di bagian ini

    % pembuatan matriks kookurensi
    pixel_dist = 1;
    GLCM = graycomatrix(rotatedBrickWall,’Offset’,[0 pixel_dist;…
    -pixel_dist pixel_dist; -pixel_dist 0; -pixel_dist -pixel_dist]);
    terima kasih

  5. Pak Adi untuk ekstraksi fitur dengan kasus penentuan kualitas daging dari segar hingga busuk bagusnya pakai metode apa ya? GLCM atau LBP

  6. Berarti bisa ya pak menggunakan LBP untuk ekstraksi fitur pada objek yang sama hanya saja mendeteksi kualitas dari objek tersebut?. soalnya dari mayoritas jurnal yang saya dapat LBP banyak digunakan untuk mendeteksi pola dari objek yang berbeda dan GLCM lebih banyak digunakan untuk pendeteksian kualitas dari 1 objek yg sama tersebut pak

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: