1. Pendahuluan Bentuk tubuh manusia adalah sesuatu yang unik dimana setiap orang tidak akan ada yang sama satu sama lain meskipun dia kembar. Perbedaa

Teks penuh

(1)

Implementasi Perhitungan Sudut Rangka Manusia Menggunakan Matlab 7

Nugroho Dian Purnama

Fakultas Teknologi Industri Universitas Gunadarma

Jl. Margonda Raya, 100, Pondok Cina, Depok Telp: (021) 78881112

Email: alchemist_nugy@student.gunadarma.ac.id

ABSTRAK

Bentuk tubuh manusia adalah sesuatu yang unik dimana setiap orang tidak akan ada yang sama satu sama lain. Perbedaan inilah yang menarik minat banyak peneliti untuk melakukan studi mengenai bentuk tubuh manusia. Perbedaan bentuk tubuh manusia didasari oleh rangka manusia yang berbeda-beda.

Berdasarkan latar belakang tersebut, maka penulisan ini memfokuskan kepada penggunaan metode Chain Code untuk mendeteksi tepi pada citra rangka atau skeleton. Citra adalah gambar dua dimensi yang dihasilkan dari gambar analog dua dimensi yang kontinu menjadi gambar diskrit melalui proses sampling. Implementasi dari metode Chain Code menghasilkan perhitungan sudut dari suatu citra skeleton. Dengan Matlab digunakan sebagai perangkat lunak dalam proses uji coba algoritma tersebut sehingga menghasilkan besaran sudut dalam derajat yang dapat digunakan dalam penelitian lebih lanjut.

(2)

1. Pendahuluan

Bentuk tubuh manusia adalah sesuatu yang unik dimana setiap orang tidak akan ada yang sama satu sama lain meskipun dia kembar. Perbedaan inilah yang menarik minat banyak peneliti untuk melakukan studi mengenai bentuk tubuh manusia. Perbedaan bentuk tubuh manusia didasari oleh rangka manusia yang berbeda-beda, Rangka merupakan sistem penyokong organisme. Sistem penyokong ini bertindak sebagai bingkai tubuh yang tegar. Biasanya rangka ini tersusun dari kalsium. Fungsi rangka ialah: menegakkan atau menopang berdirinya tubuh, memberi bentuk tubuh, tanpa rangka tubuh manusia tidak memiliki bentuk, melindungi organ-organ tubuh yang penting dan lunak seperti otak, jantung, paru-paru dan mata, tempat melekatnya otot-otot rangka dan tempat pembentukan sel-sel darah merah.

Pembahasan pada penulisan ini akan lebih memfokuskan pada perhitungan sudut rangka tubuh manusia dimana dari gambaran rangka tubuh manusia tersebut akan didapat besaran sudut-sudut yang dapat memberikan informasi jika sudah dipadukan dengan beberapa bidang studi seperti kedokteran, matematika dan komputer.

Riset yang dihasilkan dari penelitian sudut-sudut rangka manusia akan berkontribusi kepada banyak bidang, salah satunya adalah kedokteran. Selain kedokteran, pencitraan atau pengolahan citra adalah salah satu bidang yang akan mendapatkan kontribusi dari riset mengenai bentuk tubuh, seperti mendapatkan teknik baru untuk memotong, dan mendeteksi piksel. Definisi citra menurut kamus Webster adalah suatu representasi, kemiripan, atau imitasi dari suatu objek atau benda. Sebuah citra mengandung informasi tentang obyek yang direpresentasikan.

Penelitian sebelumnya yang memanfaatkan pengolahan citra dalam pendeteksian piksel adalah mendeteksi fitur rangka tubuh manusia. Menggunakan metode hough transform untuk menghitung sudut pergelangan kaki, sudut lutut, sudut lengan, dan jarak antara kedua lengan (Intan Nur Lestari, 2010).

(3)

Dalam Penelitian ini Penulis menggunakan metode chain code. Metode tersebut mendeteksi tepi yang menghubungkan tiap piksel kedelapan atau empat arah.

Bermula dari latar belakang ini, Penulis terinspirasi untuk membuat sebuah aplikasi pengolahan citra yang dapat menghitung sudut-sudut yang ada pada tubuh manusia.

2. Tinjauan Pustaka 1. Citra

