Anda di halaman 1dari 11

IMPLEMENTASI ALGORITMA THINNING PADA CITRA UNTUK

MENILAI POSISI DUDUK SESEORANG DARI SEGI


PENCEGAHAN GANGGUAN PENYAKIT TULANG BELAKANG
Vibri Ariyaningrum1)
Johan Harlan2)
Setia Wirawan3)
Jurusan Teknik Informatika, Fakultas Teknologi Industri, Universitas Gunadarma
Jl. Margonda Raya No. 100, Depok, Jawa Barat, 16424, Indonesia
Email : ariyani.vibri@gmail.com1)
harlan_johan@staff.gunadarma.ac.id2)
setia@staff.gunadarma.ac.id3)

ABSTRAK
Implementasi algoritma thinning pada citra untuk menilai posisi duduk seseorang dari segi
pencegahan penyakit tulang belakang.
Pembuatan aplikasi ini menggunakan algoritma thinning dan Matlab 7.8 dalam proses
klasifikasi posisi duduk seseorang tampak samping. Thinning merupakan salah satu algoritma
perubahan citra dalam morphological operation. Konsep morphological operation pada
pengolahan citra adalah operasi- operasi perubahan bentuk pada binary image. Hasil yang
didapat dari pembuatan aplikasi ini terdapat dua kondisi yaitu kondisi saat posisi duduk
memenuhi dan kondisi saat posisi duduk tidak memenuhi. Untuk melakukan proses klasifikasi
menggunakan hasil expert yang telah dilakukan oleh para ahli yaitu posisi duduk saat terbentuk
sudut 900 sampai 1100.
Pada penelitian ini hasil persentase keberhasilan yang didapat adalah 70%. Terdapat
beberapa faktor yang berpengaruh antara lain warna baju yang digunakan oleh objek, intensitas
cahaya, dan jumlah benda yang berada disekeliling objek.

Kata Kunci : Algoritma Thinning, Matlab, Penyakit Tulang Belakang.


PENDAHULUAN
Postur tubuh pada diri seseorang sangat berpengaruh pada tampilan dan cara kerja
seseorang. Bagaimana seseorang memperlakukan sikap tubuhnya. Terutama bagaimana
cara seseorang melakukan sikap tubuhnya pada saat posisi duduk. Dari posisi duduk saat
mereka bekerja ternyata dapat menyebabkan beberapa gangguan penyakit pada tulang
belakang. Terdapat posisi duduk yang harus dilakukan agar terhindar dari gangguan
penyakit tulang belakang. Untuk melakukan klasifikasi posisi duduk tersebut dapat
menggunakan batasan posisi duduk yang benar dengan range sudut antara 900 sampai
1100. Batasan range sudut tersebut didapat dari penelitian yang sudah dilakukan
sebelumnya oleh para ahli. Data yang digunakan adalah beberapa posisi duduk seseorang.
Untuk pencegahan penyakit tulang belakang dianjurkan posisi kepala dalam keadaan
tegak. Sedangkan posisi tubuh terkadang perlu diperhatikan lebih lanjut maka dibuat
aplikasi ini. Dalam pembuatan sistem ini digunakan algoritma thinning dalam pembuatan
citra. Thinning (pengurusan) adalah operasi morfology yang digunakan untuk
memperkecil ukuran geometrik objek dengan hasil akhir berupa skeleton atau rangka.
Konsep morphological operation pada pengolahan citra adalah operasi- operasi
perubahan bentuk pada binary image atau grayscale image.
Pengolahan citra adalah suatu bentuk proses sinyal dengan input berupa gambar
(image) yang ditransformasikan menjadi gambar lain sebagai keluarannya dengan teknik
tertentu (Gonzales, 2004). Pengolahan citra dilakukan untuk memperbaiki kesalahan data
Universitas Gunadarma

Page 1