Citra adalah gambar dua dimensi yang dihasilkan dari gambar analog dua dimensi yang kontinu menjadi gambar diskrit melalui proses sampling. Gambar analog dibagi menjadi N baris dan M kolom sehingga menjadi gambar diskrit. Persilangan antara baris dan kolom tertentu disebut dengan piksel. Contohnya adalah gambar/ titik diskrit pada baris n dan kolom m disebut dengan piksel.

2. Digitalisasi Citra

Digitalisasi citra adalah representasi citra dari fungsi kontinu menjadi nilai-nilai diskrit, sehingga disebut Citra Digital.

Citra digital berbentuk empat persegi panjang dan dimensi ukurannya dinyatakan sebagai tinggi x lebar (lebar x panjang).

Citra digital yang tingginya N, lebarnya M dan memiliki L derajat keabuan dapat dianggap sebagai fungsi :

0O xO M

f(x,y)= 0O y O N (1)

0O f O L

Citra digital yang berukuran N x M lazimnya dinyatakan dengan matriks berukuran N baris dan M kolom, dan masing-masing elemen pada citra digital disebut piksel (picture element)

(4)

F (x,y)= f (0,0) f (0,1) ... f (0, M )

f (1,0) f (1,1) ... f (1, M ) (2) f ( N − 1,0) f ( N − 1,1) ... f ( N − 1, M − 1)

Suatu citra berukuran 256 x 256 piksel dengan intensitas beragam pada tiap pixelnya, direpresentasikan secara numerik dengan matriks terdiri dari 256 baris dan 256 kolom.

0 134 145 ... ... 231 0 167 201 ... ... 197 220 187 189 ... ... 120 (3) : : : : : : 221 219 210 ... ... 156 3. Chain Code

Kode rantai digunakan untuk merepresentasikan batas/ tepi dengan menyambungkan urutan dari garis lurus yang ditentukan oleh panjang dan arah. Biasanya, tampilan ini terdiri dari 4 atau 8 sambungan dari segmen. Arah tiap segmen dikodekan dengan menggunakan skema penomoran seperti di gambar 2.1. Sebuah kode tepi dibentuk sebagai urutan dari nomor terarah yang disebut sebagai kode rantai freeman.

Citra digital biasanya dibutuhkan dan diproses dalam format grid dengan jarak yang sama dalam arah X dan Y, jadi kode rantai dapat dihasilkan dengan mengikuti tepi sesuai dengan arah jarum jam dan menugaskan arah segmen untuk menyambungkan setiap pasang pixel. Metode ini biasanya tidak diterima untuk dua alasan yaitu hasil dari rantai cukup lama dan Setiap gangguan kecil sepanjang tepi menghasilkan noise atau segmentasi yang tidak sempurna menyebabkan perubahan pada code yang mungkin tidak berhubungan dengan prinsip bentuk fitur dari batasan.

(5)

Gambar 2.1. Chain Code

Sebuah pendekatan yang sering digunakan untuk menyelesaikan masalah ini adalah me-resample tepi dengan memilih jarak grid yang lebih lebar. Batas tepi ditandai untuk setiap node dari grid yang besar, tergantung oleh kedekatan dari tepi original node tersebut. Resample tepi menghasilkan cara bahwa tepi dapat direpresentasikan dengan 4 atau 8 code. Gambar 2.1 menunjukan titik tepi yang kasar direpresentasikan oleh 8 arah kode rantai. Ini adalah masalah sederhana untuk mengonversi dari kode 8 menjadi kode 4 dan sebaliknya. Titik awal pada gambar 2.4 adalah (dengan berubah-ubah) dari titik paling atas, titik paling kiri dari tepi yang memberikan kode rantai 0766…12. Seperti yang diperkirakan akurasi dari hasil merepresentasikan code tergantung dari jarak sampling grid

Kode rantai dari tepi tergantung dari titik mula. Bagaimanapun kode dapat di normalkan dengan mematuhi titik awal dengan prosedur yang luruskode rantai dapat dengan mudah diatur sebagai urutan lingkaran dari nomor berarah dan mendefinisikan titik asal. Hasil urutan nomor membentuk suatu integer jarak minimum. Kita dapat menormalisasi juga dengan rotasi (di sudut yang memiliki banyak arah dari banyak integer seperti gambar 2.1.)