sinyal gambar yang terjadi akibat transmisi, serta untuk meningkatkan kualitas
penampakan gambar agar lebih mudah diinterprestasi oleh sistem penglihatan manusia,
dengan melakukan manipulasi dan juga analisis terhadap gambar. Kegiatan memperbaiki
kualitas citra agar mudah diinterprestasi oleh manusia atau komputer. Inputnya adalah
berupa citra digital dan keluarannya pun berupa citra digital tapi dengan kualitas yang
lebih baik dari citra input. Misalkan diinput citra yang memiliki warna kurang tajam,
kabur, dan mengandung noise (misal bintik- bintik putih), sehingga dilakukan suatu
pemrosesan untuk memperbaiki citra. Penelitian ini dilakukan dengan tujuan
menghasilkan suatu program yang dapat digunakan untuk menilai posisi duduk seseorang
saat sedang bekerja dari segi pencegahan gangguan penyakit tulang belakang dengan
menerapkan algoritma thinning.
METODE PENELITIAN
Implementasi Algoritma thinning untuk menilai posisi duduk seseorang dari segi
pencegahan penyakit tulang belakang sebuah program yang dapat melakukan klasifikasi
dengan menilai posisi duduk seseorang menggunakan hasil citra thinning. Untuk
mendapatkan citra hasil thinning melewati beberapa proses antara lain tahap grayscale,
background subtraction, segementasi, dan thinning. Diagram alur pada program ini
adalah:

Diagram alur pada program


Dari diagram alur program diatas dijelaskan bahwa tahap pertama dengan
melakukan input citra RGB kemudian dilakukan proses preprocessing. Tahap selanjutnya
yaitu tahap klasifikasi, pada fase klasifikasi menggunakan operasi geometrik yaitu
pergeseran citra menggunakan citra hasil thinning. Hasil dari proses klasifikasi terdapat
dua pilihan yaitu memenuhi dan tidak memenuhi. Pada proses preprocessing terdapat
beberapa tahap yaitu grayscale, background subtraction, segmentasi, dan thinning.
Penjelasan mengenai tahap yang dilakukan dalam penelitian ini yaitu:
Input citra RGB
Citra RGB digunakan sebagai citra masukan. Citra RGB diperoleh menggunakan
kamera. Citra RGB didapat maka dilakukan proses perubahan ukuran citra menjadi
ukuran 30 x30 pixel. Citra tersebut adalah citra posisi duduk seseorang tampak samping.
Seperti gambar dibawah ini:
Universitas Gunadarma

Page 2

Gambar posisi duduk tampak samping


Sintak yang digunakan untuk mendapatkan citra RGB dengan ukuran 30x30 pixel
menggunakan kamera adalah
vid=videoinput('winvideo',1);
vid.ReturnedColorSpace='rgb';
vid.FramesPerTrigger=10;
start(vid);
I2=getsnapshot(vid);
handles.image= imresize(I2,[30 30]);
guidata(hObject,handles);
axes(handles.axes1)
imshow(handles.image);
title('Citra RGB');

Tahap Grayscale
Pada tahap pertama preprocessing yaitu grayscale. Pada penelitian ini digunakan
fungsi dari matlab yaitu rgb2gray untuk mengubah citra RGB menjadi citra grayscale.
Sintak yang digunakan pada program ini adalah:
image1 = handles.image;
handles.abu=rgb2gray(image1);
axes(handles.axes2)
imshow(handles.abu);
guidata(hObject,handles);
title('Citra Grayscale');

Tampilan gambar hasil proses grayscale pada gambar dibawah ini:

Gambar hasil grayscale


Tahap Background Subtraction
Pada tahap subtraction ini menggunakan citra hasil grayscale. Background
subtraction adalah tahapan untuk memisahkan antara object dengan background. Nilai
ambang batas yang digunakan pada program ini adalah 75. Citra akan diubah menjadi
nilai 0 dan 1. Nilai 0 menyatakan object sedangkan nilai 1 menyatakan background.
Sintak yang diterapkan pada program ini adalah:
image2 = handles.abu;
[tinggi,lebar] = size(image2);

Universitas Gunadarma

Page 3

ambang =75;
biner = zeros(tinggi, lebar);
for baris=1 : tinggi
for kolom=1 : lebar
if image2(baris,kolom)>=ambang
biner (baris,kolom)=1; %%background
else
biner (baris,kolom)=0; %objek
end
end
end
axes(handles.axes3)
imshow(biner);
handles.gambar_hitam = biner;
guidata(hObject,handles);
title('Citra Subtraction');

Tampilan hasil citra background subtraction pada gambar dibawah ini:

Gambar hasil proses background subtraction


Tahap Segmentasi
Metode segmentasi yang digunakan pada program ini adalah segmentasi
berdasarkan daerah tertentu. Daerah yang diambil adalah posisi duduk tampak samping
pada objek manusia. Karena pixel yang digunakan memiliki ukuran 30 x 30 pixel maka
titik-titik yang diambil adalah [10 3 25 22]. Sintak yang digunakan pada program adalah
global image3
image3 = handles.I;
image3,[10 3 25 22])
axes(handles.axes2);
imshow(crop);
handles.gambar_potong = crop;
guidata(hObject,handles)

Hasil citra proses segmentasi pada gambar dibawah ini:

Gambar hasil proses segmentasi


Tahap Thinning
Citra hasil segmentasi akan menjadi bahan pada proses thinning. Nilai citra yang
digunakan untuk proses thinning adalah 1 dan 0. Pada proses skeletonisasi menggunakan

Universitas Gunadarma

Page 4

metode thinning berdasarkan Algoritma Zhang and Suen yaitu proses merubah bentuk
dari citra hasil dilasi dan erosi yang berbentuk citra biner menjadi citra yang menampilkan
batas- batas objek yang hanya setebal satu pixel. Diagram alur pada proses thinning
dibawah ini:
mulai

Input citra hasil


segmentasi

TIDAK
If piksel =0

Piksel =1

YA

Piksel =0
Iterasi hapus piksel
(8-tetangga)
TIDAK

Lebar per unit


(satu piksel)
Terhubung menjadi
satu garis

YA
Simpan citra hasil

selesai

Diagram alur pada proses thinning


Pseudocode Algoritma Zhang and Suen ini menggunakan variabel l, variabel citra
yang akan ditipiskan dimana nilai 0 mewakili piksel berwarna hitam (citra gelap) dan
nilai 1 mewakili piksel berwarna putih (citra terang) atau lebih dikenal dengan region
point bernilai 1 dan background point bernilai 0. Objek didalam citra merupakan objek
yang saling terhubung dengan piksel berwarna putih. Jika M dan N adalah citra sementara
yang digunakan ditiap iterasi pada algoritma tersebut. M adalah keluaran untuk iterasi ke
n-1 dan N adalah keluaran untuk iterasi ke n. Algoritma Zhang and Suen ini secara iteratif
menghapus piksel= piksel pada citra biner. Transsisi dari 0 ke 1 atau dari 1 ke o pada
konvensi lain, terjadi sampai dengan terpenuhi suatu keadaan dimana satu himpunan dari
lebar per unit (satu pixel) terhubung menjadi suatu garis. Sintak yang digunakan pada
program ini adalah:
%% PARALLEL THINNING ALGORITHM (ZHANG AND SUEN)
%% MatLab implementation %%
function z=skeletonimage(image3)
Imj=image3;
%% CHANGE THE IMAGE HERE!!!
I=(double(Imj));
%%Note: The image must be binary where 0=black and 1=white
%% objects must be composed of white pixels
%% I = original image
[H,W]=size(I);

Universitas Gunadarma

Page 5

%%height, width of image %binarization with threshold 125 if image is