dengan menggunakan first different. Perbedaan ini diperoleh dari hasil menghitung perubahan urutan arah (dengan berlawanan arah jarum jam seperti gambar 2.1.) yang memisahkan dua elemen yang berdekatan. Misalnya, perbedaan pertama dari 4 arah chain code 10103322 adalah 3133030. Jika kita menganggap kode sebagai urutan lingkaran untuk menormalkan dengan memulai dari titik awal, elemen pertama dari

(6)

perbedaan dihitung dengan menggunakan transisi antara yang terakhir dan yang pertama dari rantai. Di sini hasilnya adalah 33133030. Ukuran normalisasi dapat didapatkan melalui mengubah ukuran resampling grid.

Normalisasi ini hanya pasti jika tepi itu sendiri bervariasi dengan rotasi (di sudut yang memiliki banyak arah dari banyak integer) dan skala berubah yang jarang kasus ini dipelajari. Biasanya, objek yang sama didigitalisasi ke dalam dua orientasi yang berbeda akan mempunyai dua bentuk tepi yang berbeda secara umum, dengan derajat ketidaksamaan menjadi proporsional ke resolusi image. Efek ini dapat dikurangi dengan memilih elemen rantai yang panjang dalam perbandingan dengan jarak antara piksel dalam digitalisasi citra dan atau dengan mengorientasikan resampling grid sepanjang aturan sudut dari objek untuk dikodekan.

Gambar 2.2. Kerja Chain Code

Gambar 2.2(a) menunjukan 570 x 570 gambar grayscale 8 bit dari stroke yang melingkar yang tertanam didalam fragmen spekular. Tujuan dari contoh ini adalah untuk mendapatkan kode rantai freeman, integer dari magnitude minimum dan perbedaan pertama dari tepi luar objek terbesar di gambar 2.2(a). Karena objek yang menarik tertanam dalam fragment yang kecil, ekstraksi tepi akan menghasilkan kurva yang memiliki noise yang tidak akan mendeskripsikan bentuk umum dari objek. Menghaluskan adalah proses selanjutnya ketika berhadapan dengan tepi yang memiliki noise. Gambar 2.2(b) menunjukan gambar asli yang

(7)

dihaluskan dengan averaging mask dengan ukuran 9 x 9, dan gambar 2.2(c) adalah hasil dari thresholding gambar ini dengan global threshold didapatkan dengan menggunakan metode Otsu. Perlu diingat bahwa jumlah dari region telah dikecilkan menjadi dua (satu di antaranya adalah dot), secara signifikan menyederhanakan masalah.

Gambar 2.2(d) adalah tepi terluar dari region terbesar dari gambar 2.2(c). Mendapatkan kode rantai langsung dari tepi akan menghasilkan urutan panjang dengan sedikit variasi yang tidak merepresentasikan bentuk dari tepi. Seperti yang disebutkan sebelumnya pada bagian ini, kita biasa me-resample tepi sebelum mendapatkan kode rantai untuk mengurangi banyaknya variabel. Gambar 2.2(e) adalah hasil resampling tepi didalam grid dengan node 50 pixel tersendiri (sekitar 10% dari lebar image) dan gambar 2.2(f) adalah hasil menggabungkan hasil simpul dengan garis lurus. Ini lebih mudah memperkirakan pendekatan dari prinsip sifat keaslian tepi.

8 arah kode rantai Freeman tepi yang disederhanakan adalah 0006066666666444444242222202202

Titik awal dari tepi adalah koordinat (2.2) pada subsample grid. Ini adalah yang paling atas dan paling kiri pada gambar 2.2(f). Integer dari magnitude minimum dari kode terjadi pada kasus ini sama dengan chain code:

0006066666666444444242222202202 Perbedaan pertama pada kode lainnya adalah 00060600000006000006260000620626

3. Proses Perhitungan Fitur

Dalam penelitian ini terdapat beberapa tahapan yang digunakan untuk mendapatkan nilai dari fitur yang dicari yaitu:

a. Input Citra Skeletonisasi

Citra skeletonisasi digunakan sebagai citra masukan. Proses skeletonisasi itu sendiri berawal dari citra RGB yang melewati beberapa tahapan proses

(8)

segmentasi seperti filterisasi citra, segmentasi warna, erosi dan dilatasi, restorasi, dan skeletonisasi citra.

b. Pemotongan/ Cropping