gray scale
if max(I)~=1
for hi= 1 : H
for wi = 1 : W
if I(hi,wi)>75
I(hi,wi)=1;
else
I(hi,wi)=0;
end
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
J=I;
%% J = skeletonized image
K=I;
%% K = skeletonized image
B=0;
%% B = number of non-zero neighbors
A=0;
%% A = 0-1 patterns
CHANGE=1000;
%% number of pixels changed over iteration
P=zeros(8);
%% array to hold the 8-neighborhood values
jml=0;
%% OUTER LOOP - LOOP UNTIL NO PIXELS CHANGE %%
while (CHANGE ~= 0)
%% reset #of changes
CHANGE =0;
%% FIRST SUB-ITERATION %%
for r=2:H-1
%% row
for c=2:W-1
%% column
if(J(r,c)==0)
%% find 8 neighborhood of pixel %%
P(9) = J(r-1,c-1); P(2) = J(r-1,c);
P(3) = J(r-1,c+1);
P(8) = J(r,c-1);
P(1)= J(r,c);
P(4) = J(r,c+1);
P(7) = J(r+1,c-1); P(6) = J(r+1,c);
P(5) = J(r+1,c+1);
%% calculate B %%
B = 8-(P(2)+P(3)+P(4)+P(5)+P(6)+P(7)+P(8)+P(9));
%% COMPUTE A %%
A=0;
if ( P(2)==1
& P(3)==0
)A=A+1; end
if ( P(3)==1
& P(4)==0
)A=A+1; end
if ( P(4)==1
& P(5)==0
)A=A+1; end
if ( P(5)==1
& P(6)==0
)A=A+1; end
if ( P(6)==1
& P(7)==0
)A=A+1; end
if ( P(7)==1
& P(8)==0
)A=A+1; end
if ( P(8)==1
& P(9)==0
)A=A+1; end
if ( P(9)==1
& P(2)==0
)A=A+1; end
%% DECIDE IF PIXEL SHOULD BE DELETED %%
if( (B>=2) & (B<=6) & (A==1) & ((P(2)==1 & P(8)==1)|(P(4)==1) |
(P(6)==1)))K(r,c)=1;
CHANGE=CHANGE+1;
%PAUSE
end
end
end
end
%% SECOND SUB-ITERATION %%

Universitas Gunadarma

Page 6

J=K;
for r=2:H-1
%% row
for c=2:W-1
%% column
if(J(r,c)==0)
%% find 8 neighborhood of pixel %%
P(9) = J(r-1,c-1);
P(2) = J(r-1,c);
P(3) = J(r-1,c+1);
P(8) = J(r,c-1);
P(1) = J(r,c);
P(4) = J(r,c+1);
P(7) = J(r+1,c-1);
P(6) = J(r+1,c);
P(5) = J(r+1,c+1);
%% COMPUTE B %%
B = 8-(P(2)+P(3)+P(4)+P(5)+P(6)+P(7)+P(8)+P(9));
%% COMPUTE A %%
A=0;
if ( P(2)==1
& P(3)==0
)A=A+1; end
if ( P(3)==1
& P(4)==0
)A=A+1; end
if ( P(4)==1
& P(5)==0
)A=A+1; end
if ( P(5)==1
& P(6)==0
)A=A+1; end
if ( P(6)==1
& P(7)==0
)A=A+1; end
if ( P(7)==1
& P(8)==0
)A=A+1; end
if ( P(8)==1
& P(9)==0
)A=A+1; end
if ( P(9)==1
& P(2)==0
)A=A+1; end
%% DECIDE IF PIXEL SHOULD BE DELETED %%
if( (B>=2) & (B<=6) & (A==1) & ((P(4)==1 &P(6)==1)|(P(2)==1) |
(P(8)==1)))K(r,c)=1;
CHANGE=CHANGE+1;
end
end
end
end
CHANGE %% output # of changes this iteration
%% swap J with K
J=K;
jml=jml+1;
end
z=J;

Untuk memanggil fungsi skeletonimage perintah yang digunakan adalah:


global image4
image4 = handles.image3;
a4=size(image4);
if~(a4(1)==0)
handles.citra_tipis= skeletonimage(image4);
axes(handles.axes5);
imshow(handles.citra_tipis);
i=handles.citra_tipis;
imwrite(i,'coba.jpg','jpg');
guidata(hObject,handles);
title('Citra thinning');
end

Universitas Gunadarma