Proses penentuan lokasi fitur dari citra skeletonisasi berasal dari penelitian tentang citra skeletonisasi (Lee dkk, 2008). Pada penelitian Lee didapatkan sepuluh fitur yang akan diproses. Dari sepuluh fitur tersebut empat di antaranya adalah jarak, dan enam adalah sudut. Pada pembuatan program kali ini hanya memfokuskan pada enam sudut. Untuk melihat lokasi atau letak dari fitur yang akan diproses dapat dilihat pada gambar 3.1.

Gambar 3.1. Sudut-sudut yang digunakan (Lee dkk, 2008)

Tabel 3.1 Standar Nilai Interval Sudut (Lee dkk, 2008)

No Nama Fitur Nilai Standar

Interval ( 0 )

1 Sudut lutut kaki depan (F1) 1000 – 1350

2 Sudut pergelangan kaki depan (F2) 500 – 1200

3 Sudut pergelangan kaki belakang (F3) 800 – 1000

4 Sudut lutut kaki belakang (F4) 1000 – 1800

5 Sudut sikut lengan depan (F5) 600 – 1800

6 Sudut sikut lengan belakang (F6) 700 – 1600

c. Proses Perhitungan Sudut

image yang sudah dicrop tersebut akan diproses dengan mengekstraksi derajat keabuan dari gambar citra berwarna digunakan fungsi rgb2gray. Selanjutnya adalah melakukan threshold dalam gambar untuk memperjelas gambar yang berwarna hitam dan putih. Langkah berikutnya adalah mengekspansipiksel yang sudah ditemukan ke empat arah. Untuk menentukan

(9)

kode chain digunakan beberapan persyaratan. Untuk kode chain 0 maka code(1), code(2), code(3), code(4) harus bernilai 1 dan seterusnya. Untuk kode rantai 1 maka code(2), code(3), dan code(4) harus bernilai 1 dan seterusnya. Untuk kode rantai 2 maka code(3) dan code(4) harus bernilai 1. Yang terakhir untuk kode rantai 4 maka hanya code(4) saja yang bernilai 1.

Untuk melakukan perhitungan sudutnya digunakan pertambahan 90 untuk setiap rantai bernilai 1, dikurangi 90 untuk setiap chain bernilai 2 atau 3 sedangkan untuk chain bernilai 0 maka tidak ada perhitungan. 90 digunakan karena chain code yang digunakan adalah 4 arah kode rantai sehingga membentuk sudut 90°. Sedangkan untuk 8 arah kode rantai, perhitungan sudutnya adalah pertambahan nilai 45 untuk setiap chain bernilai 1 dan 2, kemudian pengurangan nilai 45 untuk setiap chain bernilai 3, 4, 5, 6, dan 7. 45 digunakan karena 8 arah kode rantai membentuk sudut 45 derajat untuk setiap sudutnya.

4. Hasil Uji Coba

Pada proses pengujian, terdapat 10 set data yang dijadikan sebagai masukan dari program ini. Kemudian dari 10 data tersebut akan dilihat tingkat keberhasilan program tersebut dalam mendapatkan nilai sudut dari ke enam fitur tersebut. Kemudian dilakukan analisa terhadap hasil-hasil uji coba tersebut untuk melihat sejumlah faktor yang menyebabkan terjadinya kegagalan, apabila terjadi kegagalan dalam melakukan perhitungan terhadap fitur tersebut.

Hasil uji coba program fitur sudut dapat dilihat pada tabel 4.1. symbol √ menandakan bahwa nilai tersebut termasuk kedalam nilai standar interval sudut, dan symbol x menandakan sebaliknya.

(10)

Tabel 4.1. Hasil Uji Coba Program Fitur Sudut

Objek Fitur Sudut Termasuk ke

dalam Nilai Standar

Nama Fitur ( 0 )

1

F1 (Sudut lutut kaki depan)

F2 (Sudut pergelangan kaki depan) F3 (Sudut pergelangan kaki belakang) F4 (Sudut lutut kaki belakang)

F5 (Sudut sikut lengan depan) F6 (Sudut sikut lengan belakang)

13 5 49 101 115 135 x x x √ √ √ 2

F1 (Sudut lutut kaki depan)

F2 (Sudut pergelangan kaki depan) F3 (Sudut pergelangan kaki belakang) F4 (Sudut lutut kaki belakang)