Page 7

Tahap Klasifikasi
Pada tahap klasifikasi menggunakan operasi geometri yaitu pergeseran citra. Citra
yang digunakan pada proses klasifikasi ini adalah citra hasil thinning. Untuk menentukan
klasifikasi menggunakan nilai batas pixel. Nilai batas pixel didapat dari range sudut yang
terbentuk saat posisi duduk. Batasan sudut yang digunakan adalah 900 sampai 1100.
Penentuan nilai tersebut sudah dilakukan oleh para ahli di bidangnya sebelumnya.
Langkah pertama menentukan titik acuan misalkan yakni titik A dengan koordinat (x1,y1)
dan titik B dengan koordinat (x,y) yang dapat dilihat pada Gambar dibawah ini

Gambar Titik- titik (x,y;x1,y1)


Setelah mendapatkan kedua titik acuan maka akan ditarik garis secara horizontal
dan secara vertikal. Sehingga mendapatkan titik C dengan koordinat (x1-x,y). Setelah
mendapatkan ketiga titik tersebut maka ditentukan batas maksimal dari titik C. Batas
maksimal yang digunakan adalah 8 pixel. Digunakan batas maksimal untuk toleransi
terbentuknya sudut. Karena bila citra yang diambil ternyata dalam posisi duduk yang
benar tetapi posisi objek agak ke kiri atau ke kanan agar dapat dikenali. Operasi geometrik
adalah operasi pada citra yang dilakukan secara geometriks seperti translasi, rotasi, dan
penyekalan[1]. Pada operasi ini terdapat pemetaan geometrik, yang menyatakan hubungan
pemetaan antara pixel pada citra masukan dan pixel pada citra keluaran. Terdapat dua
pemetaan yaitu pemetaan ke depan dan pemetaan ke belakang. Pada sistem ini digunakan
pergeseran citra ke arah mendatar atau vertikal. Rumus yang digunakan adalah
Xbaru = Xlama + Sx
Ybaru = Ylama + Sx
Untuk penyederhana pembulatan sx dan sy dianggap bertipe bilangan bulat. Untuk
mendapatkan batas maksimal 8 didapat dari perhitungan jumlah pixel dengan sudut
toleransi. Jumlah pixel yang digunakan pada wilayah object sebesar 20 x20 pixel sudut
yang digunakan adalah 450. Untuk menentukan besar sudut setiap pergeseran 1 pixel
menggunakan formula:
450

( = 20 = 2,25)
Nilai 450 diambil dari sudut pada gambar dengan ukuran 20 x 20 pixel. Jadi setiap satu
pixel pergeseran posisi citra besaran sudut akan bergeser sebesar 2,25 0. Nilai batas
maksimal didapat dari hasil bagi selisih toleransi sudut dengan besaran pergeseran sudut.
(1100 900 )

200

Batas Maksimal = ( 2,25


= 2,25 = 8,889)
Nilai batas maksimal yang didapat dibulatkan kebawah sehingga didapat angka 8. Angka
8 akan dijadikan batas maksimal pergeseran citra pada tahap klasifikasi. Langkah

Universitas Gunadarma

Page 8

selanjutnya yang dilakukan adalah menerapkan nilai tersebut kedalam sintak pada
program.
test = handles.image;
[jum_kolom, jum_baris] = size(test);
piksel_max = 8;
for p=1 : jum_kolom
for q=1 : jum_baris
if test(p,q) <= piksel_max;
handles.hasil1 = imread('normal.jpg');
else
handles.hasil1 = imread('abnormal.jpg');
end
end
end
axes(handles.axes2);
imshow(handles.hasil1);
guidata(hObject,handles);

Pada sintak tersebut dijelaskan bila nilai yang didapat kurang dari sama dengan 8 maka
hasil klasifikasi adalah memenuhi dan akan tampil gambar normal.jpg. Namun bila nilai
lebih dari 8 maka hasil klasifikasi adalah tidak memenuhi dan akan tampil gambar
abnormal.jpg.

Gambar normal bila hasil memenuhi Gambar abnormal bila hasil tidak memenuhi
HASIL UJI COBA
Pada percobaan kali ini digunakan 20 citra RGB dengan ukuran 30 x 30 pixel
dengan posisi orang duduk tampak samping. Dari 20 jumlah citra terdiri dari 10 citra
dengan posisi duduk memenuhi persyaratan dan 10 citra tidak memenuhi persyaratan.
Dalam proses tahapan background subtraction digunakan ambang batas nilai sebesar 75.
Selain itu di tentukan jumlah pixel maksimal pergeseran citra sejumlah 8 pixel. Bila
program dijalankan maka tampilannya akan seperti Gambar dibawah ini:

Universitas Gunadarma

Page 9

Gambar hasil klasifikasi memenuhi

Gambar hasil klasifikasi tidak memenuhi


Hasil yang didapat setelah melakukan beberapa percobaan. Maka didapat hasil uji coba
pada Tabel dibawah ini:
Tabel Hasil Uji Coba

Universitas Gunadarma

Page 10

Jumlah keberhasilah = 14
Jumlah Keberhasilan
Persentase keberhasilan = ( Jumlah Citra
100%)
14

= (20 100% = 70%)


Persentase kegagalan = (100 % 70% = 30%)
Pada percobaan yang sudah dilakukan untuk persentase keberhasilan terdapat
beberapa faktor yang berpengaruh antara lain faktor intensitas cahaya, warna baju yang
digunakan oleh objek apakah warna tersebut kontras atau tidak dengan warna kursi, dan
jumlah benda yang berada di sekitar objek.
PEMBAHASAN
Dalam penulisan ini telah berhasil dibuat suatu aplikasi Implementasi Algoritma
Thinning Untuk Menilai Posisi Duduk Seseorang Dari Segi Pencegahan Penyakit Tulang
Belakang. Aplikasi ini digunakan untuk menilai cara duduk seseorang saat sedang
bekerja tampak samping. Terdapat dua kondisi yang dihasilkan yaitu kondisi saat posisi
duduk memenuhi dan kondisi saat posisi duduk tidak memenuhi. Untuk menentukan
kondisi tersebut menggunakan hasil expert yang telah dilakukan oleh para ahli dalam
bidangnya dengan terbentuknya sudut antara 900 sampai 1100 saat posisi duduk. Dalam
menjalankan aplikasi ini terdapat empat proses yang preprocessing yaitu Grayscale,
Background Subtraction, Segmentasi, dan Thinning. Dalam penelitian ini digunakan 20
citra RGB dengan ukuran 30x30 pixel. Persentase keberhasilan yang didapat pada
penelitian adalah 70%. Sedangkan, persentase kegagalan yang didapat pada penelitian ini
adalah 30%. Untuk mendapatkan hasil persentasi keberhasilan terdapat beberapa faktor
yang berpengaruh yaitu faktor wana pakaian yang digunakan oleh manusia, jumlah benda
yang berada di sekeliling manusia, dan intensitas cahaya.
Dalam penelitian ini menggunakan pengambilan citra tampak samping. Metode
yang digunakan adalah pergeseran citra bukan menggunakan metode system pakar
misalkan Support Vector Machine (SVM) dan Neural Network (NN).
DAFTAR PUSTAKA
Acharya T, Ray A K. 2005; Image Processing Principles and Application; New Jersey:
John Wiley & Sons, Inc.
Efford N. 2000. Digital Image Processing a Practical Introduction Using Java. Assex:
Pearson Education Limited.
Gonzales R C, Woods R E, Eddins S L. 2004. Digital Image Processing Using MATLAB.
Pearson LPE.
Kadir A & Susanto A. 2013. Teori dan Aplikasi Pengolahan Citra; Andi: Yogyakarta.
Young I T, Gerbrands J J & Vliet L J V. 1998. Fundamentals Of Image Processing. Delft:
Delft University Of Technology.

Universitas Gunadarma

Page 11

Anda mungkin juga menyukai