F5 (Sudut sikut lengan depan) F6 (Sudut sikut lengan belakang)

135 9 9 90 145 164 √ x x x √ X 3

F1 (Sudut lutut kaki depan)

F2 (Sudut pergelangan kaki depan) F3 (Sudut pergelangan kaki belakang) F4 (Sudut lutut kaki belakang)

F5 (Sudut sikut lengan depan) F6 (Sudut sikut lengan belakang)

135 135 59 135 115 143 √ x x √ √ √ 4

F1 (Sudut lutut kaki depan)

F2 (Sudut pergelangan kaki depan) F3 (Sudut pergelangan kaki belakang) F4 (Sudut lutut kaki belakang)

F5 (Sudut sikut lengan depan) F6 (Sudut sikut lengan belakang)

82 16 15 41 70 - x x x x √ X 5

F1 (Sudut lutut kaki depan)

F2 (Sudut pergelangan kaki depan) F3 (Sudut pergelangan kaki belakang) F4 (Sudut lutut kaki belakang)

F5 (Sudut sikut lengan depan) F6 (Sudut sikut lengan belakang)

135 135 77 138 113 49 √ x x √ √ x

(11)

6

F1 (Sudut lutut kaki depan)

F2 (Sudut pergelangan kaki depan) F3 (Sudut pergelangan kaki belakang) F4 (Sudut lutut kaki belakang)

F5 (Sudut sikut lengan depan) F6 (Sudut sikut lengan belakang)

135 135 56 141 113 49 √ x x √ √ x 7

F1 (Sudut lutut kaki depan)

F2 (Sudut pergelangan kaki depan) F3 (Sudut pergelangan kaki belakang) F4 (Sudut lutut kaki belakang)

F5 (Sudut sikut lengan depan) F6 (Sudut sikut lengan belakang)

135 112 - 135 90 8 √ √ x √ x x 8

F1 (Sudut lutut kaki depan)

F2 (Sudut pergelangan kaki depan) F3 (Sudut pergelangan kaki belakang) F4 (Sudut lutut kaki belakang)

F5 (Sudut sikut lengan depan) F6 (Sudut sikut lengan belakang)

135 135 9 90 141 109 √ x x x √ √ 9

F1 (Sudut lutut kaki depan)

F2 (Sudut pergelangan kaki depan) F3 (Sudut pergelangan kaki belakang) F4 (Sudut lutut kaki belakang)

F5 (Sudut sikut lengan depan) F6 (Sudut sikut lengan belakang)

24 112 28 78 29 21 x √ x x x x 10

F1 (Sudut lutut kaki depan)

F2 (Sudut pergelangan kaki depan) F3 (Sudut pergelangan kaki belakang) F4 (Sudut lutut kaki belakang)

F5 (Sudut sikut lengan depan) F6 (Sudut sikut lengan belakang)

180 43 135 90 135 - x x x x x x

Dari hasil tabel 4.1. tersebut dapat dilihat bahwa simbol √ menandakan bahwa nilai fitur yang didapatkan dari hasil uji coba program termasuk ke dalam standar nilai interval yang berarti bahwa fitur tersebut termasuk ke dalam kategori seseorang normal. Seseorang dapat dikategorikan normal jika

(12)

fitur tersebut berada pada nilai interval dalam tabel 3.1. Namun sebaliknya jika nilai fitur tidak berada pada nilai interval maka dikategorikan tidak normal. Sedangkan untuk simbol x menandakan sebaliknya yaitu nilai uji coba program yang didapatkan tidak termasuk ke dalam standar interval dengan kata lain fitur tersebut termasuk ke dalam kategori seseorang tidak normal. Dari hasil pengujian ini nilai kategori yang dihasilkan normal untuk fitur sudut pada fitur F1 yaitu citra skeletonisasi 2, 3, 5, 7, 8. Lalu untuk fitur F2 yaitu citra skeletonisasi 7,9. Untuk fitur F3 tidak saja yang terdeteksi normal . Untuk fitur F4 yaitu 1 ,3, 5, 6, 7. Untuk fitur F5 yaitu citra skeletonisasi 1, 2, 3, 4, 5, 6, 8. Dan yang terakhir untuk fitur F6 yaitu citra skeletonisasi 1, 3, 6. Dari hasil ini maka dapat disimpulkan yaitu dari ke sepuluh citra skeletonisasi yang diproses hanya citra skeletonisasi 2, 4, 9, dan 10 yang dapat dikatakan citra tersebut termasuk ke dalam kategori tidak normal, karena banyak fitur sudut yang tidak memenuhi nilai standar interval pada tabel 3.1 dari keempat citra skeletonisasi tersebut.

5. Penutup

1. Kesimpulan

Chain Code bisa dikatakan sebagai suatu metode pendeteksian tepi yang menghubungan tiap piksel ke delapan atau empat arah dan merepresentasikannya dengan angka.

Dari pengujian perhitungan sudut menggunakan metode chain code sangat tergantung pada kualitas dari gambar skeleton yang ada. Gambar skeleton yang tidak terputus dan lurus dapat meminimalisir kesalahan pada perhitungan.

Proses pemotongan gambar atau cropping juga besar pengaruhnya terhadap hasil dari perhitungan sudut. Pemotongan gambar harus tepat pada titik koordinat sudut yang akan dihitung.

Hasil yang didapat dari penelitian menggunakan 10 citra adalah sudut yang terbaca normal berjumlah 33, sedangkan yang terbaca tidak normal

(13)

berjumlah 37, sehingga akurasi program dalam menghitung sudut sebesar 39%.

2. Saran

Penulis menyadari keterbatasan pengetahuan yang dimiliki dalam pembuatan program, seperti masih sederhananya interface dan cara kerja program yang dijalankan masih terlalu rumit. Pengujian akan lebih optimal bila menggunakan citra yang lebih baik, sehingga keterhubungan antar piksel menjadi lebih jelas. Oleh karena itu, penulis mengharapkan saran dan ide-ide yang dapat diberikan guna menyempurnakan implementasi dan pengembangan dari algoritma ini secara keseluruhan agar menjadi lebih baik dan bermanfaat.

6. Daftar Pustaka

[1].Intan Nur Lestari. 2010. “Implementasi Metode Hough Transform Pada Citra Skeletonisasi Menggunakan Matlab 7.6”. Skripsi. Universitas Gunadarma. Depok

[2]. Kale, A., Cuntoor, N., Yegnanarayima, B., Rajagopalan, N. A., Chellappa, R. 2003. “Gait Analysis For Human Identification”. Proc. AVBPA, pages 70-74

[3]. Knight, Andrew. 2000. Basics of MATLAB and Beyond. Chapman & Hall CRC. New York

[4]. Lee Howard, Guan Ling, Lee, Ivan. 2008. “Video Analysis Of Human Gait And Posture To Determine Neurological Disorders”. EURASIP Journal On Image And Video Processing . Volume 2008. Article ID 380867

(14)

[5]. Otto, S.R & Denier, J.P. 2005. An Introduction to Programming and Numerical Methods in MATLAB. Springer-Verlag. London

[6]. Paulus, E., Nataliani, Y. 2007. GUI Matlab. Penerbit ANDI. Yogyakarta

[7]. Register, Andy H. 2007. A Guide to MATLAB Object Oriented Programming. Schitech Publishing, Inc. Georgia

[8]. Wilson, Howard B. 2003. Advanced Mathematics and Mechanic Using MATLAB. Chapman & Hall CRC. New York

Figur

Gambar 2.1. Chain Code

Gambar 2.1.

Chain Code p.5
Gambar 2.2. Kerja Chain Code

Gambar 2.2.

Kerja Chain Code p.6
Gambar 2.2(d) adalah tepi terluar dari region terbesar dari gambar  2.2(c).  Mendapatkan  kode  rantai  langsung  dari  tepi  akan  menghasilkan  urutan panjang dengan sedikit variasi yang tidak merepresentasikan bentuk  dari  tepi

Gambar 2.2(d)

adalah tepi terluar dari region terbesar dari gambar 2.2(c). Mendapatkan kode rantai langsung dari tepi akan menghasilkan urutan panjang dengan sedikit variasi yang tidak merepresentasikan bentuk dari tepi p.7
Gambar 3.1. Sudut-sudut yang digunakan (Lee dkk, 2008)

Gambar 3.1.

Sudut-sudut yang digunakan (Lee dkk, 2008) p.8
Tabel 4.1. Hasil Uji Coba Program Fitur Sudut

Tabel 4.1.

Hasil Uji Coba Program Fitur Sudut p.10
Related subjects :